OSDN Git Service

PR tree-optimization/32589
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
2
3         PR tree-optimization/32589
4         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
5         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
6         * tree-ssa-propagate.c (valid_gimple_expression_p): New
7         predicate, extracted from...
8         (set_rhs): ...here.  Call it for the expression on entry.
9         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
10         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
11         (simplify_binary_expression): Use valid_gimple_expression_p
12         to validate the simplification.
13         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
14
15 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
16
17         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
18         DWARF2_DEBUG on 32 bit target too.
19         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
20
21 2007-07-11  Nick Clifton  <nickc@redhat.com>
22
23         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
24         version for 64-bit hosts.
25
26 2007-07-10  David Daney  <ddaney@avtrex.com>
27
28         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
29         predicate.
30         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
31         call.
32         * config/mips/mips.c (mips_expand_synci_loop): New function.
33         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
34         (UNSPEC_RDHWR): Same.
35         (UNSPEC_SYNCI): Same.
36         (UNSPEC_SYNC): Same.
37         (clear_cache): New expand.
38         (sync): New insn.
39         (synci): Same.
40         (rdhwr): Same.
41         (clear_hazard): Same.
42         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
43         function.
44         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
45         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
46
47 2007-07-10  Ian Lance Taylor  <iant@google.com>
48
49         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
50         no_new_pseudos.
51
52 2007-07-10  David Daney  <ddaney@avtrex.com>
53
54         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
55         * builtins.c (expand_builtin___clear_cache): New function.
56         (expand_builtin): Call expand_builtin___clear_cache for
57         BUILT_IN_CLEAR_CACHE case.
58         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
59         * doc/md.texi (clear_cache): Document new instruction pattern.
60         * testsuite/gcc.dg/builtins-64.c: New test.
61
62 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
63
64         * config/cris/cris.md ("movsi"): Fix typo in last change.
65
66 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
67
68         PR 32617
69         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
70         FUNCTION_DECLs.
71         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
72         * varasm.c (assemble_start_function): Honor DECL_ALIGN
73         for FUNCTION_DECLs.  Don't use align_functions_log if
74         DECL_USER_ALIGN.
75         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
76         even for FUNCTION_DECLs.
77         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
78         FUNCTION_DECLs.
79         * tree.h (DECL_ALIGN): Update for new location of 'align'.
80         (DECL_FUNCTION_CODE): Update for new location and name of
81         'function_code'.
82         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
83         (struct tree_decl_common): Move 'align' and 'off_align' out
84         of union, ensure they're still on a 32-bit boundary.  Remove
85         other fields in union 'u1'.
86         (struct tree_function_decl): Add field 'function_code' replacing
87         'u1.f' in tree_decl_common.
88         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
89         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
90         (Variable Attributes): Cross-reference 'aligned' attribute
91         to Function Attributes.
92         * flags.h (force_align_functions_log): Delete.
93         * toplev.c (force_align_functions_log): Delete.
94
95 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
96
97         PR target/32708
98         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
99         (*vec_concatv2di_rex): New insn pattern.
100
101 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
102
103         PR target/32538
104         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
105
106 2007-07-10  Ian Lance Taylor  <iant@google.com>
107
108         Replace no_new_pseudos in backends.
109         * rtl.h (can_create_pseudo_p): Define.
110         * config/darwin.c (machopic_indirect_data_reference): Use
111         can_create_pseudo_p () instead of no_new_pseudos.
112         (machopic_indirect_data_reference): Likewise.
113         (machopic_legitimize_pic_address): Likewise.
114         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
115         (alpha_emit_set_const_1): Likewise.
116         (alpha_emit_set_const): Likewise.
117         (alpha_emit_conditional_move): Likewise.
118         (alpha_split_conditional_move): Likewise.
119         * config/alpha/alpha.md (various splitters): Likewise.
120         (movti): Likewise.
121         * config/arm/arm.c (legitimize_pic_address): Likewise.
122         (arm_load_pic_register): Likewise.
123         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
124         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
125         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
126         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
127         * config/cris/cris.md (movsi): Likewise.
128         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
129         (symGOTOFF2reg_hilo): Likewise.
130         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
131         * config/h8300/h8300.md (insv, extzv): Likewise.
132         * config/i386/i386.c (ix86_expand_move): Likewise.
133         (ix86_expand_vector_move): Likewise.
134         (ix86_prepare_fp_compare_args): Likewise.
135         (ix86_expand_carry_flag_compare): Likewise.
136         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
137         (tls_dynamic_gnu2_combine_32): Likewise.
138         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
139         * config/ia64/ia64.c (ia64_expand_move): Likewise.
140         (ia64_expand_movxf_movrf): Likewise.
141         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
142         (m32c_split_move): Likewise.
143         (m32c_expand_insv): Likewise.
144         * config/m68k/m68k.md (movsi): Likewise.
145         * config/mips/mips.c (mips_force_temporary): Likewise.
146         (mips_split_symbol): Likewise.
147         (mips_move_integer): Likewise.
148         (mips_legitimize_const_move): Likewise.
149         * config/mn10300/mn10300.md (movsi): Likewise.
150         * config/pa/pa.c (emit_move_sequence): Likewise.
151         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
152         (rs6000_got_register): Likewise.
153         (create_TOC_reference): Likewise.
154         (rs6000_machopic_legitimize_pic_address): Likewise.
155         * config/rs6000/rs6000.md (add<mode>3): Likewise.
156         (various splitters): Likewise.
157         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
158         (movsi_got): Likewise.
159         * config/s390/s390.c (emit_symbolic_move): Likewise.
160         * config/s390/s390.md (movhi, movqi): Likewise.
161         (load_multiple, store_multiple): Likewise.
162         * config/score/score.c (score_force_temporary): Likewise.
163         * config/sh/sh.c (prepare_move_operands): Likewise.
164         (prepare_cbranch_operands): Likewise.
165         (emit_fpu_switch): Likewise.
166         (fpscr_set_from_mem): Likewise.
167         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
168         (adddi3, subsi3): Likewise.
169         (various splitters): Likewise.
170         (divsi_inv_fp_combine): Likewise.
171         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
172         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
173         (sne): Likewise.
174         * config/sh/predicates.md (xor_operand): Likewise.
175         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
176         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
177         (movdi_pic_label_ref): Likewise.
178         * config/spu/spu.c (spu_split_immediate): Likewise.
179         * config/alpha/alpha.md (various splitters): Remove test
180         !no_new_pseudos || reload_completed.
181         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
182         no_new_pseudos.
183         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
184         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
185         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
186         * config/score/score.c (th_output_mi_thunk): Likewise.
187         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
188         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
189
190 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
191
192         PR rtl-optimization/32664
193         * mode-switching.c (create_pre_exit): Skip barrier insns.
194
195 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
196
197         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
198         force_gimple_operand_bsi.
199         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
200         rewrite_use_compare): Ditto.
201         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
202         Ditto.
203         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
204         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
205         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
206         * tree-profile.c (prepare_instrumented_value,
207         tree_gen_interval_profiler, tree_gen_pow2_profiler,
208         tree_gen_one_value_profiler, tree_gen_ic_profiler,
209         tree_gen_ic_func_profiler, tree_gen_average_profiler,
210         tree_gen_ior_profiler): Ditto.
211         * tree-ssa-reassoc.c (negate_value): Ditto.
212         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
213         Use force_gimple_operand_bsi.
214         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
215         * tree-if-conv.c (add_to_dst_predicate_list,
216         find_phi_replacement_condition): Ditto.
217         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
218         Call mark_symbols_for_renaming for new statements.
219         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
220
221 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
222
223         * cfghooks.c (remove_edge): New function.
224         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
225         loop exit rescans.
226         * cfghooks.h (remove_edge): Declare.
227         * cfg.c (remove_edge): Renamed to remove_edge_raw.
228         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
229
230 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
231
232         * optabs.h: Added declaration for signbit_optab.  
233         * optabs.c: (init_optabs): Added initialization for signbit_optab.
234         * genoptinit.c (optabs): Added entry for signbit insns.  
235         * builtins.c (expand_builtin_signbit): Added code to use a signbit
236         insn, if available.  
237         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
238         * config/s390/s390.md (signbit<mode>2): New expander.  
239
240 2007-07-09  Richard Guenther  <rguenther@suse.de>
241
242         PR middle-end/32698
243         * fold-const.c (fold_plusminus_mult_expr): Move constant
244         arguments second to allow decomposing.
245
246 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
247
248         Revert:
249         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
250         PR debug/23551
251         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
252         Disregard DECL_FROM_INLINE.
253
254 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
255
256         PR target/27855
257         * doc/invoke.texi: Add ftree-reassoc flag.
258         * common.opt (ftree-reassoc): New flag.
259         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
260         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
261
262 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
263
264         PR tree-optimization/32681
265         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
266         saved in second_edge->aux when first_bb is a loop header.
267
268 2007-07-09  Jan HUbicka  <jh@suse.cz>
269
270         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
271
272 2007-07-09  Richard Guenther  <rguenther@suse.de>
273
274         * c-decl.c (start_function): Do not promote return type.
275
276 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
277
278         * function.c (do_warn_unused_parameter): Do not warn if
279         TREE_NO_WARNING is set.
280
281 2007-07-08  Andreas Schwab  <schwab@suse.de>
282
283         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
284
285 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
286
287         Revert this patch:
288         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
289
290         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
291         apply to assembly language, too.
292         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
293
294 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
295
296         Revert (note the sccvn portions are *not* reverted)
297         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
298
299         Fix PR tree-optimization/23488
300
301         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
302         handles.
303         * tree-flow-inline.h (get_value_handle): Ditto.
304         * tree-ssa-pre.c (decl_vh_map): New.
305         (decl_node_pool): New.
306         (can_value_number_operation): Support DECL_P.
307         (can_PRE_operation): Ditto.
308         (create_expression_by_pieces): Ditto.
309         (find_existing_value_expr): Modify to differnetiate between
310         addressing and top level.
311         (create_value_handle_for_expr): Handle DECL's.
312         (poolify_tree): Ditto.
313         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
314         (make_values_for_stmt): Handle DECL's properly.
315         (init_pre): Reorg to not init useless things during FRE.
316         (fini_pre): Ditto.
317         * tree-flow.h: Include pointer-set.h.
318         (decl_vh_map): Declare.
319         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
320
321 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
322
323         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
324         the constraint description.
325         * doc/md.texi: Update documentation of AVR constraints.
326
327 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
328
329         * auto-inc-dec.c, config/arm/arm.c,
330         config/m32r/constraints.md, config/mips/mips.md,
331         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
332         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
333         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
334         typos.  Follow spelling conventions.
335         * doc/invoke.texi, doc/rtl.texi: Fix typos.
336
337         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
338         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
339
340         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
341         realloc_vuse): Remove.
342         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
343         and realloc_vuse.
344
345 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
346
347         Fix PR tree-optimization/23488
348
349         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
350         (try_to_simplify): Ditto.
351         (visit_use): Ditto.
352         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
353         handles.
354         * tree-flow-inline.h (get_value_handle): Ditto.
355         * tree-ssa-pre.c (decl_vh_map): New.
356         (decl_node_pool): New.
357         (can_value_number_operation): Support DECL_P.
358         (can_PRE_operation): Ditto.
359         (create_expression_by_pieces): Ditto.
360         (find_existing_value_expr): Modify to differnetiate between
361         addressing and top level.
362         (create_value_handle_for_expr): Handle DECL's.
363         (poolify_tree): Ditto.
364         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
365         (make_values_for_stmt): Handle DECL's properly.
366         (init_pre): Reorg to not init useless things during FRE.
367         (fini_pre): Ditto.
368         * tree-flow.h: Include pointer-set.h.
369         (decl_vh_map): Declare.
370         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
371                 
372 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
373
374         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
375         apply to assembly language, too.
376         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
377
378 2007-07-06  Ian Lance Taylor  <iant@google.com>
379             Zack Weinberg  <zackw@panix.com>
380
381         PR middle-end/32441
382         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
383
384 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
385
386         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
387         (prefetch): Likewise if "pref" would be used.
388
389 2007-07-06  Josh Conner  <jconner@apple.com>
390
391         PR middle-end/32602
392         PR middle-end/32603
393         * calls.c (store_one_arg): Handle arguments which are partially
394         on the stack when detecting argument overlap.
395
396 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
397
398         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
399         chosen during find_reloads.
400
401 2007-07-06  Richard Guenther  <rguenther@suse.de>
402
403         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
404         TYPE_ARG_TYPES for verification of argument types.  Use
405         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
406         parameters as variable arguments.
407
408 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
409
410         * libgcc2.h (word_type): Type definition removed.
411         (cmp_return_type, shift_count_type): Type definitions added.
412         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
413         replaced with shift_count_type.
414         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
415         cmp_return_type.
416         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
417         changed from word_type to Wtype.
418         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
419         replaced with shift_count_type.
420         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
421         cmp_return_type.
422         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
423         and libgcc_shift_count attribute added.
424         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
425         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
426         (TARGET_INITIALIZER): New target hooks added.
427         * targhooks.c (default_libgcc_cmp_return_mode,
428         default_libgcc_shift_count_mode): Default implementations for the new
429         target hooks added.
430         * targhooks.h (default_libgcc_cmp_return_mode,
431         default_libgcc_shift_count_mode): Function prototypes added.
432         * target.h (struct gcc_target): Fields for the new target hooks added.
433         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
434         as library call.
435         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
436         library call.
437
438         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
439         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
440
441         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
442         s390_libgcc_shift_count_mode): Functions added.
443         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
444         Target hooks defined.
445
446 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
447
448         * config/mips/mips.c (compute_frame_size): Restore the original
449         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
450         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
451         Document why the difference is needed.
452
453 2007-07-06  Richard Guenther  <rguenther@suse.de>
454
455         * c-common.c (boolean_increment): Use correctly typed
456         constant.
457
458 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
459
460         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
461         the topmost argument register is not also included in the save mask.
462         (mips16e_collect_argument_save_p): Take a pointer to the argument
463         register, rather than a pointer to the number of arguments.
464         (mips16e_collect_argument_saves): Only include argument saves
465         that aren't in the register mask.
466
467 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
468
469         PR rtl-optimization/32450
470         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
471         to ensure that instructions are not moved into the prologue when
472         profiling is on.  Remove unused prologue_end variable.
473         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
474         as a scheduling barrier.
475
476 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
477
478         PR debug/23551
479         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
480         Disregard DECL_FROM_INLINE.
481
482 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
483
484         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
485         IORing with a constant.
486
487 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
488
489         PR rtl-optimization/32475
490         * df-scan.c (df_def_record_1): Add a use of the stack pointer
491         for every definition of the stack pointer.
492
493 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
494
495         * arm.c (vfp3_const_double_index): Copy signed results of
496         REAL_VALUE_TO_INT into unsigned vars.
497
498 2007-07-05  Richard Guenther  <rguenther@suse.de>
499
500         PR middle-end/32639
501         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
502         FUNCTION_TYPE.
503         * tree-ssa.c (useless_type_conversion_p): Check canonical
504         types early.
505
506 2007-07-05 Anatoly Sokolov <aesok@post.ru>
507
508         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
509         zero_extendhisi2): Change to define_insn_and_split. 
510         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
511
512 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
513
514         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
515         pass_match_asm_constraints): New.
516         * passes.c (init_optimization_passes): Add new pass.
517         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
518         * function.h (struct function): Add has_asm_statement bit.
519         (current_function_has_asm_statement): New.
520         * tree-pass.h (pass_match_asm_constraints): New.
521
522 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
523
524         * config/mips/mips.c (mips_file_start): Avoid declaration
525         after code.
526
527 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
528
529         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
530
531 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
532
533         * rtl.def (NOTE): Change print format string to print
534         operand 5 as a note insn name.
535
536 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
537             David Ung  <davidu@mips.com>
538
539         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
540         * doc/invoke.texi: (MIPS Options): Document them.
541
542 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
543             David Ung  <davidu@mips.com>
544
545         Add support for SmartMIPS ASE.
546
547         * optabs.c (expand_binop_directly): New, broken out from...
548         (expand_binop): Here.  Make it try rotating in the other
549         direction even when the second operand isn't constant.
550         * config/mips/mips.md (*lwxs): New.
551         * config/mips/mips.opt (msmartmips): New.
552         * config/mips/mips.c (mips_lwxs_address_p): New.
553         (mips_rtx_costs): Make it recognize scaled indexed addressing.
554         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
555         __mips_smartmips when compiling for TARGET_SMARTMIPS.
556         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
557         (ISA_HAS_LWXS): New.
558         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
559         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
560         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
561         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
562         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
563         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
564         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
565
566 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
567
568         * tree-vectorizer.c (new_loop_vec_info): Initialize
569         LOOP_VINFO_COST_MODEL_MIN_ITERS.
570         * tree-vectorizer.h (_loop_vec_info): Added new filed
571         min_profitable_iters.
572         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
573         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
574         * tree-vect-analyze.c (vect_analyze_operations): Set
575         LOOP_VINFO_COST_MODEL_MIN_ITERS.
576         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
577         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
578         Fix calculation of peel_iters_prologue. Move consideration of epilogue
579         and prologue cost to after they are computed.
580         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
581         TARG_VEC_STMT_COST.
582         (vect_model_simple_cost): Takes additional argument dt. Consider cost
583         of creating vectors from scalars according to dt.
584         (vect_model_store_cost): Likewise.
585         (vectorizable_call): Use dt array instead of scalar dt. Call
586         vect_model_simple_cost with additional argument dt.
587         (vectorizable_assignment): Likewise.
588         (vectorizable_operation): Likewise.
589         (vectorizable_type_demotion): Likewise.
590         (vectorizable_type_promotion): Likewise.
591         (vectorizable_store): Use dt array instead of scalar dt. Call
592         vect_model_store_cost with additional argument dt.
593         (vect_do_peeling_for_loop_bound): Don't call
594         vect_estimate_min_profitable_iters. Instead, lookup
595         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
596         "may not be profitable".
597
598 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
599
600         PR testsuite/32014
601         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
602         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
603         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
604         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
605
606 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
607
608         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
609         addressing modes cheaper.
610
611 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
612
613         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
614         (dw_ranges_struct): Rename block_num to num.  Adjust.
615         (dw_ranges_by_label_struct): New.
616         (ranges_by_label, ranges_by_label_allocated,
617         ranges_by_label_in_use): New variables.
618         (add_ranges_num): Factored most of the code out of...
619         (add_ranges): ... this one.  Rewrite in terms of the former.
620         (add_ranges_by_labels): New.
621         (output_ranges): Output by-label ranges.
622         (dwarf2out_finish): Output range for multiple-section
623         compile_unit.  Output standard DW_AT_low_pc in addition to
624         unexpected DW_AT_entry_pc.
625
626 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
627
628         PR tree-optimization/32604
629         PR tree-optimization/32606
630
631         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
632         (compute_antic_safe): Removed.
633         (ANTIC_SAFE_LOADS): Ditto.
634         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
635         (execute_pre): Don't call compute_antic_safe.
636         (vuse_equiv): New function.
637         (make_values_for_stmt): Use it
638         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
639         not always true.
640
641 2007-07-04 Anatoly Sokolov <aesok@post.ru>
642
643         PR target/31331
644         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
645         rather than a decl. 
646         (avr_attribute_table): Make "naked" attribute apply to function types
647         rather than to decls.
648         (avr_handle_fntype_attribute): New function.
649
650 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
651
652         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
653         after \.
654
655 2007-07-04  David Ung  <davidu@mips.com>
656             Joseph Myers  <joseph@codesourcery.com>
657
658         * config/mips/mips.md (type): Add logical, signext and move.
659         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
660         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
661         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
662         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
663         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
664         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
665         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
666         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
667         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
668         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
669         movv2sf_hardfloat_64bit): Use the new types.
670         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
671         *movdf_softfloat, *movdf_mips16): Use "multi".
672         (extendqihi2): Replace with a define_expand.
673         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
674         Based on extend<SHORT:mode><GPR:mode>2 patterns.
675         * config/mips/74k.md (r74k_int_logical): New reservation and
676         bypasses.
677         (r74k_int_arith): Remove "slt".
678         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
679         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
680         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
681         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
682         reservations for "arith".
683
684 2007-07-04  Richard Guenther  <rguenther@suse.de>
685
686         * tree-ssa.c (useless_type_conversion_p): Add handling for
687         scalar float and vector types.  Only call the types_compatible_p
688         langhook for aggregate types as last resort.  Follow the
689         rules.
690
691 2007-07-04  Richard Guenther  <rguenther@suse.de>
692
693         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
694         the same as NOP_EXPR.
695
696 2007-07-04  Nick Clifton  <nickc@redhat.com>
697
698         * target.h (struct gcc_target): Add target_help field.
699         * target-def.h (TARGET_HELP): New.
700         (TARGET_INITIALIZER): Use TARGET_HELP.
701         * opts.c (command_handle_option): Invoke target_help function, if
702         defined, when the user has specified --target-help on the command
703         line.
704         * doc/invoke.texi: Mention that --target-help might print
705         additional information.
706         * doc/tm.texi: Document TARGET_HELP hook.
707
708         * arm.c (TARGET_HELP): Override default definition.
709         (arm_target_help): New - display a wrapped list of cores and
710         architectures supported.
711
712 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
713
714         * config/gcc/v850/v850.c (expand_prologue): Make sure
715         GEN_INT() argument is sign extended rather than zero extended.
716         (expand_epilogue): Likewise.
717         (output_move_double): Delete.
718         * config/gcc/v850/v850-protos.h (output_move_double): Delete.
719         * config/gcc/v850/v850.md (movdi): Delete.
720         (*movdi_internal): Delete.
721         (movdf): Delete.
722         (*movdf_internal): Delete.
723
724 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
725
726         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
727         unless compiling RTP PIC.
728
729 2007-07-04  Richard Guenther  <rguenther@suse.de>
730
731         PR tree-optimization/32482
732         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
733         original ssa name if we didn't find a shift expression.
734         Fix shift constant for bit zero test.
735
736 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
737
738         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
739
740 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
741
742         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
743         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
744         * config/arm/vxworks.h (ASM_SPEC): Delete.
745         (SUBTARGET_EXTRA_ASM_SPEC): Define.
746
747 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
748
749         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
750         (DDR_REVERSED_P): New.
751         * tree-data-ref.c (initialize_data_dependence_relation,
752         build_classic_dist_vector): Set DDR_REVERSED_P.
753
754 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
755
756         PR middle-end/32457
757         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
758         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
759         init_omega_for_ddr_1): Use non conservative number of iterations
760         estimations.
761         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
762         (analyze_siv_subscript): Remove FIXME and reinitialization of 
763         last_conflicts to chrec_dont_know.
764         * testsuite/gfortran.dg/vect/pr32457.f90: New.
765
766 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
767
768         * tree.c (maybe_canonicalize_argtypes): Improve description.
769
770 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
771
772         * tree.c (maybe_canonicalize_argtypes): New.
773         (build_function_type): Set canonical type.
774         (build_method_type_directly): Ditto.
775         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
776         properly.
777
778 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
779
780         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
781         like PLUS_EXPR.
782         (rewrite_use_nonlinear_expr): Likewise.
783
784 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
785
786         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
787
788 2007-07-04  Ben Elliston  <bje@au.ibm.com>
789
790         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
791         of this file.
792
793         * c-objc-common.c (c_types_compatible_p): Fix indentation.
794
795         * doc/tm.texi (Run-time Target): Capitalise "CPU".
796         (Exception Handling): Likewise.
797
798 2007-07-03  Jan Hubicka  <jh@suse.cz>
799
800         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
801
802 2007-07-03  Eric Christopher  <echristo@apple.com>
803
804         * doc/cppopts.texi: Add conflicting option note to -dM.
805         * doc/invoke.texi: Add note about possible conflicts with
806         -E for -dCHARS and note that -dM will not produce
807         any results if there is no machine dependent reorg.
808         
809 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
810
811         * tree.h (DECL_ALIGN): Back out previous change.
812
813 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
814
815         * configure.ac: Test for .dtprelword support on MIPS.
816         * configure, config.in: Regenerate.
817         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
818         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
819
820 2007-07-03  Julian Brown  <julian@codesourcery.com>
821
822         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
823         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
824         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
825         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
826         capability.
827         (all_fpus): Add FPUTYPE_VFP3.
828         (fp_model_for_fpu): Add VFPv3 field.
829         (arm_rtx_costs_1): Give cost to VFPv3 constants.
830         (vfp3_const_double_index): New function. Return integer index of
831         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
832         isn't suitable.
833         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
834         and argument represents a valid RTX for a VFPv3 constant.
835         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
836         two instructions.
837         (vfp_emit_fstmd): Similar, for fstmd.
838         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
839         constants, represented as integer indices.
840         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
841         VFP_REGNO_OK_FOR_DOUBLE macros.
842         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
843         (arm_file_start): Set float-abi attribute for VFPv3, and output
844         correct ".fpu" assembler directive.
845         (arm_dbx_register_numbering): Add FIXME.
846         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
847         (fputype): Add FPUTYPE_VFP3.
848         (FIXED_REGISTERS): Add 32 registers for D16-D31.
849         (CALL_USED_REGISTERS): Likewise.
850         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
851         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
852         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
853         (D7_VFP_REGNUM): New.
854         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
855         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
856         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
857         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
858         (REG_ALLOC_ORDER): Adjust for VFPv3.
859         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
860         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
861         VFP_LO_REGS, VFP_HI_REGS.
862         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
863         (IS_VFP_CLASS): Define macro.
864         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
865         IS_VFP_CLASS.
866         (REGISTER_MOVE_COST): Likewise.
867         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
868         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
869         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
870         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
871         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
872         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
873         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
874         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
875         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
876         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
877         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
878         where appropriate for single-word registers.
879         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
880         As above. Fix type attributes.
881         * config/arm/constraints.md (register_contraint "t"): Define.
882         (register_constraint "w"): Change to D0-D15, or D0-D31 for
883         VFPv3/NEON.
884         (register_constraint "x"): Define.
885         (constraint "Dv"): Define.
886
887 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
888
889         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
890
891 2007-07-03  Tom Tromey  <tromey@redhat.com>
892
893         * c-parser.c (objc_pq_context): Removed.
894         (objc_need_raw_identifier): Likewise.
895         (c_parser) <objc_pq_context>: New field.
896         <objc_need_raw_identifier>: Likewise.
897         (OBJC_NEED_RAW_IDENTIFIER): Removed.
898         (c_lex_one_token): Update.
899         (c_parser_objc_protocol_definition): Update.
900         (c_parser_objc_method_definition): Update.
901         (c_parser_objc_methodproto): Update.
902         (c_parser_declspecs): Update.
903
904 2007-07-03  David Ung  <davidu@mips.com>
905
906         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
907
908 2007-07-03  David Ung  <davidu@mips.com>
909             Richard Sandiford  <richard@codesourcery.com>
910
911         * doc/invoke.texi: Document -march=74kf3_2.
912         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
913         (TUNE_74K): Check for it.
914         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
915         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
916         * config/mips/mips.md (cpu): Add 74kf3_2.
917         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
918         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
919         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
920         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
921         74kf3_2 to the CPU list.
922         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
923         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
924         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
925         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
926         (r74kf3_2_fxfer_from_c1): New insn reservations.
927
928 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
929             David Ung  <davidu@mips.com>
930
931         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
932         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
933         and 74k[fx].  Document aliases for the new options.
934         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
935         (PROCESSOR_24KF2_1): ...this.
936         (PROCESSOR_24KX): Rename to...
937         (PROCESSOR_24KF1_1): ...this.
938         (PROCESSOR_74KF): Rename to...
939         (PROCESSOR_74KF2_1): ...this.
940         (PROCESSOR_74KX): Rename to...
941         (PROCESSOR_74KF1_1): ...this.
942         (TUNE_74K): Update PROCESSOR_* names.
943         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
944         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
945         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
946         (mips_rtx_cost_data): Update processor names in comments.
947         (mips_issue_rate): Update PROCESSOR_* names.
948         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
949         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
950         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
951         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
952         Update cpu attribute names.
953         (r24k_fpu_iss): Rename this reservation to...
954         (r24kf2_1_fpu_iss): ...this and update all uses.
955         (r24kx_fpu_iss): Rename this reservation to...
956         (r24kf1_1_fpu_iss): ...this and update all uses.
957         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
958         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
959         Update cpu attribute names.
960
961 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
962
963         * config/m32r/constraints.md: New file.
964         * config/m32r/m32r.c: Include tm-constrs.h.
965         (small_data_operand): Use satisfies_constraint_* instead of macro.
966         (addr24_operand, gen_compare): Likewise.
967         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
968         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
969         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
970         EXTRA_CONSTRAINT): Likewise.
971         * config/m32r/m32r.md: Include constraints.md.
972         (*movsi_insn): Use satisfies_constraint_* instead of macro.
973         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
974         * config/m32r/predicates.md (conditional_move_operand): Likewise.
975         (two_insn_const_operand, int8_operand, uint16_operand,
976         reg_or_int16_operand, reg_or_uint16_operand,
977         reg_or_cmp_int16_operand, cmp_int16_operand,
978         seth_add3_operand): Likewise.
979
980 2007-07-03  Eric Christopher  <echristo@gmail.com>
981
982         * libgcc2.h: Conditionally declare __bswapsi2 and
983         __bswapdi2.
984         
985 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
986
987         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
988         defined.
989
990 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
991
992         PR target/28307
993         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
994         (__gthrw_pragma): Provide default definition.
995         (__gthrw2): Use it.
996         * gthr-posix.c (__gthrw_pragma): Define.
997
998 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
999
1000         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
1001         before declaring inequality.
1002
1003 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1004
1005         * combine.c (recog_for_combine): Log the success or failure of
1006           matching new insn patterns against the machine description in
1007           detailed dumps.
1008
1009 2007-07-03  Revital Eres  <eres@il.ibm.com>
1010
1011         * ddg.c (print_sccs): New function.
1012         (check_sccs): New function.
1013         (create_ddg_all_sccs): Use it.
1014         * ddg.h (print_sccs): Declare.
1015         * modulo-sched.c (sms_order_nodes): Call print_sccs.
1016
1017 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
1018
1019         * targhooks.h (default_mode_for_suffix): New function declaration.
1020         * targhooks.c (default_mode_for_suffix): New default target hook.
1021         * target.h (struct c): New structure in the targetm struct.
1022         (mode_for_suffix): New target hook as part of struct c.
1023         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
1024         default_mode_for_suffix.
1025         (TARGET_C): New define.
1026         * c-lex.c: Include "target.h".
1027         (interpret_float): Use targetm.c.mode_for_suffix to determine
1028         the mode for a given non-standard suffix.
1029         Makefile.in (c-lex.o): Depend on $(TARGET_H).
1030
1031         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
1032         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
1033
1034         * doc/extend.texi (Floating Types): New node.  Document __float80 and
1035         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
1036
1037 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1038
1039         PR target/32506
1040         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
1041         predicate instead of target_operand.
1042         (divsi3_i1_media, divsi3_media_2): Likewise.
1043
1044 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
1045
1046         * tree.h (alias_sets_might_conflict_p): Rename into
1047         alias_sets_must_conflict_p.
1048         * alias.c (alias_sets_might_conflict_p): Likewise.
1049         (alias_sets_conflict_p): Use it.
1050         (objects_must_conflict_p): Likewise.
1051         * c-common.c (strict_aliasing_warning): Adjust.
1052
1053 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1054
1055         * rtlhooks.c (gen_lowpart_if_possible): Check for
1056         invalid subreg before calling gen_lowpart_SUBREG.
1057
1058 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
1059
1060         * config/darwin9.h: Add copyright notice.
1061         (LINK_COMMAND_SPEC): Add comment.
1062         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
1063         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
1064         DARWIN_LIBSYSTEM_HAS_UNWIND.
1065
1066 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1067
1068         PR libgomp/32468
1069         * omp-low.c (check_combined_parallel): New function.
1070         (lower_omp_parallel): Call it via walk_stmts, set
1071         OMP_PARALLEL_COMBINED if appropriate.
1072         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
1073         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
1074         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
1075         don't consider it as combined parallel.
1076
1077 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1078
1079         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1080         (gcc_tooldir): Likewise.
1081         * configure: Regenerate.
1082         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1083         old configure.ac gcc_tooldir setting.
1084         (prefix_to_exec_prefix): New variable.
1085         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1086         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1087
1088 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
1089
1090         Fix PR tree-optimization/32583
1091         Fix PR tree-optimization/32584
1092         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
1093         (phi_translate_set): Use phi_translate directly now.
1094         (make_values_for_stmt): Don't value number RHS if we already know
1095         it is constant.
1096
1097 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
1098             Jim Wilson <wilson@specifix.com>
1099
1100         PR target/31684
1101         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
1102         copy_insn.
1103
1104 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
1105             Richard Sandiford  <richard@codesourcery.com>
1106             Nigel Stephens  <nigel@mips.com>
1107
1108         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
1109         (mips16e_output_save_restore): Declare.
1110         (mips16e_save_restore_pattern_p): Likewise.
1111         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
1112         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
1113         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
1114         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
1115         (BITSET_P): New global macro, extracted from...
1116         (mips_for_each_saved_reg): ...here.
1117         (mips16e_save_restore_info): New struct.
1118         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
1119         (mips16e_save_restore_regs): New variable.
1120         (mips_split_plus, mips16e_find_first_register): New functions.
1121         (mips16e_mask_registers): New function.
1122         (compute_frame_size): Expand the commentary before the function.
1123         Enforce the MIPS16e save and restore register range restrictions.
1124         Pad the general register save area at the low end.
1125         (mips16e_save_restore_reg, mips16e_build_save_restore)
1126         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
1127         (mips16e_output_save_restore, mips16e_collect_propagate_value)
1128         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
1129         New functions.
1130         (mips_expand_prologue, mips_expand_epilogue): Handle
1131         GENERATE_MIPS16E_SAVE_RESTORE.
1132         * config/mips/mips.md (*mips16e_save_restore): New pattern.
1133
1134 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
1135
1136         PR tree-optimization/31966
1137         PR tree-optimization/32533
1138         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
1139         "basic_block" description as its third argument.  Update function
1140         calls to get destination bb from "edge" argument.  Save "cond" into
1141         aux field of the edge.  Update prototype for changed arguments.
1142         (if_convertible_loop_p): Clear aux field of incoming edges if bb
1143         contains phi node.
1144         (find_phi_replacement_condition): Operate on incoming edges, not
1145         on predecessor blocks.  If there is a condition saved in the
1146         incoming edge aux field, AND it with incoming bb predicate.
1147         Return source bb of the first edge.
1148         (clean_predicate_lists): Clean aux field of outgoing node edges.
1149         (tree_if_conversion): Do not initialize cond variable. Move
1150         variable declaration into the loop.
1151         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
1152         initializations of new_stmt, arg0 and arg1 variables.
1153
1154 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1155
1156         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
1157         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
1158
1159 2007-07-02  Richard Guenther  <rguenther@suse.de>
1160
1161         * tree-ssa.c (useless_type_conversion_p): Document
1162         future intent as defining the middle-end type system.
1163         Re-structure to call langhook last, group by type class,
1164         mark questionable parts.
1165
1166 2007-07-02  Richard Guenther  <rguenther@suse.de>
1167
1168         * tree-flow.h (types_compatible_p): Declare.
1169         * tree-ssa.c (types_compatible_p): New function.
1170         * ipa-type-escape.c (discover_unique_type): Use
1171         types_compatible_p instead of lang_hooks.types_compatible_p.
1172         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
1173         * tree-vn.c (expressions_equal_p): Likewise.
1174         * tree.c (fields_compatible_p): Likewise.
1175         * tree-ssa-dom.c (avail_expr_eq): Likewise.
1176         (cprop_operand): Use useless_type_conversion_p instead of
1177         lang_hooks.types_compatible_p.
1178         * tree-inline.c (setup_one_parameter): Likewise.
1179         (declare_return_variable): Likewise.
1180         * tree-nrv.c (tree_nrv): Likewise.
1181         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1182         (maybe_fold_offset_to_component_ref): Likewise.
1183         (maybe_fold_offset_to_reference): Likewise.
1184         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1185         (merge_alias_info): Likewise.
1186         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1187         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
1188         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
1189         * tree-tailcall.c (find_tail_calls): Likewise.
1190         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1191         * gimplify.c (canonicalize_addr_expr): Likewise.
1192         (fold_indirect_ref_rhs): Likewise.
1193         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
1194         (cpt_same_type): Likewise.
1195         (check_pointer_types_r): Swap parameters to cpt_same_type
1196         where appropriate.
1197         * fold-const.c (fold_convert): Revert fix for PR15988.
1198         * tree-inline.c (setup_one_parameter): Instead fix it here by
1199         using fold_build1 instead of fold_convert and checking for
1200         error_mark_node.  Convert only if the conversion is necessary.
1201
1202 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
1203
1204         * configure.ac: Check for .gnu_attribute on Power.
1205         * configure: Regenerate.
1206         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
1207         attribute for floating-point ABI.
1208
1209 2007-07-02  Ira Rosen  <irar@il.ibm.com>
1210
1211         PR tree-optimization/32230
1212         PR tree-optimization/32477
1213         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
1214         address is a constant.
1215
1216 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1217
1218         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
1219         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
1220         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
1221         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
1222         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
1223         64-bit targets.  Add support for *-elfoabi*.
1224         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
1225         different settings if $(tm_defines) does not select the EABI.
1226         (MULTILIB_EXCLUSIONS): Define in those circumstances.
1227         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
1228         (MIPS_ARCH_OPTION_SPEC): Likewise.
1229         (MIPS_ISA_LEVEL_SPEC): Likewise.
1230         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
1231         * config/mips/elfoabi.h: New file.
1232
1233 2007-07-02  Richard Guenther  <rguenther@suse.de>
1234
1235         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
1236         (useless_type_conversion_p): ... this.
1237         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
1238         (useless_type_conversion_p): ... this.
1239         * builtins.c (fold_builtin_memory_op): Rename
1240         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
1241         * tree-cfg.c (verify_expr): Likewise.
1242         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
1243         * tree-ssa-ccp.c (ccp_fold): Likewise.
1244         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1245         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
1246         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1247         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
1248         * tree-ssa-pre.c (eliminate): Likewise.
1249         * tree-ssa.c (delete_tree_ssa): Likewise.
1250         (tree_ssa_useless_type_conversion): Likewise.
1251         * tree.c (build2_stat): Likewise.
1252
1253 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1254
1255         Fix PR tree-optimization/32571
1256         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
1257         simplifying them.
1258
1259 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1260
1261         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
1262         and other expected operations explicitly, change default to
1263         gcc_unreachable. 
1264
1265 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
1266
1267         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
1268         PARALLEL.
1269         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
1270         (tls_load_dot_plus_eight): Move the label number into the unspec.
1271         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
1272
1273 2007-07-01  Andreas Schwab  <schwab@suse.de>
1274
1275         * dwarf2out.c (initial_return_save): Define only if used.
1276
1277 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
1278
1279         Unreverting Richard's Revert of:
1280
1281         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1282
1283         * dce.c (deletable_insn_p_1): New function, split out from...
1284         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1285         specially, not those inside PARALLELs.  Remove BODY argument
1286         and adjust recursive call accordingly.
1287         (prescan_insns_for_dce): Update call to delete_insn_p.
1288
1289 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
1290             Revital Eres  <eres@il.ibm.com>
1291
1292         * ddg.c (create_ddg_all_sccs): Fix missed
1293         initialization of scc_nodes.
1294
1295 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
1296
1297         PR middle-end/32559
1298         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
1299         X + ~X to 1 only for INTEGRAL_TYPE_P type.
1300
1301 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
1302
1303         * configure.ac: Check for .gnu_attribute on MIPS.
1304         * configure, config.in: Regenerate.
1305         * config/mips/mips.c (mips_file_start): If supported, output
1306         attribute for floating-point ABI.
1307
1308 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
1309
1310         PR target/32433
1311         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
1312         (ffs_cmove): New expander to expand using ctz pattern.
1313         (*ffs_cmove): Remove pattern.
1314         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
1315         (ffsdi2): Expand using ctz pattern.
1316         (*ffs_rex64): Remove pattern.
1317
1318 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1319
1320         PR rtl-optimization/32296
1321         * pa.md (return): Delete pattern.
1322         (return_internal): Remove "(const_int 1)" from pattern.
1323         (epilogue): Use return_internal pattern for trivial returns.
1324         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
1325         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
1326
1327 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1328
1329         * tree-ssa-pre.c (is_exception_related): New function
1330         (can_value_number_operation): Use it.
1331
1332 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1333         
1334         Fix PR tree-optimization/32540
1335         Fix PR tree-optimization/31651
1336
1337         * tree-ssa-sccvn.c: New file.
1338
1339         * tree-ssa-sccvn.h: Ditto.
1340         
1341         * tree-vn.c: Include tree-ssa-sccvn.h
1342         (val_expr_paid_d): Removed.
1343         (value_table): Ditto.
1344         (vn_compute): Ditto.
1345         (val_expr_pair_hash): Ditto.
1346         (val_expr_pair_expr_eq): Ditto.
1347         (copy_vuses_from_stmt): Ditto.
1348         (vn_delete): Ditto.
1349         (vn_init): Ditto.
1350         (shared_vuses_from_stmt): Ditto.
1351         (print_creation_to_file): Moved up.
1352         (sort_vuses): Ditto.
1353         (sort_vuses_heap): Ditto.
1354         (set_value_handle): Make non-static.
1355         (make_value_handle): Ditto.
1356         (vn_add): Rewritten to use sccvn lookups.
1357         (vn_add_with_vuses): Ditto.
1358         (vn_lookup): Ditto (and second argument removed).
1359         (vn_lookup_with_vuses): Ditto.
1360         (vn_lookup_or_add): Ditto (and second argument removed);
1361         (vn_lookup_or_add_with_vuses): Ditto.
1362         (vn_lookup_with_stmt): New.
1363         (vn_lookup_or_add_with_stmt): Ditto.
1364         (create_value_handle_for_expr): Ditto.
1365
1366         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
1367         (seen_during_translate): New function.
1368         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
1369         (phi_trans_add): Ditto.
1370         (constant_expr_p): FIELD_DECL is always constant.
1371         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
1372         Use constant_expr_p.
1373         Avoid infinite recursion on mutually valued expressions.
1374         Change callers of vn_lookup_or_add.
1375         (phi_translate): New function.
1376         (compute_antic_safe): Allow phi nodes.
1377         (create_component_ref_by_pieces): Update for FIELD_DECL change.
1378         (find_or_generate_expression): Rewrite slightly.
1379         (create_expression_by_pieces): Updated for vn_lookup_or_add
1380         change.
1381         Update VN_INFO for new names.
1382         (insert_into_preds_of_block): Update for new names.
1383         (add_to_exp_gen): New function.
1384         (add_to_sets): Use vn_lookup_or_add_with_stmt.
1385         (find_existing_value_expr): Rewrite to changed vn_lookup.
1386         (create_value_expr_from): Ditto, and use add_to_exp_gen.
1387         (try_look_through_load): Removed.
1388         (try_combine_conversion): Ditto.
1389         (get_sccvn_value): New function.
1390         (make_values_for_phi): Ditto.
1391         (make_values_for_stmt): Ditto.
1392         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
1393         SCCVN.
1394         (init_pre): Update for SCCVN changes.
1395         (fini_pre): Ditto.
1396         (execute_pre): Ditto.
1397
1398         * tree-flow.h (make_value_handle): Declare.
1399         (set_value_handle): Ditto.
1400         (sort_vuses_heap): Ditto.
1401         (vn_lookup_or_add_with_stmt): Ditto.
1402         (vn_lookup_with_stmt): Ditto.
1403         (vn_compute): Remove.
1404         (vn_init): Ditto.
1405         (vn_delete): Ditto.
1406         (vn_lookup): Update arguments.
1407
1408         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
1409         (tree-vn.o): Ditto.
1410         (tree-ssa-sccvn.o): New.
1411         (OBJS-common): Add tree-ssa-sccvn.o
1412         
1413 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1414
1415         PR c/4076
1416         * c-typeck.c (build_external_ref): Don't mark as used if called
1417         from itself.
1418         * calls.c (rtx_for_function_call): Likewise.
1419         
1420 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
1421
1422         Revert:
1423
1424         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1425
1426         * dce.c (deletable_insn_p_1): New function, split out from...
1427         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1428         specially, not those inside PARALLELs.  Remove BODY argument
1429         and adjust recursive call accordingly.
1430         (prescan_insns_for_dce): Update call to delete_insn_p.
1431
1432 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
1433
1434         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
1435         (try_combine): Move potential calls to undo_all() so they happen
1436         before we commit to using the combined insns.
1437
1438 2006-06-30  Jan Hubicka  <jh@suse.cz>
1439
1440         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
1441         code.
1442
1443 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
1444
1445         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
1446         (cgraph_remove_unreachable_nodes): Likewise.
1447         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
1448         * ipa-inline.c (update_caller_keys): Cast according to the coding
1449         conventions.
1450         (cgraph_decide_recursive_inlining): Likewise.
1451         (cgraph_decide_inlining_of_small_function): Likewise.
1452         (try_inline): Likewise.
1453         (cgraph_decide_inlining_incrementally): Likewise.
1454         * ipa-pure-const.c (get_function_state): Likewise.
1455         (scan_function): Likewise.
1456         (analyze_function): Likewise.
1457         (static_execute): Likewise.
1458         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
1459         (merge_callee_local_info): Likewise.
1460         (analyze_function): Use type safe memory macros.
1461         (static_execute): Likewise. Cast according to the coding conventions.
1462         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
1463         conventions.
1464         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
1465         names.
1466         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
1467         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
1468         variable names.
1469
1470 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1471
1472         PR middle-end/30024
1473         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
1474         for complex modes (both int and real).
1475
1476 2007-06-29  Jan Hubicka  <jh@suse.cz>
1477
1478         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
1479
1480 2007-06-29  Jan Hubicka  <jh@suse.cz>
1481
1482         PR middle-end/32372
1483         * cse.c (cse_insn): Avoid invalid sharing in between register note and
1484         the insn pattern.
1485
1486 2007-06-29  Anatoly Sokolov <aesok@post.ru>
1487
1488         PR target/32335
1489         * config/avr/avr.c: Include dataflow header file.
1490         (expand_prologue): Adjust for prologue insn change.
1491         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
1492         inside a insn.
1493
1494 2007-06-29  Richard Guenther  <rguenther@suse.de>
1495
1496         PR middle-end/32493
1497         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
1498         during type verification.
1499
1500 2007-06-29  Jan Hubicka  <jh@suse.cz>
1501
1502         * recog.c (validate_change_rtx_1): Unshare TO argument.
1503
1504 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
1505
1506         PR tree-optimization/24659
1507         * tree-vect-transform.c (vectorizable_call): Handle
1508         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1509
1510         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
1511         * config/i386/i386.c (enum ix86_builtins)
1512         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
1513         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
1514         description.
1515         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
1516         const using def_builtin_const.
1517         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
1518         input operands in the same modes as the result.
1519         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
1520
1521 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
1522
1523         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
1524         (df_set_dead_notes_for_mw): Likewise.
1525
1526 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
1527
1528         * c-common.c (pointer_int_sum): Do the negation in sizetype.
1529
1530 2007-06-28  DJ Delorie  <dj@redhat.com>
1531
1532         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
1533
1534 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1535
1536         * doc/invoke.texi (C++ Dialect Options): Document
1537         fvisibility-ms-compat.
1538         * c.opt (fvisibility-ms-compat): New.
1539
1540 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1541
1542         PR tree-opt/32417
1543         * tree-affine.c (aff_combination_add_elt): Handle
1544         pointer addition specially.
1545
1546 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
1547
1548         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
1549         decl is non-external for AIX ABI.
1550
1551 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
1552
1553         * config/rs6000/predicates.md (current_file_function_operand):
1554         Ensure the symbol is non-external for AIX ABI.
1555
1556 2007-06-28  Nick Clifton  <nickc@redhat.com>
1557
1558         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
1559         (fdce, fdse, fpredictive-commoning): Likewise.
1560
1561 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1562
1563         PR other/31400
1564         * gcc.c (process_command): Recognize the new -static-libgfortran
1565         option.
1566
1567 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1568
1569         PR target/32418
1570         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
1571         Use a call clobbered hard reg instead of a pseudo reg.
1572
1573 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1574
1575         * config/sh/sh.md (load_gbr): Use correct operand constraint.
1576
1577 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1578
1579         PR target/32479
1580         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
1581         REG_LIBCALL and REG_RETVAL notes.
1582         (divsi3, mulsi3): Likewise.
1583         (mulhisi3): Likewise.  Use emit_libcall_block.
1584         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
1585
1586 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
1587
1588         PR rtl-optimization/32481
1589         * combine.c (adjust_for_new_dest): Rescan the changed insn.
1590
1591 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1592
1593         * dce.c (deletable_insn_p_1): New function, split out from...
1594         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1595         specially, not those inside PARALLELs.  Remove BODY argument
1596         and adjust recursive call accordingly.
1597         (prescan_insns_for_dce): Update call to delete_insn_p.
1598
1599 2007-06-27  Richard Guenther  <rguenther@suse.de>
1600
1601         PR middle-end/32492
1602         * tree.h (fold_convertible_p): Declare.
1603         * fold-const.c (fold_convertible_p): New function.
1604         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
1605         instead of lang_hooks.types_compatible_p.
1606
1607 2007-06-26  Jan Hubicka  <jh@suse.cz>
1608
1609         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
1610         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
1611         early use validate_unshare_change.
1612         (reload_combine): Likewise.
1613         * recog.c (change_t): New field unshare.
1614         (validate_change_1): Rename from validate_change; add argument unshare.
1615         (validate_change): Turn into wrapper of validate_change_1; update
1616         prototype for bools.
1617         (validate_unshare_change): New.
1618         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
1619         calls of df_insn_rescan.
1620         * recog.h (validate_change): Replace ints by bools.
1621         (validate_unshare_change): Declare.
1622
1623 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
1624
1625         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
1626         
1627 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
1628
1629         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
1630
1631 2007-06-25  Jan Hubicka  <jh@suse.cz>
1632
1633         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
1634         uninlinable call.
1635         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
1636         cgraph_decide_inlining_incrementally): Move uninlinability checks to
1637         places other call site specific checks are performed.
1638
1639 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1640
1641         PR tree-opt/32421
1642         * tree-vect-transform.c (vectorizable_operation): Convert
1643         POINTER_PLUS_EXPR over to PLUS_EXPR.
1644
1645 2007-06-25  Chao-ying Fu  <fu@mips.com>
1646
1647         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
1648         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
1649         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
1650         Document GET_MODE_IBIT, and GET_MODE_FBIT.
1651
1652         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
1653         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1654         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
1655         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
1656         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
1657         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
1658         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
1659         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
1660         ALL_FIXED_POINT_MODE_P): New define.
1661         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1662         MODE_UACCUM.
1663         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
1664
1665         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
1666         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1667         MODE_VECTOR_UACCUM): New mode classes.
1668
1669         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
1670         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
1671         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
1672         USA, UDA, and UTA.
1673
1674         * genmodes.c (struct mode_data): Add ibit and fbit fields.
1675         (blank_mode): Initialize ibit and fbit.
1676         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
1677         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1678         MODE_UACCUM.
1679         (new_adjust): Change required_class to required_class_from and
1680         required_class_to for testing within a range.
1681         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1682         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1683         MODE_VECTOR_UACCUM.
1684         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
1685         (make_fixed_point_mode): New.
1686         (_ADD_ADJUST): Change C to C1 and C2.
1687         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
1688         use a range for machine classes.
1689         (ADJUST_IBIT, ADJUST_FBIT): New.
1690         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
1691         CONST_MODE_FBIT.
1692         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
1693         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1694         Emit adjustment for ibit and fbit.
1695         (emit_mode_ibit, emit_mode_fbit): New.
1696         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
1697
1698 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
1699
1700         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
1701         as the source of the set.
1702
1703 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
1704
1705         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
1706         FP_REGNO_P): Use IN_RANGE.
1707         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
1708         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
1709         (DATA_REG_P): Use DATA_REGNO_P.
1710         (FP_REG_P): Use FP_REGNO_P.
1711         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
1712         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
1713         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
1714
1715 2007-06-24  Jan Hubicka  <jh@suse.cz>
1716
1717         PR middle-end/30563
1718         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
1719
1720 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
1721
1722         PR middle-end/32461
1723         * fold-const.c (fold_binary): Strip nops of operand 0
1724         of BIT_NOT_EXPR before calling operand_equal_p.
1725         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
1726         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
1727
1728 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
1729
1730         * doc/extend.texi: Document that dllimport and dllexport imply
1731         default visibility.
1732         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
1733         imported or exported declaration, including type declarations.
1734         * c-common.c (handle_visibility_attribute): Check for conflicts
1735         with dllimport/dllexport.
1736         (c_determine_visibility): Handle dllimport/dllexport as an
1737         explicit visibility atttribute.
1738
1739 2007-06-23  Richard Guenther  <rguenther@suse.de>
1740
1741         PR tree-optimization/16876
1742         PR middle-end/29478
1743         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
1744         for CALL_EXPRs.
1745         * tree-inline.c (initialize_inlined_parameters): Do not call
1746         lang_hooks.tree_inlining.convert_parm_for_inlining.
1747         * cgraphbuild.c (initialize_inline_failed): Set inline failed
1748         reason for mismatched types.
1749         * gimplify.c (gimplify_call_expr): Verify the call expression
1750         arguments match the called function type signature.  Otherwise
1751         mark the call expression to be not considered for inlining
1752         using CALL_CANNOT_INLINE_P flag.
1753         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
1754         edges call expression.
1755         (cgraph_decide_inlining_of_small_function): Likewise.
1756         (cgraph_decide_inlining): Likewise.
1757         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
1758         Remove define.
1759         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
1760         * c-typeck.c (c_convert_parm_for_inlining): Remove.
1761         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
1762         Remove declaration.
1763         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
1764         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
1765         Remove.
1766         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1767         convert_parm_for_inlining member.
1768
1769 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
1770
1771         PR target/31152
1772         * arm.md (negscc): Match the correct operand for optimized LT0 test.
1773         Remove optimization for GT.
1774
1775 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
1776
1777         PR middle-end/32437
1778         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
1779         is a PARALLEL.
1780         (prescan_insns_for_dce): Add extra parameter.
1781         
1782 2007-06-23  Jan Hubicka  <jh@suse.cz>
1783
1784         PR middle-end/31541
1785         * gimplify.c (mark_addressable): New function.
1786         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
1787
1788 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1789
1790         PR middle-end/32374
1791         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
1792
1793 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1794
1795         PR target/32413
1796         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
1797         moves between MMX/SSE registers to at least 8 units to prevent
1798         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
1799
1800 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1801
1802         * config/i386/i386.c (override_options): Correct x86_sahf
1803         setting condition.
1804
1805 2007-06-21  David Daney  <ddaney@avtrex.com>
1806
1807         PR target/32406
1808         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1809         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1810         (exception_receiver): Renamed to ...
1811         (nonlocal_goto_receiver): ... this.
1812
1813 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
1814
1815         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
1816         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
1817         partial register accesses.
1818
1819 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
1820
1821         * fold-const.c (debug_fold_checksum): Move it under
1822         ENABLE_FOLD_CHECKING.
1823
1824 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
1825
1826         PR middle-end/20623
1827         * tree.h (debug_fold_checksum): Declared.
1828         * fold-const.c (build_fold_addr_expr_with_type_1): New.
1829         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
1830         build_fold_addr_expr_with_type_1.
1831         (fold_addr_expr, debug_fold_checksum): New.
1832         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
1833         (fold_unary, fold_comparison, split_address_to_core_and_offset):
1834         Use fold_addr_expr.
1835         
1836 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
1837
1838         PR tree-optimization/19590
1839         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
1840         of scev is a constant.
1841         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
1842
1843 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
1844
1845         * df-problems.c (df_note_bb_compute): Made computation of live
1846         info consistent with df_lr.
1847
1848 2007-06-21  Richard Guenther  <rguenther@suse.de>
1849
1850         PR tree-optimization/32453
1851         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
1852         for pointer anti-range.
1853
1854 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
1855
1856         * config/i386/i386.c (processor_target_table): Increase maximum
1857         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
1858         default 64bit.
1859
1860         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
1861         byte alignment if > 8 byte alignment is preferred.
1862         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1863
1864 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
1865
1866         PR tree-optimization/31866
1867         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
1868         if ASM_EXPR's input is not a SSA_NAME.
1869
1870         PR middle-end/32362
1871         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
1872         but decl is a global var, instead return decl.
1873         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
1874         even for is_global_var decls, if they are private in some outer
1875         context.
1876
1877 2007-06-21  Richard Guenther  <rguenther@suse.de>
1878
1879         PR tree-optimization/32451
1880         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
1881
1882 2007-06-21  Christian Bruel  <christian.bruel@st.com>
1883
1884         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
1885         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
1886         (push_regs): Changed saving order or banked registers.
1887         (sh_expand_epilogue): Likewise.
1888         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
1889         (FIRST_BANKED_REG): Likewise.
1890         (LAST_BANKED_REG): Likewise.
1891         * config/sh/sh.md (banked) New attribute.
1892         (in_delay_slot): Check banked attribute.
1893         
1894 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
1895
1896         PR tree-optimization/32075
1897         * tree-data-ref.c (subscript_dependence_tester_1, 
1898         analyze_miv_subscript, analyze_overlapping_iterations,
1899         add_distance_for_zero_overlaps, build_classic_dist_vector,
1900         subscript_dependence_tester_1, analyze_overlapping_iterations,
1901         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
1902         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
1903         to evolution_function_is_affine_multivariate_p.
1904
1905 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
1906
1907         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
1908
1909 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1910
1911         PR target/32335
1912         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
1913         for TARGET_A16.
1914         * config/m32c/prologue.md (epilogue_exitd_16): New.
1915         (epilogue_reit_16): New.
1916         (epilogue_exitd): Rename to epilogue_exitd_24.
1917         (epilogue_reit): Rename to epilogue_reit_24.
1918
1919 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
1920             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1921
1922         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
1923         New counters.
1924         * haifa-sched.c (queue_to_ready): Don't requeue next insn
1925         if dbg_cnt (sched_insn) reaches the limit.
1926         (choose_ready): New parameter INSN_PTR and new return value.
1927         (schedule_block): Handle dbg_cnt (sched_insn). Handle
1928         the new return value from choose_ready.
1929         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
1930         (rest_of_handle_global_alloc): New global_alloc_at_func.
1931
1932 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
1933
1934         PR tree-optimization/25737
1935         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
1936         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
1937         * tree-flow.h (struct fieldoff): Add new field alias_set.
1938         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
1939         argument addressable_type.  Set alias_set of fieldoff.
1940         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
1941         (create_overlap_variables_for): Pass alias_set from fieldoff to
1942         create_sft.
1943         * alias.c (get_alias_set): Use alias_set from SFT if set.
1944
1945 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
1946
1947         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
1948         of a variable as an unsigned HOST_WIDE_INT integer.
1949
1950 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
1951
1952         PR rtl-optimization/32405
1953         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
1954
1955 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
1956
1957         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
1958
1959         PR middle-end/31959
1960         * builtins.c: Include diagnostic.h.
1961         (expand_builtin_expect): Make gcc_assert more permissive.
1962         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
1963
1964         PR inline-asm/32109
1965         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
1966         and !allows_mem.
1967
1968         PR middle-end/32285
1969         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
1970         if ACCUMULATE_OUTGOING_ARGS.
1971
1972 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1973
1974         * config/m68hc11/m68hc11.c: Include dataflow header file.
1975         (m68hc11_reorg): Port to dataflow.
1976
1977 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
1978
1979         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
1980         (struct df_problem.free_blocks_on_set_blocks): New field.
1981         (struct dataflow.optional_p): New field.
1982         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1983         (df_live_set_all_dirty): New function.
1984         * df-scan.c (df_scan_alloc): Initialize optional_p.
1985         (problem_SCAN): Initialize free_blocks_on_set_blocks.
1986         * df-core.c (df_set_blocks): Removed use of
1987         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
1988         df_problem.free_blocks_on_set_blocks to determine which blocks are
1989         recycled.
1990         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
1991         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
1992         uses dataflow.optional_p to determine if problem should be
1993         deleted.
1994         (rest_of_handle_df_initialize): Only start live problem if 
1995         -02 or above.
1996         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1997         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
1998         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
1999         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
2000         problem_NOTE):  Initialize free_blocks_on_set_blocks.
2001         (df_lr_bb_local_compute): Recompute luids if df_live problem is
2002         not active.
2003         (df_live_set_all_dirty, df_note_alloc): New function.
2004         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
2005         df_get_live_*.
2006         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
2007         * postreload.c (reload_combine): Ditto.
2008         * cse.c (cse_extended_basic_block): Ditto.
2009         * regmove.c (mark_flags_life_zones): Ditto.
2010         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
2011         erase_matching_seqs): Ditto.
2012         * bt-load.c (compute_defs_uses_and_gen): Ditto.
2013         * integrate (allocate_initial_values): Ditto.
2014         * combine.c (reg_dead_at_p): Ditto.
2015         * resource.c (mark_target_live_regs): Ditto.
2016         * sched-rgn.c (check_live_1, update_live_1): Ditto.
2017         * config/sh/sh.c (find_r0_life_regions): Ditto.
2018         * global.c (rest_of_handle_global_alloc): Only add back df_live
2019         for -O > 1.
2020         * local-alloc.c (rest_of_handle_local_alloc): Only remove
2021         df_live for -O > 1.
2022         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
2023         df_get_live_*.
2024         (if_convert): Make sure df_live is there at -O == 1.
2025         (pass_if_after_combine): Cleanup flags.
2026         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
2027         is there at -O == 1.
2028         
2029 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
2030
2031         * config/arm/arm.c (arm_get_frame_offsets): Set
2032         offsets->locals_base to avoid negative stack size.
2033         (thumb1_expand_prologue): Assert on negative stack size.
2034
2035 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
2036
2037         PR tree-optimization/32367
2038         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
2039         of the chrec has no evolution in that loop.
2040         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
2041
2042 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
2043
2044         * config/xtensa/xtensa.c: Include "df.h".
2045         (xtensa_builtin_saveregs): Use adjust_address instead of
2046         change_address.
2047         (xtensa_va_start): Invoke make_tree with sizetype for
2048         expand_builtin_saveregs and then convert the result to a pointer.
2049         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
2050         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
2051         Subtract argument size from index value as integers and then use
2052         POINTER_PLUS_EXPR to add the result to the array address.
2053         
2054 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2055
2056         PR target/32335
2057         * config/m32c/m32c.c: Include dataflow header file.
2058         (m32c_emit_prologue): Adjust for prologue insn change.
2059         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
2060         once inside a PARALLEL. Assume frame size passed in operand 0
2061         includes space to save the fb register.
2062         (prologue_enter_24): Likewise.
2063         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
2064
2065 2007-06-19  David Daney  <ddaney@avtrex.com
2066
2067         PR target/32313
2068         * config/mips/mips.md (cprestore): Mark $gp as used.
2069
2070 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2071
2072         PR target/32369
2073         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
2074         (frv_ifcvt_modify_insn): Likewise.
2075
2076 2007-06-19  Richard Guenther  <rguenther@suse.de>
2077
2078         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
2079         only handle positive offsets that fit in a HOST_WIDE_INT.
2080
2081 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
2082
2083         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
2084         result of rsqrt insn for zero input argument to avoid NaN.
2085
2086 2007-06-19  Richard Guenther  <rguenther@suse.de>
2087
2088         PR middle-end/31950
2089         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
2090
2091 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
2092
2093         PR tree-optimization/32353
2094         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
2095
2096 2007-06-19  Nick Clifton  <nickc@redhat.com>
2097
2098         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
2099
2100 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2101
2102         PR target/32389
2103         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
2104         * config/i386/i386.c (assign_386_stack_local): Assert that
2105         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
2106         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
2107         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
2108         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
2109
2110 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
2111
2112         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
2113
2114 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
2115
2116         PR rtl-optimization/32321
2117         * gcse.c (replace_store_insn): Update the note before
2118         calling emit_insn_after.
2119
2120 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
2121
2122         PR middle-end/32355
2123         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
2124         cse_main.
2125         * df-problems.c (df_note_bb_compute): Fix dumping info.
2126         
2127 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
2128
2129         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
2130         insn with emit_jump_insn.
2131
2132 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2133
2134         PR tree-optimization/32383
2135         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
2136         * targhooks.h (default_builtin_reciprocal): Update prototype.
2137         * target.h (struct gcc_target): Update builtin_reciprocal.
2138         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
2139         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
2140         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
2141         when fndecl is in BUILT_IN_MD class.
2142         (execute_convert_to_rsqrt): Ditto.
2143
2144         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
2145         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
2146         Convert BUILT_IN_SQRTF code only  when md_fn is false.
2147
2148 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2149
2150         * bt-load.c (move_btr_def): Fix the order of arguments
2151         to validate_replace_rtx.
2152
2153 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
2154
2155         * config/m68k/m68k-devices.def: Add 54450..54455.
2156
2157 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
2158
2159         PR rtl-optimization/32366
2160         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
2161         FLOAT_EXTEND]: Prevent non-scalar modes from entering
2162         significand_size.
2163
2164 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
2165
2166         PR middle-end/32349
2167         * modulo-sched (generate_reg_moves): Added rescan parameter and if
2168         this is true, rescan insn being modified.
2169         (sms_schedule): Added rescan parameter.
2170         (rest_of_handle_sms): Moved freeing of dominance info to before
2171         getting out of cfg_layout.
2172         
2173 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
2174
2175         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
2176         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
2177         appropriate.
2178
2179         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
2180         FL_CF_EMAC from the entry for isac.
2181
2182         * config/m68k/predicates.md (const_call_operand): Adjust comment.
2183         (const_sibcall_operand): New.
2184         (sibcall_operand): Use it.
2185         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
2186         (m68k_isas): ISAC does not imply FPU or EMAC.
2187         (override_options): Add ISA_C logic for symbolic jump & call.
2188
2189 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2190
2191         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
2192         return mode from the builtin itself.
2193         (sparc_fold_builtin): Fix cast of zero constant.
2194
2195 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2196
2197         * targhooks.c (default_builtin_reciprocal): New default target hook.
2198         * targhooks.h (default_builtin_reciprocal): Add prototype.
2199         * hooks.c (hook_tree_tree_bool_null): Remove hook.
2200         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
2201         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
2202         default_builtin_reciprocal.
2203
2204 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2205
2206         PR middle-end/31723
2207         * hooks.c (hook_tree_tree_bool_null): New hook.
2208         * hooks.h (hook_tree_tree_bool_null): Add prototype.
2209         * tree-pass.h (pass_convert_to_rsqrt): Declare.
2210         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
2211         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
2212         and convert it to reciprocal a*rfunc(b).
2213         (execute_convert_to_rsqrt): New function.
2214         (gate_convert_to_rsqrt): New function.
2215         (pass_convert_to_rsqrt): New pass definition.
2216         * target.h (struct gcc_target): Add builtin_reciprocal.
2217         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
2218         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
2219         TARGET_BUILTIN_RECIPROCAL.
2220         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
2221
2222         * config/i386/i386.h (TARGET_RECIP): New define.
2223         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
2224         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2225         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2226         and not optimizing for size.
2227         (*rcpsf2_sse): New insn pattern.
2228         (*rsqrtsf2_sse): Ditto.
2229         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2230         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2231         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2232         and not optimizing for size.
2233         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
2234         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2235         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2236         and not optimizing for size.
2237         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
2238         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2239         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2240         and not optimizing for size.
2241         (*sse_rsqrtv4sf2): Do not export.
2242         (sqrtv4sf2): Ditto.
2243         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2244         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2245         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2246         and not optimizing for size.
2247         (sqrtv4sf2): Ditto.
2248         * config/i386/i386.opt (mrecip): New option.
2249         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
2250         (ix86_emit_swsqrtsf): Ditto.
2251         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
2252         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
2253         builtin definition.
2254         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
2255         ix86_expand_unop1_builtin.
2256         (ix86_emit_swdivsf): New function.
2257         (ix86_emit_swsqrtsf): Ditto.
2258         (ix86_builtin_reciprocal): New function.
2259         (TARGET_BUILTIN_RECIPROCAL): Use it.
2260         (ix86_vectorize_builtin_conversion): Rename from
2261         ix86_builtin_conversion.
2262         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
2263         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
2264         "i386 and x86_64 Options" section.
2265         (Intel 386 and AMD x86_64 Options): Document -mrecip.
2266
2267 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
2268             Zdenek Dvorak <dvorakz@suse.cz>
2269             Richard Guenther  <rguenther@suse.de>
2270             Kaz Kojima  <kkojima@gcc.gnu.org>
2271
2272         * tree-vrp.c (compare_values_warnv): Convert val2 to
2273         the type of val1.
2274         (extract_range_from_assert): Create
2275         POINTER_PLUS_EXPR for pointer types.
2276         (extract_range_from_binary_expr): Handle
2277         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
2278         for pointer types.
2279         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
2280         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
2281         POINTER_PLUS_EXPR as PLUS_EXPR.
2282         (number_of_iterations_lt_to_ne):
2283         For pointer types, use sizetype when
2284         creating MINUS_EXPR/PLUS_EXPRs.
2285         (assert_loop_rolls_lt): For pointer types, use sizetype when
2286         creating MINUS_EXPR/PLUS_EXPRs.
2287         (number_of_iterations_le): Likewise.
2288         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
2289         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
2290         like PLUS_EXPR and MINUS_EXPR.
2291         * tree-pretty-print.c (dump_generic_node): Handle
2292         POINTER_PLUS_EXPR.
2293         (op_prio): Likewise.
2294         (op_symbol_1): Likewise.
2295         * optabs.c (optab_for_tree_code): Likewise.
2296         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
2297         specially.
2298         * tree-tailcall.c (process_assignment): Mention
2299         POINTER_PLUS_EXPR in a TODO comment.
2300         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
2301         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
2302         not used with a pointer and an integer type.
2303         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
2304         increment using chrec_convert_rhs instead of chrec_convert.
2305         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
2306         PLUS_EXPR except for the right hand side's type will be
2307         sizetype.
2308         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
2309         (fold_used_pointer_cast): Kill.
2310         (pointer_offset_p): Kill.
2311         (fold_used_pointer): Kill.
2312         (pointer_used_p): Kill.
2313         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
2314         call fold_used_pointer.
2315         (instantiate_parameters_1): Convert the increment
2316         using chrec_convert_rhs instead of chrec_convert.
2317         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
2318         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
2319         instead of PLUS_EXPR.
2320         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
2321         PLUS_EXPR for pointers.
2322         (std_gimplify_va_arg_expr): Likewise.
2323         (fold_builtin_memory_op): Likewise.
2324         (fold_builtin_strstr): Likewise.
2325         (fold_builtin_strchr): Likewise.
2326         (fold_builtin_strrchr): Likewise.
2327         (fold_builtin_strpbrk): Likewise.
2328         (expand_builtin_memory_chk): Likewise.
2329         (fold_builtin_memory_chk): Likewise.
2330         (std_expand_builtin_va_start): Use
2331         sizetype for the call to make_tree and then convert
2332         to the pointer type.
2333         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
2334         instead of PLUS_EXPR for adding to a pointer.
2335         (std_gimplify_va_arg_expr): Use fold_build2 for
2336         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
2337         the operands to sizetype first and then cast the BIT_AND_EXPR
2338         back to the pointer type.
2339         * fold-const.c (build_range_check): Handle pointer types
2340         specially.
2341         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
2342         of PLUS_EXPR's. Make sure the offset is converted to
2343         sizetype.
2344         (try_move_mult_to_index): Strip the NOPs from the offset.
2345         Remove code argument and replace all uses with PLUS_EXPR.
2346         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
2347         specially. Don't use a pointer type for MINUS_EXPR.
2348         (fold_unary): Handle for (T1)(X op Y),
2349         only p+ as that is the only as that can be handled for
2350         binary operators now.
2351         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
2352         POINTER_PLUS_EXPR.
2353         <case PLUS_EXPR>: Add folding of PTR+INT into
2354         PTR p+ INT.
2355         Don't call try_move_mult_to_index.
2356         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
2357         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
2358         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
2359         Don't call try_move_mult_to_index.
2360         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
2361         (tree_expr_nonzero_p): Likewise.
2362         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
2363         of PLUS_EXPR for the complex expression folding.
2364         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
2365         first chrec is a pointer type, then the second should
2366         be sizetype and not the first's type.
2367         For POINTER_PLUS_EXPR, use a different right hand side type.
2368         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2369         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
2370         different right hand side type.
2371         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2372         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
2373         instead of PLUS_EXPR.
2374         When either operand is zero, convert the other operand.
2375         (chrec_apply): Use chrec_convert_rhs
2376         on the argument x instead of chrec_convert.
2377         (reset_evolution_in_loop): For pointer types, the new_evol
2378         should be sizetype.
2379         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
2380         different right hand side type.
2381         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2382         (chrec_convert_rhs): New function.
2383         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
2384         different right hand side type.
2385         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2386         * tree-chrec.h (chrec_convert_rhs): New prototype.
2387         (build_polynomial_chrec): For pointer types, the right hand
2388         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
2389         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
2390         Remove subtraction case as it is always addition now.
2391         Make sure the offset is converted to sizetype.
2392         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
2393         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
2394         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
2395         PLUS_EXPR in pointer type.
2396         Handle POINTER_PLUS_EXPR.
2397         (tree_to_aff_combination): Likewise.
2398         (force_expr_to_var_cost): Likewise.
2399         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
2400         instead of PLUS_EXPR for pointers.
2401         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
2402         instead of PLUS_EXPR of pointer types.
2403         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
2404         as PLUS_EXPR.
2405         (check_va_list_escapes): Likewise.
2406         (check_all_va_list_escapes): Likewise.
2407         * dwarf2out.c (loc_descriptor_from_tree_1):
2408         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
2409         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
2410         (string_constant): Likewise.
2411         * tree-ssa-address.c (tree_mem_ref_addr): When adding
2412         the offset to the base, use POINTER_PLUS_EXPR.
2413         (add_to_parts): Convert the index to sizetype.
2414         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
2415         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
2416         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
2417         Offset only holds something for PLUS_EXPR.
2418         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
2419         a PLUS_EXPR.
2420         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
2421         and not PLUS_EXPR.
2422         (analyze_accesses_for_modify_stmt): Likewise.
2423         Remove comment about the type being integral type as it is
2424         wrong now.
2425         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
2426         PLUS_EXPR.
2427         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
2428         and not PLUS_EXPR.
2429         Correct the type which the artimentic is done in (is now
2430         sizetype).
2431         Reindent one loop.
2432         * tree-data-ref.c (split_constant_offset): Handle
2433         POINTER_PLUS_EXPR
2434         * tree-affine.c (tree_to_aff_combination): Likewise.
2435         * c-typeck.c (build_unary_op): For pointers create the increment
2436         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
2437         for pointers.
2438         * gimplify.c (gimplify_self_mod_expr): Create a
2439         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2440         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
2441         * tree.def (POINTER_PLUS_EXPR): New tree code.
2442         * tree-predcom.c (ref_at_iteration): If we have a pointer
2443         type do the multiplication in sizetype.
2444         * tree-mudflap.c (mf_xform_derefs_1): Create a
2445         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2446         * tree-ssa-forwprop.c 
2447         (forward_propagate_addr_into_variable_array_index):
2448         Don't expect there to be a cast for the index as that
2449         does not exist anymore.
2450         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
2451         instead of PLUS_EXPR.
2452         Don't check for the first operand of the POINTER_PLUS_EXPR
2453         was the index as it cannot be.
2454         Call forward_propagate_addr_into_variable_array_index with
2455         the SSA_NAME instead of the statement.
2456         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
2457         (compare_constant): Likewise.
2458         (copy_constant): Likewise.
2459         (compute_reloc_for_constant): Likewise.
2460         (output_addressed_constants): Likewise.
2461         (initializer_constant_valid_p): Likewise.
2462         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
2463         Convert the MIN/MAX of the inner type to the outer
2464         type before comparing them.
2465         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
2466         POINTER_PLUS_EXPR instead of PLUS_EXPR.
2467         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
2468         of PLUS_EXPR for pointers.
2469         * tree-inline.c (estimate_num_insns_1): Handle
2470         POINTER_PLUS_EXPR.
2471         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
2472         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2473         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
2474         instead of PLUS_EXPR for the pointer increment statement.
2475         (vect_update_ivs_after_vectorizer): For pointer types, create
2476         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
2477         MULT_EXPR in sizetype.
2478         (vect_gen_niters_for_prolog_loop): Add a cast when creating
2479         byte_misalign.
2480         * tree-object-size.c (plus_expr_object_size): Handle
2481         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
2482         code which is trying to figure out which side is a pointer and 
2483         is the index.
2484         (check_for_plus_in_loops_1): Likewise.
2485         (check_for_plus_in_loops): Likewise.
2486         * c-common.c (pointer_int_sum): Create a
2487         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2488         * tree-ssa-structalias.c (handle_ptr_arith): Handle
2489         only POINTER_PLUS_EXPR.  Removing all the extra
2490         code which is trying to figure out which side is a pointer and 
2491         is the index.
2492         * tree-cfg.c (verify_expr): Add extra checking for pointers and
2493         PLUS_EXPR and MINUS_EXPR.
2494         Also add checking to make sure the operands of POINTER_PLUS_EXPR
2495         are correct.
2496         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
2497         with make_tree, instead of a pointer type.
2498         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
2499         for pointers instead of PLUS_EXPR.
2500         (s390_gimplify_va_arg): Likewise.
2501         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
2502         instead of PLUS_EXPR when doing addition on pointer
2503         types.  Use sizetype for the second operand.
2504         (spu_gimplify_va_arg_expr): Likewise.
2505         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
2506         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
2507         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
2508         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
2509         for the pointer addition and also use size_int/sizetype
2510         for the offset.
2511         (ix86_gimplify_va_arg): Likewise.
2512         Perform BIT_AND_EXPR on sizetype arguments.
2513         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
2514         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
2515         for the pointer additions and also use size_int for the offsets.
2516         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
2517         additions and also use size_int for the offsets.  Perform
2518         BIT_AND_EXPR on sizetype arguments.
2519         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
2520         POINTER_PLUS_EXPR for pointers and create the
2521         BIT_AND_EXPR in sizetype.
2522         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
2523         instead of PLUS_EXPR for pointer addition.
2524         (rs6000_va_start): Likewise.
2525         Also use sizetype for the offset.
2526         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
2527         as PLUS_EXPR/MINUS_EXPR.
2528         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
2529         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
2530         Don't use BIT_AND_EXPR on a pointer type, convert the
2531         expression to sizetype first.
2532         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
2533         for pointers.
2534         (mips_gimplify_va_arg_expr): Likewise.
2535         Don't create BIT_AND_EXPR in a pointer type.
2536
2537 2007-06-15  Eric Christopher  <echristo@apple.com>
2538
2539         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
2540         (x86_64-*-darwin*): Ditto.
2541         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
2542         for above.
2543
2544 2007-06-15  Matthew Wilcox <matthew@wil.cx>
2545
2546         * doc/extend.texi: Document behavior of __attribute__((aligned))
2547         on typedefs.
2548
2549 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
2550
2551         * rtlanal.c (note_stores): Improve documentation.
2552
2553 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
2554
2555         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
2556         LOCAL_LABEL_PREFIX): Delete.
2557         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
2558         (bfin_internal_label): Delete.
2559
2560 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
2561
2562         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
2563         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
2564         otherwise define to LIBGCC2_TF_CEXT.
2565         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
2566         (LIBGCC_TF_CEXT): Ditto.
2567         (TF_SIZE): Ditto.
2568
2569 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
2570
2571         PR rtl-optimization/32339
2572         * df-scan.c (df_uses_record): Don't modify flags but just add to
2573         it for df_ref_record.
2574
2575 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2576
2577         * tree-mudflap.c: Fix whitespace issues.
2578
2579 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
2580
2581         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
2582
2583 2007-06-14  Eric Christopher  <echristo@apple.com>
2584
2585         * config/i386/sse.md (movdi_to_sse): Rewrite body.
2586         (movv4sf): Use gcc_unreachable instead of abort.
2587
2588 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
2589
2590         PR target/32268
2591         * config/i386/sfp-machine.h (CMPtype): New define.
2592         (mach stubs): Use CMPtype instead of int as a return type.
2593
2594 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
2595
2596         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
2597         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
2598         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
2599         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
2600         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
2601         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
2602         config/soft-fp/soft-fp.h: Update from glibc CVS.
2603
2604 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
2605
2606         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
2607
2608 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2609
2610         PR target/32341
2611         * config/v850/v850.c: Include dataflow header file.
2612         (substitute_ep_register): Fix typo.
2613
2614 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2615
2616         * configure.ac: Fix earlier checkin.
2617         * configure: Regenerated.
2618
2619 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2620
2621         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
2622         * aclocal.m4: Regenerate.
2623         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
2624         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
2625         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
2626         * configure: Regenerate.
2627         * Makefile.in (LOOSE_WARN): Subst loose_warn.
2628
2629         * Makefile.in (quickstrap): Build libgcc too.
2630
2631 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
2632
2633         * configure.ac: Add --enable-checking=df.  Explicitly mention that
2634         the variables are initialized as for "release".
2635         * df-core.c: Use it.
2636         * configure: Regenerate.
2637         * config.in: Regenerate.
2638
2639 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
2640
2641         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
2642         validate_replace_rtx instead of replace_rtx.
2643         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
2644
2645 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
2646
2647         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
2648         (DWARF2_UNWIND_INFO): Override default if configured with
2649         SJLJ EH disabled.
2650         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
2651         (ENDFILE_SPEC): Add crtend.o.
2652         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
2653         (ENDFILE_SPEC): Add crtend.o.
2654         (TARGET_USE_JCR_SECTION): Define.
2655         (MD_UNWIND_SUPPORT): Define for 32-bit target.
2656
2657         * config/i386/cygming-crtbegin.c: New file.
2658         * config/i386/cygming-crtend.c: New file.
2659
2660 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
2661
2662         * config/i386/w32-unwind.h: New file.
2663
2664 2007-06-13  Eric Christopher  <echristo@apple.com>
2665
2666         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
2667         the user set a value below STACK_BOUNDARY.
2668
2669 2007-06-13  Thiemo Seufer  <ths@networkno.de>
2670
2671         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
2672         imply -lpthread for -pthread.
2673
2674 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
2675
2676         * basic-block.h: Remove the prototype for
2677         free_basic_block_vars.
2678         * cfglayout.h: Remove the prototype for
2679         insn_locators_initialize.
2680         * tree.h: Remove the prototype for emit_line_note.
2681
2682         * tree-ssa-pre.c (mergephitemp): Remove.
2683         (init_pre): Don't use mergephitemp.
2684
2685 2007-06-13  Eric Christopher  <echristo@apple.com>
2686
2687         * config/i386/i386.c (override_options): If we've specified
2688         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
2689
2690 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
2691
2692         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
2693         is defined.
2694
2695 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2696
2697         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
2698         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
2699         (eh_store_handler): New pattern.
2700         (eh_return): Emit it instead of a plain move.
2701
2702 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
2703
2704         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
2705         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
2706         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
2707         def_builtin_const.
2708
2709 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2710
2711         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
2712         (find_next_insn_start, find_load): New functions.
2713         (bfin_reorg): Use them to deal with the fact that parallel insns are
2714         no longer represented as a SEQUENCE.
2715
2716 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
2717
2718         * config/sparc/sparc.c (sparc_override_options): Initialize
2719         fpu mask correctly.
2720
2721 2007-06-13  Dave Korn  <dave.korn@artimi.com>
2722
2723         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
2724         df_get_live_out.
2725
2726 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
2727
2728         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
2729         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
2730         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
2731         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
2732         tree-vect-transform.c: Fix comment typos.  Follow spelling
2733         conventions.
2734
2735 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2736
2737        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
2738        to the exit block use set.
2739        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
2740        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
2741        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
2742
2743 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2744
2745         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2746         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
2747         to indicate an error.
2748         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
2749         New functions.
2750         (dbg_cnt_process_opt): Print an error on a bad argument.
2751         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
2752         * common.opt (-fdbg-cnt-list): New.
2753         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
2754
2755 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
2756
2757         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
2758         flag on ref-all pointers.
2759
2760 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2761
2762         PR middle-end/31579
2763         * expr.c (expand_expr_addr_expr_1): Call expand_expr
2764         for the offset with the modifier as EXPAND_INITIALIZER
2765         if the modifier is EXPAND_INITIALIZER.
2766         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
2767         a register if we had an overflow.
2768
2769 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2770
2771         * real.c (real_isfinite): New.
2772         (real_sqrt): Use it.
2773         * real.h (real_isfinite): New.
2774         * builtins.c: Use it.
2775
2776 2007-06-12  Ian Lance Taylor  <iant@google.com>
2777             Daniel Berlin  <dberlin@dberlin.org>
2778
2779         PR libstdc++/29286
2780         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
2781         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
2782         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
2783         (DECL_NO_TBAA_P): Define.
2784         (struct tree_decl_common): Add no_tbaa_flag field.
2785         * tree-ssa-structalias.c (struct variable_info): Add
2786         no_tbaa_pruning field.
2787         (new_var_info): Initialize no_tbaa_pruning field.
2788         (unify_nodes): Copy no_tbaa_pruning field.
2789         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2790         (dump_solution_for_var): Print no_tbaa_pruning flag.
2791         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
2792         callers.
2793         (compute_tbaa_pruning): New static function.
2794         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
2795         Call compute_tbaa_pruning.
2796         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
2797         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2798         * gimple-low.c (lower_stmt): Likewise.
2799         * tree-gimple.c (is_gimple_stmt): Likewise.
2800         * tree-ssa-operands.c (get_expr_operands): Likewise.
2801         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2802         * tree-inline.c (estimate_num_insns_1): Likewise.
2803         (copy_result_decl_to_var): Likewise.
2804         * expr.c (expand_expr_real_1): Likewise.
2805         * tree-pretty-print.c (dump_generic_node): Likewise.
2806         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
2807         * omp-low.c (omp_copy_decl_2): Likewise.
2808         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
2809         * doc/c-tree.texi (Expression trees): Document
2810         CHANGE_DYNAMIC_TYPE_EXPR.
2811
2812 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2813
2814         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
2815         with !HONOR_NANS and !HONOR_INFINITIES.
2816         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
2817
2818 2007-06-12  Tristan Gingold  <gingold@adacore.com>
2819
2820         * gcov.c: Comments updated.
2821         (source_info): Add file_time field.
2822         (source_index): New variable.
2823         (mutiple_files): New variable.
2824         (generate_results): New function extracted from process_file.
2825         (process_file): Save and restore chain of functions, generate
2826         results and free structures only if not merging results.
2827         (release_structures): File names are now freed in create_file_names
2828         (create_file_names): Free previous file names.
2829         (find_source): File date is now read here and modifications in
2830         source files is checked here.
2831         (read_graph_file): Only reverse order of functions for the current
2832         object file.
2833         (make_gcov_file_name): Do not generate long names if input_name is
2834         NULL.
2835         (output_lines): If merging results do not display graph, data and
2836         runs informations.
2837         Checking source file modification is done in find_source.
2838
2839         * doc/gcov.texi: Append an s to sourcefile.
2840
2841 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2842
2843         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
2844         (forced_nop): New pattern.
2845         * config/bfin/bfin.c: Include "df.h".
2846         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
2847         (bfin_discover_loop): Use df_get_live_in instead of
2848         global_live_at_start.
2849         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
2850         df_analyze when done.
2851         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
2852         the insns.  Use QImode for the final insn in a bundle.  Call
2853         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
2854         gen_nop.
2855         (reorder_var_tracking_notes): New function.
2856         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
2857         update_life_info.  Call df_analyze after scheduling and bundle
2858         generation.  Call reorder_var_tracking_notes if generating these
2859         notes.  Call df_finish_pass at the end.
2860
2861 2007-06-12  Dirk Mueller  <dmueller@suse.de>
2862
2863         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
2864         a comparison, not an assignment.
2865
2866 2007-06-12  Olivier Hainque  <hainque@adacore.com>
2867
2868         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
2869         Request walking the subtrees only, leaving the current is_lhs/val_only
2870         untouched.
2871         (convert_non_local_reference): Likewise.
2872
2873 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
2874
2875         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
2876
2877 2007-06-12  Richard Guenther  <rguenther@suse.de>
2878
2879         PR tree-optimization/15353
2880         PR tree-optimization/31657
2881         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
2882         * timevar.def: Add TV_TREE_IFCOMBINE.
2883         * tree-pass.h (pass_tree_ifcombine): Declare.
2884         * tree-ssa-ifcombine.c: New file.
2885         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
2886         * tree-flow.h (blocks_in_phiopt_order): Declare.
2887         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
2888         (tree-ssa-ifcombine.o): New dependencies.
2889
2890 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
2891
2892         PR rtl-optimization/32293
2893         * combine.c (simplify_if_then_else): Truncate return from
2894         nonzero_bits() to correct mode.
2895
2896 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
2897
2898         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
2899         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
2900
2901 2007-06-11  Diego Novillo  <dnovillo@google.com>
2902
2903         * Makefile.in (reload1.o-warn): Remove.
2904
2905 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
2906
2907         * combine.c (subst): Use reg_overlap_mentioned_p
2908         instead of comparing register numbers directly.
2909
2910 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2911
2912         * reload1.c (mark_home_live_1): Use the mode parameter.
2913
2914 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2915
2916         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
2917         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
2918         word "deferred".
2919         * df-core.c: Ditto.
2920
2921 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
2922
2923         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
2924
2925 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2926
2927         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
2928         from integer registers.
2929         (FP mode splitters): Handle TFmode.
2930
2931 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
2932
2933         * tree-ssa-structalias.c (find_what_p_points_to): Return false
2934         for ref-all pointers that point-to anything.
2935
2936 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
2937
2938         * config/arm/arm.c (arm_output_dwarf_dtprel,
2939         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
2940
2941 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2942
2943         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
2944         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
2945         to memory moves.
2946
2947 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
2948
2949         * gcc/tree.c (signed_or_unsigned_type_for): New.
2950         (unsigned_type_for): Use signed_or_unsigned_type_for.
2951         (signed_type_for): Use signed_or_unsigned_type_for.
2952         * gcc/tree.h (signed_or_unsigned_type_for): New.
2953         (get_signed_or_unsigned_type): Remove.
2954         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
2955         lang_hooks.types.signed_type
2956         (size_diffop): Likewise.
2957         (all_ones_mask_p): Likewise.
2958         (build_range_check): Likewise.
2959         (fold_cond_expr_with_comparison): Likewise.
2960         (fold_cond_expr_with_comparison): Likewise.
2961         (unextend): Likewise.
2962         (extract_muldiv_1): Likewise.
2963         (fold_single_bit_test_into_sign_test): Likewise.
2964         (fold_binary): Likewise.
2965         (fold_ternary): Likewise.
2966         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
2967         instead of get_signed_or_unsigned_type.
2968         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2969         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2970         * gcc/expr.c (signed_or_unsigned_type_for): Use
2971         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
2972         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
2973         (lhd_signed_or_unsigned_type): Remove.
2974         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
2975         signed_or_unsigned_type.
2976         (lhd_signed_or_unsigned_type): Remove.
2977         * gcc/expmed.c (make_tree): Use signed_type_for instead of
2978         lang_hooks.types.signed_type.
2979         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
2980         c_common_signed_type instead of lang_hooks.types.signed_type.
2981         (c_common_unsigned_type): New.
2982         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
2983         (shorten_compare): Use c_common_unsigned_type instead of
2984         c_common_signed_or_unsigned_type.
2985         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
2986         unsigned_type_for.
2987         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
2988         lang_hooks.types.signed_type.
2989         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2990         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
2991         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
2992         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
2993         instead of unsigned_type_for.
2994         * gcc/c-decl.c (groakdeclarator): Likewise.
2995         * gcc/c-typeck.c (convert_for_assignment): Likewise.
2996         * gcc/c-common.h (c_common_unsigned_type): New.
2997
2998 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2999
3000         PR target/32280
3001         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
3002         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
3003
3004 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3005
3006         PR middle-end/32279
3007         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
3008         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
3009
3010 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
3011             Sebastian Pop  <sebpop@gmail.com>
3012
3013         * lambda-code.c (remove_iv): New.
3014         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
3015
3016 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
3017
3018         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
3019         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
3020         * tree-ssa-loop-prefetch.c: Include optabs.h.
3021         (FENCE_FOLLOWING_MOVNT): New macro.
3022         (struct mem_ref): Add independent_p and storent_p fields.
3023         (record_ref): Initalize the new fields.
3024         (gather_memory_references_ref): Return true if the reference
3025         could be analysed.
3026         (gather_memory_references): Check whether all memory accesses
3027         in loop were recorded.
3028         (should_issue_prefetch_p): Return false for nontemporal stores.
3029         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
3030         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
3031         (determine_loop_nest_reuse): Detect independent memory references.
3032         (loop_prefetch_arrays): Call mark_nontemporal_stores.
3033         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
3034         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
3035         * config/i386/i386.h (x86_mfence): Declare.
3036         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
3037         * config/i386/i386.c (x86_mfence): New variable.
3038         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
3039
3040         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
3041         * optabs.c (init_optabs): Initialize storent_optab.
3042         * optabs.h (enum optab_index): Add OTI_storent.
3043         (storent_optab): Declare.
3044         * genopinit.c (optabs): Add initialization for storent_optab.
3045         * tree.h (MOVE_NONTEMPORAL): New macro.
3046         * expr.c (expand_assignment, store_expr, store_constructor_field,
3047         store_constructor, store_field, expand_expr_real_1): Propagate
3048         nontemporality of the expanded store.
3049         (emit_storent_insn): New function.
3050         * expr.h (expand_assignment, store_expr): Declaration changed.
3051         * function.c (assign_parm_setup_reg): Pass false as nontemporality
3052         to expand_assignment.
3053         * stmt.c (expand_asm_expr): Ditto.
3054         * calls.c (initialize_argument_information): Pass false as
3055         nontemporality to store_expr.
3056         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
3057         storentsi): New.
3058
3059 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3060
3061         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
3062         parameter, use it.
3063         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
3064
3065 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3066
3067         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
3068         and allow DECL_P here.
3069
3070 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
3071
3072         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
3073         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
3074         track of the size of the expression.
3075         * cfghooks.c (merge_blocks): Remove block from loops structure only
3076         after call of the merge_blocks hook.
3077
3078 2007-06-09  Tom Tromey  <tromey@redhat.com>
3079
3080         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
3081         (deprecated_state): Removed.
3082         (start_decl): Update.
3083         (enum deprecated_states): Moved earlier.
3084         (groktypename): Update.
3085         (push_parm_decl): Likewise.
3086         (grokfield): Likewise.
3087         (start_function): Likewise.
3088
3089 2007-06-09  Ian Lance Taylor  <iant@google.com>
3090
3091         PR tree-optimization/32169
3092         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
3093         CONVERT_EXPR, check whether min and max both converted to an
3094         overflow infinity representation.
3095
3096 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
3097
3098         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
3099         not inserted on the edge.
3100
3101 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
3102
3103         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
3104         instructions if they are supported.
3105         (__divsi3, __umodsi3, __modsi3): Likewise.
3106         (__ashldi3, __ashrdi3, __lshrdi3): New.
3107         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
3108
3109 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
3110             Tony Linthicum <tony.linthicum@amd.com>
3111
3112         * doc/invoke.texi: Add fvect-cost-model flag.
3113         * common.opt (fvect-cost-model): New flag.
3114         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
3115         cost fields in stmt_vec_info struct for STMT.
3116         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
3117         fields in stmt_vec_info struct and access functions for the same.
3118         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
3119         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
3120         load, store and vector to scalar operation.
3121         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
3122         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
3123         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
3124         (TARG_VEC_STORE_COST): Define cost of vector store.
3125         (vect_estimate_min_profitable_iters): Define new function.
3126         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
3127         check to evaluate if loop iterations are less than minimum profitable
3128         iterations determined by cost model or minimum vect loop bound defined
3129         by user, whichever is more conservative.
3130         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
3131         run-time check to evaluate if loop iterations are less than minimum
3132         profitable iterations determined by cost model or minimum vect loop
3133         bound defined by user, whichever is more conservative.
3134         (vect_estimate_min_profitable_iterations): New function to estimate
3135         mimimimum iterartions required for vector version of loop to be
3136         profitable over scalar version.
3137         (vect_model_reduction_cost): New function.
3138         (vect_model_induction_cost): New function.
3139         (vect_model_simple_cost): New function.
3140         (vect_cost_strided_group_size): New function.
3141         (vect_model_store_cost): New function.
3142         (vect_model_load_cost): New function.
3143         (vectorizable_reduction): Call vect_model_reduction_cost during
3144         analysis phase.
3145         (vectorizable_induction): Call vect_model_induction_cost during
3146         analysis phase.
3147         (vectorizable_load): Call vect_model_load_cost during analysis phase.
3148         (vectorizable_store): Call vect_model_store_cost during analysis phase.
3149         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
3150         vectorizable_promotion, vectorizable_demotion): Call
3151         vect_model_simple_cost during analysis phase.
3152
3153 2007-06-08  Simon Baldwin  <simonb@google.com>
3154
3155         * reg-stack.c (get_true_reg): Readability change.  Moved default case
3156         label into direct switch statement scope.
3157
3158 2007-06-08  Simon Baldwin  <simonb@google.com>
3159
3160         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
3161         in gcc_assert() with '==' comparison.
3162
3163 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3164
3165         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
3166         TARGET_ABM handling of x86_popcnt variable.
3167
3168 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3169
3170         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
3171         __builtin_copysignq and __builtin_infq built-in functions.
3172
3173 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3174
3175         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
3176         SSE4.2 section.  Correct built-in function names in SSE4A section.
3177
3178 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3179
3180         PR tree-optimization/32243
3181         * tree-vect-transform.c (vectorizable_type_promotion): Move check
3182         for ncopies after ratio check between nunits_out and nunits_in.
3183         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
3184
3185 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
3186
3187         PR tree-optimization/32224
3188         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
3189         vectorization upon a non GIMPLE_MODIFY_STMT.
3190
3191 2007-06-08  Christian Bruel  <christian.bruel@st.com>
3192
3193         PR target/29953
3194         * config/sh/sh.md (doloop_end): New pattern and splitter.
3195         * loop-iv.c (simple_rhs_p): Check for hardware registers.
3196
3197 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
3198
3199         PR middle-end/32209
3200         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
3201         functions.
3202         (verify_dominators): Do not change dominance tree.
3203
3204 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3205
3206         * config/sh/constraints.md: New file.
3207         * config/sh/sh.c: Include tm-constrs.h.
3208         (reg_class_from_letter): Remove.
3209         (prepare_cbranch_operands): Use satisfies_constraint_*
3210         function instead of macro.
3211         (andcosts, broken_move, sh_secondary_reload): Likewise.
3212         * config/sh/predicates.md (trapping_target_operand): Likewise.
3213         (and_operand, arith_operand, arith_reg_or_0_operand,
3214         cmp_operand, logical_operand, target_operand,
3215         ua_address_operand, ua_offset, xor_operand): Likewise.
3216         * config/sh/sh.md: Include constraints.md.
3217         (*movsicc_t_false): Use satisfies_constraint_* function
3218         instead of macro.
3219         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
3220         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
3221         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
3222         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
3223         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
3224         (REG_CLASS_FROM_CONSTRAINT): Remove.
3225         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
3226         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
3227         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
3228         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
3229         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
3230         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
3231         function instead of macro.
3232         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3233         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
3234         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
3235         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
3236         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
3237         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
3238         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
3239         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
3240         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
3241         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
3242         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
3243         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
3244         EXTRA_CONSTRAINT_STR): Likewise.
3245         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
3246
3247 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
3248
3249         * config/i386/darwin.h (STACK_BOUNDARY): Define.
3250
3251 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
3252
3253         PR c++/30759
3254         * c-common.h (flag_cpp0x): Replaced by...
3255         (cxx_dialect): ... this new variable specifying the C++ dialect that
3256         is used.
3257         * c-common.c (flag_cpp0x): Removed.
3258         (cxx_dialect): Defined.
3259         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
3260         cxx_dialect.
3261         * c-opts.c (c_common_post_options): Likewise.
3262         (set_std_cxx98): Set cxx_dialect to cxx98.
3263         (set_std_cxx0x): Set cxx_dialect to cxx0x.
3264
3265 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
3266             Hui-May Chang <hm.chang@apple.com>
3267
3268         * doc/invoke.texi (Darwin Options): Update documentation for
3269         -mmacosx-version-min.
3270         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
3271         * config/darwin-driver.c: New file.
3272         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
3273         * config/t-darwin (darwin-driver.o): New rule.
3274
3275         * config/darwin-c.c (version_as_macro): Ignore low digit.
3276
3277 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
3278
3279         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
3280         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
3281         (CSGNMODE): New mode macro.
3282         (CSGNVMODE): New mode attribute.
3283         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
3284         expander using CSGNMODE mode macro.  Handle TFmode.
3285         (copysign<mode>3_const): Rename from copysignsf3_const and
3286         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
3287         Handle TFmode.
3288         (copysign<mode>3_var): Rename from copysignsf3_var and
3289         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
3290         Handle TFmode.
3291         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
3292         mode macro.  Handle TFmode.
3293         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
3294         (iortf3, *iortf3): Ditto.
3295         (xortf3, *xortf3): Ditto.
3296         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
3297         TFmode and TImode masks.
3298         (ix86_expand_copysign): Expand TFmode copysign insn.
3299         (IX86_BUILTIN_INFQ): New.
3300         (IX86_BUILTIN_FABSQ): Ditto.
3301         (IX86_BUILTIN_COPYSIGNQ): Ditto.
3302         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
3303         [__builtin_fabsq]: Ditto.
3304         [__builtin_copysignq]: Ditto.
3305         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
3306         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
3307         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
3308         ix86_expand_binop_builtin().
3309
3310 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
3311
3312         * config/xtensa/lib1funcs.asm: Clean up whitespace.
3313
3314 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
3315
3316         PR target/31850
3317         * rtl.h (push_to_sequence2): New.
3318         * emit-rtl.c (push_to_sequence2): New.
3319         * function.c (assign_parm_data_all): Add new fields.
3320         (assign_parm_setup_block): Call push_to_sequence2 instead of
3321         push_to_sequence.
3322         (assign_parm_setup_reg): Ditto.
3323         (assign_parm_setup_stack): Ditto.
3324         (assign_parms_unsplit_complex): Ditto.
3325         (assign_parms): Change field name.
3326
3327 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
3328
3329         PR tree-optimization/32220
3330         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
3331         phi node is reached before defining statement.
3332
3333 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3334
3335         PR tree-opt/32231
3336         * tree-vect-transform.c (vectorizable_call): Call update_stmt
3337         after changing the right hand side of the assignment.
3338
3339 2007-06-06  Eric Christopher  <echristo@apple.com>
3340
3341         * config.gcc (i?86-*-darwin*): Remove arch parameter.
3342         (x86_64-*-darwin*): Ditto.
3343         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
3344         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3345
3346 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3347
3348         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
3349         coding conventions.
3350         (add_key): Likewise.
3351         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
3352         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
3353         variable names.
3354         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
3355         macros.
3356         (add_cost_one_coalesce): Likewise.
3357         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
3358         variable names. Rename orig to orig_name for consistency.
3359         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
3360         coding conventions.
3361         (cprop_into_successor_phis): Avoid using C++ keywords as variable
3362         names.
3363         (record_equivalences_from_stmt): Likewise.
3364         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
3365         the coding conventions.
3366         (memory_ssa_name_same): Likewise.
3367         (dse_optimize_stmt): Likewise.
3368         (dse_record_phis): Likewise.
3369         (dse_finalize_block): Likewise.
3370         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
3371         keywords as variable names.
3372         (may_move_till): Cast according to the coding conventions.
3373         (force_move_till_expr): Avoid using C++ keywords as variable names.
3374         (force_move_till): Cast according to the coding conventions.
3375         (memref_hash): Likewise.
3376         (memref_eq): Likewise.
3377         (gather_mem_refs_stmt): Likewise.
3378         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
3379         using C++ keywords as variable names.
3380         (idx_find_step): Cast according to the coding conventions.
3381         (idx_record_use): Likewise.
3382         (find_depends): Likewise.
3383         (prepare_decl_rtl): Likewise.
3384         (mbc_entry_hash): Likewise.
3385         (mbc_entry_eq): Likewise.
3386         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
3387         (simplify_replace_tree): Avoid using C++ keywords as variable names.
3388         (idx_infer_loop_bounds): Cast according to the coding conventions.
3389         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
3390         * tree-ssa-math-opts.c (occ_new ): Likwise.
3391         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
3392         macros.
3393         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
3394         variable names.
3395         (add_use_op): Likewise.
3396         (add_vop): Likewise.
3397         (add_vuse_op): Likewise.
3398         (add_vdef_op): Likewise.
3399         (get_expr_operands): Likewise.
3400         (push_stmt_changes): Use type safe memory macros.
3401         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
3402         keywords as variable names.
3403         (conditional_replacement): Likewise.
3404         (minmax_replacement): Likewise.
3405         (abs_replacement): Likewise.
3406         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
3407         coding conventions.
3408         (insert_fake_stores): Avoid using C++ keywords as variable names.
3409         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
3410         conventions.
3411         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
3412         (heapvar_insert): Use type safe memory macros.
3413         (new_var_info): Cast according to the coding conventions.
3414         (new_constraint): Likewise.
3415         (remove_preds_and_fake_succs): Use type safe memory macros.
3416         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
3417         conventions.
3418         (thread_single_edge): Likewise.
3419         (thread_through_loop_header): Likewise.
3420
3421 2007-06-06  Eric Christopher  <echristo@apple.com>
3422
3423         * config/i386/i386.c (override_options): Move handling
3424         of TARGET_SUBTARGET* earlier.
3425
3426 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
3427
3428         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
3429         use %n on printf.
3430
3431 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
3432
3433         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
3434         emited outside of basic block.
3435         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
3436         the created blocks.
3437         * rtl.h (delete_insn_chain): Declaration changed.
3438         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
3439         non-removed insns.
3440         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
3441         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
3442         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
3443         to delete_insn_chain.
3444         (rtl_verify_flow_info_1): Verify that the insns in header and footer
3445         do not have bb field set.
3446         (rtl_verify_flow_info): Verify that insns between basic blocks do not
3447         have bb field set.
3448         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
3449         * cfgcleanup.c (try_optimize_cfg): Ditto.
3450
3451 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3452
3453         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
3454         (lambda_body_vector_new): Use type safe memory macros.
3455         (lambda_linear_expression_new): Likewise.
3456         (lambda_loopnest_new): Likewise.
3457         (lambda_lattice_new): Likewise.
3458         (replace_uses_equiv_to_x_with_y): Cast according to the coding
3459         conventions. Use type safe memory macros.
3460         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
3461         (lambda_body_vector_s): Likewise.
3462         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
3463         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
3464
3465 2007-06-06  Richard Guenther  <rguenther@suse.de>
3466
3467         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
3468         if we need to schedule cfg_cleanup.
3469         (tree_ssa_forward_propagate_single_use_vars): Do so.
3470
3471 2007-06-06  Ian Lance Taylor  <iant@google.com>
3472
3473         * fold-const.c (merge_ranges): If range_successor or
3474         range_predecessor fail, just return 0.
3475
3476 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
3477
3478         PR tree-optimization/32216
3479         * tree-vectorizer.c (supportable_widening_operation): Determine
3480         signedness of FIX_TRUNC_EXPR from output operand.
3481         (supportable_narrowing_operation): Ditto.
3482         * tree-vect-generic.c (expand_vector_operations_1): Determine
3483         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
3484         from input operand.
3485
3486 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3487
3488         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
3489         (struct pta): ...from here. Change flags to unsigned to avoid
3490         excessive casting (as it is used as a bit mask).
3491         (override_options): Add casts according to the coding convenventions.
3492         (x86_64_elf_unique_section): Likewise.
3493         (examine_argument): Avoid using C++ keywords as variable names.
3494         (construct_container): Likewise.
3495         (legitimize_pic_address): Likewise.
3496         (get_dllimport_decl): Cast according to the coding conventions. Use
3497         type safe memory macros.
3498         (legitimize_address): Cast according to the coding conventions.
3499         (emit_i387_cw_initialization): Corrected the type of slot to enum
3500         ix86_stack_slot.
3501         (ix86_init_machine_status): Use type safe memory macros.
3502         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
3503         (bdesc_pcmpistr): Likewise.
3504         (bdesc_crc32): Likewise.
3505         (bdesc_sse_3arg): Likewise.
3506         (bdesc_2arg): Likewise.
3507         (bdesc_1arg): Likewise.
3508         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
3509         (ix86_expand_sse_pcmpistr): Likewise.
3510         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
3511         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
3512         int to match the langhook definition.
3513         (ix86_builtin_conversion): Change the type of code to unsigned init to
3514         match the langhook definition.
3515         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
3516         names.
3517         (ix86_preferred_output_reload_class): Likewise.
3518         (ix86_cannot_change_mode_class): Likewise.
3519         (ix86_memory_move_cost): Likewise.
3520         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
3521         avoid excessive casting later on.
3522         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
3523
3524 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
3525
3526         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
3527         as flags setting insn.
3528         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
3529
3530 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
3531
3532         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
3533         (UNSPEC_ROUND): New.
3534         ("sse4_1_round<mode>2"): New insn pattern.
3535         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
3536         SSE4.1 targets.
3537         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
3538         expander using SSEMODEF mode macro.  Expand using
3539         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3540         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
3541         expander using SSEMODEF mode macro.  Expand using
3542         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3543         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
3544         expander using SSEMODEF mode macro.  Expand using
3545         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
3546         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
3547         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
3548         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
3549         UNSPEC_ROUNDS.
3550
3551 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
3552             Sebastian Pop  <sebpop@gmail.com>
3553
3554         * lambda.h (build_linear_expr): New.
3555         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
3556         Use build_linear_expr, call fold and force_gimple_operand.
3557         (lambda_loopnest_to_gcc_loopnest): Check that there is
3558         something to insert.
3559         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
3560
3561 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
3562
3563         PR preprocessor/23479
3564         * doc/extend.texi: Document the 0b-prefixed binary integer
3565         constant extension.
3566
3567 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
3568
3569         PR tree-optimization/32215
3570         * tree-vectorizer.c (supportable_widening_operation): Return false
3571         for unsupported FIX_TRUNC_EXPR tree code.
3572         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
3573
3574 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
3575
3576         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
3577         register on SPE targets.  Change documentation to reflect
3578         reality.
3579         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
3580         Change FIXED_SCRATCH to 14 and document why we're keeping r14
3581         out of the register allocation pool.
3582         (rs6000_reg_live_or_pic_offset_p): New function.
3583         (rs6000_emit_prologue): Move the actual saving of LR up to free
3584         r0 for holding r11.  Split saving of SPE 64-bit registers into
3585         its own case.  Ensure that offsets will always be in-range for
3586         'evstdd' by using r11 as a scratch register to point at the start
3587         of the SPE save area.  Save r11 if necessary, as it is the static
3588         chain register.
3589         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
3590         into its own case.  Ensure that offsets will always be in-range
3591         for 'evldd' by using r11 as a scratch register to point at the
3592         start of the SPE save area.  Also adjust r11 when restoring
3593         the stack pointer to compensate for pre-loading r11.
3594
3595 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
3596
3597         * cfg.c (init_flow): Use type safe memory macros.
3598         (alloc_block): Likewise.
3599         (unchecked_make_edge): Likewise.
3600         (dump_flow_info): Avoid using C++ keywords as variable names.
3601         (copy_original_table_clear): Cast according to the coding conventions.
3602         (copy_original_table_set): Likewise.
3603         * cfgexpand (label_rtx_for_bb): Likewise.
3604         (expand_gimple_basic_block): Likewise.
3605         * cfghooks.c (dump_bb): Likewise.
3606         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
3607         variable names.
3608         (lv_add_condition_to_bb): Likewise.
3609         * cfglayout (relink_block_chain): Cast according to the coding
3610         conventions.
3611         (fixup_reorder_chain): Likewise.
3612         (fixup_fallthru_exit_predecessor): Likewise.
3613         * cfgloop.c (glb_enum_p): Likewise.
3614         (get_exit_description): Likewise.
3615         (dump_recorded_exit): Likewise.
3616         * cfgloop.h (enum loop_estimation): Move out of struct scope...
3617         (struct loop): ... from here.
3618         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
3619         conventions.
3620         * cfgrtl.c (rtl_create_basic_block): Likewise.
3621         (rtl_split_block): Likewise.
3622         (rtl_dump_bb): Likewise.
3623         (cfg_layout_split_block): Likewise.
3624         (init_rtl_bb_info): Use typesafe memory macros.
3625
3626         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
3627         * graphds.h: Updated all usages of edge to graph_edge.
3628         * graphds.c: Likewise.
3629         * cfgloopanal.c: Likewise.
3630
3631 2007-06-05  Ian Lance Taylor  <iant@google.com>
3632
3633         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
3634         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
3635         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
3636         expression.
3637         (test_for_singularity): Likewise.
3638
3639 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
3640
3641         * config/i386/constraints.md ("Y2"): Replaced by ...
3642         ("Yt"): This.
3643         * config/i386/i386.md: Likewise.
3644         * config/i386/mmx.md: Likewise.
3645         * config/i386/sse.md: Likewise.
3646
3647 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
3648
3649         * config/i386/constraints.md ("z"): Replaced by ...
3650         ("Y0"): This.
3651         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
3652         (sse4_1_blendvps): Likewise.
3653         (sse4_1_pblendvb): Likewise.
3654         (sse4_2_pcmpestr): Likewise.
3655         (sse4_2_pcmpestrm): Likewise.
3656         (sse4_2_pcmpestr_cconly): Likewise.
3657         (sse4_2_pcmpistr): Likewise.
3658         (sse4_2_pcmpistrm): Likewise.
3659         (sse4_2_pcmpistr_cconly): Likewise.
3660
3661 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
3662
3663         * matrix-reorg.c (transform_access_sites): Fix computation.
3664         (transform_allocation_sites): Same.
3665
3666 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
3667
3668         * config/i386/i386.c (override_options): Use
3669         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
3670
3671 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
3672
3673         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
3674         (nonimm_not_xmm0_operand): Ditto.
3675         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
3676         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
3677         as operand[2] predicate.  Require "z" class XMM register for
3678         operand[3].  Adjust asm template.
3679         ("sse4_1_blendvpd"): Ditto.
3680         ("sse4_1_pblendvb"): Ditto.
3681         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
3682         force op2 into xmm0 register for variable blend instructions.
3683
3684 2007-06-04  Tom Tromey  <tromey@redhat.com>
3685
3686         * c-tree.h (start_enum): Update.
3687         (build_enumerator): Likewise.
3688         * c-decl.c (enum_next_value): Removed.
3689         (enum_overflow): Likewise.
3690         (start_enum): Add c_enum_contents argument.  Don't use globals.
3691         (build_enumerator): Likewise.
3692         * c-tree.h (struct c_enum_contents): New struct.
3693
3694 2007-06-04  Tom Tromey  <tromey@redhat.com>
3695
3696         * c-common.c (c_common_get_alias_set): Fix indentation.
3697
3698 2007-06-04  Ian Lance Taylor  <iant@google.com>
3699
3700         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
3701         to overflow, reduce overflow infinity to regular infinity.
3702         (vrp_var_may_overflow): New static function.
3703         (vrp_visit_phi_node): Check vrp_var_may_overflow.
3704
3705 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
3706
3707         * stor-layout.c (layout_type): Remove duplicate code.
3708
3709 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
3710
3711         PR c/32191
3712         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
3713         before build_common_builtin_nodes ().
3714
3715 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
3716
3717         PR target/31733
3718         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
3719
3720 2007-06-04  Jan Hubicka  <jh@suse.cz>
3721
3722         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
3723         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
3724         instead of _stat version.
3725
3726 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
3727
3728         PR tree-optimization/32194
3729         * tree-predcom.c (determine_offset): Check that both references have
3730         the same type.
3731
3732 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
3733
3734         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
3735         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
3736         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
3737         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
3738         Add argument to iterate_fix_dominators call.
3739         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
3740         * gcse.c (hoist_code): Change domby to vector.
3741         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
3742         Add argument to iterate_fix_dominators call.
3743         * loop-doloop.c (doloop_modify): Changed recount_dominator to
3744         recompute_dominator.
3745         * lambda-code.c (perfect_nestify): Ditto.
3746         * cfgloopanal.c: Include graphds.h.
3747         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
3748         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
3749         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
3750         add_edge call.
3751         * graphds.c: New file.
3752         * graphds.h: New file.
3753         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
3754         (get_dominated_by, get_dominated_by_region): Change return type to
3755         vector.
3756         (verify_dominators): Recompute all dominators and compare the results.
3757         (recount_dominator): Renamed to ...
3758         (recompute_dominator): ... this.  Do not check that the block is
3759         dominated by entry.
3760         (iterate_fix_dominators): Reimplemented.
3761         (prune_bbs_to_update_dominators, root_of_dom_tree,
3762         determine_dominators_for_sons): New functions.
3763         * et-forest.c (et_root): New function.
3764         * et-forest.h (et_root): Declare.
3765         * Makefile.in (graphds.o): Add.
3766         (cfgloopanal.o): Add graphds.h dependency.
3767         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
3768         * basic-block.h (get_dominated_by, get_dominated_by_region,
3769         iterate_fix_dominators): Declaration changed.
3770         (recount_dominator): Renamed to ...
3771         (recompute_dominator): ... this.
3772         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
3773         (thread_through_all_blocks): Do not free dominance info.
3774
3775 2007-06-03  Andreas Schwab  <schwab@suse.de>
3776
3777         * config/m68k/m68k.c (override_options): Don't override
3778         REAL_MODE_FORMAT.
3779         * config/m68k/m68k-modes.def (SF, DF): Define to use
3780         motorola_single_format and motorola_double_format, resp.
3781         * real.c (motorola_single_format): Renamed from
3782         coldfire_single_format.
3783         (motorola_double_format): Renamed from coldfire_double_format.
3784         (encode_ieee_extended): Generate a proper canonical NaN image
3785         respecting canonical_nan_lsbs_set.
3786         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
3787         true.
3788         * real.h: Adjust declarations.
3789
3790 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
3791
3792         PR target/32163
3793         * config/sh/sh.md (symGOT_load): Don't schedule insns when
3794         the symbol is generated with the stack protector.
3795
3796 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
3797
3798         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
3799         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
3800         "interrupt".
3801         * doc/extend.texi (interrupt): Mention m68k.
3802
3803 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
3804
3805         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
3806         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
3807         (ix86_expand_sse_pcmpestr): Do not check operands for
3808         "register_operand", when insn operand predicate is "register_operand".
3809         (ix86_expand_sse_pcmpistr): Ditto.
3810
3811 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
3812             Uros Bizjak  <ubizjak@gmail.com>
3813
3814         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
3815         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
3816         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
3817         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
3818         * config/i386/constraints.md ("z"): New register constraint
3819         for members of SSE_FIRST_REG class.
3820         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
3821         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
3822         SSE_FIRST_REG class.
3823         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
3824         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
3825         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
3826         (IX86_BUILTIN_PCMPESTRM128): Likewise.
3827         (IX86_BUILTIN_PCMPESTRA128): Likewise.
3828         (IX86_BUILTIN_PCMPESTRC128): Likewise.
3829         (IX86_BUILTIN_PCMPESTRO128): Likewise.
3830         (IX86_BUILTIN_PCMPESTRS128): Likewise.
3831         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
3832         (IX86_BUILTIN_PCMPISTRI128): Likewise.
3833         (IX86_BUILTIN_PCMPISTRM128): Likewise.
3834         (IX86_BUILTIN_PCMPISTRA128): Likewise.
3835         (IX86_BUILTIN_PCMPISTRC128): Likewise.
3836         (IX86_BUILTIN_PCMPISTRO128): Likewise.
3837         (IX86_BUILTIN_PCMPISTRS128): Likewise.
3838         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
3839         (struct builtin_description): Change "flag" field to unsigned.
3840         (bdesc_pcmpestr): New builtin description table.
3841         (bdesc_pcmpistr): Likewise.
3842         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
3843         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
3844         Initialize pcmp[ei]str[im] insns for SSE4.2.
3845         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
3846         (ix86_expand_sse_pcmpistr): Likewise.
3847         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
3848         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
3849         (UNSPEC_PCMPISTR): Likewise.
3850         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
3851         (sse4_2_pcmpestri):New isns pattern.
3852         (sse4_2_pcmpestrm): Likewise.
3853         (sse4_2_pcmpestr_cconly): Likewise.
3854         (sse4_2_pcmpistr): New insn patern and splitter.
3855         (sse4_2_pcmpistri):New isns pattern.
3856         (sse4_2_pcmpistrm): Likewise.
3857         (sse4_2_pcmpistr_cconly): Likewise.
3858         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
3859         in SSE4.2.
3860
3861 2007-06-01  David Daney  <ddaney@avtrex.com>
3862
3863         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
3864         LOADGP_ABSOLUTE and not binds_local_p.
3865
3866 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
3867
3868         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
3869
3870 2007-06-01  Ian Lance Taylor  <iant@google.com>
3871
3872         * tree-vrp.c (compare_name_with_value): Always set
3873         used_strict_overflow if we get a result from the variable itself.
3874
3875 2007-06-01  Ian Lance Taylor  <iant@google.com>
3876
3877         PR rtl-optimization/31455
3878         * lower-subreg.c (find_decomposable_subregs): Don't decompose
3879         subregs which have a cast between modes which are not tieable.
3880
3881 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
3882
3883         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
3884         breaks after return statements.
3885
3886 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
3887
3888         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
3889         only after no_new_pseudos.
3890
3891 2007-05-31  Eric Christopher  <echristo@apple.com>
3892
3893         * expr.c (convert_move): Assert that we don't have a BLKmode
3894         operand.
3895         (store_expr): Handle BLKmode moves by calling emit_block_move.
3896
3897 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
3898
3899         * c-typeck.c (build_indirect_ref): Include type in error message.
3900         (build_binary_op): Pass types to binary_op_error.
3901         * c-common.c (binary_op_error): Take two type arguments, print out
3902         types with error.
3903         * c-common.h (binary_op_error): Update prototype.
3904
3905 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
3906
3907         * config/i386/i386.c: Correct coments on -mno-sse4.
3908
3909 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
3910
3911         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
3912         (x86_64-*-*): Likewise.
3913         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
3914         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
3915         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
3916         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
3917         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
3918         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
3919         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
3920         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
3921         (OPTION_MASK_ISA_SSE4): Likewise.
3922         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
3923         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
3924         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
3925         (override_options): Support SSE4.2.
3926         (ix86_build_const_vector): Support SImode and DImode.
3927         (ix86_build_signbit_mask): Likewise.
3928         (ix86_expand_int_vcond): Support V2DImode.
3929         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
3930         (IX86_BUILTIN_CRC32HI): Likewise.
3931         (IX86_BUILTIN_CRC32SI): Likewise.
3932         (IX86_BUILTIN_CRC32DI): Likewise.
3933         (IX86_BUILTIN_PCMPGTQ): Likewise.
3934         (bdesc_crc32): Likewise.
3935         (bdesc_sse_3arg): Likewise.
3936         (ix86_expand_crc32): Likewise.
3937         (ix86_init_mmx_sse_builtins): Support SSE4.2.
3938         (ix86_expand_builtin): Likewise.
3939         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3940         __SSE4_2__ for -msse4.2.
3941         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
3942         (CRC32MODE): Likewise.
3943         (crc32modesuffix): Likewise.
3944         (crc32modeconstraint): Likewise.
3945         (sse4_2_crc32<mode>): Likewise.
3946         (sse4_2_crc32di): Likewise.
3947         * config/i386/i386.opt (msse4.2): New for SSE4.2.
3948         (msse4): Likewise.
3949         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
3950         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
3951         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
3952         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
3953         (vcondu<mode>): Likewise.
3954         * doc/extend.texi: Document SSE4.2 built-in functions.
3955         * doc/invoke.texi: Document -msse4.2/-msse4.
3956
3957 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
3958
3959         PR tree-optimization/32160
3960         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
3961         variable as gimple reg.
3962         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
3963
3964 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
3965
3966         * gcc.c (main): Don't consider linker options when issuing the
3967         warning about a linker input file not being used.
3968
3969 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3970
3971         * tree-vrp.c (compare_names): Initialize sop.
3972
3973 2007-05-30  Dirk Mueller  <dmueller@suse.de>
3974
3975         * cgraphunit.c (cgraph_analyze_function): Remove
3976         computation of inline parameters.
3977
3978 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
3979
3980         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
3981
3982 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
3983
3984         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
3985         Add vx-common.h.  Include vxworks.h between vx-common.h and
3986         arm/vxworks.h.
3987         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
3988         redefining.
3989         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
3990         (TARGET_ASM_DESTRUCTOR): Likewise.
3991         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
3992         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
3993         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3994         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
3995         (VXWORKS_ENDIAN_SPEC): Define.
3996         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
3997         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
3998         VXWORKS_* equivalents.
3999         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
4000         (ASM_FILE_START): Delete.
4001         (TARGET_VERSION): Reformat.
4002         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
4003         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
4004         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
4005         (FPBIT, DPBIT): Define.
4006         (fp-bit.c, dp-bit.c): New rules.
4007         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
4008         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
4009         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
4010         * config/arm/arm.h: Include vxworks-dummy.h.
4011         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
4012         Mark with ATTRIBUTE_UNUSED.
4013         (arm_override_options): Do not allow VxWorks RTP PIC to be used
4014         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
4015         make it incompatible with -msingle-pic-base.
4016         (arm_function_ok_for_sibcall): Return false for calls that might
4017         go through a VxWorks PIC PLT entry.
4018         (require_pic_register): New function, split out from...
4019         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
4020         for VxWorks RTPs.
4021         (arm_load_pic_register): Handle the VxWorks RTP initialization
4022         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
4023         (arm_emit_call_insn): New function.
4024         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
4025         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
4026         (pic_offset_arm): New pattern.
4027         (call, call_value): Use arm_emit_call_insn.
4028         (call_internal, call_value_internal): New expanders.
4029         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
4030         VxWorks unless __PIC__.
4031
4032 2007-05-30  Eric Christopher  <echristo@gmail.com>
4033
4034         * genrecog.c: Include regs.h in generated file.
4035         * genemit.c: Ditto. Fix up formatting.
4036         * config/mn10300/constraints.md: New.
4037         * config/mn10300/mn10300.md: Include.
4038         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
4039         Fix up for removed macro.
4040         * config/mn10300/predicates.md (call_address_operand):  Ditto.
4041         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
4042         (CONST_OK_FOR_I): Ditto.
4043         (CONST_OK_FOR_J): Ditto.
4044         (CONST_OK_FOR_K): Ditto.
4045         (CONST_OK_FOR_L): Ditto.
4046         (CONST_OK_FOR_M): Ditto.
4047         (CONST_OK_FOR_N): Ditto.
4048         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
4049         (OK_FOR_Q): Ditto.
4050         (OK_FOR_R): Ditto.
4051         (OK_FOR_T): Ditto.
4052         (EXTRA_CONSTRAINT): Ditto.
4053
4054 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4055
4056         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
4057         Remove defines.
4058         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
4059         OPTION_MASK_ISA_64BIT.
4060         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
4061
4062 2007-05-30  Richard Guenther  <rguenther@suse.de>
4063
4064         PR middle-end/32152
4065         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
4066         types for comparison.
4067         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
4068         with original typed arguments.
4069         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
4070
4071 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
4072
4073         PR tree-optimization/31769
4074         * except.c (duplicate_eh_regions): Clear prev_try if
4075         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
4076
4077 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
4078
4079         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
4080         * tree-ssa-sink.c (statement_sink_location): Return basic block and
4081         bsi of the location where statements should be inserted.
4082         (sink_code_in_bb): Take bsi from statement_sink_location.
4083         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
4084         instead of bsi_start.
4085         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
4086         bsi_insert_after.
4087         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
4088         (bsi_move_before): Document inconsistency with bsi_move_after.
4089         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
4090
4091 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4092
4093         * config/i386/i386.h (TARGET_ABM): New define.
4094         (TARGET_POPCNT): Ditto.
4095         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
4096         New temporary defines to redefine from OPTION_ISA_* defines.
4097         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
4098         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
4099         (ix86_isa_flags): New extern int declaration.
4100         (TARGET_SUBTARGET_DEFAULT): New define.
4101         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
4102         (TARGET_SUBTARGET32_DEFAULT): Ditto.
4103         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
4104         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
4105         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
4106         * config/i386/darwin.h: Change TARGET_64BIT define to
4107         OPTION_ISA_64BIT.
4108
4109         * config/i386/i386.opt (m3dnowa): Define as undocumented option
4110         using existing "ix86_isa_flags" varible.
4111         (m32, m64): Use existing "ix86_isa_flags" variable.
4112         (mmmx, m3dnow): Ditto.
4113         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
4114         (mabm): Define as non-negative option using "x86_abm" variable.
4115         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
4116
4117         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
4118         Rewrite feature test bitmap.
4119         (ix86_isa_flags): New initialized global int varible.
4120         (ix86_isa_flags_explicit): New static int variable.
4121         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
4122         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
4123         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
4124         target_flags_explicit.
4125         (override_options): Remove "target_enable" and "target_disable" fields
4126         from "struct ptt". Update processor_target_table accordingly. Remove
4127         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
4128         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
4129         "target_flags" and "ix86_isa_flags_explicit" instead of
4130         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
4131         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
4132         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
4133         to true when either of PTA_POPCNT or PTA_ABM is set in
4134         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
4135         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
4136         processor_alias_table flags entry.  Remove handling of
4137         "target_enable" and "target_disable" fields of processor_target_table.
4138         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
4139         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
4140         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
4141         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
4142         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
4143         "target_flags".
4144         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
4145
4146 2007-05-29  David Daney  <ddaney@avtrex.com>
4147
4148         PR gcc/31975
4149         * config/mips/mips.c (mips_output_mi_thunk): Emit
4150         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
4151
4152 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
4153         * config/i386/i386.c (ix86_function_regparm): Added checking of
4154         ix86_force_align_arg_pointer to determine the number of
4155         register parameters.
4156
4157 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
4158
4159         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
4160         (SET_DR_MISALIGNMENT): New.
4161         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
4162         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
4163         Use SET_DR_MISALIGNMENT.
4164         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
4165         pointer.
4166         * tree-data-ref.c (create_data_ref, compute_all_dependences,
4167         find_loop_nest): Export.
4168         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
4169         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
4170         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
4171         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
4172         New macros.
4173         (struct mem_ref): Add field reuse_distance.
4174         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
4175         Initialize reuse_distance field.
4176         (issue_prefetch_ref): Select temporality of prefetch according to
4177         reuse_distance.
4178         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
4179         self_reuse_distance, determine_loop_nest_reuse): New functions.
4180         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
4181         (tree_ssa_prefetch_arrays): Dump L2 cache size.
4182         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
4183         dependency.
4184
4185 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
4186
4187         * tree-ssa-alias.c: Add aliasing overview.
4188
4189 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
4190             Danny Smith  <dannysmith@users.sourceforge.net>
4191
4192         PR target/29498
4193         * config/i386/t-crtfm: Compile crtfastmath.o with
4194         -minline-all-stringops.
4195         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
4196         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
4197
4198 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4199
4200         * doc/md.texi: Document constraints on HP PA-RISC.
4201
4202         * pa/constraints.md: New file.
4203         * pa.md: Include constraints.md.
4204         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
4205         (integer_store_memory_operand, ldil_cint_p): New functions.
4206         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
4207         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4208         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
4209         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
4210         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
4211
4212 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
4213
4214         PR c/31339
4215         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
4216         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
4217         case POSTDECREMENT_EXPR>): Return the error_mark_node
4218         if either the real or imaginary parts would an
4219         error_mark_node.
4220
4221 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
4222
4223         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
4224         name when we remove it from a call.
4225
4226 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
4227
4228         * targhooks.c (default_narrow_bitfield): Remove.
4229         * targhooks.h: Remove the prototype for
4230         default_narrow_bitfield.
4231
4232         * langhooks-def.h: Remove the prototype for
4233         hook_get_alias_set_0.
4234         * langhooks.c (hook_get_alias_set_0): Remove.
4235
4236         * global.c (EXECUTE_IF_CONFLICT): Remove.
4237
4238 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4239
4240         PR tree-opt/32100
4241         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
4242         return true when truth_value_p is true and the type
4243         is of signed:1.
4244
4245 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
4246
4247         * doc/install.texi (Prerequisites): We no longer require Autoconf
4248         2.13 for the top-level.
4249
4250 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
4251
4252         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
4253         memory access via x86_expand_vector_move_misalign() only for
4254         TImode values on 32-bit targets.
4255
4256 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
4257
4258         * matrix-reorg.c: New file. Implement matrix flattening and
4259         transposing optimization.
4260         * tree-pass.h: Add matrix reorg pass.
4261         * common.opt: Add fipa-mreorg flag.
4262         * Makefile.in: Add matrix-reorg.c.
4263         * passes.c: Add matrix reorg pass.
4264         * varpool.c (add_new_static_var): New function.
4265         * cgraph.h (add_new_static_var): Declare.
4266
4267 2007-05-27  Eric Christopher  <echristo@apple.com>
4268
4269         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
4270         sp_offset depending on stack size. Save r12 depending
4271         on registers we're saving later.
4272         (rs6000_emit_epilogue): Update sp_offset depending only
4273         on stack size.
4274
4275 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
4276
4277         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
4278         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
4279         * ifcvt.c (if_convert): Ditto.
4280         * tree-ssa-threadupdate.c (thread_block): Ditto.
4281         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
4282         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
4283         verify_loop_closed_ssa): Check number_of_loops instead of
4284         current_loops.
4285         * predict.c (tree_estimate_probability): Ditto.
4286         * tree-if-conv.c (main_tree_if_conversion): Ditto.
4287         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
4288         * modulo-sched.c (sms_schedule): Ditto.
4289         * tree-scalar-evolution.c (scev_const_prop): Ditto.
4290         (scev_finalize): Do not do anything if scev analysis was not
4291         initialized.
4292         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
4293         current_loops == NULL.
4294         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
4295         * loop-init.c (loop_optimizer_init): Do not free current_loops when
4296         there are no loops.
4297         (loop_optimizer_finalize): Assert that loops were analyzed.
4298         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
4299         rtl_doloop): Check number_of_loops instead of current_loops.
4300         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
4301         current_loops == NULL.
4302         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
4303         gate_tree_vectorize tree_linear_transform, check_data_deps,
4304         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
4305         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
4306         Check number_of_loops instead of current_loops.
4307         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
4308         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
4309         free loops if available.
4310         (execute_pre): Do not pass do_fre to fini_pre.
4311
4312 2007-05-27  Tobias Burnus  <burnus@net-b.de>
4313
4314         PR middle-end/32083
4315         * real.c (mpfr_from_real): Fix sign of -Inf.
4316
4317 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
4318
4319         * tree-vect-transform.c (vectorizable_conversion): Initialize
4320         tree_code variables to ERROR_MARK.
4321         (vectorizable_type_demotion): Likewise.
4322         (vectorizable_type_promotion): Likewise.
4323
4324 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
4325
4326         PR target/32065
4327         * config/i386/i386.md (movti): Handle push operands via
4328         ix86_expand_push().
4329
4330 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
4331
4332         * basic-block.h: Remove the prototype for merge_seq_blocks.
4333         * cfgcleanup.c (merge_seq_blocks): Remove.
4334
4335         * tree-flow.h: Remove the prototype for is_aliased_with.
4336         * tree-ssa-alias.c (is_aliased_with): Remove.
4337
4338 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
4339
4340         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
4341
4342         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
4343
4344         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
4345         ix86_expand_sse4_unpack if SSE4.1 is enabled.
4346         (vec_unpacks_hi_v16qi): Likewise.
4347         (vec_unpacku_lo_v16qi): Likewise.
4348         (vec_unpacks_lo_v16qi): Likewise.
4349         (vec_unpacku_hi_v8hi): Likewise.
4350         (vec_unpacks_hi_v8hi): Likewise.
4351         (vec_unpacku_lo_v8hi): Likewise.
4352         (vec_unpacks_lo_v8hi): Likewise.
4353         (vec_unpacku_hi_v4si): Likewise.
4354         (vec_unpacks_hi_v4si): Likewise.
4355         (vec_unpacku_lo_v4si): Likewise.
4356         (vec_unpacks_lo_v4si): Likewise.
4357
4358 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
4359
4360         * c-typeck.c, config/arm/arm.c, config/darwin.c,
4361         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
4362         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
4363         follow spelling conventions in various
4364         warning/error/diagnostic messages.
4365
4366         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
4367         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
4368         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
4369         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
4370         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
4371         * doc/tm.texi: Follow spelling conventions.
4372
4373 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4374
4375         PR tree-opt/32090
4376         * tree-ssa-forwprop.c
4377         (forward_propagate_addr_into_variable_array_index): Remove
4378         the lhs argument.  Use the type of def_rhs instead of lhs.
4379         (forward_propagate_addr_expr_1): Update use of
4380         forward_propagate_addr_into_variable_array_index.
4381
4382 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
4383             Nigel Stephens  <nigel@mips.com>
4384
4385         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
4386         function attributes, "far" being an alias for "long_call".
4387         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
4388         (mips_near_type_p, mips_far_type_p): New.
4389         (mips_comp_type_attributes): New function to check that attributes
4390         attached to a function type are compatible.
4391         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
4392         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
4393         to the target function of the thunk.
4394         (mips_encode_section_info): Check for "near" and "far" function
4395         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
4396
4397         * config/mips/predicates.md (const_call_insn_operand): Test only
4398         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
4399
4400         * doc/extend.texi (Function Attributes): Document MIPS "near" and
4401         "far" attributes.
4402
4403         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
4404         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
4405         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
4406         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
4407
4408 2007-05-25  Eric Christopher  <echristo@apple.com>
4409
4410         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
4411         to x86-darwin configurations.
4412         * config/i386/t-darwin: Add softfp support.
4413         * config/i386/t-darwin64: Ditto.
4414         * config/i386/sfp-machine.h: If mach then don't use
4415         aliasing, emit a stub to call.
4416
4417 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
4418
4419         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
4420         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
4421         tree-predcom.c, tree-ssa-alias-warnings.c,
4422         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
4423         comment typos.  Follow spelling conventions.
4424         * doc/cpp.texi, doc/invoke.texi: Fix typos.
4425
4426 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
4427
4428         PR target/32065
4429         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
4430         constants into memory.  Expand unaligned memory references for
4431         SSE modes via x86_expand_vector_move_misalign() function.
4432
4433 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
4434
4435         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
4436         "memory" attribute for "sseishft" type insn without operands[2].
4437
4438 2007-05-25  Dirk Mueller  <dmueller@suse.de>
4439             Marcus Meissner <meissner@suse.de>
4440
4441         * doc/extend.texi (alloc_size): New attribute.
4442         * c-common.c (handle_alloc_size_attribute): New.
4443         * tree-object-size.c (alloc_object_size): Use alloc_size
4444         attribute, if available.
4445
4446 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
4447
4448         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
4449         with MASK_SSE2.
4450         (__builtin_ia32_vec_ext_v2di): Likewise.
4451         (__builtin_ia32_vec_ext_v4si): Likewise.
4452         (__builtin_ia32_vec_ext_v8hi): Likewise.
4453         (__builtin_ia32_vec_ext_v16qi): Likewise.
4454         (__builtin_ia32_vec_set_v8hi): Likewise.
4455
4456 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
4457
4458         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
4459
4460 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
4461
4462         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
4463         (arm_is_longcall_p): Rename to...
4464         (arm_is_long_call_p): ...this.  Take a single tree argument and
4465         return a bool.
4466         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
4467         (CUMULATIVE_ARGS): Remove call_cookie.
4468         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
4469         (ENCODED_LONG_CALL_ATTR_P): Delete.
4470         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
4471         LONG_CALL_FLAG_CHAR cases.
4472         (ARM_DECLARE_FUNCTION_SIZE): Delete.
4473         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
4474         ARM_DECLARE_FUNCTION_SIZE.
4475         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
4476         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
4477         (arm_encode_call_attribute, current_file_function_operand): Delete.
4478         (arm_function_in_section_p): New function.
4479         (arm_is_longcall_p): Rename to...
4480         (arm_is_long_call_p): ...this.  Take the target function as a single
4481         argument and return a bool.  Do not rely on call cookies.  Check
4482         whether the target symbol is in the same section as the current
4483         function, not just the same compilation unit.
4484         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
4485         (arm_encode_section_info): Don't encode a call type.
4486         * config/arm/arm.md (call, call_value): Update calls to
4487         arm_is_long(_)call_p.  Simplify logic.
4488         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
4489         Update calls to arm_is_long(_)call_p.
4490
4491 2007-05-25  Richard Guenther  <rguenther@suse.de>
4492
4493         PR tree-optimization/31982
4494         * tree-ssa-forwprop.c
4495         (forward_propagate_addr_into_variable_array_index): Handle arrays
4496         with element size one.
4497
4498 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4499
4500         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
4501         (umulsi3_highpart): Likewise.
4502
4503 2007-05-24  Ian Lance Taylor  <iant@google.com>
4504
4505         PR rtl-optimization/32069
4506         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
4507         is NULL.
4508
4509 2007-05-24  Ollie Wild  <aaw@google.com>
4510
4511         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
4512         description.
4513
4514 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
4515
4516         * postreload-gcse.c (reg_changed_after_insn_p): New function.
4517         (oprs_unchanged_p): Use it to check all registers in a REG.
4518         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
4519         (reg_set_between_after_reload_p): Delete.
4520         (reg_used_between_after_reload_p): Likewise.
4521         (reg_set_or_used_since_bb_start): Likewise.
4522         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
4523         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
4524         Use reg_set_between_p instead of reg_set_between_after_reload_p.
4525         * rtlanal.c (reg_set_p): Check whether REG overlaps
4526         regs_invalidated_by_call, rather than just checking the
4527         membership of REGNO (REG).
4528
4529 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
4530
4531         * doc/passes.texi: Document predictive commoning.
4532         * doc/invoke.texi (-fpredictive-commoning): Document.
4533         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
4534         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
4535         adding indices to the generated name.
4536         (schedule_sm): Pass 0 to get_lsm_tmp_name.
4537         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
4538         * tree-pretty-print.c (op_symbol_1): Renamed to ...
4539         (op_symbol_code): ... and exported.
4540         (dump_omp_clause, op_symbol): Use op_symbol_code
4541         instead of op_symbol_1.
4542         * tree-pass.h (pass_predcom): Declare.
4543         * timevar.def (TV_PREDCOM): New timevar.
4544         * tree-ssa-loop.c (run_tree_predictive_commoning,
4545         gate_tree_predictive_commoning, pass_predcom): New.
4546         * tree-data-ref.c (find_data_references_in_loop): Find the
4547         references in dominance order.
4548         (canonicalize_base_object_address): Ensure that the result has
4549         pointer type.
4550         (dr_analyze_innermost): Export.
4551         (create_data_ref): Code to fail for references with invariant
4552         address moved ...
4553         (find_data_references_in_stmt): ... here.
4554         * tree-data-ref.h (dr_analyze_innermost): Declare.
4555         * tree-affine.c: Include tree-gimple.h and hashtab.h.
4556         (aff_combination_find_elt, name_expansion_hash,
4557         name_expansion_eq, tree_to_aff_combination_expand,
4558         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
4559         New functions.
4560         * tree-affine.h (aff_combination_constant_multiple_p,
4561         tree_to_aff_combination_expand): Declare.
4562         * tree-predcom.c: New file.
4563         * common.opt (fpredictive-commoning): New option.
4564         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
4565         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
4566         * Makefile.in (tree-predcom.o): Add.
4567         (tree-affine.o): Add TREE_GIMPLE_H dependency.
4568         * passes.c (init_optimization_passes):  Add dceloop after
4569         copy propagation in loop optimizer.  Add predictive commoning
4570         to loop optimizer passes.
4571
4572 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
4573
4574         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
4575         default hook.
4576
4577 2007-05-24  Jan Hubicka  <jh@suse.cz>
4578
4579         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
4580         statistics.
4581         (genheader): Include statistics.h.
4582
4583         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
4584         notes are gone.
4585         * print-rtl.c (flag_dump_unnumbered): Update comments.
4586         (print_rtl): Fix my previous change.
4587         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
4588         specific data.
4589
4590 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
4591
4592         PR middle-end/32018
4593         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
4594         set_loop_copy.
4595         (thread_through_all_blocks): Call initialize_original_copy_tables
4596         and free_original_copy_tables.
4597         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
4598         Use set_loop_copy.
4599         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4600         * cfghooks.c (duplicate_block): Use get_loop_copy.
4601         * cfg.c: Include cfgloop.h.
4602         (loop_copy): New hash table.
4603         (initialize_original_copy_tables): Initialize loop_copy table.
4604         (free_original_copy_tables): Free loop_copy table.
4605         (copy_original_table_clear, copy_original_table_set,
4606         set_loop_copy, get_loop_copy): New functions.
4607         (set_bb_original, set_bb_copy): Use copy_original_table_set.
4608         * cfgloop.h (struct loop): Remove copy field.
4609         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
4610         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
4611
4612 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
4613
4614         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
4615         -msse/-msse2/-msse3.
4616
4617 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
4618
4619         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
4620         __builtin_ia32_vec_set_v2di with MASK_64BIT.
4621
4622 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
4623
4624         PR target/27067
4625         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
4626         * targhooks.h (default_mangle_decl_assembler_name): Declare
4627         default hook.
4628         * targhooks.c (default_mangle_decl_assembler_name): Define
4629         default hook.
4630         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
4631         default hook.
4632         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
4633         * langhooks.c (lhd_set_decl_assembler_name): Call
4634         targetm.mangle_decl_assembler_name for names with global scope.
4635
4636         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
4637         default.
4638         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
4639         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
4640         Declare.
4641         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
4642         New. Factored out of i386_pe_encode_section_info.
4643         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
4644         Move check for prior decoration of stdcall
4645         symbols to i386_pe_encode_section_info.
4646         (i386_pe_encode_section_info): Adjust call to
4647         gen_stdcall_or_fastcall_suffix.  Use
4648         i386_pe_maybe_mangle_decl_assembler_name, if needed.
4649         (i386_pe_mangle_decl_assembler_name): New. Wrap
4650         i386_pe_maybe_mangle_decl_assembler_name.
4651
4652 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
4653
4654         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
4655         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
4656         * langhooks.c (get_signed_or_unsigned_type): Don't check for
4657         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
4658         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
4659         TYPE_UNSIGNED.
4660
4661 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
4662             Nigel Stephens  <nigel@mips.com>
4663             Richard Sandiford  <richard@codesourcery.com>
4664
4665         Fix up MIPS16 hard float and add support for complex.
4666
4667         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
4668         (TARGET_SOFT_FLOAT_ABI): New.
4669         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
4670         __mips_soft_float to reflect the ABI in use, not whether the
4671         FPU is directly accessible (e.g., in MIPS16 mode).
4672         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
4673         (UNITS_PER_FPVALUE): Likewise.
4674
4675         * config/mips/mips.c (mips_expand_call): Remove redundant
4676         TARGET_MIPS16 check.
4677         (mips_arg_regno): New.
4678         (function_arg_advance): When setting bits in cum->fp_code for
4679         MIPS16, don't subtract 1 from cum->arg_number, since it is now
4680         zero-based.
4681         (function_arg): Use mips_arg_regno.
4682         (mips_return_mode_in_fpr_p): New.
4683         (mips16_call_stub_mode_suffix): New.
4684         (mips16_cfun_returns_in_fpr_p): New.
4685         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
4686         (mips_output_function_prologue): Test mips16_hard_float, not
4687         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
4688         (mips_expand_epilogue): Call MIPS16 helper routines to copy
4689         return value into a floating-point register.
4690         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
4691         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
4692         (mips16_fp_args): Handle MIPS32r2 ISA which supports
4693         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
4694         word of double arguments from or to the high bits of 64-bit
4695         floating point registers.
4696         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
4697         (mips16_fpret_double): New helper function.
4698         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
4699         support for complex modes.  Fill in DECL_RESULT for stubdecl.
4700         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
4701
4702         * config/mips/mips16.S
4703         (RET, ARG1, ARG2): New.
4704         (MERGE_GPRf, MERGE_GPRt): New.
4705         (DELAYt, DELAYf): New.
4706         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
4707         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
4708         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
4709         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
4710         (SFOP): Renamed to...
4711         (OPSF3): This, and macro-ified.  Updated all uses.
4712         (SFOP2): Renamed to...
4713         (OPSF2): This, and macro-ified.  Updated all uses.
4714         (SFCMP): Renamed to...
4715         (CMPSF): This, and macro-ified.  Updated all uses.
4716         (SFREVCMP): Renamed to...
4717         (REVCMPSF): This, and macro-ified.  Updated all uses.
4718         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
4719         (LDDBL1, LDDBL2, RETDBL): Deleted.
4720         (DFOP): Renamed to...
4721         (OPDF3): This, and macro-ified.  Updated all uses.
4722         (DFOP2): Renamed to...
4723         (OPDF2): This, and macro-ified.  Updated all uses.
4724         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
4725         (DFCMP): Renamed to...
4726         (CMPDF): This, and macro-ified.  Updated all uses.
4727         (DFREVCMP): Renamed to...
4728         (REVCMPDF): This, and macro-ified.  Updated all uses.
4729         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
4730         (RET_FUNCTION): New.
4731         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
4732         (__mips16_ret_sc, __mips16_ret_dc): New.
4733         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
4734         STUB_ARGS_6, STUB_ARGS_10): New.
4735         (CALL_STUB_NO_RET): New.
4736         (__mips16_call_stub_1): Macro-ified.
4737         (__mips16_call_stub_5): Macro-ified.
4738         (__mips16_call_stub_2): Macro-ified.
4739         (__mips16_call_stub_6): Macro-ified.
4740         (__mips16_call_stub_9): Macro-ified.
4741         (__mips16_call_stub_10): Macro-ified.
4742         (CALL_STUB_RET): New.
4743         (__mips16_call_stub_sf_0): Macro-ified.
4744         (__mips16_call_stub_sf_1): Macro-ified.
4745         (__mips16_call_stub_sf_5): Macro-ified.
4746         (__mips16_call_stub_sf_2): Macro-ified.
4747         (__mips16_call_stub_sf_6): Macro-ified.
4748         (__mips16_call_stub_sf_9): Macro-ified.
4749         (__mips16_call_stub_sf_10): Macro-ified.
4750         (__mips16_call_stub_df_0): Macro-ified.
4751         (__mips16_call_stub_df_1): Macro-ified.
4752         (__mips16_call_stub_df_5): Macro-ified.
4753         (__mips16_call_stub_df_2): Macro-ified.
4754         (__mips16_call_stub_df_6): Macro-ified.
4755         (__mips16_call_stub_df_9): Macro-ified.
4756         (__mips16_call_stub_df_10): Macro-ified.
4757         (__mips16_call_stub_sc_0): New.
4758         (__mips16_call_stub_sc_1): New.
4759         (__mips16_call_stub_sc_5): New.
4760         (__mips16_call_stub_sc_2): New.
4761         (__mips16_call_stub_sc_6): New.
4762         (__mips16_call_stub_sc_9): New.
4763         (__mips16_call_stub_sc_10): New.
4764         (__mips16_call_stub_dc_0): New.
4765         (__mips16_call_stub_dc_1): New.
4766         (__mips16_call_stub_dc_5): New.
4767         (__mips16_call_stub_dc_2): New.
4768         (__mips16_call_stub_dc_6): New.
4769         (__mips16_call_stub_dc_9): New.
4770         (__mips16_call_stub_dc_10): New.
4771
4772         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
4773         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
4774         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
4775
4776 2007-05-23  Ian Lance Taylor  <iant@google.com>
4777
4778         * doc/invoke.texi (Invoking GCC): Document that the order of the
4779         -l option matters.
4780
4781 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
4782
4783         PR target/30987
4784         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
4785         * config/score/predicate.md (const_pow2, const_npow2): Remove.
4786         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
4787         undef.
4788
4789         PR target/30474
4790         * config/score/score.c (score_print_operand): Make sure that only
4791         lower bits are used.
4792
4793 2007-05-22  Ian Lance Taylor  <iant@google.com>
4794
4795         * tree-vrp.c (avoid_overflow_infinity): New static function,
4796         broken out of set_value_range_to_value.
4797         (set_value_range_to_value): Call avoid_overflow_infinity.
4798         (extract_range_from_assert): Likewise.
4799
4800 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4801
4802         PR middle-end/31095
4803          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
4804         change the type before looking for a COMPOUND_EXPR.
4805
4806 2007-05-22  Ian Lance Taylor  <iant@google.com>
4807
4808         * lower-subreg.c (decompose_multiword_subregs): If we change an
4809         insn, call remove_retval_note on it.
4810
4811 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4812
4813         * regs.h (end_hard_regno): New function.
4814         (END_HARD_REGNO, END_REGNO): New macros.
4815         (add_to_hard_reg_set): New function.
4816         (remove_from_hard_reg_set): Likewise.
4817         (in_hard_reg_set_p): Likewise.
4818         (overlaps_hard_reg_set_p): Likewise.
4819         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
4820         (note_btr_set): Use END_HARD_REGNO.
4821         * caller-save.c (setup_save_areas): Use end_hard_regno.
4822         (mark_set_regs): Use END_HARD_REGNO.
4823         (add_stored_regs): Use end_hard_regno.
4824         (mark_referenced_regs): Use add_to_hard_reg_set.
4825         * combine.c (update_table_tick): Use END_REGNO.
4826         (record_value_for_reg): Likewise.
4827         (record_dead_and_set_regs): Likewise.
4828         (get_last_value_validate): Likewise.
4829         (use_crosses_set_p): Likewise.
4830         (reg_dead_at_p_1): Likewise.
4831         (reg_dead_at_p): Likewise.
4832         (mark_used_regs_combine): Use add_to_hard_reg_set.
4833         (move_deaths): Use END_HARD_REGNO.
4834         (reg_bitfield_target_p): Use end_hard_regno.
4835         (distribute_notes): Use END_HARD_REGNO.
4836         * cse.c (mention_regs): Use END_REGNO.
4837         (insert): Use add_to_hard_reg_set.
4838         (invalidate): Use END_HARD_REGNO.
4839         (invalidate_for_call): Likewise.
4840         (exp_equiv_p): Use END_REGNO.
4841         (cse_insn): Likewise.
4842         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
4843         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
4844         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
4845         * function.c (keep_stack_depressed): Use end_hard_regno.
4846         * global.c (global_alloc): Use end_hard_regno.
4847         (global_conflicts): Use add_to_hard_reg_set instead of
4848         mark_reg_live_nc.
4849         (find_reg): Likewise.
4850         (mark_reg_store): Likewise.
4851         (mark_reg_conflicts): Likewise.
4852         (mark_reg_death): Use remove_from_hard_reg_set.
4853         (mark_reg_live_nc): Delete.
4854         (set_preference): Use end_hard_regno.
4855         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
4856         remove_from_hard_reg_set.
4857         (post_mark_life): Use add_to_hard_reg_set.
4858         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
4859         (reg_becomes_live): Use add_to_hard_reg_set.
4860         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
4861         (peep2_find_free_register): Use add_to_hard_reg_set.
4862         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
4863         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
4864         * regrename.c (note_sets): Use add_to_hard_reg_set.
4865         (clear_dead_regs): Use remove_from_hard_reg_set.
4866         (regrename_optimize): Use add_to_hard_reg_set.
4867         (find_oldest_value_reg): Use in_hard_reg_set_p.
4868         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
4869         (hard_reg_set_here_p): Use end_hard_regno.
4870         (decompose): Likewise.
4871         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
4872         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
4873         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
4874         (mark_home_live): Use end_hard_regno.
4875         (spill_hard_reg): Likewise.
4876         (clear_reload_reg_in_use): Likewise.
4877         * reorg.c (delete_prior_computation): Use END_REGNO.
4878         * resource.c (update_live_status): Use END_HARD_REGNO.
4879         (mark_referenced_resources): Use add_to_hard_reg_set.
4880         (mark_set_resources): Likewise.
4881         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
4882         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
4883         (reg_overlap_mentioned_p): Likewise.
4884         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
4885         (covers_regno_no_parallel_p): Use END_REGNO.
4886         (find_regno_note): Likewise.
4887         (find_reg_fusage): Use END_HARD_REGNO.
4888         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
4889         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
4890
4891 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4892
4893         * mode-switching.c (reg_dies): Change type of second argument to
4894         "HARD_REG_SET *".
4895         (optimize_mode_switching): Update accordingly.
4896
4897 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
4898
4899         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
4900         in favor of...
4901         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
4902         (hard_reg_set_empty_p): ...these new functions.
4903         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
4904         GO_IF_HARD_REG_SUBSET.
4905         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
4906         instead of GO_IF_HARD_REG_EQUAL.
4907         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
4908         instead of GO_IF_HARD_REG_EQUAL.
4909         * global.c (find_reg): Use hard_reg_set_empty_p instead of
4910         GO_IF_HARD_REG_SUBSET.
4911         (modify_reg_pav): Use hard_reg_set_empty_p instead of
4912         GO_IF_HARD_REG_EQUAL.
4913         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
4914         of GO_IF_HARD_REG_SUBSET.
4915         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
4916         instead of GO_IF_HARD_REG_EQUAL.
4917         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
4918         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
4919         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
4920         of GO_IF_HARD_REG_SUBSET,
4921         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
4922         GO_IF_HARD_REG_SUBSET.
4923         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
4924         instead of GO_IF_HARD_REG_EQUAL.
4925         * config/sh/sh.c (push_regs, calc_live_regs): Use
4926         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
4927         (hard_regs_intersect_p): Delete.
4928
4929 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
4930
4931         * doc/sourcebuild.texi (Test Directives) Add dg-message.
4932
4933 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
4934             Richard Henderson  <rth@redhat.com>
4935
4936         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
4937         extra_headers.
4938         (x86_64-*-*): Likewise.
4939
4940         * i386/i386-modes.def (V2QI): New.
4941
4942         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
4943         SSE4A.
4944         (override_options): Support SSE4.1.
4945         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
4946         (IX86_BUILTIN_BLENDPS): Likewise.
4947         (IX86_BUILTIN_BLENDVPD): Likewise.
4948         (IX86_BUILTIN_BLENDVPS): Likewise.
4949         (IX86_BUILTIN_PBLENDVB128): Likewise.
4950         (IX86_BUILTIN_PBLENDW128): Likewise.
4951         (IX86_BUILTIN_DPPD): Likewise.
4952         (IX86_BUILTIN_DPPS): Likewise.
4953         (IX86_BUILTIN_INSERTPS128): Likewise.
4954         (IX86_BUILTIN_MOVNTDQA): Likewise.
4955         (IX86_BUILTIN_MPSADBW128): Likewise.
4956         (IX86_BUILTIN_PACKUSDW128): Likewise.
4957         (IX86_BUILTIN_PCMPEQQ): Likewise.
4958         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
4959         (IX86_BUILTIN_PMAXSB128): Likewise.
4960         (IX86_BUILTIN_PMAXSD128): Likewise.
4961         (IX86_BUILTIN_PMAXUD128): Likewise.
4962         (IX86_BUILTIN_PMAXUW128): Likewise.
4963         (IX86_BUILTIN_PMINSB128): Likewise.
4964         (IX86_BUILTIN_PMINSD128): Likewise.
4965         (IX86_BUILTIN_PMINUD128): Likewise.
4966         (IX86_BUILTIN_PMINUW128): Likewise.
4967         (IX86_BUILTIN_PMOVSXBW128): Likewise.
4968         (IX86_BUILTIN_PMOVSXBD128): Likewise.
4969         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
4970         (IX86_BUILTIN_PMOVSXWD128): Likewise.
4971         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
4972         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
4973         (IX86_BUILTIN_PMOVZXBW128): Likewise.
4974         (IX86_BUILTIN_PMOVZXBD128): Likewise.
4975         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
4976         (IX86_BUILTIN_PMOVZXWD128): Likewise.
4977         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
4978         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
4979         (IX86_BUILTIN_PMULDQ128): Likewise.
4980         (IX86_BUILTIN_PMULLD128): Likewise.
4981         (IX86_BUILTIN_ROUNDPD): Likewise.
4982         (IX86_BUILTIN_ROUNDPS): Likewise.
4983         (IX86_BUILTIN_ROUNDSD): Likewise.
4984         (IX86_BUILTIN_ROUNDSS): Likewise.
4985         (IX86_BUILTIN_PTESTZ): Likewise.
4986         (IX86_BUILTIN_PTESTC): Likewise.
4987         (IX86_BUILTIN_PTESTNZC): Likewise.
4988         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
4989         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
4990         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
4991         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
4992         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
4993         (bdesc_ptest): New.
4994         (bdesc_sse_3arg): Likewise.
4995         (bdesc_2arg): Likewise.
4996         (bdesc_1arg): Likewise.
4997         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
4998         with 3 args.
4999         (ix86_expand_sse_4_operands_builtin): New.
5000         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
5001         smaller than 8 bits as the 2nd arg.
5002         (ix86_expand_sse_ptest): New.
5003         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
5004         (ix86_expand_vector_set): Support SSE4.1.
5005         (ix86_expand_vector_extract): Likewise.
5006
5007         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
5008         __SSE4_1__ for -msse4.1.
5009
5010         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
5011         (UNSPEC_INSERTPS): Likewise.
5012         (UNSPEC_DP): Likewise.
5013         (UNSPEC_MOVNTDQA): Likewise.
5014         (UNSPEC_MPSADBW): Likewise.
5015         (UNSPEC_PHMINPOSUW): Likewise.
5016         (UNSPEC_PTEST): Likewise.
5017         (UNSPEC_ROUNDP): Likewise.
5018         (UNSPEC_ROUNDS): Likewise.
5019
5020         * config/i386/i386.opt (msse4.1): New for SSE4.1.
5021
5022         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
5023         (const_pow2_1_to_32768_operand): Likewise.
5024
5025         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
5026         file.
5027
5028         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
5029         SSE4.1.
5030         (sse4_1_insertps): Likewise.
5031         (*sse4_1_extractps): Likewise.
5032         (sse4_1_ptest): Likewise.
5033         (sse4_1_mulv2siv2di3): Likewise.
5034         (*sse4_1_mulv4si3): Likewise.
5035         (*sse4_1_smax<mode>3): Likewise.
5036         (*sse4_1_umax<mode>3): Likewise.
5037         (*sse4_1_smin<mode>3): Likewise.
5038         (*sse4_1_umin<mode>3): Likewise.
5039         (sse4_1_eqv2di3): Likewise.
5040         (*sse4_1_pinsrb): Likewise.
5041         (*sse4_1_pinsrd): Likewise.
5042         (*sse4_1_pinsrq): Likewise.
5043         (*sse4_1_pextrb): Likewise.
5044         (*sse4_1_pextrb_memory): Likewise.
5045         (*sse4_1_pextrw_memory): Likewise.
5046         (*sse4_1_pextrq): Likewise.
5047         (sse4_1_blendpd): Likewise.
5048         (sse4_1_blendps): Likewise.
5049         (sse4_1_blendvpd): Likewise.
5050         (sse4_1_blendvps): Likewise.
5051         (sse4_1_dppd): Likewise.
5052         (sse4_1_dpps): Likewise.
5053         (sse4_1_movntdqa): Likewise.
5054         (sse4_1_mpsadbw): Likewise.
5055         (sse4_1_packusdw): Likewise.
5056         (sse4_1_pblendvb): Likewise.
5057         (sse4_1_pblendw): Likewise.
5058         (sse4_1_phminposuw): Likewise.
5059         (sse4_1_extendv8qiv8hi2): Likewise.
5060         (*sse4_1_extendv8qiv8hi2): Likewise.
5061         (sse4_1_extendv4qiv4si2): Likewise.
5062         (*sse4_1_extendv4qiv4si2): Likewise.
5063         (sse4_1_extendv2qiv2di2): Likewise.
5064         (*sse4_1_extendv2qiv2di2): Likewise.
5065         (sse4_1_extendv4hiv4si2): Likewise.
5066         (*sse4_1_extendv4hiv4si2): Likewise.
5067         (sse4_1_extendv2hiv2di2): Likewise.
5068         (*sse4_1_extendv2hiv2di2): Likewise.
5069         (sse4_1_extendv2siv2di2): Likewise.
5070         (*sse4_1_extendv2siv2di2): Likewise.
5071         (sse4_1_zero_extendv8qiv8hi2): Likewise.
5072         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
5073         (sse4_1_zero_extendv4qiv4si2): Likewise.
5074         (*sse4_1_zero_extendv4qiv4si2): Likewise.
5075         (sse4_1_zero_extendv2qiv2di2): Likewise.
5076         (*sse4_1_zero_extendv2qiv2di2): Likewise.
5077         (sse4_1_zero_extendv4hiv4si2): Likewise.
5078         (*sse4_1_zero_extendv4hiv4si2): Likewise.
5079         (sse4_1_zero_extendv2hiv2di2): Likewise.
5080         (*sse4_1_zero_extendv2hiv2di2): Likewise.
5081         (sse4_1_zero_extendv2siv2di2): Likewise.
5082         (*sse4_1_zero_extendv2siv2di2): Likewise.
5083         (sse4_1_roundpd): Likewise.
5084         (sse4_1_roundps): Likewise.
5085         (sse4_1_roundsd): Likewise.
5086         (sse4_1_roundss): Likewise.
5087         (mulv4si3): Don't expand for SSE4.1.
5088         (smax<mode>3): Likewise.
5089         (umaxv4si3): Likewise.
5090         (uminv16qi3): Likewise.
5091         (umin<mode>3): Likewise.
5092         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
5093
5094         * doc/extend.texi: Document SSE4.1 built-in functions.
5095
5096         * doc/invoke.texi: Document -msse4.1.
5097
5098 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
5099
5100         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
5101         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
5102         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
5103         (ASM_SPEC): Add asm_pcrel_spec.
5104         (EXTRA_SPECS): Add asm_pcrel_spec.
5105
5106 2007-05-21  David Daney  <ddaney@avtrex.com>
5107
5108         * doc/install.texi (Building a cross compiler): Add requirements
5109         for Java cross compiler.
5110
5111 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5112
5113         PR middle-end/31995
5114         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
5115         Add loopno argument.  Use evolution_function_is_invariant_rec_p
5116         instead of evolution_function_is_constant_p.
5117         Update calls to evolution_function_is_affine_multivariate_p.
5118         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
5119         Add loopno argument.
5120         * tree-scalar-evolution.c (gather_chrec_stats): Call
5121         evolution_function_is_affine_multivariate_p with a loop
5122         number of 0.
5123         * tree-data-ref.c (analyze_miv_subscript): Likewise.
5124         (analyze_overlapping_iterations): Likewise.
5125         (access_functions_are_affine_or_constant_p): Likewise.
5126         (build_classic_dist_vector_1): If the access functions
5127         are equal, don't do anything.
5128
5129 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
5130             Paolo Carlini  <pcarlini@suse.de>
5131             Uros Bizjak  <ubizjak@gmail.com>
5132
5133         * c-cppbuiltin.c (c_cpp_builtins): Define
5134         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
5135         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
5136         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
5137         * doc/cpp.texi ([Standard Predefined Macros]): Document.
5138
5139 2007-05-21  Mike Stump  <mrs@apple.com>
5140
5141         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
5142         handling as well.
5143         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
5144
5145 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
5146
5147         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
5148         implementation if __OPTIMIZE__ is not defined.
5149         (_mm_alignr_pi8): Ditto.
5150         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5151         (_mm_inserti_si64): Ditto.
5152         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5153         (_mm_slli_epi16): Ditto.
5154         (_mm_slli_epi32): Ditto.
5155         (_mm_slli_epi64): Ditto.
5156         (_mm_srai_epi16): Ditto.
5157         (_mm_srai_epi32): Ditto.
5158         (_mm_srli_si128): Ditto.
5159         (_mm_slli_si128): Ditto.
5160         (_mm_srli_epi16): Ditto.
5161         (_mm_srli_epi32): Ditto.
5162         (_mm_srli_epi64): Ditto.
5163         (_mm_extract_epi16): Ditto.
5164         (_mm_insert_epi16): Ditto.
5165         (_mm_shufflehi_epi16): Ditto.
5166         (_mm_shufflelo_epi16): Ditto.
5167         (_mm_shuffle_epi32): Ditto.
5168         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
5169         (_m_pextrw): Ditto.
5170         (_mm_insert_pi16): Ditto.
5171         (_m_pinsrw): Ditto.
5172         (_mm_shuffle_pi16): Ditto.
5173         (_m_pshufw): Ditto.
5174         (_mm_shufle_ps): Ditto.
5175         (_mm_prefetch): Ditto.
5176
5177 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
5178
5179         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
5180         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
5181         * real.c (encode_i370_single, decode_i370_single,
5182         encode_i370_double, decode_i370_double): Functions removed.
5183         (i370_single_format, i370_double_format): Initializations removed.
5184         (real_maxval, round_for_format, exact_real_truncate, significand_size):
5185         Consider the log2_b field to always be one.
5186         (ieee_single_format, mips_single_format, coldfire_single_format,
5187         ieee_double_format, mips_double_format, coldfire_double_format,
5188         ieee_extended_motorola_format, ieee_extended_intel_96_format,
5189         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
5190         ibm_extended_format, mips_extended_format, ieee_quad_format,
5191         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
5192         decimal_single_format, decimal_double_format, decimal_quad_format,
5193         c4x_single_format, c4x_extended_format, real_internal_format): Remove
5194         initialization of log2_b.
5195         * real.h (i370_single_format, i370_double_format): Declarations
5196         removed.
5197         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
5198         field to always be one.
5199
5200 2007-05-21  Andreas Schwab  <schwab@suse.de>
5201
5202         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
5203         NOTE_INSN_BASIC_BLOCK_P.
5204         (process_for_unwind_directive): Likewise.
5205
5206 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
5207
5208         * builtins.c (expand_builtin_setjmp_setup): Update comment.
5209         * function.h (struct function): Move va_list_gpr_size,
5210         va_list_fpr_size, function_frequency to front of bitfields.  Add
5211         calls_unwind_init.
5212         (current_function_calls_unwind_init): New.
5213         * except.c (expand_builtin_unwind_init): Set
5214         current_function_calls_unwind_init not
5215         current_function_has_nonlocal_label.
5216         * reload1.c (has_nonexceptional_receiver): New.
5217         (reload): Use it and current_function_calls_unwind_init to
5218         determine whether call-saved regs must be saved.
5219
5220 2007-05-20  Jan Hubicka  <jh@suse.cz>
5221
5222         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
5223         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5224         * ddg.c (create_ddg): LIkewise.
5225         * final.c (final): Remove hunk moving line number notes around since
5226         they are no longer present at this stage.
5227         (final_scan_insn): Use NOTE_KIND instead of
5228         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5229         (output_asm_label): Likewise.
5230         * reorg.c (dbr_schedule): Likewise.
5231         * haifa-sched.c (unlink_other_notes): Likewise.
5232         * mode-switching.c (optimize_mode_switching): Likewise.
5233         * graph.c (start_bb): Likewise.
5234         * rtl.def (NOTE): Update description.
5235         * jump.c (squeeze_notes): Delete.
5236         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
5237         NOTE_INSN_BASIC_BLOCK_P when possible.
5238         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
5239         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
5240         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5241         (dwarf2out_var_location): Likewise.
5242         * cfgbuild.c (make_edges): Likewise.
5243         (find_basic_blocks_1): Likewise.
5244         * function.c (reorder_blocks_1): Likewise.
5245         (epilogue_done): Likewise.
5246         (reposition_prologue_and_epilogue_notes): Likewise.
5247         * print-rtl.c (print_rtx): Likewise; drop code for printing
5248         line number notes.
5249         (print_rtl): Likewise.
5250         (print_rtl_single): Likewise.
5251         * gcse.c (insert_insn_start_bb): Likewise.
5252         * alias.c (init_alias_analysis): Likewise.
5253         * calls.c (fixup_tail_calls): Likewise.
5254         * except.c (sjlj_emit_function_enter): Likewise.
5255         * emit-rtl.c (add_insn_after): Likeiwse.
5256         (emit_label_before): Likewise.
5257         (emit_label_after): Likewise.
5258         (emit_note_before, emit_note_after, emit_note): Update
5259         parameter to be enum insn_note; do not deal with source
5260         files.
5261         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
5262         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
5263         when possible.
5264         (merge_blocks_move_successor_nojumps): Simplify now when
5265         we don't have BLOCK notes.
5266         (try_optimize_cfg): Likewise.
5267         * cfglayout.c (skip_insns_after_block): Likewise.
5268         (record_effective_endpoints): Likewise.
5269         (duplicate_insn_chain): Likewise.
5270         * varasm.c (output_constant_pool_1): Likewise.
5271         * sched-deps.c (sched_analyze): Likewise.
5272         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
5273         Exterminate.
5274         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
5275         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
5276         (SET_INSN_DELETED): Simplify.
5277         (NOTE_LINE_NUMBER): Exterminate.
5278         (NOTE_LINE_KIND): New.
5279         (NOTE_INSN_BASIC_BLOCK_P): Update.
5280         (enum insn_note): Simplify.
5281         (GET_NOTE_INSN_NAME) Simplify.
5282         (emit_note_before, emit_note_after, emit_note): Update prototype.
5283         (squeeze_notes): Remove.
5284         * sched-int.h (NOTE_NOT_BB_P): Update.
5285         * resource.c (mark_target_live_regs): Update.
5286         * sched-rgn.c (debug_dependencies): Update.
5287         * sched-vis.c (print_insn): Update.
5288         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
5289         * config/i386/i386.c (ix86_output_function_epilogue): Update.
5290         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
5291         (TARGET_ADJUST_UNROLL_MAX): Likewise.
5292         (split_branches): Update.
5293         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
5294         4.0.0.
5295         (sh_adjust_unroll_max): Exterminate.
5296         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
5297         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
5298         (m68hc11_reorg): Likewise.
5299         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
5300         (emit_predicate_relation_info): Update.
5301         (process_for_unwind_directive): Update.
5302         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
5303         (output_call): Update.
5304         * config/pa/pa.c (output_lbranch): Update.
5305         (output_millicode_call): Update.
5306         (output_call): Update.
5307         (pa_combine_instructions): Update.
5308         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
5309         * config/bfin/bfin.c (gen_one_bundle): Update.
5310         * cfgrtl.c (can_delete_note_p): Update.
5311         (delete_insn): Update.
5312         (rtl_merge_blocks): Update.
5313         (commit_one_edge_insertion): Update.
5314         (rtl_verify_flow_info): Update.
5315         * stmt.c (expand_case): Do not call squeeze_notes.
5316
5317 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5318
5319         PR middle-end/7651
5320         PR c++/11856
5321         PR c/12963
5322         PR c/23587
5323         PR other/29694
5324         * c.opt (Wtype-limits): New.
5325         * doc/invoke.texi (Wtype-limits): Document it.
5326         (Wextra): Enabled by -Wextra.
5327         * c-opts.c (c_common_post_options): Enabled by -Wextra.
5328         * c-common.c (shorten_compare): Warn with Wtype-limits.
5329
5330 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
5331
5332         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
5333         inlined function, not as a macro.
5334         (_mm_alignr_pi8): Ditto.
5335         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5336         (_mm_inserti_si64): Ditto.
5337         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5338         (_mm_extract_epi16): Ditto.
5339         (_mm_insert_epi16): Ditto.
5340         (_mm_shufflehi_epi16): Ditto.
5341         (_mm_shufflelo_epi16): Ditto.
5342         (_mm_shuffle_epi32): Ditto.
5343         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
5344         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
5345         all functions.
5346         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
5347         float constant.
5348         (_m_to_float): Use C89 compatible assignment.
5349
5350 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
5351
5352         PR target/32007
5353         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
5354
5355 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5356
5357         PR middle-end/7651
5358         * doc/invoke.texi (Wreturn-type): Complete description.
5359         (Wextra): Delete item about return-type warning.
5360         * c-decl.c: Delete redundant Wextra warning.
5361
5362 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
5363
5364         PR target/31585
5365         * config/i386/pmmintrin.h: Do not include xmmintrin.h
5366         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
5367         inlined function, not as a macro.
5368         (_mm_prefetch): Ditto.
5369         (_m_pextrw): Ditto.
5370         (_mm_insert_pi16): Ditto.
5371         (_m_pinsrw): Ditto.
5372         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
5373         (_m_pshufw): Ditto. Add const to __N argument.
5374         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
5375         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
5376         (_mm_slli_epi32): Ditto.
5377         (_mm_srli_si128): Implement as always inlined function, not as a
5378         macro.  Add __inline to function declaration.
5379         (_mm_slli_si128): Ditto.
5380
5381 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
5382
5383         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
5384         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
5385         New constants.
5386         (struct fenv): New structure.
5387         (FP_HANDLE_EXCEPTIONS): New define.
5388         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
5389         (_FP_DECL_EXP): New define.
5390         (FP_INIT_ROUNDMODE): New define.
5391         (FP_ROUNDMODE): New define.
5392
5393 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5394
5395         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
5396         (Wconversion): Update description.
5397         (Wconversion-sign): New.
5398         * c.opt (Wconversion-sign): New.
5399         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
5400         means disabled for C++. Otherwise, take the status of Wconversion.
5401         * c-common.c (conversion_warning): Warn with either Wconversion or
5402         Wconversion-sign.
5403         (warnings_for_convert_and_check): Conditions are already checked by
5404         conversion_warning.
5405         (convert_and_check): Don't check warnings if the conversion failed.
5406
5407 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
5408            Anatoly Sokolov <aesok@dol.ru>
5409
5410         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
5411         avr_epilogue_uses) : Add declaration.
5412         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
5413         * config/avr/constraints.md (R): New constraint.
5414         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
5415         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
5416         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
5417         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
5418         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
5419         call_prologue_saves, epilogue_restores, return_from_epilogue,
5420         return_from_main_epilogue, return_from_interrupt_epilogue,
5421         return_from_naked_epilogue, prologue, epilogue): New patterns.
5422         (jump): Handle symbol reference.
5423         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
5424         avr_output_function_prologue, avr_output_function_epilogue): Remove
5425         functions.
5426         (avr_init_machine_status, expand_prologue, expand_epilogue,
5427         avr_asm_function_end_prologue, avr_epilogue_uses,
5428         avr_asm_function_begin_epilogue): New functions.
5429         (prologue_size, epilogue_size, jump_tables_size): Remove global
5430         variables.
5431         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
5432         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
5433         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
5434         (avr_override_options): Initialise init_machine_status.
5435         (output_movhi): Handle all stack pointer loads.
5436         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
5437         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
5438         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
5439         (EPILOGUE_USES) Redefine.
5440         (machine_function) Declare.
5441
5442 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
5443
5444         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
5445         Use a single return statement.
5446
5447 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5448
5449         PR middle-end/30250
5450         * builtins.c (do_mpfr_lgamma_r): New.
5451         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
5452         * tree.h (CASE_FLT_FN_REENT): New.
5453
5454 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
5455
5456         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
5457         (output_die): Use 'unsigned long' with %x.
5458         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
5459         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
5460         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
5461
5462         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
5463
5464 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
5465
5466         PR target/31989
5467         PR target/31681
5468         PR target/31666
5469         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
5470         true if function has no argument.
5471
5472 2007-05-18  DJ Delorie  <dj@redhat.com>
5473
5474         * config/mips/mips.c (mips_offset_within_alignment_p): New.
5475         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
5476
5477 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
5478
5479         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
5480         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
5481         count_trailing_zeros.
5482         (__i386__): Implement count_leading_zeros using __builtin_clz().
5483         Implement count_trailing_zeros usign __builtin_ctz().
5484
5485 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
5486
5487         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
5488
5489 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
5490
5491         PR middle-end/31344
5492         * expr.c (emit_move_change_mode): Change mode of push operands here.
5493
5494 2007-05-17  Ian Lance Taylor  <iant@google.com>
5495
5496         PR tree-optimization/31953
5497         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
5498         Change all callers.
5499         (set_value_range_to_null): Call set_value_range_to_value.
5500         (extract_range_from_comparison): Likewise.
5501
5502 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5503
5504         * toplev.c (print_version): Output GMP/MPFR version info.
5505
5506         * builtins.c (CASE_MATHFN_REENT): New macro.
5507         (mathfn_built_in): Use it.
5508         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
5509         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
5510         BUILT_IN_LGAMMAL_R): New.
5511         * doc/extend.texi: Document new builtins.
5512
5513         PR middle-end/31796
5514         * builtins.c (do_mpfr_remquo): New.
5515         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
5516         (fold_builtin_3): Handle BUILT_IN_REMQUO.
5517
5518         PR middle-end/30251
5519         * builtins.c (fold_builtin_1): Handle y0, y1.
5520         (fold_builtin_2): Handle yn.
5521
5522         PR middle-end/30251
5523         * builtins.c (do_mpfr_bessel_n): New.
5524         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
5525         (fold_builtin_2): Handle BUILT_IN_JN.
5526
5527 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
5528
5529         PR target/31965
5530         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
5531         TYPE_PRECISION (intmax_type_node).
5532
5533 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
5534
5535         PR target/31850
5536         * reload.c (subst_reloads): Remove checking.
5537
5538 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
5539
5540         PR rtl-optimization/31691
5541         * combine.c (simplify_set): Build a new src pattern instead of
5542         substituting its operands in the COMPARE case.
5543
5544 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
5545
5546         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
5547         (execute_vrp): Preserve loops through jump threading.
5548         * tree-ssa-threadupdate.c (thread_single_edge,
5549         dbds_continue_enumeration_p, determine_bb_domination_status,
5550         thread_through_loop_header): New functions.
5551         (create_edge_and_update_destination_phis,
5552         create_edge_and_update_destination_phis): Set loops for the new blocks.
5553         (prune_undesirable_thread_requests): Removed.
5554         (redirect_edges): Do not pretend that redirect_edge_and_branch can
5555         create new blocks.
5556         (thread_block): Do not call prune_undesirable_thread_requests.
5557         Update loops.
5558         (mark_threaded_blocks): Select edges to thread here.
5559         (thread_through_all_blocks): Take may_peel_loop_headers argument.
5560         Thread edges through loop headers independently.
5561         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
5562         * tree-pass.h (TODO_mark_first_instance): New.
5563         (first_pass_instance): Declare.
5564         * cfghooks.c (duplicate_block): Put the block to the original loop
5565         if copy is not specified.
5566         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
5567         jump threading.  Pass may_peel_loop_headers to
5568         thread_through_all_blocks according to first_pass_instance.
5569         * cfgloop.h (create_preheader): Declare.
5570         * tree-flow.h (thread_through_all_blocks): Declaration changed.
5571         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
5572         * passes.c (first_pass_instance): New variable.
5573         (next_pass_1): Set TODO_mark_first_instance.
5574         (execute_todo): Set first_pass_instance.
5575
5576 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
5577
5578         PR tree-optimization/24659
5579         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
5580         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
5581         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
5582         OTI_vec_pack_ufix_trunc.
5583         (vec_unpacks_float_hi_optab): Define new macro.
5584         (vec_unpacks_float_lo_optab): Ditto.
5585         (vec_unpacku_float_hi_optab): Ditto.
5586         (vec_unpacku_float_lo_optab): Ditto.
5587         (vec_pack_sfix_trunc_optab): Ditto.
5588         (vec_pack_ufix_trunc_optab): Ditto.
5589         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
5590         and vec_pack_[s|u]fix_trunc_optab using
5591         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
5592         * tree-vectorizer.c (supportable_widening_operation): Handle
5593         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
5594         (supportable_narrowing_operation): New function.
5595         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
5596         * tree-vect-transform.c (vectorizable_conversion): Handle
5597         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
5598         (vect_gen_widened_results_half): Move before vectorizable_conversion.
5599         (vectorizable_type_demotion): Call supportable_narrowing_operation()
5600         to check for target support.
5601         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
5602         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
5603         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
5604         for VEC_PACK_FIX_TRUNC_EXPR.
5605         (expand_binop): Special case mode of the result for
5606         vec_pack_[u|s]fix_trunc_optab.
5607         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
5608         vec_pack_[u|s]fix_trunc_optab.
5609
5610         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
5611         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
5612         * tree-pretty-print.c (dump_generic_node): Handle
5613         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
5614         VEC_PACK_FIX_TRUNC_EXPR.
5615         (op_prio): Ditto.
5616         * expr.c (expand_expr_real_1): Ditto.
5617         * tree-inline.c (estimate_num_insns_1): Ditto.
5618         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
5619
5620         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
5621         (vec_unpacks_float_lo_v8hi): Ditto.
5622         (vec_unpacku_float_hi_v8hi): Ditto.
5623         (vec_unpacku_float_lo_v8hi): Ditto.
5624         (vec_unpacks_float_hi_v4si): Ditto.
5625         (vec_unpacks_float_lo_v4si): Ditto.
5626         (vec_pack_sfix_trunc_v2df): Ditto.
5627
5628         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
5629         Document.
5630         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
5631         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
5632         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
5633         [vec_pack_ufix_trunc]: Ditto.
5634         [vec_unpacks_float_hi]: Ditto.
5635         [vec_unpacks_float_lo]: Ditto.
5636         [vec_unpacku_float_hi]: Ditto.
5637         [vec_unpacku_float_lo]: Ditto.
5638
5639 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
5640
5641         * soft-fp/README: Update for new files.
5642         * soft-fp/floattisf.c: New file.
5643         * soft-fp/floattidf.c: New file.
5644         * soft-fp/floattitf.c: New file.
5645         * soft-fp/floatuntisf.c: New file.
5646         * soft-fp/floatuntidf.c: New file.
5647         * soft-fp/floatuntitf.c: New file.
5648         * soft-fp/fixsfti.c: New file.
5649         * soft-fp/fixdfti.c: New file.
5650         * soft-fp/fixtfti.c: New file.
5651         * soft-fp/fixunssfti.c: New file.
5652         * soft-fp/fixunsdfti.c: New file.
5653         * soft-fp/fixunstfti.c: New file.
5654         * soft-fp/extendxftf.c: New file.
5655         * soft-fp/trunctfxf.c: New file.
5656
5657         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
5658         (__trunctfxf2): Ditto.
5659
5660         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
5661         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
5662         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
5663         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
5664         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
5665         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
5666
5667         * config/i386/t-fprules-softfp64: New file.
5668         * config/i386/sfp-machine.h: New file.
5669         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
5670         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
5671         and soft-fp/t-softfp to tmake_file.
5672         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
5673         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
5674
5675         * config/i386/t-linux64 (softfp_wrap_start): New.
5676         (softfp_wrap_end): New.
5677         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
5678         supported for TARGET_64BIT.
5679
5680 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
5681
5682         * c-common.c (c_common_signed_or_unsigned_type): Emulate
5683         c_common_unsigned_type behavior.
5684
5685 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
5686
5687         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
5688         calls as pure.
5689
5690 2007-05-16  Eric Christopher  <echristo@apple.com>
5691
5692         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
5693         saving after stack push. Set sp_offset whenever we push.
5694         (rs6000_emit_epilogue): Move altivec register restore before
5695         stack push.
5696
5697 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
5698
5699         * configure.ac: Allow sysroots to be relocated under $prefix as
5700         well as $exec_prefix.
5701         * configure: Regenerate.
5702
5703 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
5704
5705         Revert:
5706
5707         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
5708
5709         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
5710         (gcc_tooldir): Likewise.
5711         * configure: Regenerate.
5712         * Makefile.in (libsubdir_to_prefix): New variable, based on the
5713         old configure.ac gcc_tooldir setting.
5714         (prefix_to_exec_prefix): New variable.
5715         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
5716         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
5717
5718 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
5719
5720         * c-typeck.c (build_binary_op): Return early for error.
5721
5722 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
5723
5724         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
5725         struct nb_iter_bound.
5726         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
5727         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
5728         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
5729         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
5730         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
5731         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
5732         (del_scev_info): Use ggc_free.
5733         (scev_initialize): Allocate scalar_evolution_info in gc memory.
5734         * loop-init.c: Include ggc.h.
5735         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
5736         (loop_optimizer_finalize): Use ggc_free.
5737         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
5738         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
5739         pass_iv_optimize): Add TODO_ggc_collect.
5740         * function.h (struct function): Remove skip marker from
5741         x_current_loops.
5742         * cfgloop.c: Include ggc.h.
5743         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
5744         memory.
5745         (establish_preds): Vector superloops is gc allocated.
5746         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
5747         loop->exits list.
5748         (flow_loops_find): Vector larray is gc allocated.
5749         (loop_exit_free): Use ggc_free.
5750         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
5751         that head of exits list is now not a part of struct loop.
5752         (record_loop_exits): Allocate exits table in gc memory.
5753         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
5754         that head of exits list is now not a part of struct loop.
5755         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
5756         struct loop_exit): Add GTY marker.
5757         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
5758         Add skip marker to aux field.  Make head of exits list a separate
5759         object.
5760         (struct loops): Add GTY marker.  Make larray vector gc allocated.
5761         Add param marker to exits table.
5762         (get_loops): Type changed.
5763         * Makefile.in (tree-scalar-evolution.o): Add
5764         gt-tree-scalar-evolution.h dependency.
5765         (cfgloop.o, loop-init.o): Add ggc.h dependency.
5766         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
5767         * basic-block.h (struct basic_block_def): Remove skip marker from
5768         loop_father field.
5769
5770 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
5771
5772         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
5773         of 0 in the call to expand_expr().
5774         (expand_builtin_mathfn_3): Ditto.
5775         (expand_builtin_interclass_mathfn): Ditto.
5776         (expand_builtin_cexpi): Ditto.
5777         (expand_builtin_int_roundingfn): Ditto.
5778         (expand_builtin_int_roundingfn_2): Ditto.
5779         (expand_builtin_pow): Ditto.
5780         (expand_builtin_powi): Ditto.
5781         (expand_builtin_bswap): Ditto.
5782         (expand_builtin_unop): Ditto.
5783         (expand_builtin_fabs): Ditto.
5784         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
5785         the call to expand_expr().
5786         (expand_builtin_sync_operation): Ditto.
5787         (expand_builtin_compare_and_swap): Ditto.
5788         (expand_builtin_lock_test_and_set): Ditto.
5789         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
5790         instead of 0 in the call to expand_expr().
5791         (expand_builtin_extract_return_addr): Ditto.
5792         (expand_builtin_eh_return): Ditto.
5793         (expand_eh_return): Ditto.
5794         * explow.c (expr_size): Ditto.
5795         * expr.c (optimize_bitfield_assignment_op): Ditto.
5796         (expand_assignement): Ditto.
5797         (store_expr): Ditto.
5798         (store_field): Ditto.
5799         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
5800         the call to expand_expr().
5801         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
5802         in the call to expand_expr().
5803         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
5804         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
5805         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
5806         of expand_expr().
5807         * optabs.c (expand_vec_shift_expr): Ditto.
5808         (expand_vec_cond_expr): Ditto.
5809         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
5810         call to expand_expr().
5811         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
5812         in the call to expand_expr().
5813
5814 2007-05-14  Dave Korn  <dave.korn@artimi.com>
5815
5816         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
5817
5818 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
5819
5820         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
5821         instead of c_common_unsigned_type.
5822         (c_common_unsigned_type): Remove.
5823         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
5824         c_common_unsigned_type.
5825         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
5826         c_common_unsigned_type.
5827         * c-common.h (c_common_unsigned_type): Remove.
5828         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
5829         c_common_unsigned_type.
5830         * c-format.c (check_format_types): Use unsigned_type_for instead of
5831         c_common_unsigned_type.
5832         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
5833         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
5834         of c_common_unsigned_type.
5835         * convert.c (convert_to_integer): Use unsigned_type_for instead of
5836         lang_hooks.types.unsigned_type.
5837         * expmed.c (make_tree): Use unsigned_type_for instead of
5838         lang_hooks.types.unsigned_type.
5839         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
5840         lang_hooks.types.unsigned_type.
5841         (build_range_check): Likewise.
5842         (fold_unary): Likewise.
5843         (fold_binary): Likewise.
5844         (fold_ternary): Likewise.
5845         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
5846         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
5847         * tree.c (get_unsigned_type): New.
5848         (unsigned_type_for): Use get_unsigned_type instead of
5849         lang_hooks.types.unsigned_type.
5850
5851 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
5852
5853         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
5854         to m68k_get_function_kind.  Update its prototype.
5855         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
5856         interrupt_thread.
5857         (m68k_interrupt_function_p): Return enum m68k_function_type
5858         instead of bool.  Rename to m68k_get_function_kind.
5859         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
5860         target is not fido.
5861         (m68k_compute_frame_layout): Don't mark any register for save
5862         if an interrupt_thread attribute is specified.
5863         (m68k_hard_regno_rename_ok): Update a use of
5864         m68k_interrupt_function_p.
5865         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
5866         m68k_interrupt_function_p.
5867         (m68k_function_type): New.
5868         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
5869         for a function with an interrupt_thread attribute.
5870         * doc/extend.texi: Document the interrupt_thread attribute.
5871
5872 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
5873
5874         Fix PR tree-optimization/31911
5875         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
5876         if they didn't change the expression.
5877
5878 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
5879
5880         * tree-scalar-evolution.c (resolve_mixers): Exported.
5881         * tree-scalar-evolution.h (resolve_mixers): Declare.
5882         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
5883         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
5884         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
5885         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
5886         init_array_ref, init_pointer_ref, analyze_indirect_ref,
5887         strip_conversion, analyze_offset_expr, address_analysis,
5888         object_analysis, analyze_offset): Removed.
5889         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
5890         split_constant_offset, canonicalize_base_object_address,
5891         object_address_invariant_in_loop_p, disjoint_objects_p,
5892         dr_may_alias_p, dr_address_invariant_p): New functions.
5893         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
5894         and dr_analyze_alias.
5895         (initialize_data_dependence_relation): Use dr_may_alias_p
5896         and object_address_invariant_in_loop_p.
5897         (compute_self_dependence): Handle the case when
5898         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
5899         (find_data_references_in_stmt): Restrict the analysis of data
5900         references to the given loop nest.
5901         (find_data_references_in_loop): Made static.  Pass loop nest to
5902         find_data_references_in_stmt.
5903         (compute_data_dependences_for_loop): Use DR_VOPS.
5904         (free_data_ref): Free DR_VOPS.
5905         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
5906         (struct innermost_loop_behavior): ... new.
5907         (struct base_object_info): Replaced by ...
5908         (struct indices): ... new.
5909         (struct dr_alias): New.
5910         (enum data_ref_type): Removed.
5911         (struct data_reference): Consist of struct innermost_loop_behavior,
5912         struct indices and struct dr_alias.
5913         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
5914         (DR_MEMTAG): Renamed to ...
5915         (DR_SYMBOL_TAG): ... this.
5916         (find_data_references_in_loop): Declaration removed.
5917         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
5918         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
5919         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
5920         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
5921
5922 2007-05-13  Revital Eres  <eres@il.ibm.com>
5923
5924         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
5925         which walks virtual def-use chains to find redundant stores.
5926         (dse_optimize_stmt): Call it.
5927
5928 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
5929
5930         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
5931         * passes.c (init_optimization_passes): Move pass_jump_bypass
5932         after loop2.
5933
5934         * basic-block.h (bb_has_eh_pred): Fix style issue.
5935
5936 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
5937
5938         PR rtl-optimization/31848
5939         * loop-invariant.c (move_invariant_reg): If we move an insn
5940         with a REG_EQUAL note, and that insn is not always executed,
5941         remove the REG_EQUAL note.
5942
5943 2007-05-12  Richard Guenther  <rguenther@suse.de>
5944
5945         PR tree-optimization/31797
5946         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
5947         propagate into a stmt that has volatile ops.
5948
5949 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
5950
5951         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
5952         (gcc_tooldir): Likewise.
5953         * configure: Regenerate.
5954         * Makefile.in (libsubdir_to_prefix): New variable, based on the
5955         old configure.ac gcc_tooldir setting.
5956         (prefix_to_exec_prefix): New variable.
5957         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
5958         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
5959
5960 2007-05-11  Silvius Rus  <rus@google.com>
5961
5962         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
5963         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
5964         * c-common.h (strict_aliasing_warning): Change return type.
5965         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
5966         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
5967         (build_c_cast): Condition call to strict_aliasing_warning.
5968         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
5969         * flags.h (set_Wstrict_aliasing): Declare.
5970         * opts.c (set_Wstrict_alising): Define, add call to.
5971         * tree-flow.h (strict_aliasing_warning_backend): Declare.
5972         * tree-ssa-alias-warnings.c: New file.
5973         * tree-ssa-alias.c (compute_may_aliases): Add call to
5974         strict_aliasing_warning_backend.
5975
5976 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
5977
5978         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
5979         Use loop_depth and loop_outer accessor functions.
5980         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
5981         determine_invariantness_stmt, move_computations_stmt): Ditto.
5982         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
5983         add_loop, loopify, unloop, fix_loop_structure): Ditto.
5984         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
5985         * tree-scalar-evolution.c (interpret_loop_phi,
5986         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
5987         instantiate_parameters_1, scev_const_prop): Ditto.
5988         * cfghooks.c (make_forwarder_block): Ditto.
5989         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
5990         * modulo-sched.c (loop_canon_p): Ditto.
5991         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
5992         slpeel_can_duplicate_loop_p): Ditto.
5993         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
5994         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
5995         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
5996         cancel_loop, verify_loop_structure): Ditto.
5997         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
5998         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
5999         superloops vector instead of "pred" array.
6000         (establish_preds): Take father loop as an argument.  Initialize the
6001         superloops vector.
6002         (flow_loop_tree_node_add): Pass father loop to establish_preds.
6003         Do not initialize loop->outer.
6004         (flow_loop_tree_node_remove): Truncate the superloops vector.
6005         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
6006         "pred" merged to "superloops" vector.
6007         (loop_depth, loop_outer): New.
6008         (fel_init): Use loop_outer.
6009
6010 2007-05-11  Jan Hubicka  <jh@suse.cz>
6011
6012         * cgraphunit.c: Include gt-cgraphunit.h
6013         (static_ctors, static_dtors): New static vars.
6014         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
6015         based on implementation in c-common.c
6016         (cgraph_finalize_function): Call record_cdtor_fn.
6017         (cgraph_optimize): Call cgraph_build_cdtor_fns.
6018         * decl.c (finish_function): Do not call c_record_cdtor_fn.
6019         (c_write_global_declarations): Do not call c_build_cdtor_fns.
6020         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
6021         build_cdtor, c_build_cdtor_fns): Remove.
6022         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
6023         c_build_cdtor_fns): Remove prototype.
6024
6025 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
6026
6027         PR other/31852
6028         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
6029         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
6030         * builtins.c (fold_builtin_memchr): New.
6031         (expand_builtin_memchr): Call the latter.
6032         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
6033         * doc/extend.texi ([Other built-in functions provided by GCC]):
6034         Document memchr.
6035
6036 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
6037
6038         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
6039         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
6040         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
6041         PFPO_OP1_TYPE_SHIFT): Constants added.
6042         (DFP_ALL): Mode macro defined.
6043         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
6044         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
6045         Insn definitions added.
6046         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
6047         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
6048         Expanders added.
6049
6050 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
6051
6052         PR tree-optimization/31885
6053         * tree-chrec.c (chrec_contains_undetermined): Do not consider
6054         NULL_TREE to be undetermined.
6055         (automatically_generated_chrec_p): Return false for NULL.
6056
6057 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
6058
6059         * config/bfin/bfin.h (MOVE_RATIO): Define.
6060
6061 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
6062
6063         * config.gcc (sparc-wrs-vxworks): New target.
6064         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
6065         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
6066         * config/sparc/sparc.h: Include vxworks-dummy.h.
6067         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
6068         include LABEL_REFs too.
6069         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
6070         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
6071         VxWorks.
6072         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
6073         on VxWorks.
6074         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
6075         (sparc_emit_call_insn): New function.
6076         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
6077         functions when generating VxWorks PIC.
6078         * config/sparc/sparc.md (vxworks_load_got): New pattern.
6079         (call, call_value): Use sparc_emit_call_insn instead of
6080         emit_call_insn.
6081
6082 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
6083
6084         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
6085
6086 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
6087
6088         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
6089         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
6090         split_double instead of operand_subword.
6091
6092 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
6093
6094         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
6095         * config/bfin/bfin.c (bfin_local_alignment): New function.
6096         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
6097
6098 2007-05-08  Chao-ying Fu  <fu@mips.com>
6099
6100         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
6101         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
6102         (smsub_widen_optab, umsub_widen_optab): Define.
6103         * optabs.c (init_optabs): Initialize smsub_widen_optab and
6104         umsub_widen_optab.
6105         * genopinit.c (optabs): Fill in smsub_widen_optab and
6106         umsub_widen_optab.
6107         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
6108         and umsub_widen_optab to implement multiply-subtract sequences.
6109         * config/mips/mips.md (*msac<u>_di): Rename to...
6110         (<u>msubsidi4): ...this.  Extend condition to include
6111         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
6112         of operand 0 to "ka" and use the three-operand form of msub<u>
6113         for TARGET_DSPR2.
6114         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
6115         to define_expands.
6116
6117 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
6118
6119         PR rtl-optimization/28011
6120         * reload.c (push_reload): Set dont_share if IN appears in OUT
6121         also when IN is a PLUS rtx.
6122         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
6123         are same PLUS rtx.
6124
6125 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
6126
6127         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
6128         call unshare_all_decls.
6129         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
6130         (unshare_all_decls): Remove.
6131
6132 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
6133
6134         PR 31847
6135         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
6136         dumps.
6137
6138 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
6139             Nigel Stephens  <nigel@mips.com>
6140
6141         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
6142         Update comments and all uses.
6143         (MIN_FPRS_PER_FMT): Define.
6144         * config/mips/mips.c (function_arg): Fix to correctly handle
6145         the -mips32r2 -mfp64 -mabi=32 case.
6146         (override_options): Enable use of odd-numbered registers for
6147         SFmode values on MIPS32.
6148         (mips_save_reg_p): Save whole floating-point register pair if
6149         either half is used.
6150         (compute_frame_size): Fix comment.
6151
6152 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
6153
6154         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
6155         argument of type bool.
6156         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
6157         argument. Safely select temporary P register according to it.
6158         (do_link): Change call site of add_to_reg accordingly.
6159         (do_unlink): Add epilogue_p as a fourth argument and pass it
6160         to add_to_reg.
6161         (expand_interrupt_handler_epilogue): Change call of do_unlink
6162         accordingly.
6163         (bfin_expand_prologue): Add a third argument sibcall_p.
6164         * config/bfin/bfin.md (epilogue): Change call of
6165         bfin_expand_epilogue accordingly.
6166         (sibcall_epilogue): Likewise.
6167         (eh_return_internal): Likewise.
6168
6169         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
6170         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
6171         * config/bfin/bfin.c (bfin_handle_option): Handle
6172         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
6173         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
6174         Support bf534, bf536 and bf561.
6175         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
6176
6177 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
6178
6179         PR target/31854
6180         * config/i386/i386.c (ix86_function_regparm): Process local
6181         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
6182
6183 2007-05-07  Mike Stump  <mrs@apple.com>
6184
6185         * doc/invoke.texi (Warning Options): Document that -Wempty-body
6186         also checks for and while statements in C++.
6187
6188 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
6189
6190         * gcc.c (at_file_supplied): New variable.
6191         (main): Set it if we expanded argv.
6192         (do_spec_1): Pass an @-file to the linker if we were called with
6193         an @-file argument and HAVE_GNU_LD.
6194         * collect2.c (at_file_supplied): New variable.
6195         (response_file): New variable.
6196         (collect_exit): Unlink response_file if necessary.
6197         (handler): Likewise.
6198         (do_wait): Likewise.
6199         (main): Set at_file_supplied if we expanded argv.
6200         (collect_execute): Pass an @-file to subprocesses if we were called
6201         with an @-file argument.
6202         * configure.ac: Add define for HAVE_GNU_LD.
6203         * configure: Regenerate.
6204         * config.in: Regenerate.
6205
6206 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
6207
6208         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
6209         operand to HI mode.
6210         (mulsi3): New.
6211         (divsi3): New.
6212         (udivsi3): New.
6213
6214 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
6215
6216         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
6217         (TARGET_ENCODE_SECTION_INFO): Re-define.
6218         (m32c_encode_section_info): New
6219         (function_vector_handler): New
6220         (current_function_special_page_vector): New
6221         (m32c_special_page_vector_p): New.
6222         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
6223         Prototype.
6224         * config/m32c/jump.md: Added instruction JSRS for functions
6225         with attribute "function_vector".
6226         * doc/extend.texi (function_vector): Added description
6227         for M16C, M32C targets.
6228
6229 2007-05-07  DJ Delorie  <dj@redhat.com>
6230
6231         PR 31794
6232         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
6233         ashrpsi3, lshrpsi3): Update shift count constraint.
6234
6235 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
6236             Nathan Froyd  <froydnj@codesourcery.com>
6237
6238         PR 22133
6239         * c-incpath.c (add_path): Strip trailing path separators.
6240
6241 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
6242
6243         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
6244         Free dominance info before purging EH edges.
6245         (eliminate_degenerate_phis): Likewise.
6246         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
6247
6248 2007-05-07  Jan Hubicka  <jh@suse.cz>
6249
6250         * gimplify.c (gimplify_expr): Do not crash when folding
6251         (void *)(int)&a + 4.
6252
6253 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6254
6255         PR driver/31694
6256         * c-opts.c (lang_fortran): Make it non static.
6257         * c-common.h (lang_fortran): New prototype.
6258         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
6259         -lang-fortran option was passed by the driver.
6260
6261 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
6262
6263         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
6264         of ASSERT_CHECKING.  Tweak message.
6265
6266 2007-05-06  Revital Eres  <eres@il.ibm.com>
6267
6268         PR 30957
6269         * loop-unroll.c (insert_var_expansion_initialization):
6270         Initialize the expansions with -zero instead of +zero.
6271
6272 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
6273
6274         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
6275         into pic and non-pic versions. Mark r19 as used for
6276         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
6277         for tgd_load, tld_load and tie_load .
6278         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
6279         version of tgd_load, tld_load and tie_load depending on the
6280         value of flag_pic.
6281
6282 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
6283             Jakub Jelinek  <jakub@redhat.com>
6284
6285         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
6286         (__do_global_dtors_aux): Use more paranoid loop to run
6287         destructors if HIDDEN_DTOR_LIST_END.
6288         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
6289
6290 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
6291
6292         * varasm.c (align_variable): Don't increase alignment for
6293         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
6294         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
6295
6296 2007-05-04  Josh Conner  <jconner@apple.com>
6297
6298         * basic-block.h (cdi_direction): Assign values to all enumeration
6299         constants.
6300         (dom_computed): Remove.
6301         (dom_info_state): New.
6302         (set_dom_info_availability): New.
6303         * tree-ssa-loop-im.c (determine_invariantness): Initialize
6304         walk_data.dom_direction.
6305         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
6306         instead of dom_computed[].
6307         (split_edge): Likewise.
6308         (create_basic_block): Likewise.
6309         (merge_blocks): Likewise.
6310         * ifcvt.c (find_if_header): Likewise.
6311         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
6312         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
6313         * tree-ssa.c (verify_ssa): Likewise.
6314         * tree-cfg.c (tree_verify_flow_info): Likewise.
6315         (remove_edge_and_dominated_blocks): Likewise.
6316         * dominance.c (dom_computed): Make static.
6317         (calc_dfs_tree_nonrec): Change third param to a bool.
6318         (calc_dfs_tree): Change second param to a bool.
6319         (calc_idioms): Change second param to a bool.  Use
6320         dom_convert_dir_to_idx.
6321         (init_dom_info): Validate dir before using.
6322         (dom_convert_dir_to_idx): New.
6323         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
6324         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
6325         (free_dominance_info): Use dom_convert_dir_to_idx.
6326         (get_immediate_dominator): Likewise.
6327         (set_immediate_dominator): Likewise.
6328         (get_dominated_by): Likewise.
6329         (redirect_immediate_dominators): Likewise.
6330         (nearest_common_denominator): Likewise.
6331         (dominated_by_p): Likewise.
6332         (bb_dom_dfs_in): Likewise.
6333         (bb_dom_dfs_out): Likewise.
6334         (recount_dominator): Likewise.
6335         (iterate_fix_dominators): Likewise.
6336         (add_to_dominance_info): Likewise.
6337         (delete_from_dominance_info): Likewise.
6338         (first_dom_son): Likewise.
6339         (next_dom_son): Likewise.
6340         (dom_info_available_p): Likewise.
6341         (dom_info_state): New.
6342         (set_dom_info_availability): New.
6343
6344 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
6345
6346         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
6347         Expander removed.
6348         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
6349
6350 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
6351
6352         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
6353         (subdi3, subdi_carry): Delete.
6354
6355 2007-05-04  Jan Hubicka  <jh@suse.cz>
6356             Richard Guenther  <rguenther@suse.de>
6357
6358         * opts.c (decode_options): Do not fiddle with inlining
6359         parameters in case of optimizing for size.
6360         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
6361         for size do nothing.
6362         (cgraph_decide_inlining_of_small_function): When optimizing for
6363         size never inline functions increasing caller size.
6364         (cgraph_early_inlining): Inline for size when optimizing for size.
6365
6366 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6367
6368         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
6369         logical operations piecewise.
6370         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
6371         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
6372         subdi_sesidi_di): Delete.
6373         (add_with_carry): Produce carry in CC instead of a DREG to shorten
6374         the generated sequence.  Allow three-reg add in constraints.  Rewrite
6375         the rtl expression for carry to avoid zero_extend of a constant.
6376         (sub_with_carry): New pattern.
6377         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
6378         different sequence not involving jumps.
6379         (notbi): Now a named pattern.
6380
6381 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
6382
6383         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
6384         Add the note about a significant loss of accuracy of some
6385         mathematical routines when these options are used.
6386
6387 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6388
6389         * haifa-sched.c (rtx_vec_t): New typedef.
6390         (contributes_to_priority_p): Extract piece of priority () into new
6391         static function.
6392         (priority): Use the function.  Add assertion.
6393         (rank_for_schedule, set_priorities): Add assertion to check that
6394         insn's priority is initialized.
6395         (clear_priorities, calc_priorities): Change signature.  Make it update
6396         all relevant insns.  Update all callers ('add_to_speculative_block ()'
6397         and 'create_block_check_twin ()').
6398         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
6399         Add new field 'priority_status'.
6400         (INSN_PRIORITY_STATUS): New macro.
6401         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
6402
6403 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6404
6405         * sched-ebb.c (debug_ebb_dependencies): New static function.
6406         (init_ready_list): Use it.
6407
6408         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
6409         with changed signature and 'debug_rgn_dependencies ()'.
6410         (debug_rgn_dependencies): New static function.
6411         (init_ready_list): Use it.
6412
6413         * sched-int.h (debug_dependencies): Declare.
6414
6415 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
6416
6417         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
6418
6419 2007-05-04  Dirk Mueller  <dmueller@suse.de>
6420
6421         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
6422
6423 2007-05-03  Jan Hubicka  <jh@suse.cz>
6424
6425         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
6426         ((T1)X op (T1)Y), for pointer type in more cases than before.
6427
6428         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
6429
6430         * tree-object-size.c (plus_expr_object_size): When operand size is
6431         unknown, return unknown.
6432
6433 2007-05-03  Dirk Mueller  <dmueller@suse.de>
6434
6435         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
6436
6437         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
6438         options.
6439
6440         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
6441
6442 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
6443
6444         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
6445
6446 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
6447
6448         * config/soft-fp/double.h, config/soft-fp/extended.h,
6449         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
6450         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
6451         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
6452         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
6453         glibc CVS.
6454
6455 2007-05-03  Ian Lance Taylor  <iant@google.com>
6456
6457         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
6458         MASK_PPC_GFXOPT for 8540 or 8548.
6459
6460 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
6461
6462         * tree-vect-transform.c (vect_update_inits_of_drs): Use
6463         vect_print_dump_info() to output debug information.
6464
6465 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
6466
6467         PR target/31768
6468         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
6469         operands of size 2 when operand is not MEM_P.
6470
6471 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
6472
6473         PR tree-optimization/30565
6474         * lambda-code.c (perfect_nestify): Fix updating of dominators.
6475
6476 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6477
6478         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
6479         (umulsi3_highpart): Use them.
6480         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
6481         for final accumulator to D regisster tranfser.
6482
6483 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
6484
6485         PR tree-optimization/31699
6486         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
6487         wrong code.
6488         (vect_enhance_data_refs_alignment): Compute peel amount using
6489         TYPE_VECTOR_SUBPARTS instead of vf.
6490         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
6491
6492 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
6493
6494         PR bootstrap/31776
6495         * system.h: Remove inclusion of double-int.h
6496         * tree.h: Include double-int.h
6497         * gengtype.c: Likewise
6498         * cfgloop.h: Likewise
6499         * Makefile.in: Adjust dependencies on double-int.h
6500
6501 2007-05-02  Eric Christopher  <echristo@apple.com>
6502
6503         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
6504         -shared to -Zdynamiclib.
6505
6506 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
6507
6508         PR c++/31663
6509         * c-common.c (strip_pointer_or_array_types): New function.
6510         * c-common.h (strip_pointer_or_array_types): New function declaration.
6511
6512 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
6513
6514         PR tree-optimization/31771
6515         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
6516
6517 2007-05-02  Paul Brook  <paul@codesourcery.com>
6518
6519         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
6520
6521 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6522
6523         PR middle-end/29715
6524         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
6525         transformation.
6526
6527 2007-05-02  Nick Clifton  <nickc@redhat.com>
6528
6529         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
6530
6531 2007-05-02  Richard Guenther  <rguenther@suse.de>
6532
6533         PR tree-optimization/31146
6534         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
6535         argument, single_use_p.  If we have a single use that is
6536         a conversion to the definition rhs type, propagate that rhs.
6537         (forward_propagate_addr_expr): Pass single_use_p argument
6538         to forward_propagate_addr_expr_1.
6539
6540 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
6541
6542         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
6543         variable.
6544
6545 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6546
6547         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
6548         'AMD Family 10 core'.
6549
6550 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6551
6552         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
6553         and athlon64-sse3 as improved versions of k8, opteron and athlon64
6554         with SSE3 instruction set support.
6555         * doc/invoke.texi: Likewise.
6556
6557 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6558
6559         * config/i386/i386.c (override_options): Tuning 32-byte loop
6560         alignment for amdfam10 architecture. Increasing the max loop
6561         alignment to 24 bytes.
6562
6563 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
6564
6565         * config/m68k/constraints.md: New.
6566         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
6567         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
6568         EXTRA_CONSTRAINT): Remove.
6569         * config/m68k/m68k.md: Include constraints.md.
6570         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
6571
6572 2007-05-01  Ian Lance Taylor  <iant@google.com>
6573
6574         PR tree-optimization/31739
6575         * tree-vrp.c (vrp_val_is_max): New static function.
6576         (vrp_val_is_min): New static function.
6577         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
6578         copying the node.
6579         (set_value_range): Use vrp_val_is_{max,min}.
6580         (extract_range_from_assert): Likewise.
6581         (extract_range_from_binary_expr): Likewise.
6582         (extract_range_from_unary_expr): Likewise.
6583         (dump_value_range, vrp_meet): Likewise.
6584         (vrp_visit_phi_node): Likewise.
6585         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
6586
6587 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
6588
6589         * config/i386/gmon-sol2.c (size_t): New type.
6590         (intptr_t): Likewise.
6591         (s_textsize): Declare as size_t.
6592         (sbrk): Declare.
6593         (monstartup): Use size_t for sizes.
6594         (_mcount): Save and restore registers.
6595         (internal_mcount): Pass 0 as the first argument to monstartup
6596         in 64-bit mode.
6597         (moncontrol): Convert pointer to appropriately sized integer
6598         before passing to profil.
6599
6600 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
6601
6602         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
6603         __NO_FPRS__, not just if _SOFT_DOUBLE.
6604         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
6605         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
6606         also for E500 double.
6607         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
6608         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
6609         && !TARGET_FPRS).
6610
6611 2007-05-01  Richard Guenther  <rguenther@suse.de>
6612
6613         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
6614         is NULL.
6615
6616 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
6617
6618         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
6619
6620 2007-05-01  Jan Hubicka  <jh@suse.cz>
6621
6622         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
6623         invariant.
6624
6625 2007-05-01  Jan Hubicka  <jh@suse.cz>
6626
6627         * tree.h (maybe_fold_offset_to_component_ref): Remove.
6628         (maybe_fold_offset_to_reference): Declare.
6629         * fold-const.c (fold_unary): Do not fold
6630         (type *)&A into &A->field_of_type_and_offset_0
6631         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
6632         size is unknown, give up.
6633         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
6634         offsets.
6635         (maybe_fold_offset_to_reference): New.
6636         (maybe_fold_stmt_indirect): Use it.
6637         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
6638         * gimplify.c (gimplify_conversion): Canonicalize conversions to
6639         field references.
6640         (gimplify_expr): Likewise for plus_expr.
6641
6642 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
6643
6644         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
6645         bsi_after_labels.  Always insert statements before bsi.
6646         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
6647         * predict.c (apply_return_prediction): Check for empty blocks.
6648         * cfgexpand.c (lab_rtx_for_bb): New variable.
6649         (label_rtx_for_bb): Do not create new tree labels.
6650         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
6651         (tree_expand_cfg): Initialize lab_rtx_for_bb.
6652         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
6653         creating edges.
6654         (label_for_bb): Add field used.
6655         (update_eh_label, main_block_label): Mark the label used.
6656         (cleanup_dead_labels): Remove unused labels.
6657
6658 2007-05-01  Richard Guenther  <rguenther@suse.de>
6659
6660         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
6661         if it is not about to be set.
6662         (get_value_range): Do not pre-allocate equiv bitmap.
6663         (update_value_range): No need to clear equiv field.
6664         (add_equivalence): Change prototype to get bitmap pointer.
6665         Allocate bitmap here if it is not already.
6666         (extract_range_from_assert): Do not allocate bitmap here.
6667         Update callers to add_equivalence.
6668         (extract_range_from_ssa_name): Likewise.
6669         (get_vr_for_comparison): New static helper.
6670         (compare_name_with_value): Handle NULL equiv bitmap by
6671         peeling the first iteration of the comparison loop.
6672         Use get_vr_for_comparison.
6673         (compare_names): Handle NULL equiv bitmaps by using fake
6674         ones.  Use get_vr_for_comparison.
6675
6676 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
6677
6678         * double-int.c (mpz_set_double_int): Moved from
6679         tree-ssa-loop-niter.c.
6680         (mpz_get_double_int): Likewise; also, add option to wrap
6681         out-of-range integers.
6682         * double-int.h: New prototypes for above.
6683         * tree.c (get_static_type_bounds): Moved from
6684         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
6685         TYPE_MAX_VALUE if they exist..
6686         * tree.h: New prototype for above.
6687         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
6688         get_type_bounds calls.
6689         (mpz_set_double_int): Move to double-int.c.
6690         (get_type_bounds): Move to tree.c, rename to
6691         get_static_type_bounds.
6692         (mpz_to_double_int): Move to double-int.c, rename to
6693         mpz_get_double_int.
6694
6695 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
6696
6697         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
6698         DIV0 exception can fall through to a normal return.
6699
6700 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
6701
6702         PR middle-end/22156
6703         Temporarily revert:
6704         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
6705         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
6706         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6707         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
6708         initialize align to silence bogus warning.
6709         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
6710         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
6711         all_no_warning.
6712         (struct sra_walk_fns): Remove use_all parameter from use.
6713         (sra_hash_tree): Handle BIT_FIELD_REFs.
6714         (sra_elt_hash): Don't hash bitfld blocks.
6715         (sra_elt_eq): Skip them in parent compares as well.  Handle
6716         BIT_FIELD_REFs.
6717         (sra_walk_expr): Don't maintain or pass down use_all_p.
6718         (scan_use): Remove use_all parameter.
6719         (scalarize_use): Likewise.  Re-expand assignment to
6720         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
6721         output, and re-scalarize after output.  Don't mark anything
6722         for no warning.
6723         (scalarize_ldst): Adjust.
6724         (scalarize_walk_gimple_modify_statement): Likewise.
6725         (build_element_name_1): Handle BIT_FIELD_REFs.
6726         (instantiate_element): Don't warn for any element whose parent
6727         is used as a whole.
6728         (instantiate_missing_elements_1): Return the sra_elt.
6729         (canon_type_for_field): New.
6730         (try_instantiate_multiple_fields): New.
6731         (instantiate_missing_elemnts): Use them.
6732         (mark_no_warning): Removed.
6733         (generate_one_element_ref): Handle BIT_FIELD_REFs.
6734         (REPLDUP, sra_build_elt_assignment): New.
6735         (generate_copy_inout): Use them.
6736         (generate_element_copy): Likewise.  Handle bitfld differences.
6737         (generate_element_zero): Don't recurse for blocks.  Use
6738         sra_build_elt_assignment.
6739         (generate_one_element_int): Take elt instead of var.  Use
6740         sra_build_elt_assignment.
6741         (generate_element_init_1): Adjust.
6742         (scalarize_use, scalarize_copy): Use REPLDUP.
6743         (scalarize_ldst): Move assert before dereference.
6744         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
6745
6746 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6747
6748         PR C++/31721
6749         * tree.c (reconstruct_complex_type): Reconstruct a reference
6750         correctly.
6751         Also use the same mode for the pointer as the old pointer type.
6752
6753 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
6754
6755         * doc/trouble.texi (Interoperation): Remove note about Ultrix
6756         Fortran compiler.
6757
6758 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
6759
6760         PR rtl-optimization/31676
6761         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
6762         (df_refs_record): Call it.
6763
6764 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
6765
6766         * rtl.def (SS_ABS): New code.
6767         * config/bfin/bfin.c (print_operand): New modifier 'v'.
6768         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
6769         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
6770         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
6771         (bfin_init_builtins): Define them.
6772         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
6773         (bfin_expand_builtin): ... and handle the others here.
6774         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
6775         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
6776         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
6777         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
6778         operand is only HImode.
6779
6780 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
6781
6782         * regclass.c (scan_one_insn): Remove splitting of
6783         two address insns.
6784
6785 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
6786             Nigel Stephens  <nigel@mips.com>
6787
6788         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
6789
6790 2007-04-28  Jan Hubicka  <jh@suse.cz>
6791
6792         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
6793         insn_locators_alloc instead of insn_locators_initialize;
6794         call reset_block_changes.
6795         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6796         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
6797         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
6798         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6799         * config/score/score.c (th_output_mi_thunk): Likewise.
6800         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6801         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
6802         tolerate uninitialized locator info.
6803
6804         Re-apply:
6805         * function.c (init_function_start): Don't init line number info.
6806         (expand_function_end): Update.
6807         (reset_block_changes, record_block_change, finalize_block_changes,
6808         check_block_change, free_block_changes): Kill.
6809         * function.h (reset_block_changes, record_block_change,
6810         finalize_block_changes, check_block_change, free_block_changes):
6811         Remove prototypes.
6812         (struct function): Remove ib_boundaries_block.
6813         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
6814         Use curr_insn_locator to initialize locator.
6815         (emit_line_note): Remove.
6816         * cfgexpand.c (expand_gimple_cond_expr): Update.
6817         (construct_exit_block): Likewise.
6818         (tree_expand_cfg): Initialize/finalize locators.
6819         * expr.c (expand_expr_real): Update.
6820         * cfglayout.c (line_locators_locs, line_locators_lines,
6821         file_locators_locs, file_locators_files): Remove.
6822         (set_block_levels): Move to cfgexpand.c.
6823         (insn_locators_initialize): Remove.
6824         (pass_insn_locators_initialize): Remove.
6825         (locations_locators_locs, locations_locators_vals): New static vars.
6826         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
6827         Likewise.
6828         (insn_locators_alloc, insn_locators_finalize,
6829         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6830         New functions.
6831         (locator_location): New.
6832         (locator_line, locator_file): Rewrite.
6833         * rtl.h (emit_line_note): Kill.
6834         (insn_locators_alloc, insn_locators_finalize,
6835         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
6836         Declare.
6837         * tree-inline.c (initialize_cfun): Do not initialize
6838         ib_boundaries_block.
6839         * passes.c (pass_insn_locators_initialize): Remove.
6840
6841 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
6842
6843         * tree-cfg.c (move_block_to_fn): Release bb from dominance
6844         info.  Update last_basic_block correctly.
6845
6846 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
6847
6848         PR target/31701
6849         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
6850         register itself to hold the offset constant.  Tell flow the use
6851         of r4 and r5 when they are used.
6852
6853 2007-04-27  Richard Guenther  <rguenther@suse.de>
6854
6855         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
6856         if we simplified anything.
6857         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
6858         warnings until we did a simplification and the stmt was not
6859         marked as TREE_NO_WARNING.
6860
6861 2007-04-27  Mike Stump  <mrs@apple.com>
6862
6863         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
6864
6865 2007-04-27  Ian Lance Taylor  <iant@google.com>
6866
6867         PR middle-end/31710
6868         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
6869         TYPE_MAX_VALUE exist, convert them to the new type.
6870
6871 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
6872
6873         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
6874         if it claims to be available.
6875         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
6876         edge is redirected.
6877         (perform_tree_ssa_dce): Always free postdominators.
6878
6879 2007-04-27  Richard Henderson  <rth@redhat.com>
6880
6881         * config/alpha/predicates.md (aligned_memory_operand): Mark
6882         as define_special_predicate.
6883         (unaligned_memory_operand, normal_memory_operand): Likewise.
6884         (reg_or_unaligned_mem_operand): Remove.
6885         (any_memory_operand): Match the documentation and check for
6886         non-renumbered pseudos during reload.
6887         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
6888         alpha_secondary_reload_class, update to new interface, make static.
6889         Handle CQImode like HImode.  Remove FP subreg check.
6890         (alpha_expand_mov): Use replace_equiv_address.
6891         (alpha_expand_mov_nobwx): Use any_memory_operand.
6892         (TARGET_SECONDARY_RELOAD): New.
6893         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
6894         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
6895         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
6896         * config/alpha/alpha.md: ... here.
6897         (RELOAD12, reloadmode): New.
6898         (movcqi): New.
6899         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
6900         Don't handle the aligned case here.
6901         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
6902         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
6903         reload_inhi_help.  Don't expect a scratch register.
6904         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
6905         reload_outhi_help.
6906         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
6907
6908 2007-04-27  Richard Guenther  <rguenther@suse.de>
6909
6910         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
6911
6912 2007-04-27  Richard Guenther  <rguenther@suse.de>
6913
6914         PR tree-optimization/30965
6915         PR tree-optimization/30978
6916         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
6917         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
6918         (find_equivalent_equality_comparison): Likewise.
6919         (simplify_cond): Likewise.
6920         (get_prop_source_stmt): New helper.
6921         (get_prop_dest_stmt): Likewise.
6922         (can_propagate_from): Likewise.
6923         (remove_prop_source_from_use): Likewise.
6924         (combine_cond_expr_cond): Likewise.
6925         (forward_propagate_comparison): New function.
6926         (forward_propagate_into_cond): Rewrite to use fold for
6927         tree combining.
6928         (tree_ssa_forward_propagate_single_use_vars): Call
6929         forward_propagate_comparison to propagate comparisons.
6930
6931 2007-04-27  Richard Guenther  <rguenther@suse.de>
6932
6933         PR tree-optimization/31715
6934         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
6935         sure to do computation on the offset in an appropriate
6936         signed type.
6937
6938 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
6939
6940         * reload.h (elimination_target_reg_p): Declare.
6941         * reload.c (find_reloads): Don't apply the reg_rtx move
6942         optimization if the SET_DEST satisfies elimination_target_reg_p.
6943         * reload1.c (elimination_target_reg_p): New function.
6944         (gen_reload): In the move/add2 fallback, make sure that op0
6945         does not overlap the destination register.
6946
6947 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
6948
6949         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
6950         transform only GIMPLE_MODIFY_STMTs.
6951         * tree-complex.c (expand_complex_operations_1): Ditto.
6952         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
6953         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
6954         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
6955         branches.
6956         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
6957         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
6958         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
6959         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
6960         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
6961         slpeel_add_loop_guard): Ditto.
6962         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
6963         * lambda-code.c (perfect_nestify): Ditto.
6964         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
6965         before the first statement.
6966         * tree-optimize.c (execute_free_datastructures): Fix comments.
6967         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
6968         * tree-flow.h (disband_implicit_edges): Declaration removed.
6969         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
6970         branches.
6971         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
6972         COND_EXPRs without gotos.
6973         (disband_implicit_edges, has_label_p): Removed.
6974         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
6975         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
6976         branches.
6977         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
6978         side effects.
6979         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
6980         also for COND_EXPRs.
6981         * cfgexpand.c (label_rtx_for_bb): New function.
6982         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
6983         Use label_rtx_for_bb to find the labels.
6984         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
6985         last block.  Detect fallthru edges.
6986
6987 2007-04-26  Ian Lance Taylor  <iant@google.com>
6988
6989         PR target/28675
6990         * reload.c (find_reloads_subreg_address): If the address was valid
6991         in the original mode but not in the new mode, reload the whole
6992         address.
6993
6994 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
6995
6996         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
6997         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
6998         (cleanup_control_expr_graph): Do not invalidate dominance info.
6999         Record altered blocks.
7000         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
7001         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
7002         cleanup_tree_cfg_bb): New functions.
7003         (remove_forwarder_block): Do not maintain the worklist of blocks.
7004         Record altered blocks.
7005         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
7006         not over whole cfg.
7007         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
7008         delete_unreachable_blocks if dominators are not available.
7009         * tree-inline.c (optimize_inline_calls): Free dominance information
7010         earlier.
7011         * tree-flow.h (remove_edge_and_dominated_blocks,
7012         cfgcleanup_altered_bbs): Altered.
7013         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
7014         blocks.
7015         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
7016         functions.
7017         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
7018         do not invalidate dominators.
7019
7020 2007-04-26  Anatoly Sokolov <aesok@post.ru>
7021
7022         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
7023         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
7024         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7025         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7026
7027 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
7028
7029         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
7030
7031 2007-04-26  Richard Guenther  <rguenther@suse.de>
7032
7033         PR tree-optimization/31703
7034         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
7035         the right type for the target of the bittest.
7036
7037 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7038
7039         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
7040         ix86_sol10_return_in_memory.
7041
7042 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7043
7044         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
7045         variables.
7046
7047 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
7048
7049         PR c++/31598
7050         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
7051
7052         PR tree-optimization/30558
7053         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
7054         clear this_state.prev_try.
7055
7056 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7057             Mark Mitchell  <mark@codesourcery.com>
7058
7059         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
7060         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
7061         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
7062
7063 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7064
7065         PR driver/31107
7066         * doc/invoke.texi (%:print-asm-header): Document.
7067         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
7068         and -ftarget-help.
7069         (static_spec_functions): Add print-asm-header.
7070         (main): Print a banner before the --target-help linker options.
7071         (print_asm_header_spec_function): New function.
7072
7073 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
7074
7075         PR target/31403
7076         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
7077         (movsf_ie): Likewise.
7078
7079 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
7080
7081         * doc/extend.texi ([Type Traits]): Adjust per N2255.
7082
7083 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
7084
7085         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
7086         exception for divide-by-zero.
7087         (__umodsi3, __modsi3): Likewise.
7088
7089 2007-04-25  Dirk Mueller  <dmueller@suse.de>
7090
7091         * c-typeck.c (build_compound_expr): Annotate warning()
7092         call with OPT_Wunused_value.
7093         * tree-ssa.c (warn_uninit): Annotate warning with
7094         OPT_Wunintialized.
7095         * c-common.c (handle_sentinel_attribute): Annotate warning
7096         call with OPT_Wattributes.
7097
7098 2007-04-25  Thiemo Seufer  <ths@mips.com>
7099
7100         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
7101         (mips16): Fix typo.
7102         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
7103         on to the assembler.  Improve handling of -mno-mips16.  Add handling
7104         of -mno-mips3d, -mno-dsp, -mno-dspr2.
7105         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
7106         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
7107         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
7108
7109 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
7110
7111         PR target/31680
7112         * config/i386/winnt.c (i386_pe_file_end): Strip only
7113         USER_LABEL_PREFIX when writing export name.
7114
7115 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
7116
7117         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
7118         sh/elf.h, vx-common.h and vxworks.h.
7119         * config/sh/sh.h: Include config/vxworks-dummy.h.
7120         (SUBTARGET_OVERRIDE_OPTIONS): Define.
7121         (OVERRIDE_OPTIONS): Use it.
7122         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
7123         (vxworks_picreg): New pattern.
7124         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
7125         VXWORKS_OS_CPP_BUILTINS.
7126         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
7127         to their VXWORKS_* equivalents.
7128         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
7129         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
7130         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
7131         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
7132         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
7133         -mrtp/-fPIC multilibs.
7134         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
7135         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
7136         (MULTILIB_OSDIRNAMES): Delete.
7137
7138 2007-04-25  Anatoly Sokolov <aesok@post.ru>
7139
7140         PR target/18989
7141         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
7142
7143 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
7144
7145         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
7146         rounding mode to be specified by the caller.
7147         (real_to_mpfr) Likewise.
7148         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
7149         include new arguments.
7150         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
7151
7152 2007-04-24  Ian Lance Taylor  <iant@google.com>
7153
7154         PR tree-optimization/31605
7155         * tree-vrp.c (set_value_range): Check that min and max are not
7156         both overflow infinities.
7157         (set_value_range_to_value): New static function.
7158         (extract_range_from_binary_expr): Call set_value_range_to_value.
7159         (extract_range_from_cond_expr): Likewise.
7160         (extract_range_from_expr): Likewise.
7161         (extract_range_from_unary_expr): Likewise.  Don't create a range
7162         which overflows on both sides.
7163         (vrp_meet): Check for a useless range.
7164         (vrp_visit_phi_node): If we see a constant which looks like an
7165         overflow infinity, turn off the TREE_OVERFLOW flag.
7166
7167 2007-04-24  Ian Lance Taylor  <iant@google.com>
7168
7169         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
7170
7171 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
7172
7173         PR diagnostic/25923
7174         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
7175         diagnostic message is being built.
7176         * tree-pretty-print.c (dump_generic_node): Only write the
7177         formatted text into BUFFER's stream if we are not building a
7178         diagnostic message.
7179         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
7180         dump_generic_node.
7181         * Makefile.in (toplev.o): Depend on tree-pass.h.
7182
7183 2007-04-24  Ian Lance Taylor  <iant@google.com>
7184
7185         PR tree-optimization/31602
7186         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
7187         conditionals in the copied loop header.
7188         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
7189         warnings if TREE_NO_WARNING is set.
7190         * doc/invoke.texi (Warning Options): Clarify that
7191         -Wstrict-overflow does not warn about loops.
7192
7193 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
7194
7195         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
7196         expand on the comment about _Decimal128 arguments and check the
7197         integer result of the modulus operation; for 64-bit ELF ABI, ensure
7198         that _Decimal128 argument uses even/odd register pair.
7199         (function_arg): Ditto.
7200
7201 2007-04-24  Hui-May Chang <hm.chang@apple.com>
7202
7203         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
7204         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
7205
7206 2007-04-24  Richard Guenther  <rguenther@suse.de>
7207             Olga Golovanevsky  <olga@il.ibm.com>
7208
7209         * fold-const.c (multiple_of_p): Check for bottom
7210         to be zero.
7211
7212 2007-04-24  Richard Henderson  <rth@redhat.com>
7213
7214         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
7215         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
7216         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
7217         looking for non-zero bits shifted out.  Avoid a recursive call
7218         when constructing the scalar.
7219         (__floatundisf): Likewise.
7220
7221 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
7222
7223         * dwarf2out.c (field_byte_offset): Move the existing logic
7224         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
7225         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
7226
7227 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7228
7229         PR target/31641
7230         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
7231         length argument of 0 for memset.
7232         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
7233         unsigned shift instead of the signed variant.
7234
7235 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7236
7237         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
7238         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
7239         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
7240         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
7241         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
7242         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
7243         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
7244         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
7245         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
7246         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
7247         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
7248         "mul<mode>3", "div<mode>3"): Insn definitions added.
7249         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
7250         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
7251         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
7252         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
7253         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
7254         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
7255         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
7256         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
7257         TARGET_FLOAT_FORMAT): Macro definitions removed.
7258         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
7259         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
7260         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
7261         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
7262         (s390_gen_rtx_const_DI): Function removed.
7263         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
7264
7265 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
7266
7267         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
7268         over an external ffs function.
7269
7270 2007-04-24  Chao-ying Fu  <fu@mips.com>
7271             Richard Sandiford  <richard@nildram.co.uk>
7272
7273         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
7274         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
7275         (smadd_widen_optab, umadd_widen_optab): Define.
7276         * optabs.c (init_optabs): Initialize smadd_widen_optab and
7277         umadd_widen_optab.
7278         * genopinit.c (optabs): Fill in smadd_widen_optab and
7279         umadd_widen_optab.
7280         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
7281         and umadd_widen_optab to implement multiply-add sequences.
7282         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
7283         (<u>maddsidi4): ...this.  Extend condition to include
7284         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
7285         of operand 0 to "ka" and use the three-operand form of madd<u>
7286         for TARGET_DSPR2.
7287         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
7288         to define_expands.
7289         * config/mips/constraints.md (ka): New register constraint.
7290
7291 2007-04-24  Jan Hubicka  <j@suse.cz>
7292
7293         Revert:
7294
7295         2007-04-23  Jan Hubicka  <jh@suse.cz>
7296         * function.c (init_function_start): Don't init line number info.
7297         (expand_function_end): Update.
7298         (reset_block_changes, record_block_change, finalize_block_changes,
7299         check_block_change, free_block_changes): Kill.
7300         * function.h (reset_block_changes, record_block_change,
7301         finalize_block_changes, check_block_change, free_block_changes):
7302         Remove prototypes.
7303         (struct function): Remove ib_boundaries_block.
7304         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7305         Use curr_insn_locator to initialize locator.
7306         (emit_line_note): Remove.
7307         * cfgexpand.c (expand_gimple_cond_expr): Update.
7308         (construct_exit_block): Likewise.
7309         (tree_expand_cfg): Initialize/finalize locators.
7310         * expr.c (expand_expr_real): Update.
7311         * cfglayout.c (line_locators_locs, line_locators_lines,
7312         file_locators_locs, file_locators_files): Remove.
7313         (set_block_levels): Move to cfgexpand.c.
7314         (insn_locators_initialize): Remove.
7315         (pass_insn_locators_initialize): Remove.
7316         (locations_locators_locs, locations_locators_vals): New static vars.
7317         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7318         Likewise.
7319         (insn_locators_alloc, insn_locators_finalize,
7320         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7321         New functions.
7322         (locator_location): New.
7323         (locator_line, locator_file): Rewrite.
7324         * rtl.h (emit_line_note): Kill.
7325         (insn_locators_alloc, insn_locators_finalize,
7326         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7327         Declare.
7328         * tree-inline.c (initialize_cfun): Do not initialize
7329         ib_boundaries_block.
7330         * passes.c (pass_insn_locators_initialize): Remove.
7331
7332 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
7333
7334         * doc/invoke.texi: Removed leading '-' from option index entries.
7335
7336 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
7337
7338         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
7339         Use phi_nodes_ptr.
7340         (create_phi_node): Use set_phi_nodes.
7341         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
7342         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
7343         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
7344         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
7345         (bsi_start, bsi_last): Use bb_stmt_list.
7346         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
7347         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
7348         Traverse the statements using tsi iterator.
7349         * basic-block.h (struct basic_block_def): Fields stmt_list
7350         and phi_nodes moved to ...
7351         (struct tree_bb_info): ... new structure.
7352         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
7353         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
7354         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
7355         (tree_verify_flow_info): Verify that il.tree is not set for
7356         entry and exit block.
7357         (tree_split_block): Use set_bb_stmt_list.
7358
7359 2007-04-23  Mike Stump  <mrs@apple.com>
7360
7361         * config/i386/i386.c (ix86_tune_features
7362         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
7363         nocona and core2.
7364
7365 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
7366
7367         * config/i386/i386.md (prefix_extra): New attribute.
7368         (length): Add prefix_extra.
7369
7370         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
7371         (sse2_movntv2di): Likewise.
7372         (sse2_cvtps2dq): Likewise.
7373         (sse2_cvtpd2pi): Likewise.
7374         (sse2_cvttpd2pi): Likewise.
7375         (*sse2_cvtpd2ps): Likewise.
7376         (*add<mode>3): Likewise.
7377         (sse2_ssadd<mode>3): Likewise.
7378         (sse2_usadd<mode>3): Likewise.
7379         (*sub<mode>3): Likewise.
7380         (sse2_sssub<mode>3): Likewise.
7381         (sse2_ussub<mode>3): Likewise.
7382         (*mulv8hi3): Likewise.
7383         (*smulv8hi3_highpart): Likewise.
7384         (*umulv8hi3_highpart): Likewise.
7385         (sse2_umulv2siv2di3): Likewise.
7386         (sse2_pmaddwd): Likewise.
7387         (ashr<mode>3): Likewise.
7388         (lshr<mode>3): Likewise.
7389         (ashl<mode>3): Likewise.
7390         (sse2_ashlti3): Likewise.
7391         (sse2_lshrti3): Likewise.
7392         (*umaxv16qi3): Likewise.
7393         (*smaxv8hi3): Likewise.
7394         (*uminv16qi3): Likewise.
7395         (*sminv8hi3): Likewise.
7396         (sse2_eq<mode>3): Likewise.
7397         (sse2_gt<mode>3): Likewise.
7398         (*and<mode>3): Likewise.
7399         (sse2_nand<mode>3): Likewise.
7400         (*ior<mode>3): Likewise.
7401         (*xor<mode>3): Likewise.
7402         (sse2_packsswb): Likewise.
7403         (sse2_packssdw): Likewise.
7404         (sse2_packuswb): Likewise.
7405         (sse2_punpckhbw): Likewise.
7406         (sse2_punpcklbw): Likewise.
7407         (sse2_punpckhwd): Likewise.
7408         (sse2_punpcklwd): Likewise.
7409         (sse2_punpckhdq): Likewise.
7410         (sse2_punpckldq): Likewise.
7411         (sse2_punpckhqdq): Likewise.
7412         (sse2_punpcklqdq): Likewise.
7413         (*sse2_pinsrw): Likewise.
7414         (*sse2_pextrw): Likewise.
7415         (sse2_pshufd_1): Likewise.
7416         (sse2_uavgv16qi3): Likewise.
7417         (sse2_uavgv8hi3): Likewise.
7418         (sse2_psadbw): Likewise.
7419         (sse2_pmovmskb): Likewise.
7420         (*sse2_maskmovdqu): Likewise.
7421         (*sse2_maskmovdqu_rex64): Likewise.
7422         (sse4a_extrqi): Likewise.
7423         (sse4a_extrq): Likewise.
7424         (sse3_lddqu): Set prefix_rep.
7425         (sse3_addsubv4sf3): Likewise.
7426         (sse3_haddv4sf3): Likewise.
7427         (sse3_hsubv4sf3): Likewise.
7428         (sse_cvtss2si): Likewise.
7429         (sse_cvtss2si_2): Likewise.
7430         (sse_cvtss2siq): Likewise.
7431         (sse_cvtss2siq_2): Likewise.
7432         (sse_cvttss2si): Likewise.
7433         (sse_cvttss2siq): Likewise.
7434         (sse2_cvttps2dq): Likewise.
7435         (sse3_movshdup): Likewise.
7436         (sse3_movsldup): Likewise.
7437         (sse2_cvtsd2si): Likewise.
7438         (sse2_cvtsd2si_2): Likewise.
7439         (sse2_cvtsd2siq): Likewise.
7440         (sse2_cvtsd2siq_2): Likewise.
7441         (sse2_cvttsd2si): Likewise.
7442         (sse2_cvttsd2siq): Likewise.
7443         (*sse2_cvtpd2dq): Likewise.
7444         (*sse2_cvttpd2dq): Likewise.
7445         (sse2_pshuflw_1): Likewise.
7446         (sse2_pshufhw_1): Likewise.
7447         (sse4a_insertqi): Likewise.
7448         (sse4a_insertq): Likewise.
7449         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
7450         (ssse3_phadddv4si3): Likewise.
7451         (ssse3_phaddswv8hi3): Likewise.
7452         (ssse3_phsubwv8hi3): Likewise.
7453         (ssse3_phsubdv4si3): Likewise.
7454         (ssse3_phsubswv8hi3): Likewise.
7455         (ssse3_pmaddubswv8hi3): Likewise.
7456         (ssse3_pmulhrswv8hi3): Likewise.
7457         (ssse3_pshufbv16qi3): Likewise.
7458         (ssse3_psign<mode>3): Likewise.
7459         (ssse3_palignrti): Likewise.
7460         (abs<mode>2): Likewise.
7461         (ssse3_phaddwv4hi3): Set prefix_extra.
7462         (ssse3_phadddv2si3): Likewise.
7463         (ssse3_phaddswv4hi3): Likewise.
7464         (ssse3_phsubwv4hi3): Likewise.
7465         (ssse3_phsubdv2si3): Likewise.
7466         (ssse3_phsubswv4hi3): Likewise.
7467         (ssse3_pmaddubswv4hi3): Likewise.
7468         (ssse3_pmulhrswv4hi3): Likewise.
7469         (ssse3_pshufbv8qi3): Likewise.
7470         (ssse3_psign<mode>3): Likewise.
7471         (ssse3_palignrdi): Likewise.
7472         (abs<mode>2): Likewise.
7473         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
7474         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
7475         (sse2_pmovmskb): Set mode to SI instead of V2DF.
7476
7477 2007-04-23  Nick Clifton  <nickc@redhat.com>
7478
7479         * params.def: Fix formatting of emacs local variables.
7480
7481 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
7482
7483         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
7484         move if inter-unit move isn't allowed.
7485         Don't split moving the first element of V2DI to DI to inter-unit
7486         move if inter-unit move isn't allowed.
7487
7488 2007-04-23  Richard Guenther  <rguenther@suse.de>
7489
7490         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
7491         and CDI_POST_DOMINATORS separately.
7492
7493 2007-04-23  Nick Clifton  <nickc@redhat.com>
7494
7495         * c.opt (Wformat-contains-nul): Add warning attribute.
7496
7497 2007-04-23  Jan Hubicka  <jh@suse.cz>
7498
7499         * function.c (init_function_start): Don't init line number info.
7500         (expand_function_end): Update.
7501         (reset_block_changes, record_block_change, finalize_block_changes,
7502         check_block_change, free_block_changes): Kill.
7503         * function.h (reset_block_changes, record_block_change,
7504         finalize_block_changes, check_block_change, free_block_changes):
7505         Remove prototypes.
7506         (struct function): Remove ib_boundaries_block.
7507         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7508         Use curr_insn_locator to initialize locator.
7509         (emit_line_note): Remove.
7510         * cfgexpand.c (expand_gimple_cond_expr): Update.
7511         (construct_exit_block): Likewise.
7512         (tree_expand_cfg): Initialize/finalize locators.
7513         * expr.c (expand_expr_real): Update.
7514         * cfglayout.c (line_locators_locs, line_locators_lines,
7515         file_locators_locs, file_locators_files): Remove.
7516         (set_block_levels): Move to cfgexpand.c.
7517         (insn_locators_initialize): Remove.
7518         (pass_insn_locators_initialize): Remove.
7519         (locations_locators_locs, locations_locators_vals): New static vars.
7520         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7521         Likewise.
7522         (insn_locators_alloc, insn_locators_finalize,
7523         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7524         New functions.
7525         (locator_location): New.
7526         (locator_line, locator_file): Rewrite.
7527         * rtl.h (emit_line_note): Kill.
7528         (insn_locators_alloc, insn_locators_finalize,
7529         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7530         Declare.
7531         * tree-inline.c (initialize_cfun): Do not initialize
7532         ib_boundaries_block.
7533         * passes.c (pass_insn_locators_initialize): Remove.
7534
7535 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7536
7537         PR middle-end/31448
7538         * expr.c (reduce_to_bit_field_precision): Handle
7539         CONST_INT rtx's.
7540
7541 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
7542
7543         PR tree-optimization/24659
7544         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
7545         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
7546         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
7547         * genopinit.c (optabs): Rename vec_pack_mod_optab
7548         to vec_pack_trunc_optab.
7549         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
7550         early for scalar floating point operands for NOP_EXPR.
7551         (vectorizable_type_promotion): Ditto.
7552         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
7553         vec_pack_trunc_optab.
7554         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
7555
7556         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
7557         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
7558         Rename from VEC_PACK_MOD_EXPR.
7559         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
7560         * expr.c (expand_expr_real_1): Ditto.
7561         * tree-inline.c (estimate_num_insns_1): Ditto.
7562         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
7563
7564         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
7565         (vec_unpacks_lo_v4sf): Ditto.
7566         (vec_pack_trunc_v2df): Ditto.
7567         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
7568         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
7569         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
7570
7571         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
7572         vec_pack_mod_v8hi.
7573         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
7574
7575         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
7576         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
7577         packing of floating point operands.
7578         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
7579         represent unpacking of floating point operands.
7580         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
7581         [vec_unpacks_hi]: Ditto.
7582         [vec_unpacks_lo]: Ditto.
7583
7584 2007-04-22  Jan Hubicka  <jh@suse.cz>
7585
7586         * final.c (rest_of_handle_final): Call
7587         targetm.asm_out.constructor/targetm.asm_out.destructor
7588         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
7589         proper priority via decl_*_priority_insert.
7590         * c-common.c (c_expand_body): Likewise.
7591
7592 2007-04-22  Richard Guenther  <rguenther@suse.de>
7593
7594         PR tree-optimization/29789
7595         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
7596         (rewrite_reciprocal): New helper split out from
7597         determine_invariantness_stmt.
7598         (rewrite_bittest): Likewise.
7599         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
7600         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
7601         is not.
7602
7603 2007-04-22  Revital Eres  <eres@il.ibm.com>
7604
7605         * loop-unroll.c (var_to_expand): New field to support also
7606         insns of the form x = something + x.
7607         (analyze_insn_to_expand_var): Use it.
7608         (expand_var_during_unrolling): Likewise.
7609
7610 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
7611
7612         * predict.c: Include pointer-set.h.
7613         (bb_predictions): New variable.
7614         (tree_predicted_by_p, tree_predict_edge,
7615         remove_predictions_associated_with_edge): Use bb_predictions map
7616         instead of bb->predictions.
7617         (clear_bb_predictions, assert_is_empty): New functions.
7618         (combine_predictions_for_bb): Use bb_predictions map.  Call
7619         clear_bb_predictions.
7620         (tree_estimate_probability): Create and free bb_predictions map.
7621         * Makefile.in (predict.o): Add pointer-set.h dependency.
7622         * basic-block.h (struct basic_block_def): Remove predictions
7623         field.
7624         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
7625
7626 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7627
7628         PR target/31480
7629         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
7630         is null.
7631
7632 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7633
7634         * timevar.c (timevar_print): Change reference of --disable-checking to
7635         --enable-checking=release.  Also warn if assert checking is disabled.
7636
7637 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7638
7639         PR C/30265
7640         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
7641         decl as addressable if the compound literal was marked as
7642         addressable.
7643         Mark the decl as a gimple register if it is a complex or
7644         vector decl and does not live in memory.
7645
7646 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7647
7648         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
7649         (GENERIC_NEXT): New function macro.
7650         (PHI_CHAIN): Use phi_node's new chain variable.
7651         (tree_phi_node): Change tree_common to tree_base
7652         and add the chain field.
7653         * tree-phinodes.c (make_phi_node): Don't set
7654         TREE_TYPE on the new node.
7655         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
7656         instead of checking GIMPLE_TUPLE_P in chain_next.
7657         * tree-vect-transform.c
7658         (get_initial_def_for_induction): Look at
7659         PHI_RESULT_TREE for the type of the phi node.
7660         (update_vuses_to_preheader): Use PHI_CHAIN
7661         instead of TREE_CHAIN on the phi node.
7662         * tree-ssa-structalias.c (compute_points_to_sets):
7663         Likewise.
7664         (ipa_pta_execute): Likewise.
7665
7666 2007-04-21  Richard Guenther  <rguenther@suse.de>
7667
7668         PR middle-end/31136
7669         * fold-const.c (fold_unary): Call fold_convert_const on the
7670         original tree.
7671
7672 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
7673
7674         * gcse.c (store_killed_in_insn): Handle PARALLELs.
7675         (store_killed_in_pat): New.
7676
7677 2007-04-20  Richard Henderson  <rth@redhat.com>
7678
7679         PR target/31628
7680         * config/i386/i386.c (type_has_variadic_args_p): Look for any
7681         TREE_LIST with a void_type_node value, not void_list_node exactly.
7682
7683 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
7684
7685         * doc/standards.texi: Re-arrange into language-specific
7686         subsections. Add a C++ section, documenting which standards we
7687         support.
7688
7689 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
7690
7691         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
7692         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
7693
7694 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
7695
7696         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
7697         ecrti.o and crtbegin.o.
7698         (LIB_DEFAULT_SPEC): Include -lc.
7699         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
7700
7701 2007-04-20  Richard Henderson  <rth@redhat.com>
7702
7703         PR target/28623
7704         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
7705         argument; update all callers.
7706         (get_unaligned_offset): New.
7707         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
7708         get_unaligned_address, just pass on the address directly.
7709         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
7710         the subreg in the helper patterns.
7711         (unaligned_extendqidi_le): Use get_unaligned_offset.
7712         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
7713         (unaligned_extendhidi_be): Likewise.
7714         (unaligned_extendhidi): Tidy.
7715         * config/alpha/alpha-protos.h: Update.
7716
7717 2007-04-20  Richard Henderson  <rth@redhat.com>
7718
7719         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
7720         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
7721         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
7722         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7723         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7724         (CPP_SPEC): Don't include %(cpp_subtarget).
7725         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
7726         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
7727         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
7728
7729 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
7730
7731         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
7732         for __builtin_ia32_cmpordss.
7733
7734         PR tree-optimization/31632
7735         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
7736         and arg1 for optimizations of comparison against min/max values.
7737         Fold arg0 to arg1's type for optimizations of comparison against
7738         min+1 and max-1 values.
7739
7740 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
7741
7742         * reload.c (combine_reloads): When trying to use a dying register,
7743         check whether it's uninitialized and don't use if so.
7744
7745 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
7746
7747         * fold-const.c: Remove prototypes for native_encode_expr and
7748         native_interpret_expr.
7749         (native_encode_expr): Make non-static.
7750         (native_interpret_expr): Likewise.
7751         * tree.h: Add prototypes for the above.
7752
7753 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
7754
7755         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
7756         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
7757         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
7758         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
7759         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
7760         Add length attributes.
7761
7762 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
7763
7764         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
7765         not that it is 1.
7766
7767         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
7768         __STDC_WANT_DEC_FP__.
7769
7770 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
7771
7772         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
7773         for long double compatibility.
7774         * configure: Regenerate.
7775
7776 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
7777
7778         PR rtl-optimization/29841
7779         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
7780         trap instructions.
7781         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
7782         that may cause control flow transfer from being moved.
7783
7784 2007-04-18  Jan Hubicka  <jh@suse.cz>
7785
7786         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
7787         types.
7788
7789 2007-04-18  Eric Christopher  <echristo@apple.com>
7790
7791         * config/rs6000/darwin.md (load_macho_picbase): Use link register
7792         only. Update operands.
7793         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
7794         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
7795         link register to pic register.
7796
7797 2007-04-18  Dirk Mueller  <dmueller@suse.de>
7798
7799         PR diagnostic/31227
7800         * tree-vrp.c (search_for_addr_array): New.
7801         (check_array_bounds): Suppress warning about
7802         address taken of array refs if its not de-referenced.
7803
7804 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
7805
7806         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
7807         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
7808
7809         * tree-vectorizer.h (NITERS_KNOWN_P): New.
7810         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
7811         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
7812
7813         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
7814         dump print.
7815         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
7816         print message.
7817         (vect_analyze_scalar_cycles): Fix indentation.
7818         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
7819         (vect_mark_relevant): Include phis in relevance analysis.
7820
7821         * tree-vect-transform.c (vect_transform_loop): Add an assert.
7822
7823 2007-04-18  Anatoly Sokolov <aesok@post.ru>
7824
7825         * config/avr/avr.c (ptrreg_to_str): Replace error() with
7826         output_operand_lossage().
7827
7828 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
7829
7830         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
7831         the unused code for reduction without adjust-in-epilog to simplify the
7832         function.
7833
7834 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
7835
7836         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
7837         (S390_TDC_NEGATIVE_ZERO): New constant.
7838         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
7839         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
7840         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
7841         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
7842         (S390_TDC_POSITIVE_INFINITY): New constant.
7843         (S390_TDC_NEGATIVE_INFINITY): New constant.
7844         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
7845         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
7846         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
7847         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
7848         (S390_TDC_INFINITY): New constant.
7849         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
7850         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
7851         optimization for UNSPEC_CCZ_TO_INT.
7852         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
7853         ("*ccz_to_int"): New insn.
7854         ("isinf<mode>2"): New insn.
7855         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
7856         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
7857         (UNSPEC_CCZ_TO_INT): New constant.
7858
7859 2007-04-18  Richard Guenther  <rguenther@suse.de>
7860
7861         PR tree-optimization/19431
7862         PR tree-optimization/21463
7863         * tree-pass.h (pass_phiprop): Declare.
7864         * passes.c (init_optimization_passes): New phiprop pass.
7865         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
7866         (phivn_valid_p): New helper function.
7867         (phiprop_insert_phi): Likewise.
7868         (propagate_with_phi): Likewise.
7869         (tree_ssa_phiprop): New propagator propagating loads
7870         through phi nodes if profitable.
7871
7872 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
7873
7874         * tree-vect-analyze.c (process_use): New function.
7875         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
7876         Check phis in all bbs.
7877         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
7878         assert.
7879
7880 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
7881
7882         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
7883         we use REG_EQUAL.
7884
7885 2007-04-17  Anatoly Sokolov <aesok@post.ru>
7886
7887         PR target/30483
7888         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
7889         error().
7890
7891 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
7892
7893         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
7894         on "0".
7895         (sse_vmmulv4sf3): Likewise.
7896         (sse2_vmaddv2df3): Likewise.
7897         (sse2_vmmulv2df3): Likewise.
7898
7899 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
7900
7901         PR rtl-optimization/31360
7902         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
7903         (target_reg_cost): New.
7904         (init_set_costs): Initialize target_reg_cost.  Add comments
7905         regarding the rationale of the costs.
7906         (global_cost_for_size): Renamed to...
7907         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
7908         of register pressure.
7909         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
7910         estimate_reg_pressure_cost.  Add number of ivs.
7911         (determine_set_costs): Dump target_reg_cost.
7912         * loop-invariant.c (gain_for_invariant):  Use
7913         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
7914         (best_gain_for_invariant, find_invariants_to_move): Remove
7915         n_inv_uses.
7916         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
7917         (target_reg_cost): Declare.
7918         (global_cost_for_size): Declaration removed.
7919         (estimate_reg_pressure_cost): Declare.
7920
7921 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
7922
7923         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
7924         regnos into even/odd register pairs.
7925         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
7926         TDmode similar to the other floating point modes.
7927         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
7928         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
7929         define_expand's.
7930         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
7931         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
7932         (movdd_hardfloat64): Use TARGET_MFPGPR.
7933
7934 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
7935
7936         * reload1.c (delete_output_reload): Don't count output in n_inherited.
7937
7938         Revert
7939         2005-01-05  Richard Henderson  <rth@redhat.com>
7940         PR rtl-opt/10692
7941         * reload1.c (do_input_reload): Restrict the optimization deleteing
7942         a previous output reload to RELOAD_FOR_INPUT.
7943
7944 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
7945
7946         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
7947         induc_vec_info_type.
7948         (vectorizable_induction): New function declaration.
7949         * tree-vect-transform.c (get_initial_def_for_induction): No need to
7950         check if already vectorized.  Find first place in BB where new stmts
7951         can be inserted.  Takes only one argument.
7952         (vectorizable_induction): New function.
7953         (vect_transform_stmt): Add case for induc_vec_info_type to call
7954         vectorizable_induction.
7955         (vect_transform_loop): Consider phis for vectorization.
7956         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
7957         condition.
7958         (analyze_operations): Call vectorizable_induction when analyzing phis.
7959         Fix comment.
7960         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
7961         (vect_mark_relevant): Include phis in relevance analysis.
7962         (vect_mark_stmts_to_be_vectorize): Likewise.
7963         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
7964
7965 2007-04-16  Lawrence Crowl  <crowl@google.com>
7966
7967         * doc/invoke.texi (Debugging Options): Add documentation for the
7968         -femit-struct-debug options -femit-struct-debug-baseonly,
7969         -femit-struct-debug-reduced, and
7970         -femit-struct-debug-detailed[=...].
7971
7972         * c-opts.c (c_common_handle_option): Add
7973         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
7974         and OPT_femit_struct_debug_detailed_.
7975         * c.opt: Add specifications for
7976         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
7977         and -femit-struct-debug-detailed[=...].
7978         * opts.c (set_struct_debug_option): Parse the
7979         -femit-struct-debug-... options.
7980         * opts.c (matches_main_base, main_input_basename,
7981         main_input_baselength, base_of_path, matches_main_base): Add
7982         variables and functions to compare header base name to compilation
7983         unit base name.
7984         * opts.c (should_emit_struct_debug): Add to determine to emit a
7985         structure based on the option.
7986         (dump_struct_debug) Also disabled function to debug this
7987         function.
7988         * opts.c (handle_options): Save the base name of the
7989         compilation unit.
7990
7991         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
7992         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
7993         This hook indicates if a type is generic.  Set it by default
7994         to "never generic".
7995         * langhooks.h (struct lang_hooks_for_types): Add a new hook
7996         to determine if a struct type is generic or not.
7997         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
7998         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
7999         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
8000         with live C++ hook.
8001
8002         * flags.h (enum debug_info_usage): Add an enumeration to describe
8003         a program's use of a structure type.
8004         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
8005         to indicate the program's usage of the type.  Filter structs based
8006         on the -femit-struct-debug-... specification.
8007         (gen_type_die): Split into two routines, gen_type_die and
8008         gen_type_die_with_usage.  gen_type_die is now a wrapper
8009         that assumes direct usage.
8010         (gen_type_die_with_usage): Replace calls to gen_type_die
8011         with gen_type_die_with_usage adding the program usage of
8012         the referenced type.
8013         (dwarf2out_imported_module_or_decl): Suppress struct debug
8014         information using should_emit_struct_debug when appropriate.
8015
8016 2007-04-16  Ian Lance Taylor  <iant@google.com>
8017
8018         PR tree-optimization/31522
8019         * tree-vrp.c (vr_phi_edge_counts): New static variable.
8020         (vrp_initialize): Allocate vr_phi_edge_counts.
8021         (vrp_visit_phi_node): Don't push to infinity if we saw a new
8022         executable edge.  Drop test for all constants.
8023         (vrp_finalize): Free vrp_phi_edge_counts.
8024
8025         * doc/cpp.texi (Common Predefined Macros): Clarify description of
8026         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
8027
8028         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
8029         predecessors at head rather than tail.
8030
8031 2007-04-16  Matthias Klose  <doko@debian.org>
8032
8033         * config/alpha/linux.h (CPP_SPEC): Define.
8034         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
8035
8036 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
8037
8038         * function.h: Remove sequence_stack extern declaration.
8039
8040 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
8041
8042         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
8043         TARGET_FIDOA.
8044         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
8045         defined.
8046
8047 2007-04-16  Anatoly Sokolov <aesok@post.ru>
8048
8049         * config/avr/avr.c (avr_arch_types): Rearranging  array.
8050         (enum avr_arch): Add.
8051         (avr_mcu_types): Use avr_arch enumeration constants instead of
8052         numbers.
8053         * config/avr/avr.h (LINK_SPEC): Simplify.
8054
8055 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
8056
8057         * config/m68k/m68k.c (m68k_libcall_value,
8058         m68k_function_value): Use macros for register names more.
8059
8060         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
8061         instead.
8062         (M68K_REGNAME): Use A6_REG.
8063         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
8064
8065 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8066
8067         PR middle-end/28071
8068         * sched-int.h (struct deps): Split field 'pending_lists_length' into
8069         'pending_read_list_length' and 'pending_write_list_length'.  Update
8070         comment.
8071         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
8072         to handle two length counters instead of one.  Update all uses.
8073         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
8074         two length counters instead of one.
8075         * sched-rgn.c (propagate_deps): Update to handle two length counters
8076         instead of one.
8077
8078 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
8079
8080         PR target/31582
8081         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
8082         copy of source, pass it to ix86_expand_vector_set and return
8083         it as target.
8084
8085 2007-04-16  David Ung  <davidu@mips.com>
8086             Joseph Myers  <joseph@codesourcery.com>
8087
8088         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
8089         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
8090         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8091         Add 74K processor information.
8092         * config/mips/mips.md: Include 74k.md.
8093         (cpu): Add 74kc,74kf,74kx.
8094         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
8095         * config/mips/74k.md: New.
8096         * doc/invoke.texi (MIPS Options): Document 74K support.
8097
8098 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
8099
8100         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
8101         vectorizable_* functions.
8102         * tree-vect-transform.c (vectorizable_call): Add check for
8103         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
8104         (vectorizable_store): likewise.
8105         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
8106         Add comments.
8107         (vectorizable_operation, vectorizable_type_demotion): Likewise.
8108         (vectorizable_type_promotion, vectorizable_load): Likewise.
8109         (vectorizable_live_operation, vectorizable_condition): Likewise.
8110         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
8111         STMT_VINFO_LIVE_P.
8112         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
8113
8114 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8115
8116         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
8117         register numbers more.
8118         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
8119         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
8120         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
8121         FUNCTION_VALUE_REGNO_P): Likewise.
8122         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
8123         STATIC_CHAIN_REGNUM): Likewise.
8124         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
8125         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
8126         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
8127         * config/m68k/m68k.md (FP_REG): New.
8128
8129 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8130
8131         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
8132         alignment on fido.
8133
8134 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8135
8136         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
8137         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
8138         comment typos.
8139
8140 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
8141
8142         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
8143         cold loops.
8144
8145 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8146
8147         PR c/31520
8148         * c-decl.c (finish_decl): Grab the type of the decl after the call
8149         to store_init_value.
8150
8151 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
8152
8153         * common.opt (fforward-propagate): Fix "Optimization" annotation.
8154
8155 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
8156
8157         PR c++/25874
8158         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
8159         dominators, post dominators and cleanup cfg before returning.
8160
8161 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8162
8163         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
8164         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
8165
8166 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
8167
8168         * config.gcc: Recognize fido.
8169         * config/m68k/m68k-devices.def (fidoa): New.
8170         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
8171         __mfido__.
8172         (FL_FIDOA, TARGET_FIDOA): New.
8173         * config/m68k/m68k.opt (mfidoa): New.
8174
8175 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8176
8177         PR middle-end/31322
8178         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
8179         when a personality function is used.
8180
8181 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
8182
8183         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
8184
8185 2007-04-13  Mike Stump  <mrs@apple.com>
8186
8187         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
8188         we can...
8189         * config/darwin.opt (fapple-kext): Make C++ only.
8190         * config/darwin.c (darwin_override_options): Remove code to ensure
8191         -fapple-kext is given for C++ only.
8192
8193 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
8194
8195         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
8196         * config/mips/mips.c (override_options): Call
8197         SUBTARGET_OVERRIDE_OPTIONS, if defined.
8198
8199 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
8200
8201         * config/i386/i386.opt (msvr3-shlib): Removed.
8202
8203         * doc/invoke.texi: Remove -msvr3-shlib.
8204
8205 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
8206
8207         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
8208         with "popcnt" instruction.
8209
8210 2007-04-13  Richard Guenther  <rguenther@suse.de>
8211
8212         PR tree-optimization/21258
8213         * tree-vrp.c (compare_case_labels): New helper.
8214         (find_switch_asserts): New function.
8215         (find_assert_locations): Call it for SWITCH_EXPRs.
8216
8217 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
8218
8219         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
8220         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
8221         check is now implied in X87_FLOAT_MODE_P.
8222         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
8223         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
8224         (fix_trunc<mode>_i386_fisttp): Ditto.
8225         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
8226         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
8227         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
8228         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
8229         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
8230         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
8231         (unnamed_splitters): Ditto.
8232         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
8233         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
8234         FIRST_SSE_REG for local functions when SSE math is enabled or
8235         for functions with sseregparm attribute.
8236         (standard_80387_constant_p): Return -1 if mode is not
8237         X87_FLOAT_MODE_P.
8238         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
8239         (ix86_expand_compare): Ditto.
8240         (ix86_expand_carry_flag_compare): Ditto.
8241         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
8242         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
8243         DECIMAL_FLOAT_MODE_P.
8244         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
8245         of SCALAR_FLOAT_MODE_P.
8246         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
8247         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
8248         checks before FLOAT_MODE_P.
8249         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
8250         before FLOAT_MODE_P.
8251         [DIV]: Ditto.
8252         [NEG]: Ditto.
8253         [ABS]: Ditto.
8254         [SQRT]: Ditto.
8255         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
8256
8257 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
8258             Charles Wilson  <libtool@cwilson.fastmail.fm>
8259
8260         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
8261         (libgcc.mvars): Don't depend on them.
8262         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
8263         * exec-tool.in: New.
8264
8265 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
8266
8267         * doc/invoke.text (--help): Document --help=common.
8268
8269 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
8270
8271         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
8272
8273 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8274
8275         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
8276         * genemit.c (main): Emit #include "integrate.h".
8277         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
8278         (LOADGP_RTP): New mips_loadgp_style.
8279         * config/mips/mips.h: Include config/vxworks-dummy.h.
8280         (TARGET_RTP_PIC): New macro.
8281         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
8282         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
8283         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
8284         for TARGET_RTP_PIC.
8285         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
8286         -mvxworks-pic when using -mrtp and a PIC option.
8287         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
8288         for RTP PIC.
8289         (mips_symbolic_constant_p, mips_symbolic_address_p)
8290         (mips_symbol_insns): Handle SYMBOL_HALF.
8291         (override_options): Warn about -G and -mrtp being used together.
8292         Initialize mips_lo_relocs[SYMBOL_HALF].
8293         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
8294         (mips_emit_loadgp): Handle LOADGP_RTP.
8295         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
8296         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
8297         (tablejump): Handle function-relative case table entries if
8298         TARGET_RTP_PIC.
8299         * config/mips/predicates.md (symbol_ref_operand): New predicate.
8300
8301 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8302
8303         * config/mips/mips.md (load_call<mode>): Allow any general register.
8304         destination.
8305         (sibcall_value_internal, sibcall_value_multiple_internal)
8306         (call_value_internal, call_value_split, call_value_multiple_internal)
8307         (call_value_multiple_split): Remove constraints from operand 0.
8308
8309 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8310
8311         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
8312         rather than loadgp_noshared.
8313         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
8314         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
8315         gen_loadgp.
8316         * config/mips/mips.md (loadgp): Rename to...
8317         (loadgp_newabi): ...this.
8318         (loadgp_noshared): Rename to...
8319         (loadgp_absolute): ...this.
8320
8321 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8322
8323         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
8324         false for locally-binding symbols.
8325         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
8326
8327 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8328
8329         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
8330         (SYMBOL_GOT_PAGE_OFST): ...this.
8331         (SYMBOL_GOT_GLOBAL): Rename to...
8332         (SYMBOL_GOT_DISP): ...this.
8333         (SYMBOL_GOTOFF_GLOBAL): Rename to...
8334         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
8335         * config/mips/mips.c (mips_global_symbol_p): New function.
8336         (mips_symbol_binds_local_p): Likewise.
8337         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
8338         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
8339         mips_global_symbol_p and mips_symbol_binds_local_p.
8340         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
8341         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
8342         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
8343         SYMBOL_GOTOFF_DISP.
8344         (mips_ok_for_lazy_binding_p): New function.
8345         (mips_load_call_address, mips_expand_call): Use it.
8346         (mips_dangerous_for_la25_p): Likewise.
8347         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
8348         (*got_disp<mode>): Use got_disp_operand instead of
8349         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
8350         SYMBOL_GOTOFF_GLOBAL.
8351         (*got_page<mode>): Use got_page_ofst_operand instead of
8352         local_got_operand.
8353         * config/mips/predicates.md (const_call_insn_operand): Use
8354         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
8355         (global_got_operand): Rename to...
8356         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
8357         SYMBOL_GOT_GLOBAL.
8358         (local_got_operand): Rename to...
8359         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
8360         of SYMBOL_GOT_LOCAL.
8361
8362 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8363
8364         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
8365         TARGET_CALL_CLOBBERED_GP.
8366         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8367         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
8368         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
8369         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
8370         of TARGET_ABICALLS && !TARGET_NEWABI.
8371         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8372         * config/mips/mips.c (mips_load_call_address): Check
8373         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8374         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8375         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8376         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
8377         TARGET_ABICALLS && TARGET_NEWABI.
8378         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
8379         TARGET_ABICALLS.
8380         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
8381         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
8382         TARGET_ABICALLS && TARGET_NEWABI.
8383         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
8384         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
8385         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
8386         whether indirect calls must use $25.
8387         (mips_extra_live_on_entry): Check TARGET_GOT instead of
8388         TARGET_ABICALLS.
8389         * config/mips/mips.md (jal_macro): Check flag_pic and
8390         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
8391         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
8392         instead of TARGET_ABICALLS.
8393         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
8394         TARGET_ABICALLS && TARGET_OLDABI.
8395         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8396         (sibcall): In the comment above the define_insn, mention
8397         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
8398         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
8399         instead of TARGET_ABICALLS.
8400
8401 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
8402
8403         * doc/md.texi (Blackfin family constraints): Document PA and PB.
8404         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
8405         (MACFLAGS_MATCH_P): New macro.
8406         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
8407         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
8408         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
8409         the other MACFLAG constants.
8410         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
8411         (flag_machi): Tighten constraints.  Renumber some of the operands.
8412         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
8413         output template.
8414         (flag_machi_parts_acconly): New pattern.
8415         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
8416         used.
8417         (flag_macinit1hi): Tighten constraints.
8418         (flag_mul_macv2hi_parts_acconly): New pattern.
8419
8420         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
8421         Use a more efficient implementation.
8422         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
8423         inline sequences when not optimizing for size.
8424
8425         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
8426         movhi_high2low): Delete, merge functionality into...
8427         (packv2hi): ... this pattern.
8428
8429         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
8430         * config/bfin/bfin.opt (msim): New option.
8431         (mcpu=): New option.
8432         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
8433         (bfin_cpu_t): Typedef of enum bfin_cpu.
8434         (bfin_cpu_type): New declaration.
8435         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
8436         -msim and -mcpu= options.
8437         (LIB_SPEC): Likewise.
8438         * config/bfin/bfin.c (bfin_cpu_type): Define.
8439         (bfin_handle_option): Handle -mcpu= option.
8440         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
8441         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
8442         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
8443
8444 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8445
8446         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
8447         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
8448         (powerpc-wrs-vxworksae): Use ${tm_file}.
8449         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
8450         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
8451         * config/i386/vx-common.h: New file.
8452
8453 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8454
8455         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
8456         of crt0.o%s.
8457
8458 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
8459
8460         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
8461         ldxtr.
8462
8463 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
8464
8465         PR c++/31078
8466         PR c++/31103
8467         * c-common.c (c_build_qualified_type): Set canonical type
8468         appropriately.
8469
8470 2007-04-12  Richard Guenther  <rguenther@suse.de>
8471
8472         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
8473         lower bound and element size if lower bound is not zero
8474         or either of the ARRAY_REF operands is set.
8475
8476 2007-04-12  Richard Guenther  <rguenther@suse.de>
8477
8478         PR tree-optimization/24689
8479         PR tree-optimization/31307
8480         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
8481         indices by value.
8482         * gimplify.c (canonicalize_addr_expr): To be consistent with
8483         gimplify_compound_lval only set operands two and three of
8484         ARRAY_REFs if they are not gimple_min_invariant.  This makes
8485         it never at this place.
8486         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
8487
8488 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8489
8490         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
8491         null before emitting a .nsubspa directive.
8492
8493 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
8494
8495         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
8496         need_to_partition_p if there are no memory statements in the
8497         function.
8498
8499 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
8500
8501         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
8502         (gcd_of_steps_may_divide_p): New function.
8503         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
8504
8505 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8506
8507         * reload.c (find_reloads_toplev, find_reloads_address,
8508         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
8509         not a pointer equality test, to decide if we need to call
8510         push_reg_equiv_alt_mem.
8511
8512 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
8513
8514         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
8515         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
8516         New.
8517         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
8518
8519 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
8520
8521         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
8522         vector to be positive.
8523
8524 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
8525
8526         PR 30735
8527         PR 31090
8528         * doc/invoke.texi: Document --params max-aliased-vops and
8529         avg-aliased-vops.
8530         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
8531         debug_memory_partitions): Move to tree-flow.h
8532         * params.h (AVG_ALIASED_VOPS): Define.
8533         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
8534         users.
8535         (mp_info_t): Likewise.
8536         (get_mem_sym_stats_for): New.
8537         (set_memory_partition): Move from tree-flow-inline.h.
8538         (mark_non_addressable): Only clear the set of symbols for the
8539         partition if it exists.
8540         (dump_memory_partitions): Move from tree-ssa-operands.c
8541         (debug_memory_partitions): Likewise.
8542         (need_to_partition_p): New.
8543         (dump_mem_ref_stats): New.
8544         (debug_mem_ref_stats): New.
8545         (dump_mem_sym_stats): New.
8546         (debug_mem_sym_stats): New.
8547         (update_mem_sym_stats_from_stmt): New.
8548         (compare_mp_info_entries): New.
8549         (mp_info_cmp): Call it.
8550         (sort_mp_info): Change argument to a list of mem_sym_stats_t
8551         objects.
8552         (get_mpt_for): Move from tree-ssa-operands.c.
8553         (find_partition_for): New.
8554         (create_partition_for): Remove.
8555         (estimate_vop_reduction): New.
8556         (update_reference_counts): New.
8557         (build_mp_info): New.
8558         (compute_memory_partitions): Refactor.
8559         Document new heuristic.
8560         Call build_mp_info, update_reference_counts,
8561         find_partition_for and estimate_vop_reduction.
8562         (compute_may_aliases): Populate virtual operands before
8563         calling debugging dumps.
8564         (delete_mem_sym_stats): New.
8565         (delete_mem_ref_stats): New.
8566         (init_mem_ref_stats): New.
8567         (init_alias_info): Call it.
8568         (maybe_create_global_var): Remove alias_info argument.
8569         Get number of call sites and number of pure/const call sites
8570         from gimple_mem_ref_stats().
8571         (dump_alias_info): Call dump_memory_partitions first.
8572         (dump_points_to_info_for): Show how many times a pointer has
8573         been dereferenced.
8574         * opts.c (decode_options): For -O2 set --param
8575         max-aliased-vops to 500.
8576         For -O3 set --param max-aliased-vops to 1000 and --param
8577         avg-aliased-vops to 3.
8578         * fortran/options.c (gfc_init_options): Remove assignment to
8579         MAX_ALIASED_VOPS.
8580         * tree-flow-inline.h (gimple_mem_ref_stats): New.
8581         * tree-dfa.c (dump_variable): Dump memory reference
8582         statistics.
8583         Dump NO_ALIAS* settings.
8584         (referenced_var_lookup): Tidy.
8585         (mem_sym_stats): New.
8586         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
8587         and ORIG are different SSA names for a memory partition.
8588         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
8589         * tree-flow.h (struct mem_sym_stats_d): Define.
8590         (mem_sym_stats_t): Define.
8591         (struct mem_ref_stats_d): Define.
8592         (struct gimple_df): Add field mem_ref_stats.
8593         (enum noalias_state): Define.
8594         (struct var_ann_d): Add bitfield noalias_state.
8595         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
8596         debug_mem_ref_stats, debug_memory_partitions,
8597         debug_mem_sym_stats): Declare.
8598         * tree-ssa-structalias.c (update_alias_info): Update call
8599         sites, pure/const call sites and asm sites in structure
8600         returned by gimple_mem_ref_stats.
8601         Remove local variable IS_POTENTIAL_DEREF.
8602         Increase NUM_DEREFS if the memory expression is a potential
8603         dereference.
8604         Call update_mem_sym_stats_from_stmt.
8605         If the memory references memory, call
8606         update_mem_sym_stats_from_stmt for all the direct memory
8607         symbol references found.
8608         (intra_create_variable_infos): Set noalias_state field for
8609         pointer arguments according to the value of
8610         flag_argument_noalias.
8611         * tree-ssa-structalias.h (struct alias_info): Remove fields
8612         num_calls_found and num_pure_const_calls_found.
8613         (update_mem_sym_stats_from_stmt): Declare.
8614         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
8615         Set default value to 100.
8616         (PARAM_AVG_ALIASED_VOPS): Define.
8617
8618 2007-04-11  Richard Guenther  <rguenther@suse.de>
8619
8620         PR middle-end/31530
8621         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
8622         a * -b + c as c - a * b if we honor sign dependent rounding.
8623
8624 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8625
8626         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
8627         bfin_expand_strmov.
8628         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
8629         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
8630         variables.
8631         (initialize_trampoline): Don't use old-style function definition.
8632         (bfin_secondary_reload): Mark IN_P argument as unused.
8633
8634 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
8635
8636         PR tree-optimization/31343
8637         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
8638         (build_polynomial_chrec): Return a scalar when the evolution is zero.
8639         * testsuite/gcc.dg/vect/pr31343.c: New.
8640
8641 2007-04-10  Eric Christopher  <echristo@apple.com>
8642
8643         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
8644         * config/i386/i386.md (*cmpfp0): Use.
8645         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
8646         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
8647         (fix_trunc<mode>_i386_fisttp): Ditto.
8648         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
8649         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
8650         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
8651         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
8652         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
8653         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
8654         (unnamed_splitters): Ditto.
8655         * config/i386/i386.c (output_fix_trunc): Assert that
8656         we're not being passed a TFmode operand.
8657
8658 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
8659
8660         PR tree-optimization/31526
8661         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
8662         n_basic_blocks to find newly added blocks.
8663
8664 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
8665
8666         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
8667         alternative.
8668         (fix_trunc<mode>si_sse): Ditto.
8669         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
8670         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
8671         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
8672         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
8673         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
8674         expander using SSEMODEF mode macro.
8675         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
8676         expander using SSEMODEF mode macro.
8677         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
8678         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
8679         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
8680         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
8681         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
8682         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
8683         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
8684         Macroize insn using X87MODEF mode macro.
8685
8686 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
8687
8688         * config/i386/sse.md (sse2_pinsrw): Removed.
8689         (sse2_pextrw): Renamed to ...
8690         (*sse2_pextrw): This.
8691
8692 2007-04-09  Jan Hubicka  <jh@suse.cz>
8693
8694         PR target/27869
8695         * config/i386/sse.md
8696         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
8697         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
8698         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
8699         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
8700
8701 2007-04-09  Jan Hubicka  <jh@suse.cz>
8702
8703         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
8704         multiple fields of union.
8705
8706 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
8707
8708         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
8709         (create_preheaders): Check that loops are available.
8710         (fix_loop_structure): Clean up, improve comments.
8711         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
8712         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
8713         state flags.
8714         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
8715         * predict.c (tree_estimate_probability): Do not call
8716         calculate_dominance_info.  Call create_preheaders.
8717         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
8718         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
8719         flags.
8720         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
8721         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
8722         * tree-cfg.c (tree_split_edge): Make an assert more precise.
8723         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
8724         arguments.
8725
8726 2007-04-08  Jan Hubicka  <jh@suse.cz>
8727
8728         * tree.h (maybe_fold_offset_to_component_ref): Declare.
8729         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
8730         * fold-const.c (fold_unary): Use it.
8731
8732 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8733
8734         * varasm.c (assemble_variable): Remove call to
8735         lang_hooks.decls.prepare_assemble_variable.
8736         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
8737         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
8738         * langhooks.h (lang_hooks_for_decls): Remove
8739         prepare_assemble_variable.
8740
8741 2007-04-08  Mike Stump  <mrs@apple.com>
8742
8743         * config/i386/i386.c: Use inc/dec on Core2.
8744
8745 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
8746
8747         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
8748         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
8749         lhd_tree_inlining_end_inlining): Remove.
8750         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
8751         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
8752         end_inlining hooks.
8753         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
8754         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
8755         lhd_tree_inlining_end_inlining): Remove prototypes.
8756         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
8757         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
8758         LANG_HOOKS_TREE_INLINING_START_INLINING,
8759         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
8760
8761         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
8762         not set it.
8763
8764 2007-04-08  Anatoly Sokolov <aesok@post.ru>
8765
8766         PR target/29932
8767         * config/avr/predicates.md (io_address_operand): Delete predicate.
8768         (low_io_address_operand): Don't use 'mode' argument.
8769         (higth_io_address_operand): Rename ...
8770         (high_io_address_operand): ... to this. Don't use 'mode' argument.
8771         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
8772         for above change.
8773
8774 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
8775
8776         Revert change removing staticp.
8777
8778 2007-04-07  Anatoly Sokolov <aesok@post.ru>
8779
8780         PR target/30289
8781         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
8782         earlyclobber.
8783
8784 2007-04-07  Bruce Korb  <bkorb@gnu.org>
8785
8786         * c.opt: Add -Wformat-contains-nul.
8787         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
8788           -Wformat setting.
8789         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
8790         the NUL byte warning.
8791
8792 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8793
8794         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
8795
8796 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
8797
8798         * tree.c (staticp): No longer use staticp langhook.
8799         * langhooks.c (lhd_staticp): Removed.
8800         * langhooks.h (struct lang_hooks): Remove staticp.
8801         * c-common.c (c_staticp): Remove.
8802         * c-common.h (c_staticp): Ditto.
8803         * langhooks-defs.h (lhd_staticp): Ditto.
8804         (LHD_HOOKS_STATICP): Ditto
8805         * tree.h (gcc_assert_lowered): New macro.
8806
8807 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
8808
8809         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
8810         argument "reliable".
8811         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
8812         Add argument "reliable".  Propagate it through calls.
8813         (infer_loop_bounds_from_undefined):  Derive number of iterations
8814         estimates from references in blocks that do not dominate loop latch.
8815         (gcov_type_to_double_int): New function.
8816         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
8817         and expected_loop_iterations_unbounded.
8818         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
8819         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
8820         * tree-data-ref.c (estimated_loop_iterations): Export.
8821         (get_references_in_stmt): Fix -- do not return addresses of local
8822         objects.
8823         * cfgloop.h (expected_loop_iterations_unbounded,
8824         estimated_loop_iterations): Declare.
8825
8826 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
8827
8828         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
8829
8830 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
8831
8832         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
8833         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
8834         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
8835         Use output_387_reg_move().
8836         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
8837         expander using X87MODEF12 mode macro.
8838         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
8839         choosing register preferences.  Use output_387_reg_move().
8840         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
8841         instead of "x".  Use output_387_reg_move().
8842         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
8843         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
8844         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
8845         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
8846         Use output_387_reg_move().
8847         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
8848         mode macro.
8849         (*truncxf?f_i387 splitter): Ditto.
8850
8851 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
8852
8853         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
8854         LANG_HOOKS_SAFE_FROM_P.
8855         * expr.c (safe_from_p): Remove langhook call.
8856         * langhooks.h (lang_hooks): Remove safe_from_p.
8857         (lhd_safe_from_p): Remove prototype.
8858         * langhooks.c (lhd_safe_from_p): Remove.
8859
8860 2007-04-06  Jan Hubicka  <jh@suse.cz>
8861
8862         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
8863         functions.
8864
8865 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
8866
8867         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
8868         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
8869         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
8870         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
8871         alternative.
8872         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
8873         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
8874
8875 2007-04-05  Richard Henderson  <rth@redhat.com>
8876
8877         * config/alpha/alpha.c (print_operand) [+]: Remove.
8878         (alpha_end_function): Print nop if call at end of function.
8879         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
8880         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
8881         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
8882         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
8883         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
8884         the call pattern. Update peepholes to match.
8885
8886 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
8887
8888         * doc/extend.texi (Other Builtins): Add decimal float variants
8889         of signbit.
8890         * builtins.def: Ditto.
8891         * builtins.c (expand_builtin): Ditto.
8892
8893 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
8894             H.J. Lu  <hongjiu.lu@intel.com>
8895
8896         PR target/31478
8897         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
8898         of V8HImode when calling ix86_binary_operator_ok.
8899         (sse2_pmaddwd): Call ix86_binary_operator_ok.
8900         (sdot_prodv8hi): Operands 1 and 2 must be register.
8901
8902 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
8903
8904         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
8905         initialize align to silence bogus warning.
8906
8907 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
8908
8909         PR middle-end/22156
8910         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
8911         all_no_warning.
8912         (struct sra_walk_fns): Remove use_all parameter from use.
8913         (sra_hash_tree): Handle BIT_FIELD_REFs.
8914         (sra_elt_hash): Don't hash bitfld blocks.
8915         (sra_elt_eq): Skip them in parent compares as well.  Handle
8916         BIT_FIELD_REFs.
8917         (sra_walk_expr): Don't maintain or pass down use_all_p.
8918         (scan_use): Remove use_all parameter.
8919         (scalarize_use): Likewise.  Re-expand assignment to
8920         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
8921         output, and re-scalarize after output.  Don't mark anything
8922         for no warning.
8923         (scalarize_ldst): Adjust.
8924         (scalarize_walk_gimple_modify_statement): Likewise.
8925         (build_element_name_1): Handle BIT_FIELD_REFs.
8926         (instantiate_element): Don't warn for any element whose parent
8927         is used as a whole.
8928         (instantiate_missing_elements_1): Return the sra_elt.
8929         (canon_type_for_field): New.
8930         (try_instantiate_multiple_fields): New.
8931         (instantiate_missing_elemnts): Use them.
8932         (mark_no_warning): Removed.
8933         (generate_one_element_ref): Handle BIT_FIELD_REFs.
8934         (REPLDUP, sra_build_elt_assignment): New.
8935         (generate_copy_inout): Use them.
8936         (generate_element_copy): Likewise.  Handle bitfld differences.
8937         (generate_element_zero): Don't recurse for blocks.  Use
8938         sra_build_elt_assignment.
8939         (generate_one_element_int): Take elt instead of var.  Use
8940         sra_build_elt_assignment.
8941         (generate_element_init_1): Adjust.
8942         (scalarize_use, scalarize_copy): Use REPLDUP.
8943         (scalarize_ldst): Move assert before dereference.
8944         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
8945
8946 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
8947
8948         * regmove.c: Fix unused variable warnings due to previous commit.
8949
8950 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
8951
8952         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
8953         (regmove_bb_head): Remove.
8954         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
8955         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
8956         problems with fixup_match_1.
8957         Don't initialize/free regmove_bb_head.
8958
8959         (reg_is_remote_constant_p): If an insn is in the same basic block
8960         but not before INSN, consider it remote, too.
8961
8962 2007-04-05  Anatoly Sokolov <aesok@post.ru>
8963
8964         PR target/25448
8965         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
8966         DECL_ASSEMBLER_NAME, not the DECL_NAME.
8967
8968 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
8969
8970         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
8971         (CONDITIONAL_REGISTER_USAGE): Likewise.
8972
8973 2007-04-04  Richard Henderson  <rth@redhat.com>
8974
8975         * config/alpha/lib1funcs.asm: Remove unused file.
8976
8977 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
8978
8979         PR other/31356
8980         * opts.c (print_specific_help): Fix --help=<language>
8981         header line.
8982         (common_handle_option): Support --help=common.
8983
8984 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
8985
8986         PR other/31353
8987         * gcc.c (main): Do not run the linker if
8988         print_subprocess_help indicates that it shouldn't be
8989         run.
8990
8991 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
8992
8993         PR doc/31355
8994         * doc/invoke.texi (--help=): Document <languages> value, fix
8995         formatting in tables of values.
8996
8997 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
8998
8999         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
9000         dllimport attribute of virtual methods.
9001
9002 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
9003
9004         * config/score/crti.asm: Change _bss_start to __bss_start.
9005         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
9006         (OUTGOING_REG_PARM_STACK_SPACE) update.
9007         * config/score/score.opt: add options to make backend support
9008         score5, score5u, score7 and score7d.
9009         * config/score/score.md: Likewise.
9010         * config/score/misc.md: Likewise.
9011         * config/score/mac.md: Likewise.
9012         * doc/invoke.texi: Likewise.
9013         * doc/md.texi: update constraints define.
9014
9015 2007-04-03  Richard Henderson  <rth@redhat.com>
9016
9017         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
9018         an appropriate type, use the mode instead.
9019
9020 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
9021
9022         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
9023         Set the default --with-arch setting to mips2.
9024         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
9025         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
9026         (MULTILIB_OSDIRNAMES): Delete.
9027         (MULTILIB_DIRNAMES): Define.
9028         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
9029         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
9030         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
9031         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
9032         VXWORKS_OS_CPP_BUILTINS.
9033         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
9034         (MIPS_DEBUGGING_INFO): Undefine.
9035         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
9036
9037 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
9038
9039         PR middle-end/30704
9040         * fold-const.c (native_encode_real): Encode real.c provided longs
9041         as a series of 32-bit native integers.
9042         (native_interpret_real): Interpret buffer as a series of 32-bit
9043         native integers.
9044
9045 2007-04-03  Richard Guenther  <rguenther@suse.de>
9046
9047         * genpreds.c (write_insn_constraint_len): Write function
9048         optimized for CONSTRAINT_LEN implementation.
9049         (write_tm_preds_h): Output insn_constraint_len inline and
9050         use it for CONSTRAINT_LEN.
9051         (write_insn_preds_c): Don't output insn_constraint_len.
9052         * doc/md.texi (define_register_constraint): Document multi-letter
9053         constraints shall have the same length if they start with the same
9054         letter.
9055
9056 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
9057
9058         PR target/31175
9059         * config/i386/i386.md (isinf<mode>2): Expand only when
9060         TARGET_C99_FUNCTIONS is set.
9061
9062 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
9063
9064         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
9065         (x86_64-*-linux*): Ditto.
9066         * config/i386/i386.opt (mpc): New option.
9067         * config/i386/i386.c (overrride_options): Handle
9068         ix87_precision_string.
9069         * config/i386/crtprec.c: New file.
9070         * config/i386/t-crtpc: Ditto.
9071         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
9072         and -mpc80 options.
9073         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
9074         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
9075         crtprec32.o, crtprec64.o and crtprec80.o.
9076
9077         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
9078         and -mpc80 options.
9079         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
9080
9081 2007-04-02  Eric Christopher  <echristo@apple.com>
9082
9083         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
9084         limitations on darwin.
9085
9086 2007-04-02  Anatoly Sokolov <aesok@post.ru>
9087
9088         PR target/31137
9089         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
9090
9091 2007-04-02  Dave Korn  <dave.korn@artimi.com>
9092
9093         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
9094
9095 2007-04-02  Dave Korn  <dave.korn@artimi.com>
9096
9097         * libgcc2.h (exception_descriptor): Don't forward-declare.
9098         (__get_eh_table_language, __get_eh_table_version): Delete
9099         prototypes of long-dead functions.
9100
9101 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
9102
9103         * ebitmap.h: New file
9104         * ebitmap.c: New file
9105         * Makefile.in (ebitmap.o): New target.
9106
9107 2007-04-01  Jan Hubicka  <jh@suse.cz>
9108
9109         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
9110         before very first instruction.
9111
9112 2007-04-01  Jan Hubicka  <jh@suse.cz>
9113
9114         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
9115         waring on 64bit hosts.
9116         * bitmap.h: Fix typo in bitmap_head_def.
9117
9118 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9119
9120         PR rtl-optimization/31391
9121         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
9122         into a DELETED_LABEL note, and the label is in an empty basic
9123         block, update BB_END as well as BB_HEAD.
9124
9125 2007-04-01  Richard Henderson  <rth@redhat.com>
9126
9127         PR tree-optimization/31169
9128         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
9129         to varying if the range is outside [0,  prec-1].
9130
9131 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
9132
9133         PR target/31388
9134         * config/mips/mips.md (load_const_gp): New insn.
9135         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
9136         the MIPS16 GP pseudo register if no_new_pseudos.
9137         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
9138
9139 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9140
9141         PR target/31364
9142         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
9143         secureplt.
9144         (call_value): Likewise.
9145
9146 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
9147             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9148
9149         PR 14737
9150         * doc/invoke.texi: (optimization options): Reword description
9151         of -ffast-math. Document its primary purpose.
9152
9153 2007-03-31  Richard Guenther  <rguenther@suse.de>
9154
9155         * omp-low.c (splay-tree.h): Include.
9156         (lookup_decl): Replace splay-tree usage by pointer-map.
9157         (maybe_lookup_decl): Likewise.
9158         (new_omp_context): Likewise.
9159         (delete_omp_context): Likewise.
9160         * gimplify.c (splay-tree.h): Include.
9161         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
9162         pointer-map.
9163         (remap_ssa_name): Likewise.
9164         (remap_decl): Likewise.
9165         (remap_type_1): Likewise.
9166         (remap_type): Likewise.
9167         (copy_body_r): Likewise.
9168         (expand_call_inline): Likewise.
9169         (clone_body): Likewise.
9170         (copy_tree_r): Likewise.
9171         (remap_save_expr): Likewise.
9172         (unsave_r): Likewise.
9173         (unsave_expr_now): Likewise.
9174         (tree_function_versioning): Likewise.
9175         (build_duplicate_type): Likewise.
9176         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
9177         (struct copy_body_data): Replace splay-tree by pointer-map.
9178         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
9179         not $(SPLAY_TREE_H).
9180         (gimplify.o): Depend on $(SPLAY_TREE_H).
9181         (omp-low.p): Likewise.
9182
9183 2007-03-31  Anatoly Sokolov <aesok@post.ru>
9184
9185         * config/avr/predicates.md (even_register_operand,
9186         odd_register_operand): New predicates.
9187         * config/avr/avr.md (movw peephole2): New.
9188         (movw_r peephole2): New.
9189
9190 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
9191
9192         * tree.h (get_signed_or_unsigned_type): New.
9193         * fold-const.c (operand_equal_for_comparison_p): Use
9194         get_signed_or_unsigned_type instead of
9195         lang_hooks.types.signed_or_unsigned_type.
9196         * expr.c (store_expr): Ditto.
9197         * langhooks.c (get_signed_or_unsigned_type): New.
9198         (lhd_signed_or_unsigned_type): New.
9199         * langhooks.h (lhd_signed_or_unsigned_type): New.
9200         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
9201
9202 2007-03-30  Richard Henderson  <rth@redhat.com>
9203
9204         * tree-ssa-loop-ivopts.c: Include target.h.
9205         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
9206         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
9207         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
9208         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
9209
9210 2007-03-30  Richard Henderson  <rth@redhat.com>
9211             Kai Tietz  <kai.tietz@onevision.com>
9212
9213         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
9214         default for 64-bit.
9215         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
9216         (TARGET_64BIT_MS_ABI): New.
9217         (DBX_REGISTER_NUMBER): Handle 64-bit.
9218         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
9219         (LONG_TYPE_SIZE): Force to 32.
9220         (REG_PARM_STACK_SPACE): New.
9221         (OUTGOING_REG_PARM_STACK_SPACE): New.
9222         (REGPARM_MAX, SSE_REGPARM_MAX): New.
9223         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9224         (STACK_BOUNDARY): Use 128 for 64-bit.
9225         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
9226         Add 64-bit implementation.
9227         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
9228         argument unused.
9229         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
9230         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
9231         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
9232         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
9233         (ix86_handle_cconv_attribute): Don't warn when ignoring if
9234         TARGET_64BIT_MS_ABI.
9235         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
9236         (ix86_pass_by_reference): Likewise.
9237         (ix86_function_value_regno_p): Likewise.
9238         (ix86_build_builtin_va_list): Likewise.
9239         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
9240         (function_arg_advance_ms_64): New.
9241         (function_arg_advance): Call it.
9242         (function_arg_ms_64): New.
9243         (function_arg): Call it.
9244         (function_value_ms_64): New.
9245         (ix86_function_value_1): Call it.
9246         (return_in_memory_ms_64): New.
9247         (ix86_return_in_memory): Call it.
9248         (setup_incoming_varargs_ms_64): New.
9249         (ix86_setup_incoming_varargs): Call it.
9250         (ix86_expand_prologue): Handle 64-bit stack probing.
9251         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
9252         (output_pic_addr_const): Likewise.
9253         (x86_this_parameter): Likewise.
9254         (x86_output_mi_thunk): Likewise.
9255         (x86_function_profiler): Likewise.
9256         (TARGET_STRICT_ARGUMENT_NAMING): New.
9257         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
9258         (TARGET_64BIT_MS_ABI): New.
9259         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
9260         * config/i386/i386.md (allocate_stack_worker): Remove.
9261         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
9262         describe the clobber of eax without a match_scratch.
9263         (allocate_stack_worker_postreload): Remove.
9264         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
9265         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
9266         (allocate_stack_worker_rex64_postreload): Remove.
9267         (allocate_stack): Handle 64-bit.
9268         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
9269         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
9270         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
9271         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
9272         (STANDARD_STARTFILE_PREFIX_1): Likewise.
9273         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
9274         * config.build (x86_64-*-mingw*): New host.
9275         * config.host (x86_64-*-mingw*): New host.
9276         * config.gcc (x86_64-*-mingw*): New target.
9277         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
9278
9279 2007-03-30  Richard Henderson  <rth@redhat.com>
9280             Kai Tietz  <kai.tietz@onevision.com>
9281
9282         * c-pragma.c (struct def_pragma_macro_value): New.
9283         (struct def_pragma_macro): New.
9284         (pushed_macro_table): New.
9285         (dpm_hash, dpm_eq): New.
9286         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
9287         (init_pragma): Install them.
9288         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9289
9290 2007-03-30  Anatoly Sokolov <aesok@post.ru>
9291
9292         * config/avr/avr.c (avr_override_options): Clear
9293         'flag_delete_null_pointer_checks'.
9294
9295 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
9296
9297         PR c++/26099
9298         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
9299         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
9300         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
9301         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
9302         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
9303         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
9304         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
9305         C++ extensions.
9306         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
9307
9308 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
9309
9310         * regmove.c: Move all of pass_stack_adjustments from here...
9311         * combine-stack-adj.c: ...to this new file.
9312         * Makefile.in: Add rules for combine-stack-adj.o.
9313
9314 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
9315
9316         PR tree-optimization/31383
9317         * tree-data-ref.c (affine_function_equal_p): Do not require the
9318         vectors to have the same length.
9319
9320 2007-03-30  Jan Hubicka  <jh@suse.cz>
9321
9322         PR middle-end/30700
9323         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
9324         availablility; add more sanity checking; ask varpool only about
9325         VAR_DECL.
9326
9327 2007-03-29  Richard Henderson  <rth@redhat.com>
9328
9329         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
9330         to decide, but __SIZEOF_LONG_LONG__.
9331
9332 2007-03-29  Richard Henderson  <rth@redhat.com>
9333
9334         * emutls.c (struct __emutls_array): New.
9335         (emutls_destroy): Use it instead of casting element 0 from void*.
9336         (__emutls_get_address): Likewise.
9337
9338 2007-03-29  Richard Henderson  <rth@redhat.com>
9339
9340         * varasm.c (initializer_constant_valid_p): Don't deny
9341         DECL_DLLIMPORT_P on functions.
9342
9343         * config/i386/cygming.h: Remove function declarations.
9344         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
9345         (ASM_OUTPUT_LABELREF): Remove.
9346         (COMMON_ASM_OP): Remove.
9347         (ASM_OUTPUT_COMMON): Remove.
9348         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
9349         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
9350         (ASM_DECLARE_FUNCTION_NAME): Likewise.
9351         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
9352         Rename from TARGET_ENCODE_SECTION_INFO.
9353         * config/i386/netware.h: Likewise.
9354         * config/i386/i386-protos.h: Update.
9355         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
9356         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
9357         (legitimate_constant_p): Reject dllimports.
9358         (dllimport_map, get_dllimport_decl): New.
9359         (legitimize_dllimport_symbol): New.
9360         (legitimize_address, ix86_expand_move): Use it.
9361         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
9362         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
9363         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
9364         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
9365         * config/i386/predicates.md (constant_call_address_operand): Only
9366         accept symbols; reject dllimport_p symbols.
9367         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
9368         i386_pe_maybe_record_exported_symbol.
9369         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
9370         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
9371         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
9372         trust the setting of DECL_DLLIMPORT_P.
9373         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
9374         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
9375         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
9376         tidy the argument scanning loop.
9377         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
9378         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
9379         (i386_pe_strip_name_encoding): Remove.
9380         (i386_pe_binds_local_p): New.
9381         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
9382         (i386_pe_output_labelref): Remove.
9383         (i386_pe_asm_output_aligned_decl_common): New.
9384         (i386_pe_maybe_record_exported_symbol): Rename from
9385         i386_pe_record_exported_symbol; check for dllexported symbols.
9386
9387 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
9388
9389         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
9390         add comment explaining why vsnprintf cannot be used.
9391
9392 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
9393
9394         PR tree-optimization/30666
9395         * tree.c (build_complex_type): When creating type names for DWARF2
9396         debug info, create TYPE_DECLs for TYPE_NAME instead of
9397         IDENTIFIER_NODEs.
9398         (build_common_tree_nodes_2): Use build_complex_type when building
9399         predefined complex types, to preserve canonical types.
9400
9401 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
9402
9403         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
9404         (noce_get_alt_condition): Look at it to determine whether to
9405         reverse the condition or not.
9406         (noce_get_condition): Substitute the truth for lies.
9407         (noce_find_if_block): Set the then_else_reversed field.
9408
9409 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
9410
9411         * config/fr30/fr30.md (movdi): Do not accept immediates as the
9412         destination of this insn.
9413         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
9414         than calling gen_rtx_SET directly.  Use r0 to hold the value of
9415         'address + 4' rather than a stack based temporary which can be
9416         mis-optimized away.
9417
9418 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
9419
9420         * config/s390/s390.c (s390_secondary_input_reload_class,
9421         s390_secondary_output_reload_class): Functions removed.
9422         (s390_secondary_reload): New function.
9423         (TARGET_SECONDARY_RELOAD): Target macro defined.
9424         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
9425         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
9426         * config/s390/s390.md ("reload_outti", "reload_outdi",
9427         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
9428         "reload_out<mode>"): Expanders removed.
9429         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
9430         "reload<mode>_nonoffmem_out"): Expanders added.
9431
9432 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
9433
9434         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
9435         action if SRC->DEST replacement failed anyway.
9436
9437 2007-03-28  Mike Stump  <mrs@apple.com>
9438
9439         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
9440         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
9441         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
9442
9443 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9444
9445         * config.gcc: Accept barcelona as a variant of amdfam10.
9446         * config/i386/i386.c (override_options): Likewise.
9447         * doc/invoke.texi: Likewise.
9448
9449 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
9450
9451         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
9452         offsets for BIT_FIELD_REF and COMPONENT_REF.
9453
9454 2007-03-28  Richard Guenther  <rguenther@suse.de>
9455
9456         * tree.c (is_global_var): Move ...
9457         * tree-flow-inline.h (is_global_var): ... here.
9458         * tree.h (is_global_var): Remove declaration.
9459
9460 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
9461
9462         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
9463         option.
9464         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
9465         * config/i386/i386.c (ix86_tune_features): Initialize new
9466         tuning option.
9467         * config/i386/predicates.md (promotable_binary_operator): Use
9468         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
9469
9470 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
9471
9472         PR target/31380
9473         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
9474
9475 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
9476
9477         * config/fr30/fr30.md (movsi_internal): Change destination
9478         constraint from m to V and add m to the end.
9479
9480 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9481
9482         * config/sh/sh.md (movsi_i): Fix type attribute.
9483
9484 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9485
9486         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
9487         (movsf_ie): Likewise.
9488
9489 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9490
9491         * config.gcc: Add sh4-300 to multilib.
9492         * config/sh/t-mlib-sh4-300: New file.
9493
9494 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
9495
9496         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
9497         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
9498         fix_trunc<mode>di2.
9499         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
9500         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
9501         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
9502         "fixuns_trunctddi2"): Whitespace fix.
9503
9504 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
9505
9506         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
9507         the definition of struct sh_args.
9508         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
9509         CALL_COOKIE_INT_REG_GET): Likewise.
9510
9511 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
9512
9513         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
9514         transformations are applied successfully.
9515
9516 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
9517
9518         * tree.c (tree_contains_struct): Permit 512 tree codes.
9519         * tree.h (tree_contains_struct): Ditto.
9520         (MAX_TREE_CODES): Ditto.
9521         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
9522         SPARE member to store remaining padding bits.
9523
9524 2007-03-27  Anatoly Sokolov <aesok@post.ru>
9525
9526         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
9527         architecture.
9528
9529 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
9530
9531         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
9532         * configure: Regenerate.
9533
9534         * configure: Regenerate using the correct version of autoconf.
9535
9536 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
9537
9538         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
9539         pointer regs.
9540         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
9541         regs to "__SP_L__" and "__SP_H__".
9542
9543 2007-03-27  Richard Guenther  <rguenther@suse.de>
9544
9545         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
9546         computations with it with a HOST_WIDE_INT variable.
9547
9548 2007-03-26  Mike Stump  <mrs@apple.com>
9549
9550         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
9551         objective-c-header, objective-c++-header and objc++-cpp-output
9552         support.
9553         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9554
9555 2007-03-26  Richard Henderson  <rth@redhat.com>
9556
9557         PR target/31361
9558         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
9559         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
9560         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
9561         IX86_BUILTIN_PSRLQ128): New.
9562         (ix86_init_mmx_sse_builtins): Add them.
9563         (ix86_expand_builtin): Expand them.
9564         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
9565         operand 2 be TImode.
9566         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
9567         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
9568         _mm_srli_epi64): Mark __B const.
9569         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
9570         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
9571         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
9572         new two-vector shift builtins.
9573
9574 2007-03-26  Ian Lance Taylor  <iant@google.com>
9575
9576         PR tree-optimization/31345
9577         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
9578         [+INF, +INF(OVF)] into VARYING.
9579
9580 2007-03-26  Zack Weinberg  <zackw@panix.com>
9581
9582         * gengtype-parse.c: New file.
9583         * gengtype-yacc.y: Delete.
9584         * gengtype-lex.l: Don't include gengtype-yacc.h.
9585         Define YY_DECL and yyterminate appropriately for recursive
9586         descent parser.  yylval is now a string out-parameter to yylex.
9587         (HWS, EOID): New shorthand.
9588         (IWORD): Add a couple more types.
9589         (yylex): Add a setup stanza.  Remove the complex rules for
9590         detecting GTY'ed types and typedefs; replace with simple
9591         keyword detectors.  Adjust everything for the changed
9592         definition of yylval.  Ignore all pp-directives, not just #define.
9593         (yyerror): Delete.
9594         (parse_file): Rename yybegin; do not call yyparse.
9595         (yyend): New.
9596         * gengtype.c (xasprintf): Export again.
9597         (this_file): New.  Use everywhere __FILE__ was being used.
9598         (get_lang_bitmap): Special case types defined in gengtype.c.
9599         (do_typedef, new_structure): Suppress definition of certain types.
9600         (new_structure): Improve diagnostics of duplicate definitions.
9601         Make sure location_s is associated with input.h.
9602         (nreverse_pairs, define_location_structures): New functions.
9603         (main): Improve tagging of kludge types.  Remove old kludges
9604         for input.h types; use define_location_structures.
9605         * gengtype.h: Update prototypes.  Define token codes here.
9606         * Makefile.in: Remove all references to gengtype-yacc.
9607         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
9608         and gengtype.
9609         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
9610         add GTY((skip)) to the field that's only conditionally there.
9611         * doc/install.texi: Document that Bison is no longer required
9612         unless building treelang.
9613
9614         * gengtype.c: Don't include gtyp-gen.h.
9615         (srcdir): Declare here.
9616         (base_files, lang_dir_names): Allocate dynamically.
9617         (gt_files, num_gt_files, num_lang_dirs): New globals.
9618         (measure_input_list, read_input_line, read_input_list)
9619         (set_lang_bitmap): New functions.
9620         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
9621         simplify, relying on read_input_list to set up the bitmaps.
9622         (main): Arguments are no longer unused.  Check for correct number
9623         of command line arguments, set srcdir and srcdir_len, then call
9624         read_input_list, before doing anything else.  No need to worry
9625         about duplicates in main loop.
9626         * configure.ac: Simplify the calculation of all_gtfiles.
9627         Put language tags in there.  Don't set or substitute
9628         all_gtfiles_files_langs or all_gtfiles_files_frags.
9629         * Makefile.in: Revamp the way gengtype is invoked, now that it
9630         takes a file on its command line with a much simpler format.
9631         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
9632         (GTFILES): Remove duplicates and C source files.
9633         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
9634         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
9635         * configure: Regenerate.
9636
9637         * gengtype.h: Remove all type definitions to gengtype.c; leave
9638         only definitions of options_p, type_p, and pair_p as opaque
9639         pointers.  Update prototypes.
9640         * gengtype.c: Many type definitions moved here from gengtype.h.
9641         Consolidate type definitions at the top of the file.
9642         (xvasprintf): Delete.
9643         (xasprintf): Make static.
9644         (create_nested_pointer_option): Add 'next' parameter.
9645         (create_field_all, create_field_at): New functions.
9646         (create_field): Now a thin wrapper around create_field_all.
9647         (create_optional_field): Rename create_optional_field_ and add
9648         line argument.  Original name is now a macro which supplies
9649         __LINE__.
9650         (oprintf): Use vsnprintf directly.
9651         (close_output_files): Use fatal rather than perror/exit.
9652         (note_def_vec, note_def_vec_alloc): Use create_field_at.
9653         (main): Set progname.  Don't use exit.
9654         * gengtype-yacc.y (struct_fields): Use create_field_at.
9655         (option, optionseqopt): Delete.
9656         (optionseq): Consolidate productions from option here so we
9657         can use the first argument to create_option.
9658
9659         * gengtype-lex.l: Distinguish unions from structures in the
9660         token type.  Don't call find_structure; return the tag as a string.
9661         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
9662         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
9663         string.  Reorganize typedef_struct production accordingly.
9664         Use create_nested_ptr_option.
9665         * gengtype.c (create_nested_ptr_option): New function.
9666         * gengtype.h: Declare it.
9667
9668         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
9669         (string_type): Don't declare.
9670         (do_scalar_typedef): Declare.
9671         (create_scalar_type): Update prototype.
9672         * gengtype.c (string_type): Make static.
9673         (scalar_nonchar, scalar_char): New.
9674         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
9675         (resolve_typedef): Use scalar_nonchar for error recovery.
9676         (create_scalar_type): Remove name_len field.  Return scalar_char
9677         or scalar_nonchar as appropriate.
9678         (adjust_field_type): Look at scalar_is_char boolean to decide whether
9679         to use string_type.
9680         (throughout): Use scalar_nonchar instead of calling
9681         create_scalar_type, whenever possible.
9682         (main): Initialize scalar_char and scalar_nonchar before calling
9683         gen_rtx_next.
9684         * gengtype-lex.l: Adjust for removal of second argument to
9685         create_scalar_type.  Use yylval.s instead of yylval.t when
9686         returning SCALAR.
9687         * gengtype-yacc.y: Type of SCALAR is string.  Call
9688         create_scalar_type from type:SCALAR rule.  Adjust for removal of
9689         second argument to create_scalar_type.
9690
9691         * vec.h: Remove all #if IN_GENGTYPE blocks.
9692         Add comment saying that changes may require adjustments to gengtype.
9693         * gengtype.c: Don't include coretypes.h or tm.h.
9694         Add comment to inclusion of errors.h.
9695         (note_def_vec, note_def_vec_alloc): New functions.
9696         * gengtype.h: Declare new functions.
9697         * gengtype-lex.l: Don't include coretypes.h.
9698         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
9699         Delete.
9700         (update_lineno): Remove unnecessary prototype.
9701         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
9702         (VEC rule): Just return VEC_TOKEN.
9703         * gengtype-yacc.y (VEC_TOKEN): New token type.
9704         (type): Add a production for VEC(a,b).
9705         * Makefile.in: Update dependencies.
9706
9707         * gengtype-lex.l: Remove rules for parsing pointer-to-function
9708         typedefs that use the old PARAMS macro.
9709
9710         * gengtype-lex.l: Remove all rules and states relating to yacc
9711         input files.
9712         * gengtype-yacc.y: Similarly.
9713         * gengtype.c (note_yacc_type): Delete function.
9714         * gengtype.h: Update prototypes.
9715
9716 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
9717
9718         * tree-pretty-print.c (dump_generic_node): Report precision of
9719         unnamed integer types.
9720
9721 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
9722
9723         * ifcvt.c (noce_try_store_flag_constants): Don't check
9724         no_new_pseudos here.
9725         (noce_try_store_flag_constants): Don't check no_new_pseudos.
9726         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
9727         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
9728         noce_try_sign_mask): Likewise.
9729         (if_convert): Check no_new_pseudos here.
9730
9731         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
9732         Remove prototypes.
9733         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
9734         (noce_get_condition): Handle new then_else_reversed argument.
9735         (noce_init_if_info): Remove, fold into noce_find_if_block.
9736         (noce_process_if_block): Take a struct noce_if_info as the
9737         argument.  Don't set up one based on ce_if_info.  Update pointer
9738         references accordingly.
9739         (cond_move_process_if_block): Likewise.
9740         (process_if_block): Removed.
9741         (find_if_block): Removed.  Move functionality two new functions,
9742         noce_find_if_block and cond_exec_find_if_block.
9743         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
9744         blocks and the symmetric IF-ELSE-JOIN case.
9745         (cond_exec_find_if_block): Also new function mostly based on old
9746         find_if_block and process_if_block.
9747         (find_if_header): Replace find_if_block call with separately
9748         guarded calls to noce_find_if_block and cond_exec_find_if_block.
9749         (find_cond_trap): Update noce_get_condition call.
9750         (dead_or_predicable): Likewise.
9751
9752 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
9753
9754         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
9755         Remove.
9756         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
9757         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
9758         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
9759         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
9760         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
9761         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
9762         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
9763         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
9764         __builtin_ia32_psrad128 builtins.
9765
9766 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
9767
9768         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
9769         * config/i386/constraints.md
9770         (define_constraint "I"): Use IN_RANGE macro.
9771         (define_constraint "J"): Ditto.
9772         (define_constraint "K"): Ditto.
9773         (define_constraint "M"): Ditto.
9774         (define_constraint "N"): Ditto.
9775         (define_constraint "O"): Ditto.
9776         * config/i386/predicates.md
9777         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
9778         (define_predicate "const_0_to_3_operand"): Ditto.
9779         (define_predicate "const_0_to_7_operand"): Ditto.
9780         (define_predicate "const_0_to_15_operand"): Ditto.
9781         (define_predicate "const_0_to_63_operand"): Ditto.
9782         (define_predicate "const_0_to_255_operand"): Ditto.
9783         (define_predicate "const_1_to_31_operand"): Ditto.
9784         (define_predicate "const_2_to_3_operand"): Ditto.
9785         (define_predicate "const_4_to_7_operand"): Ditto.
9786
9787 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
9788
9789         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
9790         in SImode for save_world.
9791         * config/rs6000/altivec.md (save_world, restore_world): Convert to
9792         LR hard reg.
9793
9794 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
9795
9796         PR tree-optimization/30784
9797         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
9798         BIT_FIELD_REF.
9799
9800 2007-03-25  Revital Eres  <eres@il.ibm.com>
9801
9802         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
9803           Fold movement_possibility function into it.
9804
9805 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
9806
9807         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
9808         (load_macho_picbase_{si,di}): Convert to LR hard reg.
9809         (call_indirect_nonlocal_darwin64): Same.
9810         (call_nonlocal_darwin64): Same.
9811         (call_value_indirect_nonlocal_darwin64): Same.
9812         (call_value_nonlocal_darwin64): Same.
9813         (sibcall_nonlocal_darwin64): Same.
9814         (sibcall_value_nonlocal_darwin64): Same.
9815         (sibcall_symbolic_64): Same.
9816         (sibcall_value_symbolic_64): Same.
9817         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
9818         LR pseudo.
9819         (rs6000_emit_load_toc_table): Same.
9820         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
9821         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
9822         (mull_call): Same.
9823         (divss_call): Same.
9824         (divus_call): Same.
9825         (quoss_call): Same.
9826         (quous_call): Same.
9827         (load_toc_v4_pic_si): Same
9828         (load_toc_v4_PIC_1): Same.
9829         (load_toc_v4_PIC_1b): Same.
9830         (call_indirect_aix{32,64}): Same.
9831         (call_value_indirect_aix{32,64}): Same.
9832         (call): Same.
9833         (call_value): Same.
9834         (call_local{32,64}): Same.
9835         (call_value_local{32,64}): Same.
9836         (call_indirect_nonlocal_aix{32,64}): Same.
9837         (call_nonlocal_aix{32,64}): Same.
9838         (call_value_indirect_nonlocal_aix{32,64}): Same.
9839         (call_value_nonlocal_aix{32,64}): Same.
9840         (call_indirect_nonlocal_sysv<mode>): Same.
9841         (call_nonlocal_sysv<mode>): Same.
9842         (call_value_indirect_nonlocal_sysv<mode>): Same.
9843         (call_value_nonlocal_sysv<mode>): Same.
9844         (sibcall): Same.
9845         (sibcall_local{32,64}): Same.
9846         (sibcall_value_local{32,64}): Same.
9847         (sibcall_nonlocal_aix{32,64}): Same.
9848         (sibcall_value_nonlocal_aix{32,64}): Same.
9849         (sibcall_nonlocal_sysv<mode>): Same.
9850         (sibcall_value): Same.
9851         (sibcall_value_nonlocal_sysv<mode>): Same.
9852
9853 2007-03-24  Paul Brook  <paul@codesourcery.com>
9854
9855         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
9856         * config/arm/linux-eabi.h: Remove legacy syscall hack.
9857
9858 2007-03-24  Richard Henderson  <rth@redhat.com>
9859
9860         * config/ia64/constraints.md: New file.
9861         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
9862         satisfies_constraint_?.
9863         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
9864         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
9865         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
9866         ia64_output_mi_thunk): Likewise.
9867         (ia64_const_ok_for_letter_p): Remove.
9868         (ia64_const_double_ok_for_letter_p): Remove.
9869         (ia64_extra_constraint): Remove.
9870         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
9871         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
9872         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
9873         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
9874         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
9875         EXTRA_MEMORY_CONSTRAINT): Remove.
9876         * config/ia64/ia64.md: Include constriants.md.  Replace
9877         CONST_OK_FOR_? with satisfies_constraint_?.
9878
9879 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
9880             H.J. Lu  <hongjiu.lu@intel.com>
9881
9882         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
9883         DPD or BID name.
9884         (name macros): Use DPD_BID_NAME to convert names properly.
9885
9886         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
9887         decimal floating point format.
9888         (init_floating_libfuncs): Change decimal functions so that they
9889         have a "bid_" prefix if the decimal system uses the BID format,
9890         and "dpd_" prefix if the decimal system uses the DPD format.
9891         (init_interclass_conv_libfuncs): Ditto.
9892         (init_intraclass_conv_libfuncs): Ditto.
9893
9894         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
9895         using the BID format.
9896
9897         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
9898         whether we are using the BID decimal format.
9899         * configure: Regenerate.
9900
9901         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
9902         the compiler has decimal floating point enabled.  Define
9903         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
9904         instead of DPD.
9905
9906         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
9907         using the BID format.
9908
9909         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
9910         whether we are using the BID decimal format.
9911         * configure: Regenerate.
9912
9913         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
9914         the compiler has decimal floating point enabled.  Define
9915         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
9916         instead of DPD.
9917
9918         * doc/install.texi (--enable-decimal-float): Document BID and DPD
9919         options, and that it is enabled for i386/x86_64 systems.
9920
9921         * Makefile.in (enable_decimal_float): New.
9922         (DECNUMFMT): New.
9923         (DECNUMINC): Add  -I$(DECNUMFMT).
9924         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
9925         to $(DECNUMFMT) from $(DECNUM).
9926
9927         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
9928         Substitute enable_decimal_float.
9929         * configure: Regenerated.
9930
9931         PR other/30529
9932         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
9933         unsigned long.
9934
9935         * configure.ac: Enable decimal float for x86_64-*-linux*.
9936         * configure: Regenerated.
9937
9938         PR other/30530
9939         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
9940         decimal128ClearSign to flip and clear the sign bit in decimal128.
9941         (decimal_real_maxval): Set decimal128SetSign to set the sign
9942         bit in decimal128.
9943
9944 2007-03-23  Ian Lance Taylor  <iant@google.com>
9945
9946         * fold-const.c (fold_binary): Correct warning for X - c >= X.
9947
9948 2007-03-23  Ian Lance Taylor  <iant@google.com>
9949
9950         * tree-dump.c (dump_files): Correct comment.
9951
9952 2007-03-23  Ian Lance Taylor  <iant@google.com>
9953
9954         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
9955
9956 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
9957
9958         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
9959         in cfglayout mode.  Don't go into and out of cfglayout mode.
9960         Link the blocks in the order of the constructed traces.
9961         (rest_of_handle_tracer): Adjust call to tracer.
9962         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
9963         Don't go into cfglayout mode.
9964         (rtl_loop_done): Don't go out of cfglayout mode.
9965         * cfglayout.c (relink_block_chain): New function, split out from...
9966         (fixup_reorder_chain): ...here.  Remove redundant checking.
9967         (cfg_layout_finalize): Don't clear the header, footer, and aux
9968         fields here, move the code to do so to relink_block_chain.  Likewise
9969         for free_original_copy_tables.
9970         * rtl.h (tracer): Update prototype.
9971         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
9972         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
9973         mode.  Use relink_block_chain to serialize the CFG according to the
9974         new basic block order.  Move targetm.cannot_modify_jumps_p check from
9975         here...
9976         (gate_handle_reorder_blocks): ...to here.
9977         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
9978         from here...
9979         (gate_duplicate_computed_gotos): ...to here.
9980         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
9981         something always changes when going into and out of cfglayout mode.
9982         Perform an expensive cfg cleanup while going into cfglayout mode.
9983         Always update liveness information on HAVE_conditional_execution
9984         targets.  Reserialize the basic blocks and go out of cfglayout mode.
9985         * reg-stack.c: Include cfglayout.h.
9986         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
9987         the call to reorder_basic_blocks.
9988         * basic-block.h (reorder_basic_blocks): Update prototype.
9989         (relink_block_chain): New prototype.
9990         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
9991
9992 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
9993
9994         * config/mips/mips.md (type, hazard, *movdi_32bit,
9995         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
9996         *movhi_internal, *movqi_internal, *movsf_hardfloat,
9997         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
9998         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
9999         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
10000         applicable.
10001         (movcc): Change first xfer to multi.
10002         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
10003         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
10004         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
10005         config/mips/generic.md: Change reservations using "xfer" to use
10006         "mfc,mtc".
10007         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
10008         using match_operand.
10009         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
10010         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
10011         examining mode.
10012         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
10013
10014 2007-03-22  Richard Henderson  <rth@redhat.com>
10015
10016         * config/i386/i386.c: Remove unnecessary function declarations.
10017         Move targetm definition, and all related macros, to the end of
10018         the file.  Resort some functions to put definitions before uses.
10019         (ix86_attribute_table): Make static.  Move to end of file.
10020         (ix86_gimplify_va_arg): Make static.
10021
10022 2007-03-22  Richard Henderson  <rth@redhat.com>
10023
10024         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
10025         don't increase local_regparm with force_align_arg_pointer check.
10026         (ix86_function_sseregparm): Assert 32-bit.
10027         (type_has_variadic_args_p): New.
10028         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
10029         type_has_variadic_args_p.
10030         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
10031         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
10032         use memset instead.  Do maybe_vaarg check first; skip attribute
10033         tests if true; skip attribute tests for 64-bit.
10034         (construct_container): Remove TARGET_DEBUG_ARG.
10035         (function_arg_advance_32, function_arg_advance_64): Split out ...
10036         (function_arg_advance): ... from here.
10037         (function_arg_32, function_arg_64): Split out ...
10038         (function_arg): ... from here.
10039         (ix86_pass_by_reference): Tidy.
10040         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
10041         (function_value_32): New, from parts of ix86_function_value
10042         and ix86_value_regno.
10043         (function_value_64): New, from parts of ix86_function_value
10044         and ix86_libcall_value.
10045         (ix86_function_value_1): New.
10046         (ix86_function_value, ix86_libcall_value): Use it.
10047         (return_in_memory_32, return_in_memory_64): Split out ...
10048         (ix86_return_in_memory): ... from here.
10049         (ix86_struct_value_rtx): Skip for 64-bit.
10050         (ix86_libcall_value, ix86_value_regno): Remove.
10051         (setup_incoming_varargs_64): Split out ...
10052         (ix86_setup_incoming_varargs): ... from here.
10053         (ix86_va_start): Remove TARGET_DEBUG_ARG.
10054         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
10055         * config/i386/i386-protos.h (ix86_function_value): Remove.
10056         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
10057
10058 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10059
10060         PR other/23572
10061         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
10062         infinities not supported, otherwise emit warning if -Woverflow. On
10063         underflow, emit warning if -Woverflow.
10064         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
10065         and 0 otherwise.
10066         * real.h (real_from_string): Update declaration
10067
10068 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
10069             Richard Henderson  <rth@redhat.com>
10070
10071         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
10072         * calls.c (compute_argument_block_size, expand_call,
10073         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
10074         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
10075         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
10076         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
10077         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
10078         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
10079         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
10080         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
10081         Set to 1.
10082
10083 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
10084
10085         * c-incpath.c (add_sysroot_to_chain): New.
10086         (merge_include_chains): Add sysroot argument.  Call
10087         add_sysroot_to_chain if sysrooted.
10088         (register_include_chains): Update call to merge_include_chains.
10089         * doc/cppopts.texi: Document use of '=' in include directory
10090         arguments.
10091
10092 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
10093
10094         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
10095         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
10096         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
10097         insn pattern using X87MODEF12 mode macro.
10098
10099 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
10100
10101         * regmove.c (regmove_optimize): Use reg_mentioned_p
10102         instead of reg_overlap_mentioned_p for DST.
10103
10104 2007-03-21  Mike Stump  <mrs@apple.com>
10105
10106         * c.opt: Fixup for Objective-C/C++.
10107
10108 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
10109
10110         * explow.c (convert_memory_address): Fold memory reference when
10111         POINTERS_EXTEND_UNSIGNED < 0
10112
10113 2007-03-21  Richard Henderson  <rth@redhat.com>
10114
10115         PR target/31245
10116         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
10117         * config/i386/mmintrin.h (__m64): Likewise.
10118         * config/i386/xmmintrin.h (__m128): Likewise.
10119
10120 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10121
10122         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
10123         (VXWORKS_OS_CPP_BUILTINS): Define.
10124         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
10125         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
10126
10127 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10128
10129         * rtl.h (constant_pool_reference_p): Delete.
10130         (find_constant_src): Declare.
10131         * rtlanal.c (find_constant_src): New function.
10132         * simplify-rtx.c (constant_pool_reference_p): Delete.
10133         * config/i386/i386.md: Use find_constant_src instead of
10134         constant_pool_reference_p/avoid_constant_pool_reference pairs.
10135
10136 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10137
10138         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
10139         * c-cppbuiltin.c (c_cpp_builtins): Define them.
10140
10141 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
10142
10143         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
10144         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
10145         (arm_elf_asm_constructor): Use it.
10146         (arm_elf_asm_destructor): New function.
10147
10148 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
10149
10150         * jump.c (mark_jump_label): Treat SEQUENCE specially.
10151
10152 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
10153
10154         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
10155
10156 2007-03-19  Andrew Haley  <aph@redhat.com>
10157
10158         PR tree-optimization/31264
10159         * tree-vrp.c (register_edge_assert_for_1): Don't look though
10160         VIEW_CONVERT_EXPRs.
10161
10162 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
10163
10164         PR rtl-optimization/30907
10165         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
10166         (fwprop_init): Always call loop_optimizer_initialize.
10167         (fwprop_done): Always call loop_optimizer_finalize.
10168         (fwprop): We always have loop info now.
10169         (gate_fwprop_addr): Remove.
10170         (pass_fwprop_addr): Use gate_fwprop as gate.
10171
10172         PR rtl-optimization/30841
10173         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
10174         df_chain_alloc): Call df_reorganize_refs unconditionally.
10175         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
10176         refs_organized to refs_organized_size.
10177         (df_ref_create_structure): Use refs_organized_size instead of
10178         bitmap_size if refs had been organized, and keep refs_organized_size
10179         up-to-date.
10180         * df.h (struct df_ref_info): Change refs_organized to
10181         refs_organized_size.
10182         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
10183         bitmap_size.
10184
10185 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
10186
10187         * except.c (output_function_exception_table): Do not reference the
10188         EH personality routine for functions that do not require an
10189         exception table.
10190
10191 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
10192
10193         PR c/30762
10194         * c-typeck.c (convert_for_assignment): Call comptypes for
10195         RECORD_TYPE or UNION_TYPE.
10196
10197         PR inline-asm/30505
10198         * reload1.c (reload): Do invalid ASM checking after
10199         cleanup_subreg_operands.
10200
10201 2007-03-19  Jeff Law  <law@redhat.com>
10202
10203         * tree-cfg.c (find_taken_edge): Tighten conditions for
10204         optimizing computed gotos.
10205
10206 2007-03-19  Michael Matz  <matz@suse.de>
10207
10208         * builtins.c (expand_builtin_sync_operation,
10209         expand_builtin_compare_and_swap,
10210         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
10211         correctly.
10212
10213         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
10214         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
10215         for operand 3.
10216
10217 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10218
10219         * doc/tm.texi: Add brackets around the return type of
10220         TARGET_SECONDARY_RELOAD.
10221
10222 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10223         Richard Guenther  <rguenther@suse.de>
10224
10225         PR tree-optimization/31254
10226         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
10227         Use handled_component_p () where appropriate.  Continue
10228         propagating into the rhs if we propagated into an INDIRECT_REF
10229         on the lhs.
10230
10231 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10232
10233         * config/s390/s390.md (op_type attribute): RRR instruction type added.
10234         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
10235         (xde, xdee): Mode attributes adjusted to support DFP modes.
10236         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
10237         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
10238         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
10239         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
10240         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
10241         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10242         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
10243         numbers.
10244         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
10245         "movsf"): Insn definitions removed.
10246         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
10247         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
10248         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
10249         definitions added.
10250         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
10251         "reload_in<mode>", "reload_out<mode>"): Expander added.
10252         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
10253         Expander removed.
10254
10255 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10256
10257         * config/s390/s390.md: Only non-functional changes.  Renamed
10258         FPR mode macro to BFP all over the file.
10259
10260 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10261
10262         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
10263         (op_type attribute): RRF instruction type added.
10264         (fT0): New mode attribute.
10265         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10266         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
10267         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
10268         instruction no secondary memory is needed when moving DFmode values
10269         between GPRs and FPRs.
10270
10271 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10272
10273         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
10274         inverted and documentation adjusted.
10275         ("mhard-dfp", "msoft-dfp"): New options.
10276         * config/s390/s390.c (s390_handle_arch_option): New architecture
10277         switch: z9-ec.
10278         (override_options): Sanity checks for the new options added.
10279         * config.gcc: New architecture switch: z9-ec.
10280         * config/s390/s390.h (processor_flags): PF_DFP added.
10281         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
10282         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
10283         when the bit is NOT set so remove it from the defaults.
10284
10285 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10286
10287         * genemit.c (main): Print include statement for dfp.h.
10288         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
10289         is not available.
10290
10291 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
10292
10293         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
10294
10295 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
10296
10297         PR target/31022
10298         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
10299         instead of PATTERN.
10300
10301 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10302
10303         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
10304         attr_length_call, output_call, output_indirect_call): Cleanup
10305         formatting of targetm calls.
10306
10307 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
10308
10309         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
10310
10311 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10312
10313         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
10314         reservation, bypass and anti-bypass descriptions for these
10315         instructions.  Update move patterns.
10316         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
10317         TYPE_FPSTORE.
10318
10319 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
10320
10321         * tree-vect-transform.c (get_initial_def_for_induction): Replace
10322         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
10323         (get_initial_def_for_reduction): Likewise.
10324
10325 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
10326
10327         Fix PR tree-optimization/29922
10328         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
10329         (get_representative): Removed.
10330         (value_dies_in_block_x): Update for rvuse removal.
10331         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
10332         (compute_antic_aux): Handle when PHI nodes appear in
10333         non-single-successors.
10334         (dump_bitmap_of_names): Removed.
10335         (compute_antic_safe): Renamed and removed rvuse calculation.
10336         Calculate only antic safe.
10337         (insert_into_preds_of_block): Remove assert.
10338         (execute_pre): Update for renamed functions.
10339         (defer_or_phi_translate_block): New function.
10340
10341 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
10342
10343         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
10344         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
10345         typos.
10346         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
10347         Follow spelling conventions.
10348
10349         * tree-data-ref.h: Remove the prototype for analyze_array.
10350
10351 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
10352
10353         PR tree-optimization/31041
10354         * tree-vect-transform.c (get_initial_def_for_induction): Call
10355         force_gimple_operand.
10356
10357 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
10358
10359         * ipa-type-escape.c (look_for_casts) : Revert code to use
10360         handled_component_p due to ada test a-numaux.adb.
10361
10362 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
10363
10364         * final.c (final_scan_insn): Alter the condition of a
10365         conditional trap if we have nonstandard CC.
10366
10367 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10368
10369         * configure.ac: Remove excess quoting from asm line 0 test.
10370         * configure: Rebuilt.
10371
10372 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10373
10374         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
10375         * c-common.c (convert_and_check): Move warning logic to...
10376         (warnings_for_convert_and_check): ...here. Define.
10377         * c-common.h (warnings_for_convert_and_check): Declare.
10378
10379 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10380
10381         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
10382         (output_call): Likewise.
10383
10384 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
10385
10386         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
10387
10388 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
10389
10390         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
10391
10392 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
10393
10394         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
10395         opteron, athlon-64 and athlon-fx processor_alias_table entries.
10396
10397 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
10398
10399         PR tree-optimization/31183
10400         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
10401         Use double_int instead of unsigned int for representing access_strides.
10402         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
10403
10404 2007-03-16  Richard Guenther  <rguenther@suse.de>
10405
10406         PR tree-optimization/31146
10407         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
10408         to allow recursion of forward_propagate_addr_expr.
10409         (forward_propagate_addr_into_variable_array_index): Likewise.
10410         (forward_propagate_addr_expr): Likewise.
10411         (tree_ssa_forward_propagate_single_use_vars): Likewise.
10412         (forward_propagate_addr_expr_1): Recurse on simple copies
10413         instead of propagating into them.  Do so for useless conversions
10414         as well.
10415         (forward_propagate_addr_expr): Clean up unused statements after
10416         recursion.
10417
10418 2007-03-16  Richard Guenther  <rguenther@suse.de>
10419
10420         * builtins.c (expand_builtin_cexpi): Use the right argument
10421         for the expansion via cexp.
10422
10423 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10424
10425         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
10426         * configure: Rebuilt.
10427
10428 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10429
10430         PR debug/29906
10431         * dwarf2out.c (force_type_die): Adjust comment.
10432         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
10433
10434 2007-03-15  DJ Delorie  <dj@redhat.com>
10435
10436         * config/frv/predicates.md (minmax_operator): Don't check operands
10437         here.
10438
10439 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
10440
10441         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
10442         Update constant estimates of number of iterations.
10443         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
10444         argument renamed to "realistic".
10445         (compute_estimated_nb_iterations): Removed.
10446         (record_niter_bound): New function.
10447         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
10448         call record_nonwrapping_iv with upper = false.
10449         (infer_loop_bounds_from_signedness): Pass upper argument to
10450         record_nonwrapping_iv.
10451         (estimate_numbers_of_iterations_loop): Do not call
10452         compute_estimated_nb_iterations.  Record estimate based on profile
10453         information.  Initialize the constant estimates of number of
10454         iterations.
10455         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
10456         estimates.
10457         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
10458         number of iterations is too small.
10459         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
10460         (EST_NOT_AVAILABLE): Removed.
10461         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
10462         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
10463         fields.
10464
10465 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
10466
10467         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
10468         Handle NE_EXPR guards.
10469
10470 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10471
10472         PR c++/24924
10473         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
10474         Set also -pedantic-errors by default for the  preprocessor unless
10475         -fpermissive is given.
10476
10477 2007-03-15  Richard Guenther  <rguenther@suse.de>
10478
10479         PR middle-end/29719
10480         PR middle-end/31161
10481         * builtins.c (expand_builtin_cexpi): As a fallback if we
10482         don't have builtins for sincos or cexp create a function
10483         declaration for cexp and expand to a call to that.
10484         (expand_builtin_int_roundingfn): Always fall
10485         back to floor/ceil and its variants even if they may be
10486         not available.
10487
10488 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
10489
10490         PR middle-end/31159
10491         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
10492         jump tables, move the call to delete_dead_jumptables from here...
10493         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
10494         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
10495         don't allow merging of blocks that try_redirect_by_replacing_jump
10496         also does not handle when not optimizing.
10497
10498 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
10499             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
10500
10501         * config/i386/i386.md (x86_sahf_1): Correctly handle
10502         HAVE_AS_IX86_SAHF.
10503
10504 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
10505
10506         PR target/31167
10507         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
10508         x86_64_general_operand as operand[2] predicate.  Remove "iF"
10509         from operand constraints and use "e" constraint instead.
10510         (*subti3_1, *subti3_1 splitter): Ditto.
10511         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
10512         operand[1] predicate.
10513
10514 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
10515
10516         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
10517         arrays, multiply the access strides by the size of the sub-array.
10518         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
10519
10520 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
10521
10522         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
10523         the configured assembler supports the sahf mnemonic.
10524         * configure: Regenerate.
10525         * config.in: Regenerate.
10526
10527         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
10528         emit "sahf" or ".byte\t0x9e" as asm template.
10529
10530 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
10531
10532         PR 31018
10533         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
10534         option to replace hard coded TARGET_xxx in md file.
10535         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
10536         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
10537         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
10538         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
10539         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
10540         (X86_TUNE_NOT_VECTORMODE): Ditto.
10541         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
10542         (TUNE_AVOID_VECTOR_DECODE): Ditto.
10543         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
10544         (TUNE_SLOW_IMUL_IMM8): Ditto.
10545         (TUNE_MOVE_M1_VIA_OR): Ditto.
10546         (TUNE_NOT_UNPAIRABLE): Ditto.
10547         (TUNE_NOT_VECTORMODE): Ditto.
10548
10549         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
10550         options.
10551
10552         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
10553         tuning options instead of hard coded TARGET_xxx.
10554         (fix ssemode peephole2's): Ditto.
10555         (imul peephole2's): Ditto.
10556         (movsi_or): Ditto.
10557         (movdi_or_rex64): Ditto.
10558         (move peephole2): Ditto.
10559         (not peephole2's): Ditto.
10560
10561 2007-03-14  Dirk Mueller  <dmueller@suse.de>
10562
10563         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
10564         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
10565         * c-parser.c (c_parser_if_body): Always add an empty statement in case
10566         of empty body.
10567         * c-parser.c (c_parser_do_statement): Warn about empty body in
10568         do/while statement.
10569         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
10570         * doc/invoke.texi (-Wempty-body): Update documentation.
10571
10572 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10573
10574         PR c/21438
10575         * c-common.h (warn_for_div_by_zero): Declare.
10576         * c-common.c (warn_for_div_by_zero): Define.
10577         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
10578         warning.
10579
10580 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
10581
10582         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
10583         to PREFIX and STANDARD_PREFIX.
10584
10585 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
10586             Phil Edwards  <phil@codesourcery.com>
10587
10588         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
10589         (__gthread_once_t): Remove busy field for RTPs.
10590         (__GTHREAD_ONCE_INIT): Update accordingly.
10591
10592 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
10593
10594         * doc/invoke.texi: Document VxWorks options.
10595
10596 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
10597
10598         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
10599
10600 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
10601
10602         PR tree-optimization/30590
10603         * tree-nrv.c (tree_nrv): Check for the partial update of the
10604         return value.
10605
10606 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
10607
10608         * flags.h (flag_random_seed): Remove declaration, in favor of...
10609         * toplev.h (get_random_seed, set_random_seed): ... these.
10610         * tree.c (get_file_function_name): Use the former.
10611         * opts.c (common_handle_option): Use the latter.
10612         * toplev.c
10613
10614 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
10615
10616         PR middle-end/31127
10617         * cse.c (cse_find_path): Do not bail out if a basic block that
10618         we already visited now becomes part of a path that starts at a
10619         different basic block.  Just disallow this, to make sure we
10620         visit each basic block at most once.
10621
10622 2007-03-13  Jan Hubicka  <jh@suse.cz>
10623
10624         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
10625         attributes, when profile esitmate is present, calls with very low
10626         frequency are cold.
10627
10628 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
10629
10630         PR tree-optimization/30730
10631         PR tree-optimization/26900
10632         * tree-ssa-loop-niter.c: Include gmp.h.
10633         (bounds): New type.
10634         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
10635         split_to_var_and_offset, determine_value_range,
10636         bound_difference_of_offsetted_base, refine_bounds_using_guard,
10637         bound_difference, bounds_add, bounds_negate,
10638         number_of_iterations_ne_max, dump_affine_iv): New functions.
10639         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
10640         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
10641         difference of initial and final value of control iv to validate
10642         results.
10643         (number_of_iterations_cond): Add loop parameter.  Determine bounds
10644         on the difference of the extremes of the control iv.  Add dumps.
10645         (expand_simple_operations): Handle phi nodes.
10646         (simplify_using_initial_conditions): Do not record used conditions.
10647         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
10648         Do not set additional_info.
10649         (implies_nonnegative_p, implies_ge_p): Removed.
10650         (derive_constant_upper_bound): Do not use parameter `additional'.
10651         (record_estimate): Parameter `additional' removed.  Parameter
10652         `i_bound' added.  Do not call derive_constant_upper_bound.
10653         (record_nonwrapping_iv): Use derive_constant_upper_bound to
10654         bound the number of iterations estimate.
10655         (estimate_numbers_of_iterations_loop): Pass the estimate from
10656         the number of iterations analysis to record_estimate.
10657         * tree.h (multiple_of_p): Declare.
10658         * tree-scalar-evolution.c (expression_expensive_p): Removed.
10659         (scev_const_prop): Do not check expression_expensive_p.
10660         * fold-const.c (multiple_of_p): Exported.
10661         * double-int.c (double_int_mask): Exported.
10662         * double-int.h (double_int_mask): Declare.
10663         * tree-flow.h (struct tree_niter_desc): Removed additional_info
10664         field.  Added max field.
10665
10666 2007-03-13  David Taylor  <taylor@candd.org>
10667
10668         PR driver/12448:
10669         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
10670         default -MQ.
10671
10672 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10673
10674         PR target/31123
10675         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
10676         two unamed patterns.
10677
10678 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
10679
10680         * config/i386/i386.opt (mcx16, msahf): New options.
10681         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
10682         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
10683
10684         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
10685         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
10686         Output -mcx16 and -msahf options when corresponding bit is set.
10687
10688         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
10689         and -msahf options.
10690
10691 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
10692
10693         * configure.ac: Test for assembler tolerance to # 0 "".
10694         * configure, config.in: Rebuilt.
10695         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
10696
10697 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
10698
10699         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
10700
10701         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
10702         (handle_syscall): Handle direct system calls.
10703         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
10704
10705 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
10706
10707         * doc/invoke.texi: Fix cpp.info cross-reference.
10708         * doc/passes.texi: Fix gcc.info cross-reference.
10709
10710 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
10711
10712         PR tree-optimization/30835
10713         * lambda-code.c (can_convert_to_perfect_nest): Check whether
10714         bb_for_stmt is not NULL before accessing it.
10715
10716 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
10717
10718         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
10719         some multilibs.
10720
10721 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
10722
10723         PR 30635
10724         * doc/install.texi: Document --enable-stage1-languages
10725
10726 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
10727
10728         * tree-pass.h (pass_into_cfg_layout_mode,
10729         pass_outof_cfg_layout_mode): Declare.
10730         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
10731         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
10732         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
10733         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
10734
10735 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
10736
10737         * c-decl.c (warn_variable_length_array): New function.
10738         Refactored from grokdeclarator to handle warn_vla
10739         and handle unnamed array case.
10740         (grokdeclarator): Refactored VLA warning case.
10741         * c.opt (Wvla): New flag.
10742         * doc/invoke.texi (Wvla): New warning.
10743
10744 2007-03-12  Richard Henderson  <rth@redhat.com>
10745
10746         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
10747         (TARGET_SECTION_TYPE_FLAGS): New.
10748
10749 2007-03-12  Richard Henderson  <rth@redhat.com>
10750
10751         * config/darwin.c (machopic_reloc_rw_mask): New.
10752         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
10753         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
10754
10755 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
10756
10757         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
10758         * cppdefault.h (cpp_PREFIX): Document.
10759         (cpp_PREFIX_len): Likewise.
10760         (cpp_EXEC_PREFIX): New variable.
10761         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
10762         * c-incpath.c (add_standard_paths): Correct logic for relocating
10763         paths within prefix.
10764
10765 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
10766
10767         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
10768         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
10769         mode macro.
10770         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
10771         fix_truncdfdi_sse using SSEMODEF mode macro.
10772         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
10773         fix_truncdfsi_sse using SSEMODEF mode macro.
10774         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
10775         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
10776
10777 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
10778
10779         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
10780         elfos.h to tm_file.
10781
10782 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
10783
10784         * tree.h : Add multiple_of_p declaration.
10785         * fold-const.c (multiple_of_p): Make multiple_of_p public.
10786         * ipa-type-escape.c (results_of_malloc): Redundant.
10787         (visited_stmts): New. Visited stmt for walk_use_def_chains.
10788         (cast_type): Extended with new members.
10789         (check_cast): Returns cast_type.
10790         (cast): New structure for data of walk_use_def_chains.
10791         (is_malloc_result, is_cast_from_non_pointer_1,
10792         is_cast_from_non_pointer,
10793         is_array_access_through_pointer_and_index): New functions.
10794         (look_for_casts): Returns cast types.
10795         (check_call): Returns void.
10796         (okay_pointer_operation): Use support of pointer plus index,
10797         pointer plus constant and allow all multiplications.
10798
10799 2007-03-11  Richard Guenther  <rguenther@suse.de>
10800
10801         PR tree-optimization/31115
10802         * tree-vrp.c (extract_range_from_binary_expr): Make sure
10803         the shift count is positive and non-anti-range for RSHIFT_EXPR.
10804         A shift count of zero is not special as with *_DIV_EXPR.
10805         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
10806         direction.
10807
10808 2007-03-11  Ian Lance Taylor  <iant@google.com>
10809
10810         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
10811         the *_DIV_EXPR codes correctly with overflow infinities.
10812
10813 2007-03-11  Ira Rosen  <irar@il.ibm.com>
10814
10815         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
10816         indicate success/failure of the analysis. Add negation to subtrahend
10817         in case of subtraction. Fail if both operands contain constants.
10818         (create_data_ref): Fail if analyze_offset fails.
10819
10820 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
10821
10822         * config/i386/i386.md (frndintxf2): Rename to ...
10823         (rintxf2): ... this. Remove expander having same name.
10824         (rintsf2, rintdf2): Implement using SSEMODEF macro.
10825         (roundsf2, rounddf2): Ditto.
10826         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
10827         (lround<mode>di2, lround<mode>si2): Ditto.
10828
10829 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
10830
10831         * lower-subreg.c: Include except.h.
10832         (decompose_multiword_subregs): Verify that the only control flow
10833         insns we can split are loads to multi-words pseudos.
10834         Handle breaking such blocks after splitting, instead of calling
10835         find_many_sub_basic_blocks.
10836
10837         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
10838         on the new basic block.  Add a lengthy comment explaining why we
10839         thought this was necessary.
10840         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
10841
10842 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
10843
10844         PR c++/30924
10845         * tree.c (walk_type_fields): Recurse into the element type of
10846         ARRAY_TYPEs if there is a pointer set.
10847
10848 2007-03-10  Dirk Mueller  <dmueller@suse.de>
10849
10850         * c-common.c (warn_logical_operator): Fix condition.
10851
10852 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
10853
10854         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
10855         quotation mark.
10856         * config/darwin.c (machopic_select_section): Remove superfluous
10857         argument in call to categorize_decl_for_section.  Remove unused
10858         variable shlib.
10859
10860 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
10861
10862         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
10863         defined.
10864         * configure: Regenerate.
10865
10866 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
10867
10868         PR target/31101
10869         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
10870         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
10871         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
10872         Add LABEL_NUSES to emitted label.
10873         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
10874         branch probability value to emitted jump insn.
10875         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
10876         Do not check life information and do not re-arrange input operands
10877         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
10878
10879 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10880
10881         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
10882         the change of decode_asm_operands.
10883
10884 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10885
10886         * mode-switching.c (create_pre_exit): Skip blockage insn.
10887
10888 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
10889
10890         * tree-pass.h (TODO_update_smt_usage): Remove.
10891         Update all users.
10892         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
10893         argument SOME.
10894         Update all users.
10895
10896 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10897
10898         * pa.c (attr_length_call): Revise condition for long
10899         pc-relative branch.
10900         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
10901         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
10902         sequence on SOM target.
10903
10904 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
10905
10906         * gcc.c: Document %{, in big comment at top.
10907         (input_suffix_matches): Remove special handling for .s and
10908         .S.
10909         (input_spec_matches): New.
10910         (handle_braces): Handle %{,.
10911         (validate_switches): ',' indicates a value which is not a switch.
10912         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
10913         to detect assembler input.
10914         * config/i386/sol2.h (CPP_SPEC): Likewise.
10915         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
10916         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
10917         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
10918         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
10919         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
10920         -m64 causes deployment target to default to 10.5.
10921         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
10922
10923 2007-03-09  Richard Henderson  <rth@redhat.com>
10924
10925         PR target/26090
10926         * target.h (targetm.asm.out.reloc_rw_mask): New.
10927         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
10928         (TARGET_ASM_OUT): Use it.
10929         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
10930         * varasm.c (categorize_decl_for_section): Remove shlib argument;
10931         use the new reloc_rw_mask target hook instead.
10932         (default_section_type_flags_1): Merge into...
10933         (default_section_type_flags): ... here.
10934         (decl_readonly_section_1): Merge into...
10935         (decl_readonly_section): ... here.
10936         (default_elf_select_section_1): Merge into...
10937         (default_elf_select_section): ... here.
10938         (default_unique_section_1): Merge into...
10939         (default_unique_section): ... here.
10940         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
10941         (default_select_rtx_section): Use it.
10942         (default_elf_select_rtx_section): Likewise.
10943         * output.h: Update to match.
10944         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
10945         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
10946         (TARGET_ASM_RELOC_RW_MASK): New.
10947         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
10948         to categorize_decl_for_section.
10949         (x86_64_elf_unique_section): Likewise.
10950         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
10951         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
10952         (TARGET_ASM_RELOC_RW_MASK): New.
10953         * config/ia64/ia64.c (ia64_rwreloc_select_section,
10954         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
10955         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
10956         (TARGET_RWRELOC): Remove.
10957         (ia64_section_type_flags): Adjust call to default_section_type_flags.
10958         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
10959         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
10960         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
10961         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
10962         (rs6000_xcoff_select_section): Use decl_readonly_section.
10963         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
10964         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
10965         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
10966         (TARGET_SECTION_TYPE_FLAGS): Remove.
10967         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
10968
10969 2007-03-09  Roger Sayle  <roger@eyesopen.com>
10970
10971         * fold-const.c (fold_comparison): Remove compile-time evaluation of
10972         complex constant equality/inequality comparisons for here.
10973         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
10974         known at compile-time or can be simplified to a scalar comparison.
10975         (fold_relational_const): Move compile-time evaluation of complex
10976         constant equality/inequality comparisons to here.
10977
10978 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
10979
10980         PR rtl-optimization/30643
10981         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
10982         dest_addr_elt.
10983         (fold_rtx): Recurse, like before 2006-11-03.
10984
10985 2007-03-09  DJ Delorie  <dj@redhat.com>
10986
10987         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
10988         m32c-pragma.o.
10989
10990 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
10991
10992         PR tree-optimization/30375
10993         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
10994         LHS of statements is not the same.
10995         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
10996
10997 2007-03-09  Chao-ying Fu  <fu@mips.com>
10998
10999         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
11000         REV 2.
11001         * doc/invoke.texi (-mdspr2): Document new option.
11002         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
11003         New unspec for DSP REV 2.
11004         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
11005         these instructions are extended in DSP REV 2.
11006         (mips-dspr2.md): Include.
11007         * config/mips/mips.opt (mdspr2): New option.
11008         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
11009         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
11010         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
11011         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
11012         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
11013         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
11014         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
11015         and 2 builtins.
11016         (bdesc_map): Add one field of unsupported_target_flags.
11017         (bdesc_arrays):  Update entries to have extra fields.  Add
11018         dsp_32only_bdesc.
11019         (mips_init_builtins): Initialize new function types.
11020         Check unsupported_target_fileds to filter out builtins.
11021         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
11022         TARGET_DSPR2.
11023         (ASM_SPEC): Pass mdspr2 to the assembler.
11024         * config/mips/mips-dspr2.md: New file.
11025
11026 2007-03-09  Sa Liu  <saliu@de.ibm.com>
11027
11028         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
11029
11030 2007-03-09  Ian Lance Taylor  <iant@google.com>
11031
11032         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
11033         argument) like -Wstrict-overflow=2.
11034         * doc/invoke.texi (Warning Options): Update documentation.
11035
11036 2007-03-09  Dirk Mueller  <dmueller@suse.de>
11037
11038         PR c++/17946
11039         * doc/invoke.texi (-Wlogical-op): Document.
11040         * common.opt (-Wlogical-op): New.
11041         * c-common.h (warn_logical_operator): Declare.
11042         * c-common.c (warn_logical_operator): Define.
11043         * c-typeck.c (parser_build_binary_op): Call
11044         warn_logical_operator.
11045
11046 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11047
11048         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
11049         * final.c (final_scan_insn): Test for non-"" file name.
11050
11051 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
11052
11053         * doc/loop.texi: Document the Omega linear constraints solver.
11054         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
11055         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
11056         omega-hash-table-size, omega-max-keys, and
11057         omega-eliminate-redundant-constraints.
11058         * tree-pass.h (pass_check_data_deps): Declared.
11059         * omega.c: New.
11060         * omega.h: New.
11061         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
11062         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
11063         pass_check_data_deps): New.
11064         * tree-data-ref.c (init_data_ref): Remove declaration.
11065         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
11066         (analyze_array): Renamed init_array_ref, move up initializations.
11067         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
11068         Removed arguments that are set to NULL.
11069         (analyze_indirect_ref): Correct indentation, correct call to
11070         init_pointer_ref.
11071         (object_analysis): Call init_array_ref instead of analyze_array.
11072         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
11073         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
11074         of DR_ACCESS_FNS_ADDR.
11075         (init_omega_eq_with_af, omega_extract_distance_vectors,
11076         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
11077         ddr_consistent_p): New.
11078         (compute_affine_dependence): Check consistency of ddrs when
11079         flag_check_data_deps is passed.
11080         (analyze_all_data_dependences): Uncomment.
11081         (tree_check_data_deps): New.
11082         * tree-data-ref.h: Include omega.h.
11083         (DR_ACCESS_FNS_ADDR): Removed.
11084         (data_dependence_relation): Add inner_loop.
11085         (DDR_INNER_LOOP): New.
11086         * common.opt (fcheck-data-deps): New.
11087         * tree-flow.h (tree_check_data_deps): Declare.
11088         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
11089         (OBJS-common): Depend on omega.o.
11090         (omega.o): Define.
11091         * passes.c (pass_check_data_deps): Scheduled.
11092         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
11093         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
11094         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
11095         PARAM_VECT_MAX_VERSION_CHECKS,
11096         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
11097
11098 2007-03-09  Richard Guenther  <rguenther@suse.de>
11099
11100         PR tree-optimization/30904
11101         PR middle-end/31058
11102         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
11103         the same way as *_DIV_EXPR.
11104
11105 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11106
11107         * recog.c (decode_asm_operands): No mixed declarations and code.
11108
11109 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11110
11111         * rtl.def (ASM_INPUT): Add location.
11112         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
11113         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
11114         (decode_asm_operands): Add loc operand.
11115         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
11116         * stmt.c (expand_asm): Rename to...
11117         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
11118         gen_rtx_ASM_INPUT_loc.
11119         (expand_asm_expr): Adjust.
11120         * recog.c (decode_asm_operands): Add loc operand.
11121         (check_asm_operands, extract_insn): Adjust.
11122         * reload1.c (maybe_fix_stack_asms): Likewise.
11123         * final.c (asm_insn_count): Likewise.
11124         (final_scan_insn): Output # line before and after asm.
11125
11126 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
11127
11128         * tree-ssa-structalias.c (variable_info): Remove
11129         finished_solution.
11130         (new_var_info): Ditto.
11131         (shared_bitmap_info_t): New structure.
11132         (shared_bitmap_table): New variable.
11133         (shared_bitmap_hash): New function.
11134         (shared_bitmap_eq): Ditto
11135         (shared_bitmap_lookup): Ditto.
11136         (shared_bitmap_add): Ditto.
11137         (merge_smts_into): Change to take bitmap directly.
11138         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
11139         (init_alias_vars): Init shared bitmap hashtable.
11140         (delete_points_to_sets): Delete shared bitmap hashtable.
11141         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
11142         is_aliased removal as a change that was still necessary was
11143         deleted.
11144
11145 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
11146
11147         * config/i386/i386.h (override_options): Conditionally disable
11148         x86_sahf for 64bit targets only.
11149
11150 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11151
11152         PR C/31072
11153         * c-decl.c (merge_decls): Don't call make_var_volatile.
11154         * varasm.c (make_var_volatile): Remove.
11155         * output.h (make_var_volatile): Remove.
11156
11157 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
11158
11159         PR tree-optimization/31085
11160         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
11161
11162 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11163
11164         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
11165         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
11166         ATTR_CONST_NOTHROW_LIST.
11167
11168         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11169         FIX_TRUNC_EXPR.
11170
11171 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
11172
11173         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
11174
11175 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
11176
11177         PR 31013
11178         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
11179         is declared.
11180         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
11181         passed, use shared libgcc.
11182
11183 2007-03-08  Roger Sayle  <roger@eyesopen.com>
11184
11185         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
11186         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11187         (honor_protect_cleanup_actions, lower_try_finally_switch):
11188         Likewise.
11189         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
11190         ifc_temp_var): Likewise.
11191         * tree-inline.c (setup_one_parameter): Likewise.
11192         * tree-mudflap.c (mf_decl_cache_locals,
11193         mf_build_check_statement_for): Likewise.
11194         * tree-nested.c (init_tmp_var, save_tmp_var,
11195         finalize_nesting_tree_1): Likewise.
11196         * tree-outof-ssa.c (insert_copy_on_edge,
11197         insert_backedge_copies): Likewise.
11198         * tree-profile.c (tree_gen_edge_profiler,
11199         tree_gen_ic_profiler): Likewise.
11200         * tree-scalar-evolution.c (scev_const_prop): Likewise.
11201         * tree-sra.c (sra_build_assignment): Likewise.
11202         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
11203         * tree-ssa-math-opts.c (insert_reciprocals,
11204         execute_cse_sincos_1): Likewise.
11205         * tree-tailcall.c (adjust_accumulator_values,
11206         adjust_return_value): Likewise.
11207         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
11208         * tree-vect-transform.c (vect_create_data_ref_ptr,
11209         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
11210         vect_create_epilog_for_reduction, vectorizable_reduction,
11211         vectorizable_call, vectorizable_conversion,
11212         vectorizable_assignment, vectorizable_operation,
11213         vectorizable_type_demotion, vect_gen_widened_results_half,
11214         vect_permute_store_chain, vectorizable_store,
11215         vect_setup_realignment, vect_permute_load_chain,
11216         vectorizable_load, vectorizable_condition,
11217         vect_create_cond_for_align_checks): Likewise.
11218         * tree-vrp.c (build_assert_expr_for): Likewise.
11219
11220 2007-03-08  Ian Lance Taylor  <iant@google.com>
11221
11222         * tree-vrp.c: Include "intl.h".
11223         (usable_range_p): New static function.
11224         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
11225         overflowed values, juts set *strict_overflow_p.
11226         (compare_values): Only return -2 if one of the operands is not a
11227         constant.
11228         (compare_ranges): Call usable_range_p.
11229         (compare_range_with_value): Likewise.
11230         (vrp_evaluate_conditional_warnv): Rename from
11231         vrp_evaluate_conditional.  Make static.  Change all callers.
11232         (vrp_evaluate_conditional): New function.
11233         (simplify_div_or_mod_using_ranges): Issue warning about reliance
11234         on signed overflow.
11235         (simplify_abs_using_ranges): Likewise.
11236         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
11237         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
11238         within_stmt parameter.
11239         * tree-ssa-propagate.c (fold_predicate_in): Update call to
11240         vrp_evaluate_conditional.
11241         * tree-ssa-threadedge.c
11242         (record_temporary_equivalences_from_stmts_at_dest): Change
11243         simplify parameter to take a second tree parameter.
11244         (simplify_control_stmt_condition): Likewise.
11245         (thread_across_edge): Likewise.
11246         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
11247         (thread_across_edge): Likewise.
11248         * Makefile.in (tree-vrp.o): Depend upon intl.h.
11249
11250 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
11251
11252         * config/i386/i386.h (TARGET_SAHF): New define.
11253         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
11254         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
11255         (x86_sahf): New global variable.
11256         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
11257         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
11258         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
11259         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
11260         for 64-bit.
11261         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
11262         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
11263         when expanding fcomi/sahf based tests.
11264         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
11265         expanding sahf based alternative. Emit sahf based sequence when
11266         optimizing for code size.
11267         * config/i386/i386.md (x86_sahf_1): Do not disable for
11268         TARGET_64BIT, enable for TARGET_SAHF.
11269
11270 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
11271
11272         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
11273         spurious whitespace from error message.
11274
11275 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
11276
11277         PR c++/30852
11278         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
11279
11280 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
11281
11282         * c-decl.c (grokdeclarator): Disable warnings for anonymous
11283         bitfields.
11284         * tree-sra.c (instantiate_element): Propagate disabled warnings
11285         from the element itself to the created variable.
11286
11287 2007-03-07  Richard Henderson  <rth@redhat.com>
11288
11289         PR target/30848
11290         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
11291         silently fix up the stack in the case of a missing register.
11292
11293 2007-03-07  Paul Brook  <paul@codesourcery.com>
11294
11295         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
11296
11297 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
11298
11299         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
11300         New.
11301         (phase1_vrs): Use them.
11302         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
11303         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
11304         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
11305         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
11306         __gnu_Unwind_Restore_WMMXC if required.
11307         (_Unwind_VRS_Pop): Implement iWMMXt support.
11308         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
11309         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
11310         gnu_Unwind_Save_WMMXC): Define.
11311
11312 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
11313
11314         * config/vxworks.h (vxworks_override_options): Declare.
11315         (VXWORKS_OVERRIDE_OPTIONS): Use it.
11316         * config/vxworks.c: Include target.h and toplev.h.
11317         (vxworks_override_options): New function.
11318         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
11319
11320 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
11321
11322         * config/s390/s390.c (override_options): Don't emit an error when
11323         -mstack-size is used without providing -mstack-guard.
11324         (s390_emit_prologue): Choose stack_guard value automatically if not
11325         provided via command line.
11326         * doc/invoke.texi: Adjust description of -mstack-guard and
11327         -mstack-size.
11328
11329 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
11330
11331         * config/i386/i386.c (output_set_got): Add a GOT initialization
11332         sequence for VxWorks PIC.
11333         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
11334         around labels as well as symbols.  Use gotoff_operand instead
11335         of local_symbolic_operand.
11336         (legitimize_pic_address): Use gotoff_operand instead of
11337         local_symbolic_operand.  Use @GOT accesses for labels as
11338         well as symbols.
11339         (ix86_output_addr_diff_elt): Use PC-relative rather than
11340         GP-relative offsets for VxWorks PIC.
11341         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
11342         no_new_pseudos.  Check whether the returned register is op0.
11343         * config/i386/i386.md (tablejump): Use PC-relative rather than
11344         GP-relative offsets for VxWorks PIC.
11345         * config/i386/predicates.md (gotoff_operand): New predicate.
11346
11347 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11348
11349         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
11350         before defining.
11351         * config/vxworks-dummy.h: New file.
11352         * config/i386/i386.h: Include it.
11353
11354 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
11355
11356         * dwarf2out.c (is_inlined_entry_point): New
11357         (add_high_low_attributes): Emit DW_AT_entry_pc along with
11358         DW_AT_ranges if the first subblock is the entry point.
11359
11360 2007-03-06  David Daney  <ddaney@avtrex.com>
11361
11362         * doc/install.texi (mips-*-*): Change recommended binutils
11363         version.
11364
11365 2007-03-06  Anatoly Sokolov <aesok@post.ru>
11366
11367         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
11368         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
11369         devices.
11370         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11371         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
11372
11373 2007-03-06  Jan Hubicka  <jh@suse.cz>
11374
11375         * errors.h (warning, error, fatal, internal_error): Mark as cold.
11376         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
11377         functions are hot.
11378         (probably_cold_bb_p): Cold functions are cold.
11379         (probably_never_executed_bb_p): Cold functions are cold.
11380         (tree_bb_level_predictions): Predict calls to cold functions as not
11381         taken.
11382         (compute_function_frequency): Check hot/cold attributes.
11383         * function.h (function_frequency): Update comments.
11384         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
11385         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
11386         (c_common_att): Add cold and hot.
11387
11388         * doc/extend.texi (hot,cold attributes): Document.
11389
11390 2007-03-06  Andrew Haley  <aph@redhat.com>
11391
11392         * function.c (expand_function_end): Move blockage to just after we
11393         emit the label for the naked return from the function.
11394
11395 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11396
11397         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
11398         before redefining.
11399
11400 2007-03-06  Jan Hubicka  <jh@suse.cz>
11401
11402         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
11403         loaded for constant large models.  Non-large 64bit PIC can do.
11404         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
11405         * cmodel.h: Add LARGE PIC.
11406         * i386.md (UNSPEC_PLTOFF): New.
11407         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
11408         unspecs as needed.
11409         (*call_1_rex64): Disable for large models.
11410         (*call_1_rex64_large): New.
11411         (*call_value_1_rex64): Disable for large models.
11412         (*call_value_1_rex64_large): New.
11413         (set_rip_rex4): New.
11414         (set_got_offset_rex64): New.
11415         * predicates.md (constant_call_address_operand): For large model
11416         constant calls are not possible.
11417         * i386-protos.h (construct_plt_address): Declare.
11418         * i386.c (override_options): Accept large models.
11419         (ix86_expand_prologue): Expand large PIC GOT pointer load.
11420         (legitimate_constant_p): Add new UNSPECs.
11421         (legitimate_pic_operand_p): Likewise.
11422         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
11423         (legitimize_pic_address): Do easy RIP relative way for TLS only for
11424         non-large model.
11425         (output_pic_addr_const): Add PLTOFF.
11426         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
11427         (ix86_expand_move): Legitimize pic address when in PIC mode.
11428         (construct_plt_address): New function.
11429         (ix86_expand_call): Offload the address to register and use GOT
11430         pointer for large model.
11431         * invoke.texi (mcmodel=large): Update documentation.
11432
11433 2007-03-06  Richard Henderson  <rth@redhat.com>
11434
11435         * config/i386/i386.c (x86_use_leave, x86_push_memory,
11436         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
11437         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
11438         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
11439         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
11440         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
11441         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
11442         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
11443         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
11444         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
11445         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11446         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
11447         x86_sse_partial_reg_dependency, x86_sse_split_regs,
11448         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11449         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
11450         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
11451         x86_schedule, x86_use_bt, x86_pad_returns,
11452         x86_use_xchgb): Merge into ...
11453         (ix86_tune_features): ... here.  New array.
11454         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11455         x86_bswap): Merge into ...
11456         (ix86_arch_features): ... here.  New array.
11457         (x86_3dnow_a): Remove.
11458         (x86_accumulate_outgoing_args): Make static.
11459         (x86_arch_always_fancy_math_387): Make static.
11460         (ix86_tune_mask, ix86_arch_mask): Move ...
11461         (override_options): ... to local variables here.  Apply the
11462         appropriate mask to each element of ix86_arch_features and
11463         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
11464         as were done in the old macros.
11465         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
11466         * config/i386/i386.h (x86_use_leave, x86_push_memory,
11467         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
11468         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
11469         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
11470         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
11471         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
11472         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
11473         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
11474         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
11475         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
11476         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11477         x86_accumulate_outgoing_args, x86_prologue_using_move,
11478         x86_epilogue_using_move, x86_decompose_lea,
11479         x86_arch_always_fancy_math_387, x86_shift1,
11480         x86_sse_partial_reg_dependency, x86_sse_split_regs,
11481         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11482         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
11483         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11484         x86_use_incdec, x86_pad_returns, x86_bswap,
11485         x86_partial_flag_reg_stall): Remove.
11486         (enum ix86_tune_indices): New.
11487         (ix86_tune_features): New.
11488         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
11489         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
11490         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
11491         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
11492         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
11493         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
11494         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
11495         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
11496         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
11497         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
11498         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
11499         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
11500         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
11501         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
11502         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
11503         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
11504         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
11505         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
11506         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
11507         TARGET_EXT_80387_CONSTANTS): Use it.
11508         (enum ix86_arch_indices): New.
11509         (ix86_arch_features): New.
11510         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
11511         TARGET_BSWAP): Use it.
11512         (ix86_tune_mask, ix86_arch_mask): Remove.
11513
11514 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
11515
11516         PR bootstrap/31020
11517         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
11518         Define using $${sysroot_headers_suffix}.
11519         * configure: Regenerate.
11520         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
11521         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
11522         defined.
11523         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
11524         * gcc.c (print_sysroot_headers_suffix): New.
11525         (option_map): Include --print-sysroot-headers-suffix.
11526         (display_help): Mention -print-sysroot-headers-suffix.
11527         (process_command): Handle -print-sysroot-headers-suffix.
11528         (do_spec_1): Append multilib directory to include-fixed path if
11529         sysroot suffixes in use.
11530         (main): Handle -print-sysroot-headers-suffix.
11531         * Makefile.in (start.encap): Don't depend on xlimits.h
11532         (xlimits.h): Remove.
11533         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
11534         limits.h for each multilib in fixinc_list.
11535         (fixinc_list, s-fixinc_list): New.
11536         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
11537         generate them for each multilib in fixinc_list.
11538         (stmp-fixproto): Use include-fixed.  Run fixproto for each
11539         multilib in fixinc_list.
11540         (mostlyclean): Don't remove xlimits.h.
11541         (clean): Remove include-fixed.
11542         (real-install-headers-tar, real-install-headers-cpio,
11543         real-install-headers-cp): Don't copy include, only include-fixed.
11544         (install-mkheaders): Depend on fixinc_list.  Don't depend on
11545         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
11546         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
11547         SYSTEM_HEADER_DIR setting in mkheaders.conf.
11548
11549 2007-03-06  Jan Hubicka  <jh@suse.cz>
11550
11551         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
11552         NANs easilly.
11553
11554 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11555
11556         * configure.ac: Allow tm_file to contain build-directory files.
11557         * configure: Regenerate.
11558         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
11559         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
11560         * config/m68k/print-sysroot-suffix.sh: New file.
11561
11562 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11563
11564         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
11565         of pic_offset_table_rtx if reload_completed.
11566         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
11567         PIC_OFFSET_TABLE_REGNUM.
11568         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
11569         return true.
11570         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
11571         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
11572
11573 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11574
11575         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
11576         functions that call eh_return.
11577
11578 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11579
11580         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
11581         functions that need a constant pool.
11582
11583 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11584
11585         PR target/28181
11586         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
11587         (m68k_preferred_reload_class): Likewise.
11588         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
11589         (SECONDARY_RELOAD_CLASS): Define.
11590         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
11591         (LIMIT_RELOAD_CLASS): Delete.
11592         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
11593         registers from storing bytes.
11594         (m68k_secondary_reload_class): New function.
11595         (m68k_preferred_reload_class): Likewise.
11596
11597 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11598
11599         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
11600         leaf functions.
11601         (m68k_expand_prologue): Likewise.
11602
11603 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11604
11605         * config/m68k/m68k-protos.h (output_sibcall): Declare.
11606         (mips_expand_epilogue): Add a bool parameter.
11607         (m68k_legitimize_sibcall_address): Declare.
11608         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
11609         (m68k_expand_epilogue): Add a parameter to select between sibling
11610         and normal epilogues.  Only generate a return for the latter.
11611         (m68k_ok_for_sibcall_p): New function.
11612         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
11613         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
11614         (sibcall_value, *sibcall_value): Likewise.
11615         (*call, *call_value): Require !SIBLING_CALL_P.
11616         (epilogue): Update call to m68k_expand_epilogue.
11617         (sibcall_epilogue): New pattern.
11618         * config/m68k/predicates.md (const_call_operand): Say that this
11619         predicate applies to sibling calls too.
11620         (sibcall_operand): New predicate.
11621
11622 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11623
11624         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
11625         alternatives as movsi_cf.
11626         (movsf_cf_hard): Add commentary.
11627
11628 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
11629             Richard Sandiford  <richard@codesourcery.com>
11630
11631         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
11632         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
11633         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
11634         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
11635         as being live on exit from an interrupt function.
11636         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
11637         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
11638         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
11639         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
11640         (m68k_interrupt_function_p): Globalize.
11641         (m68k_compute_frame_layout): Remove reverse mask code.
11642         (m68k_emit_movem, m68k_set_frame_related): New functions.
11643         (m68k_output_function_prologue): Delete in favor of...
11644         (m68k_expand_prologue): ...this new function.
11645         (m68k_output_function_epilogue): Delete in favor of...
11646         (m68k_expand_epilogue): ...this new function.
11647         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
11648         functions.
11649         (print_operand): Handle %?.
11650         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
11651         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
11652         (prologue, epilogue): New patterns.
11653         (return): Turn into a define_expand.
11654         (*return): New pattern, derived from old "return" pattern.  Use rte
11655         rather than rts for interrupt functions.  Only use rtd if the pop
11656         count is nonzero.
11657         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
11658         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
11659         (link, *link, unlink, *unlink, load_got): Likewise.
11660
11661 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11662
11663         PR target/23482
11664         PR target/17114
11665         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
11666         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
11667         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
11668         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
11669         and m68k_matches_u_p.
11670         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
11671         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
11672         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
11673         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
11674         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
11675         (REG_STRICT_P): New macro.
11676         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
11677         PCREL_GENERAL_OPERAND_OK.
11678         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
11679         m68k_legitimate_base_reg_p.
11680         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
11681         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
11682         (PIC_CASE_VECTOR_ADDRESS): Update comment.
11683         * config/m68k/m68k.c (m68k_address): New structure.
11684         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
11685         (m68k_decompose_index, m68k_legitimate_constant_address_p)
11686         (m68k_jump_table_ref_p, m68k_decompose_address)
11687         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
11688         (m68k_matches_u_p): New functions.
11689         (print_operand_address): Rewrite to use m68k_decompose_index.
11690
11691 2007-03-05  David Taylor  <dtaylor@emc.com>
11692
11693         * gcc.c: Correct copyright date in --version output.
11694
11695 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11696
11697         * pa.md: In unamed move patterns, disparge copies between general
11698         and floating point registers using '?' modifier.  Don't include 'f'
11699         constraint for register preferences in DImode, SImode, HImode and
11700         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
11701         Remove constraints for copies between general and floating registers
11702         in soft-float DFmode pattern.
11703         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
11704         floating register.
11705         (movsf): Likewise.
11706
11707 2007-03-05  Mike Stump  <mrs@apple.com>
11708
11709         * c-common.c (targetcm): Add.
11710         * c-opts.c (c_common_handle_option): Handle language specific
11711         target options.
11712         * opts.c (handle_option): Verify language for target options, if
11713         any are given.
11714         * opth-gen.awk: Add CL_LANG_ALL.
11715         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
11716         (TARGETCM_INITIALIZER): Add.
11717         * target.h (struct gcc_targetcm): Add.
11718         (targetcm): Add.
11719         * targhooks.c (default_handle_c_option): Add.
11720         * targhooks.h (default_handle_c_option): Add.
11721         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
11722
11723         * config/darwin.opt (iframework): Add.
11724         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
11725         * config/darwin-c.c (handle_c_option): Add.
11726         (TARGET_HANDLE_C_OPTION): Add.
11727         (targetcm): Add.
11728         * doc/invoke.texi (Darwin Options): Add -iframework.
11729
11730 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11731
11732         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
11733         conversion.
11734
11735 2007-03-05  Ian Lance Taylor  <iant@google.com>
11736
11737         * c.opt (fgnu89-inline): New option.
11738         * c-opts.c (c_common_post_options): Set default value for
11739         flag_gnu89_inline.
11740         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
11741         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
11742         inline functions.
11743         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
11744         (grokdeclarator, start_function): Likewise.
11745         * c-cppbuiltin.c (c_cpp_builtins): Define either
11746         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
11747         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
11748         (C Dialect Options): Document -fgnu89-inline.
11749         * doc/extend.texi (Function Attributes): Explain what the
11750         gnu_inline attribute does.
11751         * doc/cpp.texi (Common Predefined Macros): Document
11752         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
11753
11754 2007-03-05  Ian Lance Taylor  <iant@google.com>
11755
11756         PR tree-optimization/31034
11757         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
11758         half-range if the other side is an overflow infinity.
11759
11760 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11761
11762         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
11763         (bfin*-linux-uclibc*): New configuration.
11764         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
11765         defining.
11766         * config/bfin/linux.h: New file.
11767         * config/bfin/libgcc-bfin.ver: New file.
11768         * config/bfin/t-bfin-uclinux: New file.
11769         * config/bfin/t-bfin-linux: New file.
11770         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
11771         (TARGET_OS_CPP_BUILTINS): New macro.
11772
11773 2007-03-05  Richard Guenther  <rguenther@suse.de>
11774
11775         * fold-const.c (fold_binary): Remove duplicate folding
11776         of comparison of non-null ADDR_EXPR against null.
11777
11778 2007-03-05  Richard Guenther  <rguenther@suse.de>
11779             Dorit Nuzman  <dorit@il.ibm.com>
11780
11781         PR tree-optimization/26420
11782         * tree-vectorizer.c (vectorize_loops): Bail out early if there
11783         are no loops in the function.  Only print the number of
11784         vectorized loops if it is greater than zero or we are supposed
11785         to print information about unvectorized loops.
11786
11787 2007-03-05  Revital Eres  <eres@il.ibm.com>
11788
11789         * gcc.dg/var-expand1.c: New test.
11790         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
11791         when an accumulator is expanded.
11792
11793 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11794
11795         PR other/30465
11796         * c-common.c (convert_and_check): Don't give warnings for
11797         conversion if 'expr' already overflowed.
11798
11799 2007-03-04  Roger Sayle  <roger@eyesopen.com>
11800
11801         PR middle-end/30744
11802         * fold-const.c (fold_comparison): Enforce type consistency when
11803         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
11804
11805 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
11806
11807         * tree-ssa-address.c (create_mem_ref): Do not put an expression
11808         containing a cast to the base of TARGET_MEM_REF.
11809
11810 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
11811
11812         * tree.c (tree_contains_struct_check_failed): Remove spurious
11813         whitespace from error message.
11814
11815 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
11816
11817         PR target/30406
11818         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
11819         instead of precision.
11820
11821 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
11822             Nathan Sidwell  <nathan@codesourcery.com>
11823
11824         * emit-rtl.c (find_auto_inc): New.
11825         (try_split): recreate REG_INC notes,
11826         Use regular for loops rather than whiles.
11827
11828 2007-03-03  Andreas Schwab  <schwab@suse.de>
11829
11830         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
11831         * configure: Regenerate.
11832
11833 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11834
11835         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
11836         flag_rounding_math, not flag_unsafe_math_optimizations.
11837
11838         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
11839         fold_build2.
11840         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
11841         alpha_fold_vector_minmax): Likewise.
11842         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11843         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
11844
11845 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
11846
11847         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
11848         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
11849         if the lhs has side-effects.
11850         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
11851
11852 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
11853
11854         * config/i386/i386.h (TUNEMASK): Remove define.
11855         (ARCHMASK): Remove define.
11856         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
11857          Use ix86_arch_mask variable instead of ARCHMASK.
11858         * config/i386/i386.c (override_options): Ditto.
11859         (standard_80387_constant_p): Ditto.
11860
11861 2007-03-02  Ian Lance Taylor  <iant@google.com>
11862
11863         Used signed infinities in VRP.
11864         * tree-vrp.c (uses_overflow_infinity): New static function.
11865         (supports_overflow_infinity): New static function.
11866         (make_overflow_infinity): New static function.
11867         (negative_overflow_infinity): New static function.
11868         (positive_overflow_infinity): New static function.
11869         (is_negative_overflow_infinity): New static function.
11870         (is_positive_overflow_infinity): New static function.
11871         (is_overflow_infinity): New static function.
11872         (overflow_infinity_range_p): New static function.
11873         (compare_values_warnv): New function split out of compare_values.
11874         (compare_value): Call it.
11875         (set_value_range_to_nonnegative): Add overflow_infinity
11876         parameter.  Change caller.
11877         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
11878         Change callers.
11879         (vrp_expr_computes_nonzero): Likewise.
11880         (compare_ranges, compare_range_with_value): Likewise.
11881         (compare_name_with_value, compare_names): Likewise.
11882         (vrp_evaluate_conditional): Likewise.
11883         (set_value_range): Handle infinity
11884         (vrp_operand_equal_p, operand_less_p): Likewise.
11885         (extract_range_from_assert): Likewise.
11886         (vrp_int_const_binop): Likewise.
11887         (extract_range_from_binary_expr): Likewise.
11888         (extract_range_from_unary_expr): Likewise.
11889         (extract_range_from_comparison): Likewise.
11890         (extract_range_from_expr): Likewise.
11891         (dump_value_range): Likewise.
11892         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
11893         (test_for_singularity): Likewise.
11894         (vrp_int_const_binop): Remove inline qualifier.
11895         (adjust_range_with_scev): Add comment.
11896         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
11897
11898 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
11899
11900         * tree-ssa-structalias.c (could_have_pointers): Tidy.
11901         (get_constraint_for): Likewise.
11902         (do_structure_copy): Likewise.
11903         (find_func_aliases): Fix references to MODIFY_EXPR.
11904         (intra_create_variable_infos): Tidy.
11905         * tree-ssa-operands.c (add_virtual_operand): Add argument
11906         IS_CALL_SITE.
11907         When adding members of alias sets, if IS_CALL_SITE is true and
11908         the symbol is not call-clobbered, skip it.
11909         Adjust all callers.
11910
11911 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
11912
11913         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
11914         entry by means of emit_insn_at_entry.
11915
11916 2007-03-02  Richard Henderson  <rth@redhat.com>
11917
11918         * expr.h (promoted_input_arg): Remove decl.
11919         * function.c (promoted_input_arg): Merge into ...
11920         * combine.c (setup_incoming_promotions): ... only caller.
11921         Rearrange to avoid double loop.
11922
11923 2007-03-02  Ben Elliston  <bje@au.ibm.com>
11924             Peter Bergner  <bergner@vnet.ibm.com>
11925             Janis Johnson  <janis187@us.ibm.com>
11926
11927         * config/rs6000/dfp.md: New file.
11928         * config/rs6000/rs6000.md: Include dfp.md.
11929         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
11930         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
11931         and TDmode decimal float modes in FP registers.
11932         (num_insns_constant): Likewise.
11933         (rs6000_legitimate_offset_address_p): Likewise.
11934         (rs6000_legitimize_address): Likewise.
11935         (rs6000_legitimize_reload_address): Likewise.
11936         (rs6000_legitimate_address): Likewise.
11937         (rs6000_emit_move): Likewise.
11938         (function_arg_boundary): Likewise.
11939         (function_arg_advance): Likewise.
11940         (rs6000_darwin64_record_arg_recurse): Likewise.
11941         (function_arg): Likewise.
11942         (rs6000_gimplify_va_arg): Likewise.
11943         (rs6000_split_multireg_move): Likewise.
11944         (rs6000_output_function_epilogue): Likewise.
11945         (rs6000_output_function_epilogue): Likewise.
11946         (rs6000_register_move_cost): Likewise.
11947         (rs6000_function_value): Likewise.
11948         (rs6000_libcall_value): Likewise.
11949
11950 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
11951
11952         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
11953
11954 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
11955
11956         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
11957         Use $MULTIDIR to choose between the kernel and RTP headers,
11958         and use $WIND_BASE and $WIND_USR to locate them.
11959
11960 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
11961
11962         * config/i386/i386.c (override_options): Put initialization of
11963         ix86_tune_mask and ix86_arch_mask to the correct place.
11964
11965 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
11966             Michael Meissner  <michael.meissner@amd.com>
11967
11968         PR target/31019
11969         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
11970         (ARCHMASK): Define.
11971         (TARGET_CMOVE): Use ARCHMASK.
11972         (TARGET_CMPXCHG): Ditto.
11973         (TARGET_CMPXCHG8B): Ditto.
11974         (TARGET_XADD): Ditto.
11975         (TARGET_BSWAP): Ditto.
11976         * config/i386/i386.c (ix86_tune_mask): New global variable.
11977         (ix86_arch_mask): Ditto.
11978         (override_options): Initialize ix86_tune_mask and
11979         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
11980         target_flags.
11981
11982 2007-03-02  Ben Elliston  <bje@au.ibm.com>
11983
11984         PR 30992
11985         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
11986
11987 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
11988
11989         * target.h (init_dwarf_reg_sizes_extra): New target hook.
11990         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
11991         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
11992         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
11993         hook.
11994         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
11995         rs6000_init_dwarf_reg_sizes_extra): New.
11996         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
11997         SPE register high parts.
11998
11999 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
12000
12001         * Makefile.in: Add install-pdf target as
12002         copied from automake v1.10 rules.
12003         * configure.ac: Add install-pdf to target list.
12004         * configure: Regenerate.
12005
12006 2007-03-01  Paul Brook  <paul@codesourcery.com>
12007
12008         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
12009         modes to LDRD for DImode.
12010         (output_move_double): Fixup out of range ldrd/strd.
12011         (vfp_secondary_reload_class): Rename...
12012         (coproc_secondary_reload_class): ... to this.  Add wb argument.
12013         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
12014         coproc_secondary_reload_class for CLASS_IWMMXT.
12015         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
12016         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
12017
12018 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
12019
12020         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
12021         unroll factor by the estimated number of iterations.
12022         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
12023         than prefetch latency.
12024
12025         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
12026         decode_caches_intel, detect_caches_intel): New functions.
12027         (host_detect_local_cpu): Use detect_caches_amd and
12028         detect_caches_intel.
12029
12030 2007-03-01  Richard Henderson  <rth@redhat.com>
12031
12032         * expr.c (emit_move_complex_push): Export.
12033         (emit_move_complex_parts): Split out from ...
12034         (emit_move_complex): ... here.
12035         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
12036         * config/i386/i386.md (movcdi): New.
12037
12038 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
12039
12040         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
12041         size of mode1 to check for tieable modes in MMX case.
12042
12043 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
12044
12045         * Makefile.in (rtlanal.o): Depend on tree.h.
12046         * rtl.h (offset_within_section_p, split_const): Declare.
12047         * rtlanal.c: Include tree.h.
12048         (offset_within_block_p): New function, taken from
12049         mips_offset_within_object_p.
12050         (split_const): New function, taken from mips_split_const.
12051         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
12052         Declare.
12053         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
12054         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
12055         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
12056         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
12057         (m68k_illegitimate_symbolic_constant_p): New function.
12058         * config/m68k/m68k.md (movsi): Remove misleading predicates.
12059         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
12060         symbolic constant that might be outside the symbol's section,
12061         move the symbol first and then add the offset.
12062         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
12063         Override.
12064         * config/mips/mips.c (mips_split_const): Delete.
12065         (mips_offset_within_object_p): Delete.
12066         (mips_symbolic_constant_p): Use offset_within_section_p and
12067         split_const instead of mips_offset_within_object_p and
12068         mips_split_const.
12069         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
12070         (mips_legitimize_const_move, print_operand_reloc)
12071         (mips_dangerous_for_la25_p): Use split_const instead of
12072         mips_split_const.
12073
12074 2007-02-28  Eric Christopher  <echristo@apple.com>
12075
12076         * Makefile.in (install-include-dir): Don't rm -rf include.
12077
12078 2007-02-28  Richard Guenther  <rguenther@suse.de>
12079
12080         PR middle-end/30364
12081         * fold-const.c (fold_binary): Do not associate expressions
12082         with more than one variable for integer types that do not wrap.
12083
12084 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
12085
12086         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
12087         Delete, and replace with...
12088         (fold_builtin_call_array): This.  Update callers to use it.
12089         * fold-const.c (fold_build_call_list): Delete, and replace with...
12090         (fold_build_call_array): This.
12091         (fold_build_call_list_initializer): Delete, and replace with...
12092         (fold_build_call_array_initializer): This.
12093         * tree.h: Update declarations to reflect above changes.
12094
12095         * c-typeck.c (build_function_call): Store converted arguments
12096         in a stack-allocated array instead of building a list.
12097         (convert_arguments): Store arguments in the array passed in as an
12098         argument, and return the actual number of arguments.
12099         * c-format.c: (check_function_format): Pass arguments in an
12100         array instead of a list.
12101         * c-common.c (check_function_nonnull): Likewise.
12102         (check_function_sentinel): Likewise.
12103         (check_function_arguments): Likewise.
12104         * c-common.h: Update declarations to reflect above changes.
12105
12106 2007-02-28  Jan Hubicka  <jh@suse.cz>
12107
12108         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
12109         PRED_NEGATIVE_RETURN): Update outcomes.
12110
12111 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
12112
12113         * calls.c (emit_library_call_value_1): Handle partial registers
12114         correctly when building up CALL_INSN_FUNCTION_USAGE.
12115
12116 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12117
12118         * pa/predicates.md (move_src_operand): Allow zero for mode.
12119         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
12120         move pattern.
12121
12122 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
12123
12124         PR target/30970
12125         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
12126         *movv2df_internal): Enable pattern only for valid operand
12127         combinations.
12128         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
12129         tie only 128bit modes. For MMX registers, tie only 64bit modes.
12130
12131 2007-02-27  Mike Stump  <mrs@apple.com>
12132
12133         * config/darwin-crt3.c: Avoid compilation when compiling for a
12134         kext multilib.
12135
12136 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
12137
12138         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
12139         FIXED_INCLUDE_DIR.
12140         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
12141         for fixed headers and limits.h.
12142         (install-include-dir, install-headers-tar, install-headers-cpio,
12143         install-headers-cp, real-install-headers-tar,
12144         real-install-headers-cpio, real-install-headers-cp): Handle
12145         include-fixed as well as include.
12146         (install-mkheaders): Don't install files that go only in include
12147         not include-fixed.
12148         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
12149         from GCC_INCLUDE_DIR.
12150         * gcc.c (process_command): Remove special -BstageN/ handling.
12151         (do_spec_1): Add include-fixed directories.
12152
12153 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12154
12155         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
12156         _smulsi3_highpart.
12157         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
12158         New functions.
12159         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
12160         patterns.
12161
12162 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
12163
12164         * c-common.c (get_priority): Add check for
12165         SUPPORTS_INIT_PRIORITY.
12166
12167 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12168
12169         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
12170
12171         * config/bfin/bfin.c: Include "cfglayout.h".
12172         (MAX_LSETUP_DISTANCE): New macro.
12173         (struct loop_info): New members incoming, incoming_src and
12174         incoming_dest.  Delete member predecessor.
12175         (length_for_loop): New function.
12176         (bfin_optimize_loop): Handle more different loop structures.
12177         (bfin_discover_loop): Rework detection of predecessor blocks by
12178         examining incoming edges.
12179         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
12180         bfin_reorg_loops.
12181         (bfin_reorder_loops): New function.
12182         (bfin_reorg_loops): Use these three new functions.
12183
12184         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
12185         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
12186         (CONSTRAINT_LEN): Add entry for 'q'.
12187         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
12188         Add 'q' constraints.
12189         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
12190         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
12191
12192         * config/bfin/bfin.md (add_with_carry): New pattern.
12193         (s_or_u, su_optab, su_modifier): New code macros/attrs.
12194         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
12195         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
12196         support unsigned multiplies too.  Removed incorrect commutativity from
12197         operand 1 constraint where appropriate.
12198         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
12199         patterns.
12200         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
12201         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
12202         New patterns.
12203         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
12204         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
12205         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
12206         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
12207         usmulhisi_hh_huh): New patterns.
12208
12209         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
12210         lshifthi3): Fix output template to use half reg for operand 2.
12211
12212         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
12213         instead of R2.
12214
12215         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
12216
12217 2007-02-27  Andreas Schwab  <schwab@suse.de>
12218
12219         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
12220
12221 2007-02-27  Jan Hubicka  <jh@suse.cz>
12222
12223         * predict.c (last_basic_block_p): Remove.
12224         (tree_estimate_probability): Update return heuristic for commonized
12225         return blocks.
12226
12227 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
12228
12229         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
12230
12231 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
12232
12233         * doc/include/gcc-common.texi (versionsubtitle): New macro.
12234         * doc/cpp.texi: Standardize title page.
12235         * doc/cppinternals.texi: Likewise.
12236         * doc/gcc.texi: Standardize title page, remove version number
12237         from copyright page.
12238         * doc/gccint.texi: Likewise.
12239         * doc/install.texi: Standardize title page, add table of
12240         contents.
12241
12242 2007-02-26  Jan Hubicka  <jh@suse.cz>
12243
12244         * predict.def: Set outcomes according to more recent results.
12245         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
12246         Remove dead predictors.
12247         * predict.c (return_prediction): Fix pasto.
12248
12249 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12250
12251         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
12252         change; avoid a memory leak when returning early.
12253
12254 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
12255
12256         * c-decl.c (static_ctors): Move to c-common.c.
12257         (static_dtors): Likewise.
12258         (finish_function): Use c_record_cdtor_fn.
12259         (build_cdtor): Move to c-common.c.
12260         (c_write_global_declarations): Use c_build_cdtor_fns.
12261         * c-common.h (static_ctors): Declare.
12262         (static_dtors): Likewise.
12263         (c_record_cdtor_fn): Likewise.
12264         (c_build_cdtor_fns): Likewise.
12265         * c-common.c (static_ctors): New variable.
12266         (static_dtors): Likewise.
12267         (c_record_cdtor_fn): New function.
12268         (build_cdtor): Move from c-decl.c
12269         (c_build_cdtor_fns): New function.
12270
12271         * output.h (assemble_addr_to_section): Declare.
12272         (get_cdtor_priority_section): Likewise.
12273         * varasm.c (assemble_addr_to_section): New function.
12274         (get_cdtor_priority_section): Likewise.
12275         (default_named_section_asm_out_destructor): Use them.
12276         (destor_dtor_section_asm_out_destructor): Likewise.
12277         (default_named_section_asm_out_constructor): Likewise.
12278         (default_ctor_section_asm_out_constructor): Likewise.
12279         * config.gcc (*-*-vxworks*): Include vxworks.o.
12280         * config/t-vxworks (vxworks.o): New target.
12281         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
12282         (TARGET_ASM_CONSTRUCTOR): Define.
12283         (TARGET_ASM_DESTRUCTOR): Likewise.
12284         (vxworks_asm_out_constructor): Declare.
12285         (vxworks_asm_out_destructor): Likewise.
12286
12287         * c-common.c (get_priority): Check that we have not just an
12288         INTEGER_CST, but an integer constant with integeral type.
12289
12290 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
12291
12292         PR tree-optimization/30938
12293         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
12294         use &dt[nargs-1] instead of &dt[nargs] in the call to
12295         vect_is_simple_use().
12296
12297 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
12298
12299         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
12300         from register elimination as PRE_MODIFY / POST_MODIFY increments.
12301         Do not attempt to handle MEM inside auto-inc expressions.
12302         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
12303         of a register modified by an auto-inc expression.  However, do handle
12304         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
12305         (elimination_effects): Prohibit elimination of a register modified
12306         by an auto-inc expression.  Disable register elimination rules whose
12307         target register is modified by an auto-inc expression with variable
12308         increment.
12309
12310 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
12311
12312         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
12313         off-by-one error.
12314         (array_at_struct_end_p): New function.
12315         (idx_infer_loop_bounds): Use it.
12316         (estimate_numbers_of_iterations_loop): Export.
12317         * predict.c (predict_loops): Use estimated_loop_iterations_int.
12318         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
12319         (tree_estimate_probability): Call record_loop_exits.
12320         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
12321         (estimated_loop_iterations, estimated_loop_iterations_int,
12322         estimated_loop_iterations_tree): New functions.
12323         (analyze_siv_subscript_cst_affine,
12324         compute_overlap_steps_for_affine_1_2,
12325         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
12326         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
12327         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
12328         (PRED_LOOP_ITERATIONS_GUESSED): New.
12329         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
12330         * cfgloop.h (estimate_numbers_of_iterations_loop,
12331         estimated_loop_iterations_int): Declare.
12332
12333 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
12334
12335         * doc/extend.texi: Document optional priority argument to
12336         constructors and destructors.
12337         * tree.c (init_priority_for_decl): Adjust GTY markers.
12338         (init_ttree): Use priority-info hash functions for
12339         init_priority_for_decl.
12340         (tree_map_eq): Rename to ...
12341         (tree_map_base_eq): ... this.
12342         (tree_map_marked_p): Rename to ...
12343         (tree_map_base_marked_p): ... this.
12344         (tree_map_base_hash): New function.
12345         (decl_init_priority_lookup): Rework.
12346         (decl_fini_priority_lookup): New function.
12347         (decl_priority_info): New function.
12348         (decl_init_priority_insert): Use it.
12349         (decl_fini_priority_insert): Likewise.
12350         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
12351         hierarchy.
12352         (decl_restrict_base_insert): Likewise.
12353         (decl_debug_expr_insert): Likewise.
12354         (decl_value_expr_lookup): Likewise.
12355         (decl_value_expr_insert): Likewise.
12356         * tree.h (priority_type): New type.
12357         (decl_init_priority_lookup): Use priority_type.
12358         (decl_fini_priority_lookup): New function.
12359         (decl_init_priority_insert): Use priority_type.
12360         (decl_fini_priority_insert): New function.
12361         (DECL_HAS_INIT_PRIORITY): Tweak comments.
12362         (DECL_INIT_PRIORITY): Likewise.
12363         (SET_DECL_INIT_PRIORITY): Add comment.
12364         (DECL_FINI_PRIORITY): New macro.
12365         (SET_DECL_FINI_PRIORITY): Likewise.
12366         (DEFAULT_INIT_PRIORITY): Document.
12367         (MAX_INIT_PRIORITY): Likewise.
12368         (MAX_RESERVED_INIT_PRIORITY): Likewise.
12369         (tree_map_base): New type.
12370         (tree_map_base_eq): New function.
12371         (tree_map_base_hash): Likewise.
12372         (tree_map_base_marked_p): Likewise.
12373         (tree_map): Inherit from tree_map_base.
12374         (tree_map_eq): Make it a macro.
12375         (tree_map_marked_p): Likewise.
12376         (tree_int_map): Inherit from tree_map_base.
12377         (tree_int_map_eq): Make it a macro.
12378         (tree_int_map_hash): Likewise.
12379         (tree_int_map_marked_p): Likewise.
12380         (tree_priority_map): New type.
12381         (tree_priority_map_eq): New macro.
12382         (tree_priority_map_hash): Likewise.
12383         (tree_priority_map_marked_p): Likewise.
12384         * varasm.c (emults_decl): Adjust for refactoring of tree_map
12385         hierarchy.
12386         (emutls_common_1): Likewise.
12387         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
12388         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
12389         of tree_map hierarchy.
12390         * tree-cfg.c (move_stmt_r): Likewise.
12391         (new_label_mapper): Likewise.
12392         * c-tree.h (c_expand_body): Move to ...
12393         * c-common.h (c_expand_body): ... here.
12394         * c-decl.c (c_expand_body): Move to ...
12395         * c-common.c (c_expand_body): ... here.
12396         (c_common_attribute_table): Allow 1 argument for the constructor
12397         and destructor attributes.
12398         (get_priority): New function.
12399         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
12400         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
12401
12402 2007-02-24  Jan Hubicka  <jh@suse.cz>
12403
12404         PR middle-end/30509
12405         * tree-inline.c (copy_bb): Produce exact copy of EH info when
12406         copying for inlining.
12407
12408 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
12409             Jan Hubicka  <jh@suse.cz>
12410
12411         PR target/30778
12412         * i386.c (counter_mode): New function.
12413         (expand_set_or_movmem_via_loop): Use it.
12414         (expand_movmem_epilogue): Likewise; fix pasto.
12415         (ix86_expand_movmem): Do emit guard even for constant counts.
12416         (ix86_expand_setmem): Likewise.
12417
12418 2007-02-25  Nick Clifton  <nickc@redhat.com>
12419
12420         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
12421         (JUMP_TABLES_IN_TEXT_SECTION): Define.
12422
12423 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
12424
12425         PR target/30770
12426         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
12427         count argument with 0x10, not with 0x16.
12428         (expand_setmem_epilogue): Ditto.
12429
12430 2007-02-24  Mike Stump  <mrs@apple.com>
12431
12432         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
12433         symbols.
12434
12435 2007-02-24  Richard Guenther  <rguenther@suse.de>
12436
12437         PR middle-end/30951
12438         * fold-const.c (fold_binary): Fold x +- CST op x for
12439         EQ_EXPR and NE_EXPR.
12440
12441 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12442
12443         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
12444
12445 2007-02-24  Jan Hubicka  <jh@suse.cz>
12446
12447         * cgraphunit.c (decide_is_function_needed): Honor
12448         -fkeep-inline-functions.
12449
12450 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12451
12452         * builtins.c (fold_builtin_modf): New.
12453         (fold_builtin_2): Use it.
12454
12455 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
12456
12457         * loop-iv.c (implies_p): Detect additional cases where A implies B.
12458         (determine_max_iter): Take additional LOOP arg; all callers changed.
12459         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
12460         one using simplifications.
12461         (simplify_using_initial_values): Return if the expression becomes
12462         invalid due to altered regs.
12463
12464 2007-02-23  DJ Delorie  <dj@redhat.com>
12465
12466         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
12467
12468 2007-02-23  Mike Stump  <mrs@apple.com>
12469
12470         * tlink.c (scan_linker_output): Parse linker messages from
12471         darwin9's linker better.
12472
12473 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
12474
12475         PR debug/29614
12476         * varpool.c (varpool_assemble_pending_decls):  Set
12477         varpool_last_needed_node to null.
12478
12479 2007-02-23  DJ Delorie  <dj@redhat.com>
12480
12481         * config/i386/i386.c (ix86_data_alignment): Don't specify an
12482         alignment bigger than the object file can handle.
12483
12484 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
12485
12486         PR target/30825
12487         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
12488         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
12489         (*movsf_1): Penalize MMX moves.
12490
12491 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
12492
12493         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
12494         2^32-1 or more times unless flag_unsafe_loop_optimizations.
12495
12496         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
12497
12498 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12499
12500         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
12501         (fold_builtin_1): Use them.
12502         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
12503         BUILT_IN_SIGNIFICAND.
12504
12505 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
12506
12507         * config/i386/i386.c (bdesc_1arg): Initialize
12508         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
12509         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
12510         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
12511         and IX86_BUILTIN_MOVSLDUP.
12512
12513 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
12514
12515         PR rtl-optimization/30841
12516         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
12517
12518 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12519
12520         * builtins.c (fold_builtin_frexp): New.
12521         (fold_builtin_2): Use it.
12522
12523 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
12524
12525         * doc/invoke.texi (Spec Files): Document getenv spec function.
12526
12527         * gcc.c (getenv_spec_function): New function.
12528         (static_spec_functions): Add it.
12529         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
12530         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
12531         header files.
12532
12533 2007-02-22  Michael Matz  <matz@suse.de
12534
12535         PR c++/29433
12536         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
12537         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
12538
12539 2007-02-22  Ian Lance Taylor  <iant@google.com>
12540
12541         PR debug/30898
12542         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
12543         (mem_loc_descriptor): Call it.
12544
12545 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
12546             Ira Rosen  <irar@il.ibm.com>
12547
12548         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
12549
12550 2007-02-22  Ira Rosen  <irar@il.ibm.com>
12551
12552         PR tree-optimization/30843
12553         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
12554         stores only after all the group is vectorized.
12555
12556 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
12557
12558         PR tree-optimization/30858
12559         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
12560         in the reduction cycle have a single use in the loop.
12561         * tree-vectorizer.h (relevant): Add documentation.
12562
12563 2007-02-20  Mike Stump  <mrs@apple.com>
12564
12565         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
12566         * configure: Regenerate.
12567
12568 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
12569
12570         Change the defaults of some parameters and options.
12571         * config/spu/spu-protos.h (spu_optimization_options): Declare.
12572         * config/spu/spu.c (spu_optimization_options): Add.
12573         (spu_override_options): Change params in spu_optimization_options.
12574         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
12575
12576         Register 127 is only 16 byte aligned when used as a frame pointer.
12577         * config/spu/spu-protos.h (spu_init_expanders): Declare.
12578         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
12579         HARD_FRAME_POINTER_REGNUM.
12580         (spu_legitimate_address):  Use regno_aligned_for_reload.
12581         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
12582         aligned when frame_pointer_needed is true.
12583         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
12584         to 8 bits.
12585         * config/spu/spu.h (INIT_EXPANDERS): Define.
12586
12587         Make sure shift and rotate instructions have valid immediate operands.
12588         * config/spu/predicates.md (spu_shift_operand): Remove.
12589         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
12590         * config/spu/constraints.md (W, O): Extend range.
12591         * config/spu/spu.md (umask, nmask): Define.
12592         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
12593         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
12594         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
12595         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
12596         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
12597         (lshr<mode>3_reg):  Fix rtl description.
12598
12599         Make sure mulhisi immediate operands are valid.
12600         * config/spu/predicates.md (imm_K_operand): Add.
12601         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
12602
12603         Generate constants using fsmbi and andi.
12604         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
12605         (print_operand, spu_split_immediate, classify_immediate,
12606         fsmbi_const_p): Handle IC_FSMBI2.
12607
12608         Correctly handle a CONST_VECTOR containing symbols.
12609         * config/spu/spu.c (print_operand): Handle HIGH correctly.
12610         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
12611         (immediate_load_p): Allow symbols that use 2 instructions to create.
12612         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
12613         with symbols when flag_pic is set.
12614         (const_vector_immediate_p): New.
12615         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
12616         accept a CONST_VECTOR with symbols.
12617         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
12618         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
12619         correctly.
12620         * config/spu/spu.md (high, low): Delete.
12621         (low_<mode>): Define.
12622
12623         Remove INTRmode and INTR_REGNUM, which didn't work.
12624         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
12625         of INTR_REGNUM.
12626         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
12627         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
12628         peephole2 pattern): Don't use INTR or 131.
12629         (movintrcc): Delete.
12630         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
12631         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
12632         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
12633         (UNSPEC_SET_INTR): Add.
12634         * config/spu/spu-modes.def (INTR): Remove.
12635
12636         More accurate warnings about run-time relocations.
12637         * config/spu/spu.c (reloc_diagnostic): Test in_section.
12638
12639         Correctly warn about immediate arguments to specific intrinsics.
12640         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
12641         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
12642         the instruction predicate.
12643
12644         Fix tree check errors with latest update.
12645         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
12646         CALL_EXPR_ARG.
12647         (spu_expand_builtin): Use CALL_EXPR_FN.
12648
12649         Add missing specific intrinsics.
12650         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
12651         si_bislede.
12652         * config/spu/spu_internals.h: Ditto.
12653
12654         Fix incorrect operand modifiers.
12655         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
12656         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
12657
12658         Optimize one case of zero_extend of a vec_select.
12659         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
12660
12661         Accept any immediate for hbr.
12662         * config/spu/spu.md (hbr):  Change s constraints to i.
12663
12664 2007-02-21  Paul Brook  <paul@codesourcery.com>
12665
12666         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
12667         condexec_count when skipping USE and CLOBBER.
12668
12669 2007-02-21  Nick Clifton  <nickc@redhat.com>
12670
12671         * common.opt (Warray-bounds): Add Warning attribute.
12672         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
12673         Likewise.
12674         (fsized-zeroes): Add Optimization attribute.
12675         (fsplit-wide-types, ftree-scev-cprop): Likewise.
12676         * c.opt (Wc++0x-compat): Add Warning attribute.
12677
12678 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
12679
12680         PR middle-end/30761
12681         * reload1.c (eliminate_regs_in_insn): In the single_set special
12682         case, attempt to re-recognize the insn before falling back to
12683         having reload fix it up.
12684
12685 2007-02-20  Eric Christopher  <echristo@gmail.com>
12686
12687         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
12688         Rewrite accordingly.
12689         (frv_read_iacc_argument): Ditto.
12690         (frv_expand_set_builtin): Take a call instead of arglist, update for
12691         above changes.
12692         (frv_expand_unop_builtin): Ditto.
12693         (frv_expand_binop_builtin): Ditto.
12694         (frv_expand_cut_builtin): Ditto.
12695         (frv_expand_binopimm_builtin): Ditto.
12696         (frv_expand_voidbinop_builtin): Ditto.
12697         (frv_expand_int_void2arg): Ditto.
12698         (frv_expand_prefetches): Ditto.
12699         (frv_expand_voidtriop_builtin): Ditto.
12700         (frv_expand_voidaccop_builtin): Ditto.
12701         (frv_expand_load_builtin): Ditto.
12702         (frv_expand_store_builtin): Ditto.
12703         (frv_expand_mdpackh_builtin): Ditto.
12704         (frv_expand_mclracc_builtin): Ditto.
12705         (frv_expand_mrdacc_builtin): Ditto.
12706         (frv_expand_mwtacc_builtin): Ditto.
12707         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
12708         calls for above.
12709
12710 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
12711
12712         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
12713         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
12714         cmpb instruction.
12715         (HAVE_GAS_DFP): Check for assembler support of decimal floating
12716         point instructions.
12717         * configure: Regenerate.
12718         * config.in: Regenerate.
12719         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
12720         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
12721         masks to power6 and power6x and to POWERPC_MASKS.
12722         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
12723         _ARCH_PWR6.
12724         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
12725         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
12726         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
12727         Access PROTOTYPE as variable, not mask.
12728
12729 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
12730
12731         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
12732         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
12733         * combine.c (adjust_for_new_dest): Use it.
12734         * postreload.c (reload_combine): Likewise.
12735
12736 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
12737
12738         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
12739         notes on an insn with multiple sets, even if single_set returns
12740         non-NULL for that insn.
12741
12742 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12743
12744         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
12745         scalbn and scalbln.
12746
12747 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
12748
12749         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
12750         if user didn't pass it.
12751         * config/i386/darwin.h (CC1_SPEC): Likewise.
12752         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
12753         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
12754         -mmacosx-version-min.
12755
12756 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12757             Uros Bizjak  <ubizjak@gmail.com>
12758
12759         * optabs.h (enum optab_index): Add new OTI_scalb.
12760         (scalb_optab): Define corresponding macro.
12761         * optabs.c (init_optabs): Initialize scalb_optab.
12762         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
12763         patterns.
12764         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
12765         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
12766         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
12767         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
12768         flag_unsafe_math_optimizations is set.
12769
12770         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
12771         to implement scalbf, scalb and scalbl built-ins as inline x87
12772         intrinsics.
12773
12774 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12775             DJ Delorie <dj@redhat.com>
12776
12777         PR other/30824
12778         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
12779         (diagnostic_report_diagnostic): ... here, and turn them into real
12780         errors. If warnings are inhibited, no need to do anything.
12781
12782 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
12783
12784         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
12785         better code generation.
12786
12787 2007-02-20  Ben Elliston  <bje@au.ibm.com>
12788
12789         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
12790
12791 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
12792
12793         * config/alpha/alpha.c, config/alpha/alpha.md,
12794         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
12795         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
12796         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
12797         config/arm/lib1funcs.asm: Follow spelling conventions.
12798
12799         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
12800         config/fr30/fr30.md, config/i386/i386.h,
12801         config/iq2000/iq2000.h, config/iq2000/predicates.md,
12802         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
12803         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
12804         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
12805         config/rs6000/altivec.md, config/rs6000/rs6000.c,
12806         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
12807         config/sparc/sparc.c, config/sparc/sparc.h,
12808         config/sparc/sparc.md, config/spu/constraints.md,
12809         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
12810         conventions.
12811
12812 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
12813
12814         PR target/29943
12815         * varasm.c (use_blocks_for_decl_p): Return false for decls with
12816         alias attribute.
12817
12818 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
12819
12820         * doc/invoke.texi (-ftree-lrs): Remove.
12821
12822 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
12823
12824         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
12825         NULL.
12826
12827 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
12828
12829         * config/ia64/ia64.c (ia64_expand_builtin): Use the
12830         new CALL_EXPR_FN macro for retrieving the function
12831         declaration of the input expression.
12832
12833 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12834
12835         * c.opt (Waddress): New.
12836         * common.opt (Walways-true): Delete.
12837         (Wstring-literal-comparison): Delete.
12838         * doc/invoke.texi (Warning Options): Delete -Walways-true and
12839         -Wstring-literal-comparison. Add -Waddress.
12840         (Waddress): New.
12841         (Walways-true): Delete.
12842         (Wstring-literal-comparison): Delete.
12843         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
12844         consistently instead of -Walways-true in example.
12845         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
12846         * c-typeck.c (parser_build_binary_op): Replace
12847         -Wstring-literal-comparison and -Walways-true with -Waddress.
12848         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
12849         with -Waddress.
12850
12851 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
12852
12853         * tree-cfg.c (dump_function_to_file): Be prepared for functions
12854         without DECL_STRUCT_FUNCTION initialized.
12855
12856 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
12857
12858         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
12859         due to calls to functions taking pointers as parameters.
12860
12861 2007-02-19  Richard Henderson  <rth@redhat.com>
12862
12863         PR debug/29558
12864         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
12865         in memory.
12866
12867 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
12868
12869         * config/s390/s390.c (s390_call_saved_register_used,
12870         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
12871         accessed to the new scheme.
12872
12873 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12874
12875         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
12876         (cris_print_index, cris_print_operand, cris_print_operand_address)
12877         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
12878         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
12879         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
12880         GET_CODE () == xxx.
12881         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
12882         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
12883         GO_IF_LEGITIMATE_ADDRESS): Ditto.
12884         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
12885         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
12886         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
12887         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
12888         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
12889         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
12890         (uminsi3, call, call_value): Ditto.
12891         (define_split: indir_to_reg_split, unnamed): Ditto.
12892
12893 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
12894
12895         PR tree-optimization/30975
12896         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
12897         wrong assert.
12898
12899 2007-02-18  Eric Christopher  <echristo@gmail.com>
12900
12901         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
12902         Remove use of arglist.
12903         (mips_expand_builtin): Remove use of arglist, pass in expr.
12904         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
12905         (mips_expand_builtin_movtf): Ditto.
12906         (mips_expand_builtin_compare): Ditto.
12907
12908 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
12909
12910         * tree-sra.c (sra_build_assignment): Replace assertion
12911         checking with a comment explaining why it can't be done.
12912
12913 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
12914
12915         PR middle-end/30833
12916         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
12917         during CALL_EXPR representation conversion.
12918         * tree-ssa-propagate.c (set_rhs): Likewise.
12919
12920 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
12921
12922         * tree-sra.c (sra_build_assignment): Disable assertion checking
12923         for now.
12924
12925 2007-02-18  Roger Sayle  <roger@eyesopen.com>
12926
12927         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
12928         instead of calling build2 with a GIMPLE_MODIFY_STMT.
12929         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
12930         Likewise.
12931         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
12932         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
12933         gimplify_init_ctor_eval_range, gimple_push_cleanup,
12934         gimplify_omp_for, gimplify_omp_atomic_pipeline,
12935         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
12936         force_gimple_operand): Likewise.
12937         * ipa-cp.c (constant_val_insert): Likewise.
12938         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
12939         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
12940         perfect_nestify): Likewise.
12941         * langhooks.c (lhd_omp_assignment): Likewise.
12942         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
12943         lower_copyprivate_clauses, lower_send_clauses,
12944         lower_send_shared_vars, expand_parallel_call,
12945         expand_omp_for_generic, expand_omp_for_static_nochunk,
12946         expand_omp_for_static_chunk, expand_omp_sections,
12947         lower_omp_single_copy, lower_omp_for_lastprivate,
12948         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
12949         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
12950         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
12951         Likewise.
12952
12953 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
12954
12955         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
12956         config/sh/sh.md: Follow spelling conventions.
12957
12958         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
12959         config/frv/predicates.md: Follow spelling conventions.
12960
12961         * config/m68k/linux-unwind.h: Fix a comment typo.
12962         * target.h: Follow spelling conventions.
12963
12964 2007-02-18  Roger Sayle  <roger@eyesopen.com>
12965
12966         PR rtl-optimization/28173
12967         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
12968         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
12969         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
12970         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
12971         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
12972
12973 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12974
12975         * builtins.c (fold_builtin_load_exponent): New.
12976         (fold_builtin_2): Use it.
12977
12978 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
12979
12980         PR rtl-optimization/30773
12981         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
12982         if we fail to attach a REG_EQUIV note.
12983
12984 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
12985             Roger Sayle  <roger@eyesopen.com>
12986
12987         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
12988
12989 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
12990
12991         * calls.c (initialize_argument_information): Pass original EXP
12992         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
12993         code to split complex arguments here, as part of initializing the
12994         ARGS array.
12995         (expand_call): Remove code that builds a list of arguments and
12996         inserts implicit arguments into it.  Instead, just count how many
12997         implicit arguments there will be so we can determine the size of
12998         the ARGS array, and let initialize_argument_information do the work.
12999         (split_complex_values): Delete unused function.
13000
13001 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
13002
13003         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
13004
13005 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
13006
13007         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
13008         for arg pointer based indexed addressing.
13009
13010 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
13011
13012         * config/ia64/ia64.h, config/ia64/ia64.md,
13013         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
13014         spelling conventions.
13015
13016 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13017
13018         * config/m68k/m68k.c (split_di): New.
13019         * config/m68k/m68k-protos.h: Declare split_di.
13020         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
13021           Improve predicate handling and split constant shifts.
13022
13023 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13024
13025         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
13026         parameter for register bitfield operations, general predicates
13027         cleanup
13028
13029 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13030
13031         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
13032         * config/m68k/linux-unwind.h: New file.
13033
13034 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
13035
13036         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
13037         config/i386/athlon.md, config/ia64/ia64.md,
13038         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
13039         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
13040         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
13041         tree-ssa-loop-niter.c, tree-vect-analyze.c,
13042         tree-vect-transform.c: Fix comment typos.
13043
13044 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
13045
13046         * sched-deps.c (find_insn_list): Remove.
13047         * sched-int.h: Remove the prototype for find_insn_list.
13048
13049 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
13050
13051         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
13052         to linker.
13053         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
13054         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
13055         darwin_rs6000_override_options.
13056         (C_COMMON_OVERRIDE_OPTIONS): Expect
13057         darwin_macosx_version_min to be non-NULL always.
13058         (TARGET_C99_FUNCTIONS): Likewise.
13059         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
13060         (DARWIN_MINVERSION_SPEC): New.
13061         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
13062         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
13063         to cc1*.
13064         (DARWIN_MINVERSION_SPEC): New.
13065         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
13066         value.
13067         * config/darwin-c.c (darwin_cpp_builtins): Expect
13068         darwin_macosx_version_min to be non-NULL always.
13069
13070         * config/rs6000/rs6000.c: Clean up trailing whitespace.
13071
13072 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
13073
13074         * config/i386/i386.h (x86_use_xchgb): New.
13075         (TARGET_USE_XCHGB): New macro.
13076         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
13077         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
13078         Split after reload into bswaphi for shifts of 8.
13079         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
13080         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
13081         or when optimizing for size.
13082
13083 2007-02-16  Richard Guenther  <rguenther@suse.de>
13084             Christian Bruel  <christian.bruel@st.com>
13085
13086         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
13087         DECLs but prefer SSA_NAMEs over DECLs.
13088
13089 2007-02-16  Richard Guenther  <rguenther@suse.de>
13090
13091         * tree-flow-inline.h (single_imm_use_p): Remove.
13092         (zero_imm_uses_p): Likewise.
13093         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
13094         instead of single_imm_use_p.
13095         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
13096         zero_imm_uses_p.
13097
13098 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13099
13100         PR other/27843
13101         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
13102         nested double- and backquotes.
13103
13104 2007-02-15  Roger Sayle  <roger@eyesopen.com>
13105
13106         PR middle-end/30391
13107         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
13108         should be unreachable.
13109         (build2_stat): Allow construction of MODIFY_EXPR at any time.
13110         For the time being redirect GIMPLE_MODIFY_STMT to the new
13111         (renamed) build_gimple_modify_stmt_stat.
13112         (build2_gimple_stat): Rename to...
13113         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
13114         Always build a GIMPLE_MODIFY_STMT node.
13115         * tree.h (build2_gimple, build2_gimple_stat): Delete.
13116         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
13117         declarations.
13118
13119         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
13120         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
13121         * tree-complex.c (set_component_ssa_name, expand_complex_move,
13122         expand_complex_div_wide): Likewise.
13123         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
13124         * tree-ssa-loop-im.c (schedule_sm): Likewise.
13125         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
13126         * tree-ssa-loop-manip.c (create_iv): Likewise.
13127         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
13128         abs_replacement): Likewise.
13129         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
13130         realify_fake_stores): Likewise.
13131
13132         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
13133         node rather than a GIMPLE_MODIFY_STMT node.
13134         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
13135         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
13136         Likewise.
13137         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
13138         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
13139         GIMPLE_MODIFY_STMT.
13140
13141 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13142
13143         PR middle-end/30433
13144         * fold-const.c (fold_comparison): Add back the
13145         folding of constant complex comparisions.
13146
13147 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13148
13149         PR middle-end/30729
13150         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
13151         effects unknown to this function, return early.
13152
13153 2007-02-15  Ian Lance Taylor  <iant@google.com>
13154
13155         * lower-subreg.c (move_eh_region_note): New static function.
13156         (resolve_simple_move): Call it.
13157         (decompose_multiword_subregs): Track blocks for which we resolve a
13158         simple move which is also a control flow insn.  Pass them to
13159         find_many_sub_basic_blocks.
13160         (pass_lower_subreg): Add TODO_verify_flow.
13161         (pass_lower_subreg2): Likewise.
13162
13163 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13164             Brooks Moses  <brooks.moses@codesourcery.com>
13165             Lee Millward  <lee.millward@codesourcery.com>
13166
13167         * tree.h (enum tree_code_class): Add tcc_vl_exp.
13168         (VL_EXP_CLASS_P): New.
13169         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
13170         TREE_CODE_LENGTH.
13171         (TREE_OPERAND_CHECK_CODE): Likewise.
13172         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
13173         (TREE_RTL_OPERAND_CHECK): Likewise.
13174         (tree_operand_check_failed): Make second parameter the whole tree
13175         instead of its code.  Fixed callers.
13176         (VL_EXP_CHECK): New.
13177         (TREE_OPERAND_LENGTH): New.
13178         (VL_EXP_OPERAND_LENGTH): New.
13179         (CALL_EXPR_FN): New.
13180         (CALL_EXPR_STATIC_CHAIN): New.
13181         (CALL_EXPR_ARGS): New.
13182         (CALL_EXPR_ARG): New.
13183         (call_expr_nargs): New.
13184         (CALL_EXPR_ARGP): New.
13185         (build_nt_call_list): Declare.
13186         (build_vl_exp_stat): Declare.
13187         (build_vl_exp): New.
13188         (build_call_list): Declare.
13189         (build_call_nary): Declare.
13190         (build_call_valist): Declare.
13191         (build_call_array): Declare.
13192         (call_expr_arg): Declare.
13193         (call_expr_argp): Declare.
13194         (call_expr_arglist): Declare.
13195         (fold_build_call_list): Declare.
13196         (fold_build_call_list_initializer): Declare.
13197         (fold_call_expr): Declare to replace fold_builtin.
13198         (fold_builtin_fputs): Update to agree with modified definition.
13199         (fold_builtin_strcpy): Likewise.
13200         (fold_builtin_strncpy): Likewise.
13201         (fold_builtin_memory_chk): Likewise.
13202         (fold_builtin_stxcpy_chk): Likewise.
13203         (fold_builtin_strncpy_chk): Likewise.
13204         (fold_builtin_next_arg): Likewise.
13205         (fold_build_call_expr): Declare.
13206         (fold_builtin_call_list): Declare.
13207         (fold_builtin_call_valist): Declare.
13208         (build_call_expr): Declare.
13209         (validate_arglist): Update to agree with modified definition.
13210         (tree_operand_length): New.
13211         (call_expr_arg_iterator): New.
13212         (init_call_expr_arg_iterator): New.
13213         (next_call_expr_arg): New.
13214         (first_call_expr_arg): New.
13215         (more_call_expr_args_p): New.
13216         (FOR_EACH_CALL_EXPR_ARG): New.
13217
13218         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
13219         and tcc_gimple_stmt.
13220         (tree_code_size): Update documentation.  Use sizeof (tree) rather
13221         than sizeof (char *).
13222         (tree_size): Likewise.  Add case for tcc_vl_exp.
13223         (tree_node_structure): Add case for tcc_vl_exp.
13224         (contains_placeholder_p): Likewise.
13225         (substitute_in_expr): Likewise.
13226         (substitute_placeholder_in_expr): Likewise.
13227         (stabilize_reference_1): Likewise.
13228         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
13229         to diagnose breakage of this interface for constructing CALL_EXPRs.
13230         (build_nt): Add similar assertion here.
13231         (build_nt_call_list): New.
13232         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
13233         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
13234         TREE_CODE_LENGTH.
13235         (get_callee_fndecl): Use new CALL_EXPR accessors.
13236         (tree_operand_check_failed): Change parameters to pass entire node
13237         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
13238         (process_call_operands): New.
13239         (build_vl_exp_stat): New.
13240         (build_call_list): New.
13241         (build_call_nary): New.
13242         (build_call_valist): New.
13243         (build_call_array): New.
13244         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13245         (call_expr_arglist): New.
13246
13247         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
13248         tcc_vl_exp instead of a fixed-size tcc_expression.
13249
13250         * doc/c-tree.texi (CALL_EXPR): Document new representation and
13251         accessors for CALL_EXPRs.
13252         (AGGR_INIT_EXPR): Likewise.
13253
13254 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13255             Brooks Moses  <brooks.moses@codesourcery.com>
13256             Lee Millward  <lee.millward@codesourcery.com>
13257
13258         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
13259         (expand_builtin_nonlocal_goto): Change parameter to be entire
13260         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
13261         (expand_builtin_prefetch): Likewise.
13262         (expand_builtin_classify_type): Likewise.
13263         (mathfn_built_in): Return NULL_TREE instead of 0.
13264         (expand_errno_check): Use new CALL_EXPR accessors.
13265         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
13266         Return NULL_RTX instead of 0.
13267         (expand_builtin_mathfn_2): Likewise.
13268         (expand_builtin_mathfn_3): Likewise.
13269         (expand_builtin_interclass_mathfn): Likewise.
13270         (expand_builtin_sincos): Likewise.
13271         (expand_builtin_cexpi): Likewise.
13272         (expand_builtin_int_roundingfn): Likewise.
13273         (expand_builtin_int_roundingfn_2): Likewise.
13274         (expand_builtin_pow): Likewise.
13275         (expand_builtin_powi): Likewise.
13276         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
13277         of arglist, fixing callers appropriately.  Use new CALL_EXPR
13278         accessors and constructors.  Return NULL_RTX instead of 0.
13279         (expand_builtin_strstr): Likewise.
13280         (expand_builtin_strchr): Likewise.
13281         (expand_builtin_strrchr): Likewise.
13282         (expand_builtin_strpbrk): Likewise.
13283         (expand_builtin_memcpy): Likewise.
13284         (expand_builtin_mempcpy): Likewise.
13285         (expand_builtin_mempcpy_args): New.
13286         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
13287         (expand_builtin_memmove_args): New.
13288         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
13289         (expand_movstr): Likewise.
13290         (expand_builtin_strcpy): Likewise.
13291         (expand_builtin_strcpy_args): New.
13292         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
13293         (expand_builtin_strncpy): Likewise.
13294         (expand_builtin_memset): Likewise.
13295         (expand_builtin_memset_args): New.
13296         (expand_builtin_bzero): Similarly to expand_builtin_memset.
13297         (expand_builtin_memcmp): Likewise.
13298         (expand_builtin_strcmp): Likewise.
13299         (expand_builtin_strncmp): Likewise.
13300         (expand_builtin_strcat): Likewise.
13301         (expand_builtin_strncat): Likewise.
13302         (expand_builtin_strspn): Likewise.
13303         (expand_builtin_strcspn): Likewise.
13304         (expand_builtin_args_info): Likewise.
13305         (expand_builtin_va_start): Likewise.
13306         (gimplify_va_arg_expr): Likewise.
13307         (expand_builtin_va_end): Likewise.
13308         (expand_builtin_va_copy): Likewise.
13309         (expand_builtin_frame_address): Likewise.
13310         (expand_builtin_alloca): Likewise.
13311         (expand_builtin_bswap): Likewise.
13312         (expand_builtin_unop): Likewise.
13313         (expand_builtin_fputs): Likewise.
13314         (expand_builtin_expect): Likewise.
13315         (expand_builtin_fabs): Likewise.
13316         (expand_builtin_copysign): Likewise.
13317         (expand_builtin_printf): Likewise.
13318         (expand_builtin_fprintf): Likewise.
13319         (expand_builtin_sprintf): Likewise.
13320         (expand_builtin_init_trampoline): Likewise.
13321         (expand_builtin_signbit): Likewise.
13322         (expand_builtin_fork_or_exec): Likewise.
13323         (expand_builtin_sync_operation): Likewise.
13324         (expand_builtin_compare_and_swap): Likewise.
13325         (expand_builtin_lock_test_and_set): Likewise.
13326         (expand_builtin_lock_release): Likewise.
13327         (expand_builtin): Likewise.
13328         (builtin_mathfn_code): Likewise.
13329
13330         (fold_builtin_constant_p): Pass call arguments individually instead
13331         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13332         accessors and constructors.  Return NULL_TREE instead of 0.
13333         (fold_builtin_expect): Likewise.
13334         (fold_builtin_classify_type): Likewise.
13335         (fold_builtin_strlen): Likewise.
13336         (fold_builtin_nan): Likewise.
13337         (integer_valued_real_p): Likewise.
13338         (fold_trunc_transparent_mathfn): Likewise.
13339         (fold_fixed_mathfn): Likewise.
13340         (fold_builtin_cabs): Likewise.
13341         (fold_builtin_sqrt): Likewise.
13342         (fold_builtin_cbrt): Likewise.
13343         (fold_builtin_cos): Likewise.
13344         (fold_builtin_cosh): Likewise.
13345         (fold_builtin_tan): Likewise.
13346         (fold_builtin_sincos): Likewise.
13347         (fold_builtin_cexp): Likewise.
13348         (fold_builtin_trunc): Likewise.
13349         (fold_builtin_floor): Likewise.
13350         (fold_builtin_ceil): Likewise.
13351         (fold_builtin_round): Likewise.
13352         (fold_builtin_int_roundingfn): Likewise.
13353         (fold_builtin_bitop): Likewise.
13354         (fold_builtin_bswap): Likewise.
13355         (fold_builtin_logarithm): Likewise.
13356         (fold_builtin_hypot): Likewise.
13357         (fold_builtin_pow): Likewise.
13358         (fold_builtin_powi): Likewise.
13359         (fold_builtin_exponent): Likewise.
13360         (fold_builtin_memset): Likewise.
13361         (fold_builtin_bzero): Likewise.
13362         (fold_builtin_memory_op): Likewise.
13363         (fold_builtin_bcopy): Deleted; call site changed to invoke
13364         fold_builtin_memory_op directly.
13365         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
13366         (fold_builtin_strncpy): Likewise.
13367         (fold_builtin_memcmp): Likewise.
13368         (fold_builtin_strcmp): Likewise.
13369         (fold_builtin_strncmp): Likewise.
13370         (fold_builtin_signbit): Likewise.
13371         (fold_builtin_copysign): Likewise.
13372         (fold_builtin_isascii): Likewise.
13373         (fold_builtin_toascii): Likewise.
13374         (fold_builtin_isdigit): Likewise.
13375         (fold_builtin_fabs): Likewise.
13376         (fold_builtin_abs): Likewise.
13377         (fold_builtin_fmin_fmax): Likewise.
13378         (fold_builtin_carg): Likewise.
13379         (fold_builtin_classify): Likewise.
13380         (fold_builtin_unordered_cmp): Likewise.
13381
13382         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
13383         New functions split out from fold_builtin_1.
13384         (fold_builtin_n): New.
13385         (fold_builtin_varargs): New.
13386         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
13387         instead.
13388         (fold_call_expr): New.
13389         (build_function_call_expr): Rewrite to use new helper function.
13390         (fold_builtin_call_list): New.
13391         (build_call_expr): New.
13392         (fold_builtin_call_valist): New.
13393         (rewrite_call_expr): New.
13394         (validate_arg): New.
13395         (validate_arglist): Change parameter to be entire CALL_EXPR instead
13396         of an arglist.  Change return type to bool.  Use new CALL_EXPR
13397         accessors.
13398
13399         (fold_builtin_strstr):  Pass call arguments individually instead
13400         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13401         accessors and constructors.  Return NULL_TREE instead of 0.
13402         (fold_builtin_strchr): Likewise.
13403         (fold_builtin_strrchr): Likewise.
13404         (fold_builtin_strpbrk): Likewise.
13405         (fold_builtin_strcat): Likewise.
13406         (fold_builtin_strncat): Likewise.
13407         (fold_builtin_strspn): Likewise.
13408         (fold_builtin_strcspn): Likewise.
13409         (fold_builtin_fputs): Likewise.
13410         (fold_builtin_next_arg): Likewise.
13411         (fold_builtin_sprintf): Likewise.
13412
13413         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
13414         NULL_RTX instead of 0.
13415         (expand_builtin_memory_chk): Likewise.
13416         (maybe_emit_chk_warning): Likewise.
13417         (maybe_emit_sprintf_chk_warning): Likewise.
13418
13419         (fold_builtin_object_size): Pass call arguments individually instead
13420         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13421         accessors and constructors.  Return NULL_TREE instead of 0.
13422         (fold_builtin_memory_chk): Likewise.
13423         (fold_builtin_stxcpy_chk): Likewise.
13424         (fold_builtin_strncpy_chk): Likewise.
13425         (fold_builtin_strcat_chk): Likewise.
13426         (fold_builtin_strcat_chk): Likewise.
13427         (fold_builtin_strncat_chk): Likewise.
13428         (fold_builtin_sprintf_chk): Likewise.
13429         (fold_builtin_snprintf_chk): Likewise.
13430         (fold_builtin_printf): Likewise.
13431         (fold_builtin_vprintf): Likewise.
13432
13433         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
13434         constructors.
13435         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
13436         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13437         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
13438         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
13439         (fold_unary): Likewise.
13440         (fold_binary): Likewise.
13441         (fold_ternary): Remove CALL_EXPR case, since they are no longer
13442         ternary expressions.
13443         (fold): Add logic for tcc_vl_exp.
13444         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
13445         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13446         (fold_build3_stat): Add assertion to flag broken interface for
13447         constructing CALL_EXPRs.
13448         (fold_build_call_list): New.
13449         (fold_build_call_list_initializer): New.
13450         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
13451         constructors.
13452         (fold_strip_sign_ops): Likewise.
13453
13454 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13455             Brooks Moses  <brooks.moses@codesourcery.com>
13456             Lee Millward  <lee.millward@codesourcery.com>
13457
13458         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
13459         accessors and dump arguments explicitly.
13460
13461         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
13462         TREE_CODE_LENGTH.
13463         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
13464         explicitly.
13465         (print_call_name): Use new CALL_EXPR accessors.
13466
13467         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
13468         CALL_EXPR arguments explicitly instead of as a list.  Use
13469         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13470
13471         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
13472         (vrp_visit_stmt): Likewise.
13473
13474         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
13475         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
13476         TREE_CODE_LENGTH.
13477         (force_move_till_expr): Likewise.
13478
13479         * targhooks.c (default_external_stack_protect_fail): Use
13480         build_call_expr instead of build_function_call_expr.
13481         (default_hidden_stack_protect_fail): Likewise.
13482
13483         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
13484         build the call.
13485
13486         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
13487         and walk arguments explicitly.
13488
13489         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
13490         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13491         (expand_simple_operations): Likewise.
13492         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
13493
13494         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
13495         of TREE_CODE_LENGTH.
13496         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
13497
13498         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
13499         instead of TREE_CODE_LENGTH.
13500
13501         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
13502         (tree_ic_transform): Likewise.
13503         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
13504         parameter instead of arglist.  Fix callers.
13505         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
13506         (tree_stringops_transform): Likewise.
13507         (tree_indirect_call_to_profile): Likewise.
13508         (tree_stringops_values_to_profile): Likewise.
13509
13510         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
13511         (eliminate_tail_call): Likewise.
13512
13513         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
13514
13515         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
13516         Use TREE_OPERAND_LENGTH and generalize to handle any number of
13517         operands.
13518         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
13519
13520         * omp-low.c (build_omp_barrier): Use build_call_expr.
13521         (lower_rec_input_clauses): Likewise.
13522         (lower_reduction_clauses): Likewise.
13523         (expand_parallel_call): Likewise.
13524         (maybe_catch_exception): Likewise.
13525         (expand_omp_for_generic): Likewise.
13526         (expand_omp_for_static_nochunk): Likewise.
13527         (expand_omp_sections): Likewise.
13528         (lower_omp_single_simple): Likewise.
13529         (lower_omp_single_copy): Likewise.
13530         (lower_omp_master): Likewise.
13531         (lower_omp_ordered): Likewise.
13532         (lower_omp_critical): Likewise.
13533
13534         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
13535         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
13536
13537         * tree-gimple.c (is_gimple_call_addr): Fix doc.
13538         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
13539         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
13540
13541         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
13542         and generalize to handle any number of operands.
13543         (chrec_contains_undetermined): Likewise.
13544         (tree_contains_chrecs): Likewise.
13545         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
13546
13547         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
13548
13549         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
13550         fold_call_expr instead of fold_builtin.
13551         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
13552         match declarations there.
13553         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
13554         updates.
13555
13556         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
13557         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13558
13559         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
13560         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
13561
13562         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
13563         accessors.
13564
13565         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
13566         (execute_cse_sincos): Use new CALL_EXPR accessors.
13567
13568         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
13569
13570         * gimple-low.c (lower_function_body): Use build_call_expr.
13571         (lower_builtin_setjmp): Likewise.
13572
13573         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
13574         (set_storage_via_libcall): Likewise.
13575         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
13576         instead of TREE_CODE_LENGTH.
13577         (expand_expr_real_1): Use new CALL_EXPR accessors.
13578
13579         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
13580         generalize to handle any number of operands.
13581         (TB_parent_eq): Likewise.
13582
13583         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
13584         (strip_builtin_expect): Likewise.
13585
13586         * function.c (gimplify_parameters): Use build_call_expr.
13587
13588         * tree-vectorizer.c (vect_is_simple_reduction): Use
13589         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13590
13591         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
13592         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
13593
13594         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
13595         iterators.
13596
13597         * gimplify.c (build_stack_save_restore): Use build_call_expr.
13598         (gimplify_decl_expr): Likewise.
13599         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
13600         Use new CALL_EXPR iterators.
13601         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
13602         (gimplify_modify_expr_to_memset): Likewise.
13603         (gimplify_variable_sized_compare): Likewise.
13604         (gimplify_omp_atomic_fetch_op): Likewise.
13605         (gimplify_omp_atomic_pipeline): Likewise.
13606         (gimplify_omp_atomic_mutex): Likewise.
13607         (gimplify_function_tree): Likewise.
13608
13609         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
13610         (call_expr_flags): Likewise.
13611         (expand_call): Likewise.
13612
13613         * except.c (expand_builtin_eh_return_data_regno): Pass entire
13614         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
13615         accessors.
13616
13617         * coverage.c (create_coverage): Use build_call_expr.
13618
13619         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
13620         (temp_call_expr_obstack): New.
13621         (pool_copy_list): Delete.
13622         (temp_copy_call_expr): New.
13623         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
13624         CALL_EXPR accessors.  Get rid of special goo for copying argument
13625         lists and use temp_copy_call_expr instead.
13626         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
13627         CALL_EXPR accessors.
13628         (create_expression_by_pieces): Likewise.  Use build_call_array
13629         to construct the result instead of fold_build3.
13630         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
13631         dealing with argument lists.
13632         (init_pre): Remove references to expression_node_pool and
13633         list_node_pool.  Init temp_call_expr_obstack instead.
13634         (fini_pre): Remove references to expression_node_pool and
13635         list_node_pool.
13636
13637         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
13638         and walk arguments explicitly instead of as a list.
13639
13640         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
13641         (mx_register_decls): Likewise.
13642         (mudflap_register_call): Likewise.
13643         (mudflap_finish_file): Likewise.
13644
13645         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
13646         (ipa_callsite_compute_param): Likewise.
13647
13648         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
13649         accessors and constructor.
13650
13651         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
13652         accessors and constructor.
13653         (convert_tramp_reference): Likewise.
13654         (convert_call_expr): Likewise.
13655         (finalize_nesting_tree_1): Likewise.
13656
13657         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
13658         accessors.
13659
13660         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
13661
13662         * tree-inline.c (initialize_inlined_parameters): Pass entire
13663         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
13664         accessors.
13665         (estimate_num_insns_1): Use new CALL_EXPR accessors.
13666         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
13667
13668         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
13669         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13670         (vectorizable_reduction): Likewise.
13671         (vectorizable_call): Use new CALL_EXPR iterators.
13672         (vectorizable_conversion): Use build_call_expr.
13673         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
13674         (vect_gen_widened_results_half): Use build_call_expr.
13675         (vect_setup_realignment): Likewise.
13676         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
13677
13678         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
13679         (pass_through_call): Likewise.
13680         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
13681         fold_builtin.
13682
13683         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
13684         (tree_gen_pow2_profiler): Likewise.
13685         (tree_gen_one_value_profiler): Likewise.
13686         (tree_gen_ic_func_profiler): Likewise.
13687         (tree_gen_average_profiler): Likewise.
13688         (tree_gen_ior_profiler): Likewise.
13689
13690         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
13691         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
13692         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13693
13694         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
13695         of TREE_CODE_LENGTH.
13696
13697         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
13698         of TREE_CODE_LENGTH.
13699
13700         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
13701         constructor.
13702         (convert_to_integer): Likewise.
13703
13704         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
13705         accessors.
13706
13707 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13708             Brooks Moses  <brooks.moses@codesourcery.com>
13709             Lee Millward  <lee.millward@codesourcery.com>
13710
13711         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
13712         accessors.
13713         * config/frv/frv.c (frv_expand_builtin): Likewise.
13714         * config/s390/s390.c (s390_expand_builtin): Likewise.
13715
13716         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
13717         (sparc_expand_builtin): Use new CALL_EXPR accessors.
13718
13719         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
13720         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
13721         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
13722         (ix86_expand_store_builtin): Likewise.
13723         (ix86_expand_unop_builtin): Likewise.
13724         (ix86_expand_unop1_builtin): Likewise.
13725         (ix86_expand_sse_compare): Likewise.
13726         (ix86_expand_sse_comi): Likewise.
13727         (ix86_expand_vec_init_builtin): Likewise.
13728         (ix86_expand_vec_ext_builtin): Likewise.
13729         (ix86_expand_vec_set_builtin): Likewise.
13730         (ix86_expand_builtin): Use new CALL_EXPR accessors.
13731
13732         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
13733         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
13734
13735         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
13736         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
13737         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
13738
13739         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
13740         build_call_expr.
13741         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
13742         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
13743         arglist.  Use new CALL_EXPR accessors.  Fix callers.
13744         (altivec_expand_abs_builtin): Likewise.
13745         (rs6000_expand_binop_builtin): Likewise.
13746         (altivec_expand_predicate_builtin): Likewise.
13747         (altivec_expand_lv_builtin): Likewise.
13748         (spe_expand_stv_builtin): Likewise.
13749         (altivec_expand_stv_builtin): Likewise.
13750         (rs6000_expand_ternop_builtin): Likewise.
13751         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
13752         (altivec_expand_st_builtin): Likewise.
13753         (altivec_expand_dst_builtin): Likewise.
13754         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
13755         arglist.  Use new CALL_EXPR accessors.  Fix callers.
13756         (altivec_expand_vec_set_builtin): Likewise.
13757         (altivec_expand_vec_ext_builtin): Likewise.
13758         (altivec_expand_builtin): Use new CALL_EXPR accessors.
13759         (spe_expand_builtin): Likewise.
13760         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
13761         arglist.  Use new CALL_EXPR accessors.  Fix callers.
13762         (spe_expand_evsel_builtin): Likewise.
13763         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
13764         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
13765
13766         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
13767         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
13768         (arm_expand_unop_builtin): Likewise.
13769         (arm_expand_builtin): Use new CALL_EXPR accessors.
13770
13771         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
13772         accessors.
13773
13774         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
13775         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
13776         Fix callers.
13777         (bfin_expand_unop_builtin): Likewise.
13778         (bfin_expand_builtin): Use new CALL_EXPR accessors.
13779
13780 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13781             Brooks Moses  <brooks.moses@codesourcery.com>
13782             Lee Millward  <lee.millward@codesourcery.com>
13783
13784         * c-semantics.c (build_stmt): Add internal diagnostic check.
13785
13786         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
13787         accessors.  Print arguments explicitly instead of as a list.
13788
13789         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
13790
13791         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
13792         (c_finish_omp_flish): Likewise.
13793
13794         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
13795         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
13796         instead of TREE_CODE_LENGTH.
13797         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
13798         (c_warn_unused_result): Likewise.
13799
13800 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13801
13802         PR c/26494
13803         * doc/invoke.texi (Warning Options): Remove
13804         -Werror-implicit-function-declaration.
13805         (Wimplicit-function-declaration): Update description.
13806         * opts.c (common_handle_option): Move handling of -Werror=* to...
13807         (enable_warning_as_error): ...here.
13808         * opts.h (enable_warning_as_error): Declare.
13809         * c-decl.c (implicit_decl_warning): Unless
13810         -Wno-implicit-function-declaration is given, emit a pedwarn if
13811         -std=c99 or emit a warning if -Wimplicit-function-declaration.
13812         * c.opt (Wimplicit-function-declaration): Replace
13813         mesg_implicit_function_declaration with
13814         warn_implicit_function_declaration.
13815         * c-opts.c (c_common_handle_option):
13816         -Werror-implicit-function-declaration is exactly equal as
13817         -Werror=implicit-function-declaration.
13818         (set_Wimplicit): Replace mesg_implicit_function_declaration with
13819         warn_implicit_function_declaration.
13820         (c_common_post_options): -Wimplict-function-declaration is enabled
13821         by default by -std=c99, otherwise is disabled by default.
13822         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
13823
13824 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
13825
13826         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
13827         DECL on the rhs to a DECL on the lhs for debug info purposes if the
13828         former is ignored but not the latter.
13829
13830 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
13831
13832         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
13833         is made and the reference doesn't use the alias set of its type,
13834         do not create the temporary using that type.
13835
13836 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
13837
13838         * jump.c: Remove prototypes for delete_computation and
13839         delete_prior_computation.
13840
13841 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
13842
13843         * jump.c (get_label_after): Delete.
13844         (get_label_before, delete_computation, delete_jump,
13845         delete_prior_computation, follow_jumps): Move...
13846         * reorg.c (delete_computation, delete_prior_computation): ... here...
13847         (get_label_before, delete_jump): ... making these static ...
13848         (follow_jumps): ... and simplifying this since it only runs after
13849         reload.
13850         * rtl.h (get_label_after, get_label_before, delete_jump,
13851         follow_jumps): Delete prototypes.
13852
13853 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
13854
13855         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
13856
13857 2007-02-15  Nick Clifton  <nickc@redhat.com>
13858
13859         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
13860         order to prevent it from being munged by the target.
13861
13862 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
13863
13864         * config/i386/i386.md: Remove misleading comment.
13865
13866 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
13867
13868         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
13869         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
13870         invalid patterns.
13871
13872 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
13873
13874         * tree-sra.c (instantiate_missing_elements): Canonicalize
13875         bit-field types.
13876         (sra_build_assignment): New.
13877         (generate_copy_inout, generate_element_copy,
13878         generate_element_zero, generate_one_element_init): Use it.
13879
13880 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
13881
13882         * tree-sra.c (instantiate_missing_elements): Canonicalize
13883         bit-field types.
13884         (sra_build_assignment): New.
13885         (generate_copy_inout, generate_element_copy,
13886         generate_element_zero, generate_one_element_init): Use it.
13887
13888 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
13889
13890         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
13891         limbo die nodes.
13892
13893 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
13894
13895         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
13896         types as aggregates not scalars.
13897         * function.c (assign_stack_temp_for_type): Likewise.
13898
13899 2007-02-14  Roger Sayle  <roger@eyesopen.com>
13900             Zdenek Dvorak  <dvorakz@suse.cz>
13901
13902         * tree-dump.c (dump_switch_p_1): Require exact match of the option
13903         name.
13904
13905 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
13906
13907         * passes.c (next_pass_1): Clear the next field of the copied
13908         pass structure.
13909
13910 2007-02-14  Richard Henderson  <rth@redhat.com>
13911
13912         * tree-sra.c (early_sra): New.
13913         (decl_can_be_decomposed_p): Deny va_list if early_sra.
13914         (tree_sra_early, pass_sra_early): New.
13915         * tree-pass.h (pass_sra_early): Declare.
13916         * passes.c (init_optimization_passes): Use it.
13917
13918 2007-02-14  Richard Guenther  <rguenther@suse.de>
13919
13920         * flags.h (issue_strict_overflow_warning): Convert to a macro.
13921
13922 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
13923
13924          PR tree-optimization/30771
13925         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
13926         also phi nodes.
13927         (vect_analyze_operations): Induction phis can now be marked as
13928         used_in_loop.
13929         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
13930         Update documentation accordingly.
13931
13932 2007-02-14  Nick Clifton  <nickc@redhat.com>
13933
13934         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
13935         most 3 arguments are supported.
13936         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
13937
13938 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
13939
13940         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
13941         Ensure dst->current is valid.
13942
13943 2007-02-13  Paul Brook  <paul@codesourcery.com>
13944
13945         * config.gcc: Add arm*-*-uclinux-*eabi.
13946         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
13947         (SUBTARGET_EXTRA_LINK_SPEC): Define.
13948         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
13949         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
13950         (LINK_SPEC): Define.
13951         (LIB_SPEC): Define.
13952         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
13953         register.
13954         * config/arm/uclinux-eabi.h: New file.
13955         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
13956         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
13957         based targets.
13958
13959 2007-02-13  Ian Lance Taylor  <iant@google.com>
13960
13961         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
13962         * flags.h (warn_strict_overflow): Declare.
13963         (enum warn_strict_overflow_code): Define.
13964         (issue_strict_overflow_warning): New static inline function.
13965         * opts.c (warn_strict_overflow): New variable.
13966         (common_handle_option): Handle OPT_Wstrict_overflow and
13967         OPT_Wstrict_overflow_.
13968         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
13969         OPT_Wall.
13970         * fold-const.c: Include intl.h.
13971         (fold_deferring_overflow_warnings): New static variable.
13972         (fold_deferred_overflow_warning): New static variable.
13973         (fold_deferred_overflow_code): New static variable.
13974         (fold_defer_overflow_warnings): New function.
13975         (fold_undefer_overflow_warnings): New function.
13976         (fold_undefer_and_ignore_overflow_warnings): New function.
13977         (fold_deferring_overflow_warnings_p): New function.
13978         (fold_overflow_warning): New static function.
13979         (make_range): Add strict_overflow_p parameter.  Change all
13980         callers.
13981         (extract_muldiv, extract_muldiv_1): Likewise.
13982         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
13983         tree_expr_nonnegative_p.
13984         (fold_negate_expr): Call fold_overflow_warning.
13985         (fold_range_test): Likewise.
13986         (fold_comparison): Likewise.
13987         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
13988         instead of tree_expr_nonnegative_p.
13989         (tree_expr_nonnegative_warnv_p): Rename from
13990         tree_expr_nonnegative_p, add strict_overflow_p parameter.
13991         (tree_expr_nonnegative_p): New function.
13992         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
13993         strict_overflow_p parameter.
13994         (tree_expr_nonzero_p): New function.
13995         * passes.c (verify_interpass_invariants): New static function.
13996         (execute_one_pass): Call it.
13997         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
13998         warnings.
13999         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
14000         (estimate_numbers_of_iterations): Likewise.
14001         (scev_probably_wraps_p): Likewise.
14002         * tree-ssa-ccp.c: Include "toplev.h".
14003         (evaluate_stmt): Defer fold overflow warnings until we know we are
14004         going to optimize.
14005         (struct fold_stmt_r_data): Add stmt field.
14006         (fold_stmt_r): Defer fold overflow warnings until we know we
14007         optimized.
14008         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
14009         (fold_stmt_inplace): Likewise.
14010         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
14011         (cleanup_control_expr_graph): Defer fold overflow warnings until
14012         we know we are going to optimize.
14013         * tree-cfg.c (fold_cond_expr_cond): Likewise.
14014         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
14015         Likewise.
14016         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
14017         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
14018         * tree-ssa-loop-manip.c (create_iv): Likewise.
14019         * c-typeck.c (build_conditional_expr): Likewise.
14020         (build_binary_op): Likewise.
14021         * tree-vrp.c (vrp_expr_computes_nonzero): Call
14022         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
14023         (extract_range_from_unary_expr): Likewise.
14024         * simplify-rtx.c (simplify_const_relational_operation): Warn when
14025         assuming that signed overflow does not occur.
14026         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
14027         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
14028         (fold_defer_overflow_warnings): Declare.
14029         (fold_undefer_overflow_warnings): Declare.
14030         (fold_undefer_and_ignore_overflow_warnings): Declare.
14031         (fold_deferring_overflow_warnings_p): Declare.
14032         (tree_expr_nonzero_warnv_p): Declare.
14033         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
14034         of warning options.
14035         (Warning Options): Document -Wstrict-overflow.
14036         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
14037         (tree-ssa-ccp.o): Likewise.
14038         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
14039         (fold-const.o): Depend on intl.h.
14040
14041 2007-02-13  Ian Lance Taylor  <iant@google.com>
14042
14043         PR middle-end/30751
14044         * lower-subreg.c (resolve_simple_move): Decompose subregs in
14045         addresses.
14046
14047 2007-02-13  Stuart Hastings  <stuart@apple.com>
14048
14049         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
14050
14051 2007-02-13  Richard Henderson  <rth@redhat.com>
14052
14053         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
14054         handled_component_p before looking for the indirect_ref.
14055
14056 2007-02-13  Richard Henderson  <rth@redhat.com>
14057
14058         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
14059         remove flags clobber.
14060         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
14061         (bswaphi_lowpart): New.
14062         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
14063         remove TARGET_BSWAP test.  Delete expander of the same name.
14064
14065         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
14066         (expand_unop): Use them.
14067
14068 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
14069
14070         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
14071         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
14072         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
14073         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
14074         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
14075         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
14076         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
14077         assembler dialect choice from asm templates.
14078
14079 2007-02-12  Richard Henderson  <rth@redhat.com>
14080
14081         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
14082         (fixuns_trunc<SSEMODEF>si2): Use it.
14083         * config/i386/sse.md (vec_setv4sf_0): Export.
14084         * config/i386/i386.c (ix86_build_const_vector): Export.
14085         (ix86_split_convert_uns_si_sse): Rename from
14086         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
14087         * config/i386/i386-protos.h: Update.
14088
14089 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14090
14091         PR c/29521
14092         * c-typeck.c (c_finish_return): Improve warning message.
14093
14094 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14095
14096         * alias.c (find_symbolic_term): Delete unused function.
14097
14098 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
14099
14100         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
14101         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
14102         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
14103
14104 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
14105
14106         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
14107         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
14108         the function, temporarily point the debug interface to the null one.
14109
14110 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
14111
14112         * dwarf2out.c (round_up_to_align): New static function.
14113         (field_byte_offset): Use it to round the offset.
14114
14115 2007-02-12  Richard Henderson  <rth@redhat.com>
14116
14117         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
14118         (inswl_const): Export.
14119
14120 2007-02-12  Richard Henderson  <rth@redhat.com>
14121
14122         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
14123         result mode of the libcall, convert back to outmode.
14124
14125 2007-02-12  Roger Sayle  <roger@eyesopen.com>
14126
14127         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
14128         (bswapdi2): New define_expand to implement 32-bit implementation.
14129
14130 2007-02-12  Nick Clifton  <nickc@redhat.com>
14131
14132         * doc/invoke.texi (Overall Options): Document --help=.
14133         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
14134         (cc1_options): Pass --help= on to cc1.
14135         (display_help): Add description of --help=.
14136         (process_command): Add code to handle --help=.  Allow translated
14137         --help and --target-help switches to be passed on to compiler
14138         sub-process.
14139         (main): Remove unused if statement.
14140         * opts.c (columns): Remove.
14141         (LEFT_COLUMN): Define.
14142         (wrap_help): Add columns argument.
14143         (print_filtered_help): Change parameters to be an include bitmask,
14144         an exclude bitmask, an any bitmask and the column width.  Move the
14145         code to display the params list here.  Add code to display the
14146         status of options rather than their descriptions if the quiet flag
14147         is not active.
14148         (print_specific_help): Change parameters to be an include bitmask,
14149         an exclude bitmask and an any bitmask.  Move code to look up the
14150         column width here.  Decide upon the title for an options listing.
14151         (common_handle_options): Add code to handle --help=.  Adapt code
14152         for --help and --target-help to use the revised form of the
14153         print_specific_help function.
14154         (print_help): Delete.
14155         (print_param_help): Delete.
14156         (print_switch): Delete.
14157         * opts.h (cl_lang_count): Add prototype.
14158         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
14159         CL_MAX_OPTION_CLASS): New defines.
14160         * optc-gen.awk: Add construction of cl_lang_count.
14161         * c.opt: Add Warning attribute to warning options and Optimization
14162         attribute to optimization options.
14163         * common.opt: Likewise.
14164         Add --help=.
14165         Add -fhelp and -ftarget-help as aliases for the transformed --help
14166         and --target-help options.
14167         * opt-functions.awk: Add code to handle Warning and Optimization
14168         attributes.
14169
14170 2007-02-12  Richard Henderson  <rth@redhat.com>
14171
14172         * config/alpha/constraints.md: New file.
14173         * config/alpha/alpha.c: Include tm-constrs.h.
14174         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
14175         alpha_extra_constraint): Remove.
14176         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
14177         * config/alpha/alpha-protos.h: Update.
14178         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
14179         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
14180         (EXTRA_CONSTRAINT): Remove.
14181         * config/alpha/alpha.md: Include constraints.md.
14182         (adddi splitter): Use satisfies_constraint_*.
14183         * config/alpha/predicates.md (add_operand): Likewise.
14184         (sext_add_operand, addition_operation): Likewise.
14185
14186 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
14187
14188         PR tree-optimization/29145
14189         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
14190         in our handling of restrict qualified pointers.
14191
14192 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14193
14194         PR middle-end/7651
14195         * doc/invoke.texi (Wunused-value): Update description.
14196         (Wextra): Delete item.
14197         * opts.c (set_Wextra): Don't use the value of Wextra to set the
14198         value of Wunused-value.
14199         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
14200         (c_finish_stmt_expr): Don't check extra_warnings.
14201         (emit_side_effect_warnings): The caller is responsible to check
14202         warn_unused_value.
14203
14204 2007-02-11  Roger Sayle  <roger@eyesopen.com>
14205             Matt Thomas  <matt@3am-software.com>
14206
14207         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
14208
14209 2007-02-11  Roger Sayle  <roger@eyesopen.com>
14210
14211         * simplify-rtx.c (simplify_relational_operation_1): Optimize
14212         comparisons of POPCOUNT against zero.
14213         (simplify_const_relational_operation): Likewise.
14214
14215 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14216
14217         * doc/invoke.texi (Wextra): Delete outdated paragraph.
14218
14219 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14220
14221         * dwarf2out.c (root_type): Delete unused function.
14222
14223 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14224
14225         * genattrtab.c (contained_in_p): Delete unused function.
14226         (write_expr_attr_cache): Likewise.
14227
14228 2007-02-11  Jan Hubicka  <jh@suse.cz>
14229
14230         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
14231         previous patch.
14232
14233 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
14234
14235         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
14236         to add the REG_EQ* note.
14237         * see.c (see_merge_one_use_extension): Likewise.
14238         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
14239         turn REG_EQUAL notes into REG_EQUIV notes if the target
14240         register may have more than one set.
14241         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
14242         * gcse.c (try_replace_reg): Likewise.
14243         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
14244         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
14245         more than one REG_EQUIV note.
14246         * reload1.c (gen_reload): Use set_unique_reg_note.
14247
14248 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
14249
14250         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
14251         (ix86_builtin_conversion): New function.
14252
14253 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
14254
14255         PR target/29487
14256         * tree.h (DECL_REPLACEABLE_P): New macro.
14257         * except.c (set_nothrow_function_flags): Likewise.
14258
14259 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
14260             Ira Rosen  <irar@il.ibm.com>
14261             Dorit Nuzman  <dorit@il.ibm.com>
14262
14263         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
14264         * targhooks.c (default_builtin_vectorized_conversion): New.
14265         * targhooks.h (default_builtin_vectorized_function): New declaration.
14266         * target.h (struct vectorize): Add builtin_conversion field.
14267         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
14268         stmt_vec_info_type value.
14269         (vectorizable_conversion): New declaration.
14270         * tree-vect-analyze.c (vect_analyze_operations): Add
14271         vectorizable_conversion call.
14272         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
14273         * tree-vect-transform.c (vectorizable_conversion): New function.
14274         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
14275         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
14276         mode.
14277         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
14278         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
14279         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
14280         or ALTIVEC_BUILTIN_VCFSX.
14281
14282 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14283
14284         PR target/30634
14285         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
14286         CONST_DOUBLE and operand 0 is a hard register.
14287         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
14288         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
14289         is a hard floating-point register.
14290
14291 2007-02-10  Richard Henderson  <rth@redhat.com>
14292             Jakub Jelinek  <jakub@redhat.com>
14293             Alexandre Oliva  <aoliva@redhat.com>
14294
14295         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
14296         * builtin-types.def (BT_WORD): Make unsigned.
14297         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
14298         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
14299         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
14300         * c-decl.c (grokdeclarator): Don't error if !have_tls.
14301         * c-parser.c (c_parser_omp_threadprivate): Likewise.
14302         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
14303         emulated tls.
14304         * expr.c (emutls_var_address): New.
14305         (expand_expr_real_1): Expand emulated tls.
14306         (expand_expr_addr_expr_1): Likewise.
14307         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
14308         * output.h (emutls_finish): Declare.
14309         * toplev.c (compile_file): Call it.
14310         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
14311         address before wrapping in CONST.
14312         * varasm.c (emutls_htab, emutls_object_type): New.
14313         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
14314         (get_emutls_object_name, get_emutls_object_type): New.
14315         (get_emutls_init_templ_addr, emutls_decl): New.
14316         (emutls_common_1, emutls_finish): New.
14317         (assemble_variable): When emulating tls, swap decls; generate
14318         constructor for the emutls objects.
14319         (do_assemble_alias): When emulating tls, swap decl and target name.
14320         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
14321         for emulated tls.
14322         * varpool.c (decide_is_variable_needed): Look at force_output.
14323         Recurse for emulated tls.
14324         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
14325         with decide_is_variable_needed.
14326         * emutls.c: New file.
14327         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
14328         tls_object for real tls.
14329
14330 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
14331
14332         PR rtl-optimization/29599
14333         * reload1.c (eliminate_regs_in_insn): Take the destination
14334         mode into account when computing the offset.
14335
14336 2007-02-09  Stuart Hastings  <stuart@apple.com>
14337             Richard Henderson  <rth@redhat.com>
14338
14339         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14340         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14341         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
14342         fixuns_truncdfhi2): New.
14343         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
14344         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
14345         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
14346         (floatunssidf2): Allow nonimmediate source.
14347         * config/i386/sse.md (movdi_to_sse): New.
14348         (vec_concatv2di): Drop '*'.
14349         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
14350         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14351         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
14352         New.
14353         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
14354         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14355         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
14356         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
14357         (ix86_build_signbit_mask): Fix decl of v, refactor to call
14358         ix86_build_const_vector.
14359         (x86_emit_floatuns): Rewrite.
14360
14361 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14362
14363         * genautomata.c (longest_path_length): Delete unused function.
14364         (struct state): Delete unused longest_path_length.
14365         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
14366         (get_free_state): Delete unused.
14367
14368 2007-02-09  Jan Hubicka  <jh@suse.cz>
14369
14370         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
14371         * doc/invoke.texi (inline-unit-growth): Update default value.
14372
14373         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
14374         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
14375         (rebuild_cgraph_edges): Likewise.
14376         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
14377         (dump_cgraph_node): Dump frequencies.
14378         (cgraph_clone_edge): Add frequency scales.
14379         (cgraph_clone_node): Add freuqnecy.
14380         * cgraph.h (cgraph_edge): Add freuqnecy argument.
14381         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
14382         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
14383         * tree-pass.h (TODO_rebuild_frequencies): New constant.
14384         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
14385         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
14386         (save_inline_function_body): Likewise.
14387         * ipa-inline.c: inluce rtl.h
14388         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
14389         (cgraph_edge_badness): Use frequencies.
14390         (cgraph_decide_recursive_inlining): Update clonning.
14391         (cgraph_decide_inlining_of_small_function): Dump frequency.
14392         * predict.c (estimate_bb_frequencies): Export.
14393         * predict.h (estimate_bb_frequencies): Declare.
14394         * tree-inline.c (copy_bb): Watch overflows.
14395         (expand_call_inline): Update call of cgraph_create_edge.
14396         (optimize_inline_calls): Use TODO flags to update frequnecies.
14397         * passes.h: Include predict.h
14398         (init_optimization_passes): Move profile ahead.
14399         (execute_function_todo): Handle TODO_rebuild_frequencies.
14400
14401 2007-02-09  Roger Sayle  <roger@eyesopen.com>
14402
14403         * config/alpha/alpha.c (emit_insxl): Force the first operand of
14404         the insbl or inswl pattern into a register.
14405
14406 2007-02-09  Roger Sayle  <roger@eyesopen.com>
14407
14408         * config/ia64/ia64.md (bswapdi2): New define_insn.
14409
14410 2007-02-09  Richard Henderson  <rth@redhat.com>
14411
14412         * config/i386/constraints.md (Ym): New constraint.
14413         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
14414         (movdi_1_rex64): Split sse and xmm general register moves from
14415         memory move alternatives.  Use conditional register constraints.
14416         (movsf_1, movdf_integer): Likewise.
14417         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
14418         (movdf_integer_rex64): New.
14419         (pushsf_rex64): Fix output constraints.
14420         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
14421         (sse2_stored): Likewise.
14422         (sse2_storeq_rex64): New.
14423         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
14424         amd and not generic.
14425         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
14426         for optimize_size.  Remove SF/DFmode hack.
14427
14428 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14429
14430         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
14431         (bit_SSE4a): New.
14432
14433 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
14434             Richard Sandiford  <richard@codesourcery.com>
14435
14436         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
14437         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
14438         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
14439         m68k/t-mlib to tmake_file.
14440         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
14441         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
14442         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
14443         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
14444         variable is not empty, add t-$m68k_arch_family to tmake_file.
14445         Add t-mlibs to tmake_file.
14446         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
14447         * config/m68k/t-cf: New file.
14448         * config/m68k/t-m68k: Likewise.
14449         * config/m68k/t-mlibs: Likewise.
14450         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14451         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14452         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14453         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14454         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
14455         Delete.
14456         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
14457         (INSTALL_LIBGCC): Delete.
14458         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14459         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14460         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14461         (M68K_MLIB_CPU): Define.
14462         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14463         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14464         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
14465
14466 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
14467             Richard Guenther  <rguenther@suse.de>
14468
14469         PR middle-end/23361
14470         * fold-const.c (fold_comparison): Handle obfuscated comparisons
14471         against INT_MIN/INT_MAX.
14472         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
14473         file if a loop is removed.
14474
14475 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
14476
14477         * calls.c (store_one_arg): Pass correct alignment to
14478         emit_push_insn for non-BLKmode values.
14479         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
14480         unaligned stack slot via a suitably aligned slot.
14481
14482 2007-02-08  DJ Delorie  <dj@redhat.com>
14483
14484         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
14485         warnings.
14486         (legal_subregs): Use unsigned char, make const.
14487         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
14488
14489 2007-02-08  Paul Brook  <paul@codesourcery.com>
14490
14491         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
14492         special interworking needed.
14493
14494 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
14495
14496         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
14497         conditional to __SSE2__.
14498         (Entries below should have been added to first ChangeLog
14499         entry for amdfam10 dated 2007-02-05)
14500         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
14501         defined.
14502         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
14503         defined.
14504         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
14505         defined.
14506
14507 2007-02-08  DJ Delorie  <dj@redhat.com>
14508
14509         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
14510         * config/m32c/m32c.c (legal_subregs): New.
14511         (m32c_illegal_subreg_p): New.
14512         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
14513         unsupported subregs of hard regs.
14514
14515 2007-02-08  Jan Hubicka  <jh@suse.cz>
14516
14517         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
14518         the same one; always update histograms.
14519
14520 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
14521
14522         * passes.c (init_optimization_passes): Tidy comment.
14523
14524 2007-02-08  Roger Sayle  <roger@eyesopen.com>
14525
14526         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
14527         strip zero_extend, bswap and rotates from POCOUNT's argument.
14528         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
14529         zero_extend and rotates from PARITY's argument.
14530         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
14531         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
14532         of an integer constant at compile-time.
14533
14534 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
14535
14536         PR 30562
14537         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
14538         Update all users.
14539         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
14540         users.
14541         (init_alias_info):
14542         * tree-ssa-live.c (remove_unused_locals): Do not remove
14543         TREE_ADDRESSABLE variables.
14544         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
14545         * tree-ssa-operands.c (add_virtual_operand): Remove argument
14546         FOR_CLOBBER.  Update all users.
14547         If VAR has an associated alias set, add a virtual operand for
14548         it if no alias is found to conflict with the memory reference.
14549
14550 2007-02-07  Jan Hubicka  <jh@suse.cz>
14551             Robert Kidd <rkidd@crhc.uiuc.edu>
14552
14553         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
14554
14555 2007-02-07  Ian Lance Taylor  <iant@google.com>
14556
14557         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
14558
14559 2007-02-07  Roger Sayle  <roger@eyesopen.com>
14560
14561         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
14562         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
14563         tablejumpdi, movsi_to_cr_one): Remove constraints from
14564         define_expand's match_operands.
14565
14566 2007-02-07  Roger Sayle  <roger@eyesopen.com>
14567
14568         * global.c (compute_regsets): Move declatation of "i" inside of
14569         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
14570
14571 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
14572
14573         PR c++/30703
14574         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
14575         of INDIRECT_REF <RESULT_DECL>.
14576
14577         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
14578
14579 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
14580             Kaz Kojima  <kkojima@gcc.gnu.org>
14581
14582         PR target/29746
14583         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
14584         properly.
14585         (sh_initialize_trampoline): Add parentheses to avoid a warning.
14586
14587 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
14588
14589         * doc/loop.texi: Document possibility not to perform disambiguation
14590         of loops with multiple latches.
14591         * cfgloopmanip.c (alp_enum_p): Removed.
14592         (add_loop): Handle subloops.  Use get_loop_body_with_size.
14593         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
14594         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
14595         the new forwarder block.
14596         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
14597         Handle the case latch is NULL.
14598         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
14599         modifications when marking loop exits.
14600         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
14601         be modified.
14602         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
14603         disambiguate_loops_with_multiple_latches.
14604         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
14605         before fix_loop_structure.
14606         * cfgloop.c: Include pointer-set.h and output.h.
14607         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
14608         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
14609         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
14610         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
14611         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
14612         disambiguate_multiple_latches, get_loop_body_with_size,
14613         disambiguate_loops_with_multiple_latches): New functions.
14614         (flow_loop_dump): Dump multiple latch edges.
14615         (flow_loop_nodes_find): Handle loops with multiple latches.
14616         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
14617         (glb_enum_p): Modified.
14618         (get_loop_body): Use get_loop_body_with_size.
14619         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
14620         (AVOID_CFG_MODIFICATIONS): New constant.
14621         (disambiguate_loops_with_multiple_latches, add_loop,
14622         get_loop_body_with_size): Declare.
14623         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
14624
14625 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
14626
14627         PR inline-asm/28686
14628         * global.c (compute_regsets): New function.
14629         (global_alloc): Refactored ELIMINABLE_REGSET
14630         and NO_GLOBAL_ALLOC_REGS computation out.
14631         (rest_of_handle_global_alloc): Call compute_regsets()
14632         for non-optimizing case.
14633
14634 2007-02-06  Richard Henderson  <rth@redhat.com>
14635
14636         * config/i386/constraints.md (Y2): Rename from Y.
14637         (Yi): New constraint.
14638         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
14639         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
14640         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
14641         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
14642         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
14643         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
14644         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
14645         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
14646         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
14647         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
14648         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
14649         vec_extractv2si_1): Change Y constraints to Y2.
14650         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
14651         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
14652         Change Y constraints to Y2.
14653         (sse2_loadld): Change Y constraints to x.
14654
14655 2007-02-06  Roger Sayle  <roger@eyesopen.com>
14656
14657         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
14658         (parity<mode>2): New define_expand using rs6000_emit_parity.
14659         * config/rs6000/rs6000.c (rs6000_emit_popcount,
14660         rs6000_emit_parity): New functions.
14661         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
14662         rs6000_emit_parity): Prototype here.
14663
14664 2007-02-06  Ian Lance Taylor  <iant@google.com>
14665
14666         * lower-subreg.c (simple_move_operand): Reject CONST.
14667         (resolve_clobber): Call validate_change rather than directly
14668         assigning to XEXP (pat, 0).
14669
14670 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
14671
14672         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
14673         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
14674         (tree-cfg.o): Remove hashtab.h dependency.
14675
14676         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
14677         (struct ivopts_data): Change niters to pointer_map_t.
14678         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
14679         (niter_for_exit): Create pointer_map on demand.  Change for
14680         pointer_map API.
14681         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
14682         (free_loop_data): Destroy data->niters if created and reset field.
14683         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
14684         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
14685
14686         * tree-ssa-reassoc.c: Include pointer-set.h.
14687         (bb_rank): Change to long *.
14688         (operand_rank): Change to pointer_map_t.
14689         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
14690         (insert_operand_rank): Accept long.
14691         (operand_entry_hash, operand_entry_eq): Remove.
14692         (get_rank): Return long.  Adjust for changes above.
14693         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
14694         and operand_rank.
14695         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
14696
14697         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
14698         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
14699         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
14700         is not NULL.
14701         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
14702         directly since it cannot be NULL.
14703         (get_vi_for_tree): Rewrite for pointer_map API.
14704         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
14705         (init_alias_vars): Create vi_for_tree as pointer_map.
14706         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
14707
14708         * tree-cfg.c: Don't include hashtab.h.
14709         (edge_to_cases): Declare as pointer_map.
14710         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
14711         Delete.
14712         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
14713         (start_recording_case_labels): Create edge_to_cases as pointer_map.
14714         (end_recoding_case_labels): Cleanup edge_to_cases manually before
14715         destroying it.
14716         (record_switch_edge): Delete.
14717         (get_cases_for_edge): Adjust for pointer_map API, inline
14718         record_switch_edge (rewritten for new API), remove goto.
14719
14720 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
14721
14722         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
14723         * tree-nested.c: Include pointer-set.h.
14724         (var_map_elt, var_map_eq, var_map_hash): Delete.
14725         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
14726         to pointer_map_t's.
14727         (nesting_info_bitmap_obstack): New.
14728         (lookup_field_for_decl): Adjust for pointer_map API.
14729         (lookup_tramp_for_decl): Adjust for pointer_map API.
14730         (get_nonlocal_debug_decl): Adjust for pointer_map API.
14731         (get_local_debug_decl): Adjust for pointer_map API.
14732         (convert_nl_goto_reference): Adjust for pointer_map API.
14733         (convert_nl_goto_receiver): Adjust for pointer_map API.
14734         (create_nesting_tree): Create outside GGC space.  Create bitmap on
14735         the new obstack.  Create field_map and var_map as pointer_maps.
14736         (free_nesting_tree): Adjust for changes to create_nesting_tree.
14737         (root): Delete.
14738         (lower_nested_functions): Move root here, no need to NULL it.
14739         Initialize and release the obstack.
14740
14741 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
14742
14743         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
14744         Remove prototypes and make them non-static.
14745         (struct tree_int_map): Remove.
14746         * tree.h (struct tree_int_map): Move here, turning TO into an
14747         unsigned int.
14748         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
14749
14750         * tree.h (TREE_COMPLEXITY): Remove.
14751         (struct tree_exp): Remove complexity field.
14752         * tree.c (build1_stat): Don't set it.
14753
14754 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
14755             Victor Kaplansky  <victork@il.ibm.com>
14756
14757         * tree-vectorizer.c (vect_is_simple_use): Support induction.
14758         (vect_is_simple_reduction): Support reduction with induction as
14759         one of the operands.
14760         (vect_is_simple_iv_evolution): Fix formatting.
14761         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
14762         formatting.  Don't mark induction phis for vectorization.
14763         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
14764         * tree-vect-transform.c (get_initial_def_for_induction): New function.
14765         (vect_get_vec_def_for_operand): Support induction.
14766         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
14767         induction case.
14768         (vectorizable_reduction): Support reduction with induction as one of
14769         the operands.
14770         (vectorizable_type_demotion): Use def-type of stmt argument rather
14771         than dummy def-type.
14772
14773         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
14774         flag_tree_scev_cprop.
14775         * common.opt (tree-scev-cprop): New flag.
14776
14777         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
14778         call to vect_get_new_vect_var.
14779
14780 2007-02-06  Ira Rosen  <irar@il.ibm.com>
14781
14782         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
14783         vectype is not NULL.
14784         (vect_pattern_recog_1): Likewise.
14785
14786 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14787
14788         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
14789         (fold_negate_expr): Likewise.
14790
14791 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
14792
14793         PR debug/30189
14794         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
14795         even if cv-qualification is the same.
14796
14797 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
14798
14799         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
14800         __enable_execute_stack on completion.
14801
14802 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14803
14804         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
14805         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
14806         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
14807         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
14808         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
14809         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
14810         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
14811         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
14812
14813 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14814
14815         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
14816         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
14817         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
14818         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
14819         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
14820         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
14821         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
14822         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
14823         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
14824         umuldi3_highpart_rex64, umulsi3_highpart_insn,
14825         umulsi3_highpart_zext, smuldi3_highpart_rex64,
14826         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
14827         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
14828         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
14829         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
14830         sqrtextenddfxf2_i387): Added amdfam10_decode.
14831
14832         * config/i386/athlon.md (athlon_idirect_amdfam10,
14833         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
14834         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
14835         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
14836         athlon_ivector_store_amdfam10): New define_insn_reservation.
14837         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
14838         amdfam10.
14839
14840 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14841
14842         * config/i386/athlon.md (athlon_call_amdfam10,
14843         athlon_pop_amdfam10, athlon_lea_amdfam10): New
14844         define_insn_reservation.
14845         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
14846         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
14847         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
14848
14849 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14850
14851         * config/i386/athlon.md (athlon_sseld_amdfam10,
14852         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
14853         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
14854
14855 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14856
14857         * config/i386/athlon.md (athlon_sseins_amdfam10): New
14858         define_insn_reservation.
14859         * config/i386/i386.md (sseins): Added sseins to define_attr type
14860         and define_attr unit.
14861         * config/i386/sse.md: Set type attribute to sseins for insertq
14862         and insertqi.
14863
14864 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14865
14866         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
14867         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
14868         ssecomi_load_amdfam10, ssecomi_amdfam10,
14869         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
14870         define_insn_reservation.
14871         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
14872
14873 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14874
14875         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
14876         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
14877         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
14878         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
14879         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
14880         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
14881         define_insn_reservation.
14882
14883         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
14884         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
14885         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
14886         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
14887         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
14888
14889 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14890
14891         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
14892         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
14893         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
14894         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
14895         athlon_ssemul_load_k8): Added amdfam10.
14896
14897 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14898
14899         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
14900         (x86_sse_unaligned_move_optimal): New variable.
14901
14902         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
14903         m_AMDFAM10.
14904         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
14905         for unaligned vector SSE double/single precision loads for AMDFAM10.
14906
14907 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14908
14909         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
14910         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
14911         Define TARGET_CPU_DEFAULT_amdfam10.
14912         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
14913         (processor_type): Add PROCESSOR_AMDFAM10.
14914
14915         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
14916         processor_type in config/i386/i386.h.
14917         Enable imul peepholes for TARGET_AMDFAM10.
14918
14919         * config.gcc: Add support for --with-cpu option for amdfam10.
14920
14921         * config/i386/i386.c (amdfam10_cost): New variable.
14922         (m_AMDFAM10): New macro.
14923         (m_ATHLON_K8_AMDFAM10): New macro.
14924         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
14925         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
14926         x86_promote_QImode, x86_integer_DFmode_moves,
14927         x86_partial_reg_dependency, x86_memory_mismatch_stall,
14928         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
14929         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
14930         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
14931         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
14932         Enable/disable for amdfam10.
14933         (override_options): Add amdfam10_cost to processor_target_table.
14934         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
14935         processor_alias_table.
14936         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
14937         (ix86_adjust_cost): Add code for amdfam10.
14938
14939 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14940
14941         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
14942         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
14943         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
14944         * config/i386/i386.h: Add builtin definition for SSE4A.
14945         * config/i386/i386.md: Add support for ABM instructions
14946         (popcnt and lzcnt).
14947         * config/i386/sse.md: Add support for SSE4A instructions
14948         (movntss, movntsd, extrq, insertq).
14949         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
14950         Add -march=amdfam10 flag.
14951         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
14952         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
14953         and amdfam10.
14954         * doc/extend.texi: Add documentation for SSE4A builtins.
14955
14956 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
14957
14958         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
14959
14960 2007-02-05  Richard Guenther  <rguenther@suse.de>
14961
14962         * tree-vectorizer.h (vectorizable_function): Add argument type
14963         argument, change return type.
14964         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
14965         * tree-vect-transform.c (vectorizable_function): Handle extra
14966         argument, return vectorized function decl.
14967         (build_vectorized_function_call): Remove.
14968         (vectorizable_call): Handle calls with result and argument types
14969         differing.  Handle loop vectorization factor correctly.
14970         * targhooks.c (default_builtin_vectorized_function): Adjust for
14971         extra argument.
14972         * targhooks.h (default_builtin_vectorized_function): Likewise.
14973         * target.h (builtin_vectorized_function): Add argument type
14974         argument.
14975         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
14976         extra argument, allow vectorizing of lrintf.
14977         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
14978         documentation of target hook.
14979
14980 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
14981
14982         PR target/30665
14983         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
14984         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
14985         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
14986
14987 2007-02-05  Roger Sayle  <roger@eyesopen.com>
14988
14989         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
14990         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
14991         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
14992         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
14993         before canonicalizing sincos to cexpi.
14994         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
14995
14996 2007-02-05  Roger Sayle  <roger@eyesopen.com>
14997
14998         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
14999         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
15000         (alpha_init_builtins): Use alpha_add_builtins to process tables.
15001
15002 2007-02-05  Roger Sayle  <roger@eyesopen.com>
15003
15004         * mips-tfile.c (initialize_init_file): Correct endianness test.
15005
15006 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
15007
15008         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
15009         the 'y' constraint.
15010
15011 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
15012
15013         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
15014         saves in a PARALLEL before the register assignments.
15015
15016 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
15017
15018         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
15019         DWARF_FRAME_RETURN_COLUMN to be a general register.
15020         * dwarf2out.c (init_return_column_size): New function, split from...
15021         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
15022         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
15023         to be nongeneral registers.
15024         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
15025         integer registers.
15026         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
15027         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
15028
15029 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
15030
15031         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
15032
15033 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
15034
15035         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
15036         (remove_path): Use can_remove_branch_p and remove_branch instead
15037         of loop_delete_branch_edge.
15038         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
15039         (tree_transform_and_unroll_loop): Remove dead branches immediately.
15040         Update profile using scale_dominated_blocks_in_loop.
15041         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
15042         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
15043         (can_remove_branch_p, remove_branch): Declare.
15044         * tree-cfg.c (tree_can_remove_branch_p): New function.
15045         (tree_cfg_hooks): Add tree_can_remove_branch_p.
15046         * cfgrtl.c (rtl_can_remove_branch_p): New function.
15047         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
15048
15049 2007-02-05  Jan Hubicka  <jh@suse.cz>
15050
15051         PR middle-end/30696
15052         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
15053         nodes in cgraph, don't remove offline copy of the function.
15054
15055 2007-02-04  Jan Hubicka  <jh@suse.cz>
15056
15057         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
15058         vectors might cause maybe_lookup_element_for_expr to be called
15059         on non-sra-candidate.
15060
15061 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15062
15063         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
15064         config/bfin/bfin.md, config/bfin/predicates.md: Follow
15065         spelling conventions.
15066
15067 2007-02-04  Richard Guenther  <rguenther@suse.de>
15068
15069         PR middle-end/30636
15070         * fold-const.c (try_move_mult_to_index): Make sure to not
15071         overflow one dimension of a multi-dimensional array access.
15072
15073 2007-02-04  Jan Hubicka  <jh@suse.cz>
15074
15075         * passes.c (init_optimization_passes): Reindent.
15076
15077 2007-02-04  Jan Hubicka  <jh@suse.cz>
15078             Eric Botcazou  <ebotcazou@adacore.com>
15079
15080         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
15081         (execute_fixup_cfg): Break out the abnormal goto code.
15082         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
15083         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
15084         (optimize_inline_calls): Call make_nonlocal_label_edges.
15085
15086 2007-02-04  Jan Hubicka  <jh@suse.cz>
15087
15088         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
15089         true when something was changed.
15090         (rename_ssa_copies): When something was changed, do
15091         TODO_remove_unused_locals.
15092         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15093         add TODO_remove_unused_locals when instruction was removed.
15094
15095 2007-02-04  Jan Hubicka  <jh@suse.cz>
15096
15097         * ipa-inline.c (try_inline): Improve debug output; work on already
15098         inline edges too.
15099         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
15100         call try_inline for already inlined edges too when flattening;
15101         inline also functions that make callee growth but overall unit size
15102         reduce.
15103
15104 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15105
15106         * config/m32c/bitops.md, config/m32c/jump.md,
15107         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
15108         config/m32r/m32r.h, config/m32r/m32r.md,
15109         config/m32r/predicates.md, config/m68hc11/larith.asm,
15110         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
15111         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
15112         config/mips/mips-protos.h, config/mips/mips.c,
15113         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
15114         config/mn10300/mn10300.h, config/mn10300/predicates.md,
15115         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
15116         spelling conventions.
15117
15118         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
15119         Follow spelling conventions.
15120
15121 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
15122
15123         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
15124         warn about C++0x compatibility.
15125
15126 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15127
15128         * config/h8300/h8300.c, config/h8300/h8300.h,
15129         config/h8300/h8300.md: Follow spelling conventions.
15130
15131 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
15132
15133         PR middle-end/30667
15134         * combine.c (try_combine): Do not substitute source operand
15135         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
15136
15137 2007-02-03  Jan Hubicka  <jh@suse.cz>
15138
15139         PR gcov-profile/30650
15140         * value-prof.c (stringop_block_profile): Fix handling of size counter;
15141         do not divide by zero for never executed counters.
15142         (tree_find_values_to_profile): Fix counters.
15143         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
15144
15145 2007-02-03  Ian Lance Taylor  <iant@google.com>
15146
15147         * lower-subreg.c (simple_move_operand): New static function,
15148         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
15149         operands.
15150         (simple_move): Call simple_move_operand.
15151         (find_decomposable_subregs): Add special handling of MEMs.
15152         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
15153         meaning of return value.  If we see a hard register, test whether
15154         it can store a word_mode value.  Change all callers.
15155
15156 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15157
15158         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
15159         ftrapv insns and expanders.
15160         (subdi3): Change define_expand operand 1 to arith11_operand, and
15161         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
15162         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
15163         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
15164         respectively.
15165
15166         PR middle-end/30174
15167         * varasm.c (notice_global_symbol): Treat global objects as weak when
15168         flag_shlib is true.
15169
15170 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15171
15172         * emit-rtl.c (dconstpi): Delete.
15173         (dconstsqrt2): New.
15174         (init_emit_once): Delete dconstpi and init dconstsqrt2.
15175         * real.h (dconstpi): Delete.
15176         (dconstsqrt2): New.
15177         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
15178         (fold_builtin_hypot): Likewise.
15179
15180 2007-02-03  Tom Tromey  <tromey@redhat.com>
15181
15182         PR driver/30246
15183         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
15184         -gcoff3, -gxcoff3, -gvms3 implies -dD.
15185
15186 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
15187
15188         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
15189         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
15190         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
15191         config/rs6000/cell.md, config/rs6000/darwin.h,
15192         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
15193         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
15194         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
15195         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
15196         typos.  Follow spelling conventions.
15197         * doc/invoke.texi: Follow spelling conventions.
15198
15199 2007-02-03  Roger Sayle  <roger@eyesopen.com>
15200
15201         * simplify-rtx.c (simplify_relational_operation_1): Implement some
15202         canonicalization transformations that attempt to simplify integer
15203         constant comparisons to become comparisons against zero.
15204
15205 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15206
15207         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
15208         fabs(x)*sqrt(2).
15209         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
15210         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
15211
15212 2007-02-02  Mike Stump  <mrs@apple.com>
15213
15214         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
15215         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
15216         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
15217         generate a branch island.
15218
15219 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
15220
15221         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
15222         (xtensa_legitimate_address_p): New.
15223         (xtensa_legitimize_address): New.
15224         (xtensa_output_addr_const_extra): New.
15225         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
15226         (BASE_REG_P): New.
15227         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
15228         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
15229         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
15230         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
15231         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
15232         (xtensa_legitimize_address): New.
15233         (xtensa_output_addr_const_extra): New.
15234
15235 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
15236
15237         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
15238
15239 2007-02-02  Ian Lance Taylor  <iant@google.com>
15240
15241         * expmed.c (expand_divmod): Add comment.
15242
15243 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
15244
15245         * emit-rtl.c (renumber_insns): Remove.
15246         * flags.h: Remove the extern for flag_renumber_insns.
15247         * rtl.h: Remove the prototype for renumber_insns.
15248         * toplev.c (flag_renumber_insns): Remove.
15249
15250 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
15251
15252         Revert for x86 darwin:
15253         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
15254
15255         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
15256         code before the following patch under TARGET_MACHO.
15257         (ix86_function_value_regno_p): Likewise.
15258
15259 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15260
15261         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
15262         COMPLEX_EXPR.
15263
15264 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15265
15266         PR target/29682
15267         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
15268         loads to general or fp registers.  Add comments.
15269         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
15270
15271 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
15272
15273         * pointer-set.c (insert_aux): Only return insertion slot.
15274         (pointer_set_insert): Adjust.
15275         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
15276         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
15277         pointer_map_traverse): New.
15278         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
15279         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
15280         pointer_map_contains, pointer_map_traverse): Declare.
15281
15282 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
15283
15284         PR middle-end/30473
15285         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
15286         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
15287
15288 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15289
15290         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
15291
15292         (struct _dep): New type.
15293         (dep_t): New typedef.
15294         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
15295         (DEP_STATUS): New access macro.  The macro with the same name was
15296         renamed to DEP_LINK_STATUS.
15297         (dep_init): Declare function
15298
15299         (struct _dep_link): New type.
15300         (dep_link_t): New typedef.
15301         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
15302         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
15303         (DEP_LINK_STATUS): New macro.
15304         (debug_dep_links): New debug function.
15305
15306         (struct _deps_list): New type.
15307         (deps_list_t): New typedef.
15308         (DEPS_LIST_FIRST): New access macro.
15309         (FOR_EACH_DEP_LINK): New cycle macro.
15310         (create_deps_list, free_deps_list, delete_deps_list): Declare
15311         functions.
15312         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
15313         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
15314         (copy_deps_list_change_con): Ditto.
15315
15316         (move_dep_link): Declare function.
15317
15318         (struct _dep_node): New type.
15319         (dep_node_t): New typedef.
15320         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
15321
15322         (struct haifa_insn_data.back_deps): New field to hold backward
15323         dependencies of the insn.
15324         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
15325         to deps_list_t.
15326         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
15327         Change its type to deps_list_t.
15328         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
15329         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
15330         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
15331
15332         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
15333
15334         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
15335
15336         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
15337         and all callers.
15338         (dep_cost): Declare.
15339
15340         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
15341         (ds_to_dk, dk_to_ds): New functions.
15342
15343         (init_dep_1): New static function.
15344         (init_dep): New function.
15345         (copy_dep): New static function.
15346
15347         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
15348         functions.
15349         (detach_dep_link): New static function.
15350         (move_dep_link): New function.
15351
15352         (dep_links_consistent_p, dump_dep_links): New static functions.
15353         (debug_dep_links): New debugging function.
15354
15355         (deps_obstack, dl_obstack, dn_obstack): New static variables.
15356
15357         (alloc_deps_list, init_deps_list): New static functions.
15358         (create_deps_list): New function.
15359         (clear_deps_list): New static function.
15360         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
15361         (deps_list_consistent_p, dump_deps_list): New static functions.
15362         (debug_deps_list): New function.
15363         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
15364         functions.
15365         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
15366
15367         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
15368         use new scheduler dependencies lists.
15369         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
15370         (sched_analyze): Ditto.  Initialize dependencies lists.
15371         (add_forw_dep, compute_forward_dependences): Update to use new
15372         scheduler dependencies lists.
15373
15374         (init_dependency_caches): Init deps_obstack.
15375         (free_dependency_caches): Free deps_obstack.
15376
15377         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
15378         new scheduler dependencies lists.
15379         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
15380         (add_back_forw_dep, delete_back_forw_dep): Ditto.
15381
15382         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
15383         Update to use new scheduler dependencies lists.
15384         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
15385         (debug_dependencies): Ditto.
15386         (schedule_region): Update comments.
15387
15388         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
15389         scheduler dependencies lists.
15390         (schedule_ebb): Update comments.
15391
15392         * rtl.def (DEPS_LIST): Remove.
15393
15394         * lists.c (unused_deps_list): Remove.
15395         (free_list): Update assertions.
15396
15397         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
15398         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15399
15400         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
15401         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15402
15403         * haifa-sched.c (comments): Update.
15404         (insn_cost1): Remove.  Inline the code into insn_cost ().
15405         (insn_cost): Update to use new scheduler dependencies lists.  Move
15406         processing of the dependency cost to dep_cost ().
15407         (dep_cost): New function.  Use it instead of insn_cost () when
15408         evaluating cost of the dependency.  Use compatible interface to
15409         interact with the target.
15410         (priority): Update to use new scheduler dependencies lists.
15411         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
15412         with greater number of insns that depend on the insn.
15413         (schedule_insn): Update to use new scheduler dependencies lists.  Add
15414         code to free backward dependencies lists.  Inline and optimize code
15415         from resolve_dep () - see PR28071.
15416         (ok_for_early_queue_removal): Update to use new scheduler dependencies
15417         lists.  Update call to targetm.sched.is_costly_dependence hook.
15418
15419         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
15420         scheduler dependencies lists.
15421
15422         (resolve_dep): Remove.  Move the logic to schedule_insn ().
15423         (init_h_i_d): Initialize dependencies lists.
15424
15425         (process_insn_depend_be_in_spec): Rename to
15426         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
15427         dependencies lists.
15428         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
15429         Update to use new scheduler dependencies lists.
15430         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
15431
15432         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
15433         new scheduler dependencies lists.
15434         (build_intra_loop_deps): Ditto.
15435
15436         * target.h (struct _dep): Declare to use in
15437         gcc_target.sched.is_costly_dependence.
15438         (struct gcc_target.sched.adjust_cost): Fix typo.
15439         (struct gcc_target.sched.is_costly_dependence): Change signature to
15440         use single dep_t parameter instead of an equivalent triad.
15441         (struct gcc_target.sched.adjust_cost_2): Remove.
15442
15443         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
15444
15445         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
15446
15447         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
15448         documentation.
15449         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
15450
15451         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
15452         (REG_DEP_TRUE): Document.
15453
15454         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
15455         Change signature to correspond to the targetm.sched.adjust_cost hook.
15456         Update use in TARGET_SCHED_ADJUST_COST_2.
15457         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
15458         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
15459         new scheduler dependencies lists.
15460         (ia64_gen_check): Ditto.
15461
15462         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
15463         scheduler dependencies lists.
15464
15465         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
15466         signature to correspond to the targetm.sched.is_costly_dependence hook.
15467         (is_costly_group): Update to use new scheduler dependencies lists.
15468
15469         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
15470         instead of INSN_COST () macro.
15471
15472 2007-02-01  Ian Lance Taylor  <iant@google.com>
15473
15474         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
15475
15476 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
15477
15478         * pa.md (tp_load): Correct mfctl instruction syntax.
15479
15480 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
15481
15482         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
15483         altivec_padding_size calculation on AIX.  Improve comment, add
15484         assert to verify that it's right.
15485
15486         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
15487         64-bit.
15488
15489 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
15490
15491         PR inline-asm/28686
15492         * global.c (global_alloc): Add mising initialization of
15493         ELIMINABLE_REGSET.
15494
15495 2007-02-01  Roger Sayle  <roger@eyesopen.com>
15496
15497         * alias.c (init_alias_analysis): Correct whitespace.
15498         * bb-reorder.c (fix_edges_for_rarely_executed_code,
15499         partition_hot_cold_basic_blocks): Likewise.
15500         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
15501         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
15502         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
15503         fold_builtin_snprintf_chk, fold_builtin_printf,
15504         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
15505         do_mpfr_arg3, do_mpfr_sincos): Likewise.
15506         * cfgcleanup.c (cleanup_cfg): Likewise.
15507         * cfgexpand.c (tree_expand_cfg): Likewise.
15508         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
15509         * function.c (get_next_funcdef_no): Likewise.
15510         * gengtype.c (main): Likewise.
15511         * genmodes.c (main): Likewise.
15512         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
15513         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
15514         * ifcvt.c (noce_emit_move_insn): Likewise.
15515         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
15516         Likewise.
15517         * stor-layout.c (get_best_mode): Likewise.
15518         * tree-ssa-loop-niter.c (get_val_for): Likewise.
15519         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
15520         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
15521         perform_var_substitution, solve_graph): Likewise.
15522         * tree-vrp.c (vrp_finalize): Likewise.
15523
15524 2007-02-01  Ian Lance Taylor  <iant@google.com>
15525
15526         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
15527         high part of a paradoxical subreg, return a constant zero.
15528
15529 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
15530
15531         * toplev.c (lang_dependent_init): Call init_set_costs.
15532         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
15533
15534 2007-02-01  Richard Guenther  <rguenther@suse.de>
15535
15536         PR middle-end/30656
15537         * fold-const.c (fold_negate_expr): Allow negating a
15538         constant if overflow does not change.
15539
15540 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15541
15542         * doc/c-tree.texi (Expression trees): Improve markup.
15543         * doc/tm.texi (Register Classes, Addressing Modes)
15544         (Floating Point): Fix spacing after abbreviations.  Fix some
15545         typos.
15546
15547 2007-02-01  Ben Elliston  <bje@au.ibm.com>
15548
15549         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
15550         * doc/contrib.texi: Likewise.
15551         * doc/install.texi: Likewise.
15552
15553 2007-01-31  Richard Henderson  <rth@redhat.com>
15554             Ian Lance Taylor  <iant@google.com>
15555
15556         * lower-subreg.c: New file.
15557         * rtl.def (CONCATN): Define.
15558         * passes.c (init_optimization_passes): Add pass_lower_subreg and
15559         pass_lower_subreg2.
15560         * emit-rtl.c (update_reg_offset): New static function, broken out
15561         of gen_rtx_REG_offset.
15562         (gen_rtx_REG_offset): Call update_reg_offset.
15563         (gen_reg_rtx_offset): New function.
15564         * regclass.c: Revert patch of 2006-03-05, restoring
15565         reg_scan_update.
15566         (clear_reg_info_regno): New function.
15567         * dwarf2out.c (concatn_loc_descriptor): New static function.
15568         (loc_descriptor): Handle CONCATN.
15569         * common.opt (fsplit_wide_types): New option.
15570         * opts.c (decode_options): Set flag_split_wide_types when
15571         optimizing.
15572         * timevar.def (TV_LOWER_SUBREG): Define.
15573         * rtl.h (gen_reg_rtx_offset): Declare.
15574         (reg_scan_update): Declare.
15575         * regs.h (clear_reg_info_regno): Declare.
15576         * tree-pass.h (pass_lower_subreg): Declare.
15577         (pass_lower_subreg2): Declare.
15578         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
15579         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
15580         -fsplit-wide-types.
15581         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
15582         * Makefile.in (OBJS-common): Add lower-subreg.o.
15583         (lower-subreg.o): New target.
15584
15585 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
15586
15587         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
15588
15589 2007-01-31  Anatoly Sokolov <aesok@post.ru>
15590
15591         PR target/19087
15592         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
15593
15594 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15595
15596         PR middle-end/29335
15597         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
15598
15599 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
15600
15601         * cfgloop.h: Include vec-prim.h.
15602         (enum li_flags): Remove LI_ONLY_OLD.
15603         (loop_iterator): Changed.
15604         (fel_next, fel_init): Iterate over loop tree.
15605         (FOR_EACH_LOOP_BREAK): New macro.
15606         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
15607         FOR_EACH_LOOP.
15608         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
15609         * modulo-sched.c (sms_schedule): Ditto.
15610         * tree-vectorizer.c (vectorize_loops): Ditto.
15611         * doc/loop.texi: Update information on loop numbering and behavior of
15612         FOR_EACH_LOOP wrto new loops.
15613         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
15614         add_to_evolution_1): Test nestedness of loops instead of comparing
15615         their numbers.
15616         * tree-chrec.c (chrec_fold_plus_poly_poly,
15617         chrec_fold_multiply_poly_poly, chrec_evaluate,
15618         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
15619         reset_evolution_in_loop): Ditto.
15620         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
15621
15622 2007-01-31  Dirk Mueller  <dmueller@suse.de>
15623
15624         * c-common.c (warn_about_parentheses): Separate warning about
15625         un-parenthized sequence of comparison operators from the one
15626         which is supposed to warn about x <= y <= z.
15627
15628 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
15629
15630         * optabs.h (enum optab_index): Add new OTI_isinf.
15631         (isinf_optab): Define corresponding macro.
15632         * optabs.c (init_optabs): Initialize isinf_optab.
15633         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
15634         patterns.
15635         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
15636         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
15637         using isinf_optab.
15638         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
15639         expand_builtin_interclass_mathfn.
15640         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
15641         * config/i386/i386.md (UNSPEC_FXAM): New constant.
15642         (fxam<mode>2_i387): New insn pattern.
15643         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
15644         built-in functions as x87 inline asm.
15645
15646 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
15647
15648         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
15649
15650 2007-01-30  Eric Christopher  <echristo@apple.com>
15651
15652         * config.gcc: Add geode.
15653
15654 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
15655
15656         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
15657         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
15658         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
15659         value-prof.c: Fix comment typos.
15660
15661 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15662
15663         PR c++/24745
15664         * doc/invoke.texi (Wpointer-arith): Document warning.
15665
15666 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
15667
15668         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
15669         the list of discrepancies from the draft TR.
15670
15671 2007-01-30  Dirk Mueller  <dmueller@suse.de>
15672
15673         PR c++/30601
15674         * doc/invoke.texi (-Wreturn-type): Update description to
15675         match new behavior.
15676
15677 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
15678
15679         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
15680
15681 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
15682
15683         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
15684         to handle optabs that operate on floating point input argument and
15685         output to integer output.
15686         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
15687         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
15688         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
15689         expand_builtin_interclass_mathfn ().
15690         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
15691         (ilogbsi2): Remove.
15692         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
15693         ilogbl built-in functions as x87 intrinsics.
15694
15695 2007-01-30  Richard Guenther  <rguenther@suse.de>
15696
15697         PR middle-end/27657
15698         * dwarf2out.c (reference_to_unused): Query varpool if the
15699         variable was output.
15700
15701 2007-01-30  Richard Guenther  <rguenther@suse.de>
15702
15703         PR middle-end/30313
15704         * passes.c (execute_one_pass): Reset in_gimple_form to not
15705         confuse non-unit-at-a-time mode.
15706
15707 2007-01-29  Roger Sayle  <roger@eyesopen.com>
15708             Richard Guenther  <rguenther@suse.de>
15709
15710         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
15711         avoid undefined behaviour on overflow.  Use force_fit_type_double
15712         to construct the constant with the specified TREE_OVERFLOW.
15713
15714 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
15715
15716         * config/dfp-bit.c: Add parameterized support for fp exceptions.
15717         * config/dfp-bit.h: Ditto.
15718
15719 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15720
15721         * c-decl.c (pop_scope): Replace warnings with call to
15722         warn_for_unused_label.
15723         * c-common.h (warn_for_unused_label): Declare.
15724         * c-common.c (warn_for_unused_label): Define.
15725
15726 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15727
15728         * tree-optimize.c (update_inlined_to_pointers): Delete unused
15729         function.
15730
15731 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
15732
15733         * Makefile.in (USER_H): Remove decfloat.h.
15734         * ginclude/decfloat.h: Delete, moving contents to ...
15735         * ginclude/float.h: Add support for decimal floating point,
15736         guarded by __STDC_WANT_DEC_FP__.
15737
15738 2007-01-29  Mike Stump  <mrs@apple.com>
15739
15740         * doc/gccint.texi (Top): Rename Loop Representation to Loop
15741         Analysis and Representation to resolve case insensitive conflict.
15742         * doc/loop.texi (Loop Analysis and Representation): Likewise.
15743
15744 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
15745
15746         * tree.h (struct tree_memory_tag): Add aliases member.
15747         (MTAG_ALIASES): New macro.
15748         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
15749         (add_may_alias): Remove pointer-set. Update for may_aliases being
15750         a bitmap.
15751         (mark_aliases_call_clobbered): Update for may_aliases being a
15752         bitmap.
15753         (compute_tag_properties): Ditto.
15754         (create_partition_for): Ditto.
15755         (compute_memory_partitions): Ditto.
15756         (dump_may_aliases_for): Ditto.
15757         (is_aliased_with): Ditto.
15758         (add_may_alias_for_new_tag): Ditto.
15759         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
15760         (compute_is_aliased): New function.
15761         (compute_may_aliases): Call compute_is_aliased).
15762         (init_alias_info): Initialize alias_bitmap_obstack.
15763         (union_alias_set_into): New function.
15764         (compute_flow_sensitive_aliasing): Use union_aliases_into.
15765         (have_common_aliases_p): Rewrite to take two bitmaps and use
15766         intersection.
15767         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
15768         Update for bitmaps.
15769         (finalize_ref_all_pointers): Update for add_may_alias changes.
15770         (new_type_alias): Ditto.
15771         * tree-flow-inline.h (may_aliases): Return a bitmap.
15772         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
15773         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
15774         may_aliases being a bitmap.
15775         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
15776         may_aliases now returns a bitmap.
15777         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
15778         being a bitmap.
15779         * tree-ssa-operands.c (add_virtual_operand): Update for
15780         may_aliases being a bitmap.
15781
15782 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
15783
15784         PR tree-optimization/30630
15785         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
15786         variable as changed.
15787
15788 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
15789
15790         PR c++/28266
15791         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
15792         expanded only once even if an error occurs.
15793
15794 2007-01-29  Ben Elliston  <bje@au.ibm.com>
15795
15796         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
15797         (__gcov_average_profiler): Likewise.
15798         (__gcov_ior_profiler): Likewise.
15799         (__gcov_merge_ior): Likewise.
15800
15801 2007-01-28  Jan Hubicka  <jh@suse.cz>
15802
15803         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
15804         * value-prof.c (stringop_block_profile): Likewise.
15805
15806 2007-01-28  Jan Hubicka  <jh@suse.cz>
15807
15808         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
15809         Add variant handling histograms; add wrapper.
15810         (clear_storage_via_libcall): Export.
15811         (emit_block_move_hints): Break out from ...; add histograms.
15812         (emit_block_move): ... this one.
15813         (clear_storage_hints): Break out from ...; add histograms.
15814         (clear_storage): ... this one.
15815         (set_storage_via_memset): Handle histogram.
15816         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
15817         (clear_storage_hints, clear_storage_via_libcall): Declare.
15818         (set_storage_via_setmem): Update prototype.
15819         * doc/md.texi (movmem, setmem): Document new arguments.
15820
15821         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
15822         Add new histograms.
15823         (stringop_block_profile): New global function.
15824         (tree_stringops_values_to_profile): Profile block size and alignment.
15825         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
15826         HIST_TYPE_IOR.
15827         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
15828         (stringop_block_profile): Declare.
15829         * builtins.c: Include value-prof.h.
15830         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
15831         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
15832         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
15833         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
15834         * profile.c (instrument_values): Add new counters.
15835         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
15836         calls.
15837         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
15838         (tree_init_edge_profiler): Build new profilers.
15839         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
15840         (pass_tree_profile): Add dump.
15841         (tree_profile_hooks): Update.
15842         * Makefile.in (LIBGCOV): Add new constants.
15843         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
15844         __gcov_ior_profiler): New.
15845         * i386.md (movmem/setmem expanders): Add new optional arguments.
15846
15847 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
15848
15849         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
15850
15851 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
15852
15853         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
15854         (tree_unswitch_single_loop): Pass eni_size_weights to
15855         tree_num_loop_insns.
15856         * tree-ssa-loop-manip.c: Include tree-inline.h.
15857         (can_unroll_loop_p): Pass eni_size_weights to
15858         tree_num_loop_insns.
15859         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
15860         Pass eni_size_weights to estimate_num_insns.
15861         * tree.h (init_inline_once): Export.
15862         * toplev.c (backend_init): Call init_inline_once.
15863         * cgraphunit.c (cgraph_process_new_functions,
15864         cgraph_analyze_function): Pass eni_inlining_weights to
15865         estimate_num_insns.
15866         * ipa-inline.c (compute_inline_parameters): Ditto.
15867         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
15868         to estimate_num_insns.
15869         (try_unroll_loop_completely): Pass eni_size_weights to
15870         tree_num_loop_insns.
15871         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
15872         ot estimate_num_insns.
15873         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
15874         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
15875         * tree-inline.c (eni_inlining_weights, eni_size_weights,
15876         eni_time_weights): New variables.
15877         (init_inline_once): Initialize them.
15878         (struct eni_data): Mew.
15879         (estimate_num_insns_1, estimate_num_insns): Use weights.
15880         * tree-inline.h (struct eni_weights_d): New.
15881         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
15882         (estimate_num_insns): Declaration changed.
15883         * cfgloop.h (tree_num_loop_insns): Declaration changed.
15884         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
15885         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
15886
15887 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
15888
15889         * tree-data-ref.c (conflict_fn): Assert that the number of affine
15890         relations in the conflict function is valid.
15891
15892 2007-01-27  Ian Lance Taylor  <iant@google.com>
15893
15894         * common.opt: Add fstrict-overflow.
15895         * opts.c (decode_options): Set flag_strict_overflow if -O2.
15896         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
15897         (TYPE_OVERFLOW_UNDEFINED): Define.
15898         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
15899         Replace all uses.
15900         * tree.h (TYPE_TRAP_SIGNED): Don't define.
15901         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
15902         (fold_negate_expr): Likewise.
15903         (make_range): Likewise.
15904         (extract_muldiv_1): Likewise.
15905         (maybe_canonicalize_comparison): Likewise.
15906         (fold_comparison): Likewise.
15907         (fold_binary): Likewise.
15908         (tree_expr_nonnegative_p): Likewise.
15909         (tree_expr_nonzero_p): Likewise.
15910         * tree-vrp.c (compare_values): Likewise.
15911         (extract_range_from_binary_expr): Likewise.
15912         (extract_range_from_unary_expr): Likewise.
15913         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
15914         Likewise.
15915         (nowrap_type_p): Likewise.
15916         * tree-scalar-evolution.c (simple_iv): Likewise.
15917         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
15918         (build_range_check): Likewise.
15919         (extract_muldiv_1): Likewise.
15920         (fold_comparison): Likewise.
15921         * tree-vrp.c (vrp_int_const_binop): Likewise.
15922         (extract_range_from_unary_expr): Likewise.
15923         * convert.c (convert_to_integer): Likewise.
15924         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
15925         (fold_comparison): Likewise.
15926         (fold_binary): Likewise.
15927         * optabs.c (optab_for_tree_code): Likewise.
15928         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
15929         * simplify-rtx.c (simplify_const_relational_operation): Check
15930         flag_strict_overflow and flag_trapv.
15931         (simplify_const_relational_operation): Likewise.
15932         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
15933         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
15934         -fstrict-overflow.
15935
15936 2007-01-27  Roger Sayle  <roger@eyesopen.com>
15937
15938         * tree.c (tree_fold_gcd): Delete.
15939         * tree.h (tree_fold_gcd): Remove prototype.
15940         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
15941         test whether one constant integer is a multiple of another.  Instead
15942         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
15943         * fold-const.c (multiple_of_p):  We've determined both TOP and
15944         BOTTOM are integer constants so we can call int_const_binop directly
15945         instead of the more generic const_binop.
15946
15947 2007-01-27  Roger Sayle  <roger@eyesopen.com>
15948
15949         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
15950         1*X check that the constant hasn't overflowed, to preserve the
15951         TREE_OVERFLOW bit.
15952         (round_up): Provide an efficient implementation when rouding-up an
15953         INTEGER_CST to a power-of-two.
15954
15955 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15956
15957         * doc/sourcebuild.texi: Add comma for clarity.
15958         * doc/extend.texi: Fix some typos.
15959         * doc/passes.texi: Likewise.
15960         * doc/cppinternals.texi: Likewise.
15961         * doc/c-tree.texi: Likewise.
15962         * doc/tree-ssa.texi: Likewise.
15963         * doc/install.texi: Likewise.
15964
15965 2007-01-27  Jan Hubicka  <jh@suse.cz>
15966
15967         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
15968         (pass_sra): Do not require alias information.
15969         * passes.c (init_optimization_passes): Add SRA
15970
15971 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
15972
15973         * tracer.c (rest_of_handle_tracer): We already cleaned
15974         up the CFG in tracer() so don't do it here again.
15975         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
15976         cleanup_cfg here, either.  And don't call renumber_insns.
15977
15978         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
15979         and BB_HEAD are in the insn stream here.  Instead make sure
15980         that BB_INSN is valid on all insns.  Also, do check here that
15981         there are no pending branch predictions...
15982         (rtl_verify_flow_info): ...instead of doing it here.  Checks
15983         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
15984         here.
15985
15986 2007-01-26  Roger Sayle  <roger@eyesopen.com>
15987
15988         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
15989         function to simplify/factorize operand order canonicalization.
15990         (ix86_fixup_binary_operands): Reorganize using the above function.
15991         (ix86_binary_operator_ok): Likewise.
15992
15993 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
15994
15995         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
15996         file scope from optimize_attrs.
15997         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
15998         up search.
15999         (optimize_attrs): Clear insn_code_values after freeing it.
16000
16001 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
16002
16003         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
16004         a parts.base assignment.
16005
16006 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
16007
16008         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
16009         (compute_subscript_distance, initialize_data_dependence_relation,
16010         finalize_ddr_dependent, analyze_ziv_subscript,
16011         analyze_siv_subscript_cst_affine,
16012         compute_overlap_steps_for_affine_univar,
16013         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
16014         analyze_siv_subscript, analyze_miv_subscript,
16015         analyze_overlapping_iterations, subscript_dependence_tester_1,
16016         compute_self_dependence, free_dependence_relation): Work
16017         with affine_fn instead of chrecs.
16018         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
16019         common_affine_function, affine_function_base,
16020         affine_function_constant_p, affine_fn_op, affine_fn_plus,
16021         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
16022         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
16023         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
16024         (all_chrecs_equal_p): Removed.
16025         * tree-data-ref.h (affine_fn, conflict_function): New types.
16026         (struct subscript): Change type of conflicting_iterations_in_a
16027         and conflicting_iterations_in_b.
16028
16029 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
16030
16031         PR other/30182
16032         * config/pa/pa.h (TARGET_HPUX_11): New.
16033         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
16034         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
16035
16036 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
16037         Richard Guenther  <rguenther@suse.de>
16038
16039         * tree-ssa-structalias.c (solve_graph): Handle case
16040         we merged the variable to another.
16041
16042 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16043
16044         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
16045         functions.
16046
16047         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
16048         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
16049
16050 2007-01-25  DJ Delorie  <dj@redhat.com>
16051
16052         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
16053         allow changes to modes which don't fit in those registers.
16054
16055         * reload1.c (choose_reload_regs): Check for invalid subregs before
16056         computing their locations, not after.
16057
16058 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
16059
16060         PR 25127
16061         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
16062         save Altivec registers in an eh_return function.
16063         (compute_vrsave_mask): Likewise.
16064         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
16065         for saving Altivec registers.
16066         (rs6000_emit_prologue): Don't allocate stack twice in
16067         eh_return function.  Correct expected value of altivec_save_offset
16068         when using save_world.  Describe save of R0 to stack when using
16069         save_world.  Describe stack pointer adjustment when using
16070         save_world.  Remove duplicated eh_return parameter register saving.
16071         Update sp_offset variable after save_world.
16072         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
16073         darwin-world.asm.
16074         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
16075         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
16076         implies Altivec.
16077
16078 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
16079
16080         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
16081
16082 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
16083
16084         PR other/30182
16085         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
16086         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
16087
16088 2007-01-25  Richard Guenther  <rguenther@suse.de>
16089
16090         * doc/invoke.texi (-Wcoverage-mismatch): Document.
16091         * common.opt (-Wcoverage-mismatch): New warning option.
16092         * coverage.c (get_coverage_counts): Ignore coverage mismatch
16093         if -Wcoverage-mismatch is given.
16094
16095 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
16096
16097         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
16098         (ipcp_driver): Change to static definition.
16099         Add dumping of the ifunctions.
16100         (constant_val_insert): Remove unused parameter. Support for SSA.
16101         (ipcp_propagate_const): Support for SSA.
16102         (ipcp_profile_bb_print): Print only analyzed nodes.
16103         (ipcp_replace_map_create): Remove support for Fortran constant
16104         for now.
16105         * ipa-prop.c (ipa_method_modify_stmt,
16106         ipa_callsite_compute_param): Support for SSA.
16107         * ipa-prop.h (ipcp_driver): Remove declaration.
16108         (IS_VALID_TREE_MAP_INDEX): Add define.
16109
16110 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
16111
16112         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
16113
16114 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16115
16116         PR middle-end/30447
16117         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
16118         constant argument to cabs and do it without checking for
16119         -funsafe-math-optimizations.
16120
16121 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
16122
16123         * c-common.h (RID_FIRST_CXX0X): New.
16124         (RID_LAST_CXX0X): New.
16125         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
16126         by -Wall.
16127         * c.opt (Wc++0x-compat): New.
16128         * doc/invoke.texi (-Wc++0x-compat): Document.
16129
16130 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16131
16132         * builtins.c (fold_builtin_carg): New.
16133         (fold_builtin_1): Use it.
16134
16135 2007-01-24  Jan Hubicka  <jh@suse.cz>
16136
16137         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
16138
16139         * ipa-inline.c (initial_insns, max_insns): Delete.
16140         (compute_max_insns): New function.
16141         (cgraph_decide_inlining_of_small_function): Use it; take minimal
16142         amount of insns as base for code growth.
16143         (cgraph_decide_inlining): Make initial_insns local; do not compute
16144         max_insns.
16145         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
16146         * doc/invoke.texi (inline-unit-growth): Update docs.
16147
16148 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
16149
16150         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
16151         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
16152         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
16153         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
16154         for CPUs that have PTA_CX16 set.
16155
16156         PR middle-end/27416
16157         * gimplify.c (omp_check_private): New function.
16158         (gimplify_scan_omp_clauses): Use it for
16159         firstprivate/lastprivate/reduction.
16160
16161         PR middle-end/30494
16162         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
16163         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
16164
16165         PR middle-end/30421
16166         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
16167         If lower_lastprivate_clauses emits some statements, append them
16168         to dlist rather than body_p and to body_p append an initializer.
16169         (lower_omp_for): Adjust caller.
16170
16171 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
16172
16173         * target.h (globalize_decl_name): New.
16174         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16175         * output.h (default_globalize_decl_name): New.
16176         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
16177         globalize_label.
16178         (globalize_decl): Ditto.
16179         (default_globalize_decl_name): New.
16180         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
16181         (ia64_handle_version_id_attribute): New.
16182         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16183         (ia64_asm_output_external): Use globalize_decl_name instead
16184         of globalize_label.
16185         * doc/extend.texi (version_id): New pragma.
16186         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
16187
16188 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16189
16190         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
16191         _uleb128_t and _Unwind_SWord with _sleb128_t.
16192         * unwind-dw2.c (extract_cie_info, execute_stack_op,
16193         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
16194         Likewise.
16195         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
16196         * unwind-pe.h (read_uleb128, read_sleb128,
16197         read_encoded_value_with_base): Likewise.
16198         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
16199
16200 2007-01-24  Richard Guenther  <rguenther@suse.de>
16201
16202         * builtins.c (expand_builtin_cexpi): Get the fndecl
16203         for cexp in the correct way.
16204
16205 2007-01-24  Jan Hubicka  <jh@suse.cz>
16206
16207         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
16208         of calls.
16209
16210 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16211
16212         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
16213         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
16214         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
16215         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
16216         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
16217         __SIZEOF_PTRDIFF_T__.
16218         * doc/cpp.texi: Documentation for the new builtin macros added.
16219
16220 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
16221
16222         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
16223         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
16224         instead of operands[2] to avoid access past the end of array.
16225
16226 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
16227
16228         * reload1.c (emit_reload_insns): Pass the reload register
16229         for a non-spill output reload through forget_old_reloads_1.
16230
16231 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
16232
16233         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
16234         _SOFT_DOUBLE if doubles use software floating-point.
16235         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
16236         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16237         * config/rs6000/darwin-ldouble.c: Also compile functions for
16238         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
16239         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16240         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
16241         commented-out long double override.
16242         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
16243         * config/rs6000/eabispe.h: Likewise.
16244         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
16245         long double for non-SPE.
16246         (rs6000_handle_option): Likewise.
16247         (invalid_e500_subreg): Disallow more subregs involding DImode,
16248         DFmode, TImode or TFmode.
16249         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
16250         E500 double.
16251         (legitimate_lo_sum_address_p): Also check for TFmode for E500
16252         double.
16253         (rs6000_legitimize_address): Also handle TFmode for E500 double.
16254         (rs6000_legitimize_reload_address): Also handle TFmode for E500
16255         double.
16256         (rs6000_legitimate_address): Also check for TFmode for E500
16257         double.
16258         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
16259         (spe_build_register_parallel): Handle TFmode and TCmode.
16260         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
16261         double.
16262         (function_arg): Handle TFmode and TCmode for E500 double.
16263         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
16264         in general.
16265         (print_operand): Handle TFmode and TImode for %y.
16266         (rs6000_generate_compare): Handle TFmode comparisons for E500
16267         double.
16268         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
16269         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
16270         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
16271         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
16272         TFmode for E500 double.
16273         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
16274         (floatsidf2): Enable for E500 double.
16275         (movtf_softfloat): Use rs6000_nonimmediate_operand.
16276         (extenddftf2): Change to extenddftf2_fprs.
16277         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
16278         depending on TARGET_E500_DOUBLE.
16279         (extendsftf2): Enable for E500 double.
16280         (trunctfdf2): Enable for E500 double.
16281         (trunctfsf2): Change to trunctfsf2_fprs.
16282         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
16283         depending on TARGET_E500_DOUBLE.
16284         (floatsitf2): Enable for E500 double.
16285         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
16286         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
16287         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
16288         (negtf2): Change to negtf2_internal.
16289         (negtf2): New expander.
16290         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
16291         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
16292         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
16293         (movdi_internal32): Use rs6000_nonimmediate_operand.
16294         (unnamed splitter): Likewise.
16295         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
16296         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
16297         (SPE64TF, DITI): New mode macros.
16298         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
16299         modes.
16300         (frob_tf_ti): New.
16301         (frob_<mode>_di_2): New.
16302         (frob_tf_di_8_2): New.
16303         (frob_di_df): Change to frob_di_<mode>; allow more modes.
16304         (frob_ti_tf): New.
16305         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
16306         more modes.
16307         (frob_ti_<mode>_8_2): New.
16308         (frob_ti_tf_2): New.
16309         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
16310         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
16311         TFmode.
16312         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
16313         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
16314         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
16315         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
16316         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
16317         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
16318         tsttflt_gp): New.
16319
16320 2007-01-23  Ian Lance Taylor  <iant@google.com>
16321
16322         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
16323         insn-*.o first.
16324         (OBJS-archive): Reformat, alphabetize.
16325         (OBJS): Change out_object_file to OBJS-md.
16326
16327 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
16328
16329         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
16330         JUMP_P and CALL_P predicates where applicable.
16331         * config/i386/i386.c: Ditto.
16332         * config/i386/i386.md: Ditto.
16333         * config/i386/mmx.md: Ditto.
16334         * config/i386/predicates.md: Ditto.
16335
16336 2007-01-22  Andreas Schwab  <schwab@suse.de>
16337
16338         * config/m68k/m68k.h: Fix comment.
16339
16340 2007-01-22  Jan Hubicka  <jh@suse.cz>
16341
16342         * passes.c (init_optimization_passes): Do not rerun
16343         pass_early_warn_uninitialized.
16344
16345 2007-01-22  Richard Guenther  <rguenther@suse.de>
16346
16347         PR tree-optimization/30038
16348         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
16349         function.
16350         (execute_cse_sincos_1): Likewise.
16351         (execute_cse_sincos): Likewise.
16352         (gate_cse_sincos): Likewise.
16353         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
16354         the cexpi() canonicalization of sincos().
16355         * tree-pass.h (pass_cse_sincos): Declare.
16356         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
16357
16358 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
16359
16360         PR rtl-optimization/29329
16361         * combine.c (replaced_rhs_insn): Rename to i2mod.
16362         (replaced_rhs_value): Rename to i2mod_new_rhs.
16363         (i2mod_old_rhs): New global variable.
16364         (combine_instructions): Adjust for above change.  Save a copy of
16365         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
16366         note are substituted in the second instruction.
16367         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
16368         ditch the note if it pertains to the second eliminated register
16369         and this register is mentioned in i2mod_old_rhs.
16370
16371         Revert:
16372         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
16373
16374         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
16375         the insn to which the note was originally attached.
16376
16377 2007-01-21  Jan Hubicka  <jh@suse.cz>
16378
16379         * ipa-inline.c (inlining_mode): Comment, move up.
16380         (cgraph_decide_inlining_incrementally): Do not perform inlining
16381         itself; fix handling of flattening of self recursive functions.
16382         (cgraph_find_cycles): Remove.
16383         (cgraph_flatten_node): Remove.
16384         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
16385         (try_inline): New function.
16386         (cgraph_early_inlining): Update call of
16387         cgraph_decide_inlining_incrementally.  Apply inlining here.
16388         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
16389
16390 2007-01-21  Dirk Mueller  <dmueller@suse.de>
16391
16392         PR bootstrap/30511
16393         * tree-vrp.c (check_array_bounds): do not warn
16394         about ADDR_EXPR's of ARRAY_REF's which are immediately
16395         used in binary expressions.
16396
16397 2007-01-21  Ira Rosen  <irar@il.ibm.com>
16398
16399         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
16400         read_write_dep and macros for its access.
16401         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
16402         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
16403         argument, call vect_check_interleaving for every independent pair of
16404         data-refs. Mark loads that access the same memory location as a store
16405         in the loop.
16406         (vect_check_dependences): Remove.
16407         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
16408         call, fix the call to vect_analyze_data_ref_dependence.
16409         (vect_analyze_data_ref_access): For statements that access the same
16410         data-ref, check that they are not stores; for loads, check that there
16411         is no store that access the same location.
16412
16413 2007-01-20  Roger Sayle  <roger@eyesopen.com>
16414             Joseph Myers  <joseph@codesourcery.com>
16415
16416         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
16417         (-fdump-rtl-stack): Likewise.
16418         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
16419         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
16420         (-mpt-fixed): Use @minus{} for minus sign.
16421         (Using Precompiled Headers): Fix under/overfull hbox.
16422
16423 2007-01-20  Jan Hubicka  <jh@suse.cz>
16424
16425         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
16426         place within annotation.
16427
16428 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16429
16430         * pa.c (output_move_double): Change array size of xoperands to 4.
16431
16432 2007-01-20  Jan Hubicka  <jh@suse.cz>
16433
16434         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
16435         as temporary.
16436
16437 2007-01-19  Ian Lance Taylor  <iant@google.com>
16438
16439         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
16440         constant to unsigned HOST_WIDE_INT before negating.
16441
16442 2007-01-19  Ian Lance Taylor  <iant@google.com>
16443
16444         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
16445         to unsigned.
16446         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
16447         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16448         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
16449         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
16450         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16451         (realloc_vdef, realloc_vuse): Change second parameter to
16452         unsigned.
16453         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
16454         fields to unsigned.
16455         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
16456         unsigned. Change x and lim locals to unsigned.
16457         (realloc_vdef, realloc_vuse): Change num_elem parameter to
16458         unsigned.
16459         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
16460         (copy_virtual_operands): Change i and n locals to unsigned.
16461
16462 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16463
16464         PR middle-end/29335
16465         * builtins.c (fold_builtin_1): Handle builtin fdim.
16466
16467 2007-01-20  Jan Hubicka  <jh@suse.cz>
16468
16469         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
16470         * tree-ssa-structalias.c (compute_points_to_sets): Do call
16471         init_alias_heapvars.
16472         (init_alias_heapvars): Initialize only when not already initialized.
16473         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
16474
16475 2007-01-19  Roger Sayle  <roger@eyesopen.com>
16476
16477         * common.opt (fsigned-zeros): New command line option.
16478         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
16479         of flag_unsafe_math_optimizations.
16480         * opts.c (set_fast_math_flags): The -ffast-math command line option
16481         implies -fno-signed-zeros.
16482         (fast_math_flags_set_p): Likewise.
16483
16484         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
16485         the documentation of -ffast-math appropriately.  Wrap long lines.
16486
16487 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
16488
16489         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
16490         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
16491
16492 2007-01-19  Tomas Bily  <tbily@suse.cz>
16493
16494         * cgraphunit.c (cgraph_finalize_function): Updating of pid
16495         * tree-profile.c:
16496         (tree_init_ic_make_global_vars): New function
16497         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
16498         (tree_gen_ic_profiler): New function
16499         (tree_gen_ic_func_profiler): New function
16500         (tree_profiling): Added calling of tree_gen_ic_func_profiler
16501         (tree_profile_hooks): Added hook for indirec/virtual calls
16502         * value-prof.c (tree_find_values_to_profile): New case for
16503         indirect calls
16504         (tree_values_to_profile): Call for determining indirect/virtual
16505         counters
16506         (tree_indirect_call_to_profile): New function
16507         (tree_ic_transform): New function
16508         (tree_ic): New function
16509         (find_func_by_pid): New function
16510         (init_pid_map): New function
16511         (tree_value_profile_transformations): Added check for
16512         indirect/virtual call transformation
16513         * value-prof.h (enum hist_type): New counter type for
16514         indirect/virtual calls
16515         (profile_hooks): Added new hook for profiling indirect/virtual
16516         calls
16517         * profile.c (instrument_values): New case for indirect/virtual
16518         call added
16519         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
16520         (GCOV_COUNTER_V_INDIR): New counter type
16521         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
16522         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
16523         call added
16524         * cgraph.c: Definition of cgraph_max_pid
16525         (cgraph_create_node): Default init of pid attribute
16526         * cgraph.h: Declaration of cgraph_max_pid
16527         (struct cgraph_node): Added pid attribute
16528         * libgcov.c (__gcov_indirect_call_profiler): New function
16529         (__gcov_one_value_profiler_body): New function
16530         (__gcov_one_value_profiler): Body was moved to
16531         __gcov_one_value_profiler_body and calls it
16532
16533 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
16534
16535         * doc/gty.texi (Options): Document the mark_hook option to GTY.
16536         * gengtype.c (write_types_data, write_func_for_structure,
16537         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
16538         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
16539         (walk_type, write_func_for_structure): Generate the mark_hook if
16540         needed.
16541
16542 2007-01-19  Jan Hubicka  <jh@suse.cz>
16543
16544         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
16545         'early' argument take inlining mode argument specifying whether to
16546         inline for size/speeed or all functions; add support for flattening;
16547         improve dumpting.
16548         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
16549
16550 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16551
16552         PR c++/17947
16553         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
16554         the name of the declared identifier.
16555
16556 2007-01-19  Dirk Mueller  <dmueller@suse.de>
16557
16558         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
16559         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
16560         duplicate evaluation.
16561
16562 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
16563
16564         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
16565         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
16566         to XFMode, use acosxf2 and truncate result to requested mode.
16567         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
16568         (asin<mode>2): Similarly, with asin expanders.
16569         (*fscalexf4_i387): Rename from *fscalexf4.
16570         (expNcorexf3): New expander.
16571         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
16572         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
16573         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
16574         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
16575         patterns for SSE math.
16576         (exp10<mode>2): Similarly, with exp10 expanders.
16577         (exp2<mode>2): Similarly, with exp2 expanders.
16578         (expm1<mode>2): Similarly, with expm1 expanders.
16579         (ldexp<mode>3): Similarly, with ldexp expanders.
16580         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
16581         Use gen_truncxf<mode>2_i387_noop to truncate result.
16582
16583 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16584
16585         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
16586         for ColdFire targets.
16587
16588 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
16589             Richard Sandiford  <richard@codesourcery.com>
16590
16591         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
16592         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
16593         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
16594         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
16595         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
16596         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
16597
16598 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16599
16600         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
16601         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
16602         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
16603         (*adddi_dilshr32_cf): New pattern.
16604         (adddi3, subdi3): Remove first alternatives.
16605
16606 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16607
16608         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
16609         implemented using move.l, do not use its cc result for floating-point
16610         comparisons.
16611
16612 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16613
16614         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
16615         from accepting 's' constraints if flag_pic.
16616
16617 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16618
16619         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
16620         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
16621         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
16622         condition from TARGET_68881 to TARGET_HARD_FLOAT.
16623
16624 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
16625
16626         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
16627         ColdFire alternatives.
16628         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
16629         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
16630         architectures that support ff1 instruction.
16631
16632 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16633             Julian Brown  <julian@codesourcery.com>
16634
16635         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
16636         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
16637         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
16638         Add commentary.
16639
16640 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
16641
16642         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
16643         and return a bool.
16644         (output_move_const_into_data_reg, output_move_simode_const): Delete.
16645         * config/m68k/m68k.c (const_method, const_int_cost): Take a
16646         HOST_WIDE_INT instead of an rtx.
16647         (m68k_rtx_costs): Update call accordingly.
16648         (output_move_const_into_data_reg): Likewise.  Fix formatting.
16649         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
16650         Return a bool.
16651         (output_move_simode_const): Update calls after above changes.
16652         Rework to use automatic variables and predicates like MEM_P.
16653         * config/m68k/m68k.md (pushexthisi_const): Update call to
16654         valid_mov3q_const.
16655
16656 2007-01-19  Dirk Mueller  <dmueller@suse.de>
16657
16658         * tree-ssa-alias.c (perform_var_substitution): Fix typo
16659         in dump_flags test.
16660
16661 2007-01-19  Richard Guenther  <rguenther@suse.de>
16662
16663         * builtins.c (expand_builtin_cexpi): Fall back to expanding
16664         via cexp in case sincos is not available.
16665
16666 2007-01-19  Richard Guenther  <rguenther@suse.de>
16667
16668         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
16669         * defaults.h (TARGET_HAS_SINCOS): Default to off.
16670         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
16671         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
16672         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
16673         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
16674         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
16675         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
16676
16677 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
16678
16679         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
16680         New insn patterns.
16681         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
16682         (atan2xf3): Directly generate RTL pattern.
16683         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
16684         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
16685         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
16686         disable patterns for SSE math.
16687         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
16688         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
16689         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
16690         disable patterns for SSE math.
16691
16692 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
16693
16694         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
16695
16696 2007-01-18  Roger Sayle  <roger@eyesopen.com>
16697
16698         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
16699         VIEW_CONVERT_EXPR to the same type as it's operand.
16700
16701 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
16702
16703         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
16704         configured for long double 128.
16705
16706 2007-01-18  Mike Stump  <mrs@apple.com>
16707
16708         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
16709         error.
16710
16711 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
16712
16713         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
16714         type correct.
16715
16716 2007-01-18  Jan Hubicka  <jh@suse.cz>
16717
16718         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
16719         greater than NUM_VOP_FREE_BUCKETS.
16720
16721 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
16722
16723         * tree-ssa-structalias.c: Update comments.
16724         (ptabitmap_obstack): Removed.
16725         (pta_obstack): New.
16726         (oldpta_obstack): Ditto.
16727         (stats): Add a few members.
16728         (struct variable_info): Remove node, complex, address_taken, and
16729         indirect_target members. Add oldsolution member.
16730         (new_var_info): Do not initialize removed members.
16731         (constraint_expr_type): Remove INCLUDES.
16732         (constraint_graph): Add size, implicit_preds, rep,
16733         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
16734         (FIRST_REF_NODE): New macro.
16735         (LAST_REF_NODE): Ditto.
16736         (FIRST_ADDR_NODE): Ditto.
16737         (find): New function.
16738         (unite): Ditto.
16739         (dump_constraint): Do not handle INCLUDES.
16740         (insert_into_complex): Do not insert duplicate constraints.
16741         (condense_varmap_nodes): Renamed and rewritten into ...
16742         (merge_node_constraints): This. Also fix bug in handling of
16743         offseted copy constraints.
16744         (clear_edges_for_node): No longer need to deal with preds at all,
16745         or removing associated preds/succs.
16746         (merge_graph_nodes): Deal with indirect_cycles.
16747         Don't deal with predecessors.
16748         (add_implicit_graph_edge): New function.
16749         (add_pred_graph_edge): Ditto.
16750         (add_graph_edge): Don't deal with predecessors.
16751         (build_constraint_graph): Removed.
16752         (build_pred_graph): New function.
16753         (build_succ_graph): Ditto.
16754         (struct scc_info): Removed in_component. Added roots, dfs, and
16755         node_mapping. Remove visited_index, unification_queue.
16756         (scc_visit): Deal with union-find we do now.
16757         Deal with cycles with REF nodes.
16758         (collapse_nodes): Renamed and rewritten to ...
16759         (unify_nodes): This.
16760         (process_unification_queue): Removed.
16761         (topo_visit): Cleanup
16762         (do_da_constraint): Use find.
16763         (do_sd_constraint): Ditto.
16764         (do_ds_constraint): Ditto.
16765         (do_complex_constraint): Ditto.
16766         (init_scc_info): Update for removed and added members.
16767         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
16768         (find_indirect_cycles): This.
16769         (equivalence_class): New variable.
16770         (label_visit): New function.
16771         (perform_variable_substitution): Rewritten.
16772         (free_var_substitution_info): New function.
16773         (find_equivalent_node): Ditto.
16774         (move_complex_constraints): Ditto.
16775         (eliminate_indirect_cycles): Ditto.
16776         (solve_graph): Only propagate changed bits.
16777         Use indirect cycle elimination.
16778         Use find.
16779         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
16780         (tree_id_eq): Renamed to ...
16781         (tree_vi_eq): This. Update for member change
16782         (insert_id_for_tree): Renamed and rewritten to ...
16783         (insert_vi_for_tree): This.
16784         (lookup_id_for_tree): Renamed and rewritten to ...
16785         (lookup_vi_for_tree): This.
16786         (get_id_for_tree): Renamed and rewritten to ...
16787         (get_vi_for_tree): Ditto.
16788         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
16789         (process_constraint): Don't handle INCLUDES.
16790         Remove special ADDRESSOF case.
16791         (find_func_aliases): Rewrite to use vi functions instead of id
16792         ones.
16793         (create_function_info_for): Ditto.
16794         (create_variable_info_for): Ditto.
16795         (intra_create_variable_infos): Ditto.
16796         (merge_smts_into): Ditto.
16797         (find_what_p_points_to): Ditto.
16798         (init_base_vars): Ditto.
16799         (init_alias_vars): Ditto.
16800         (remove_preds_and_fake_succs): New function.
16801         (dump_sa_points_to_info): Dump new stats.
16802         (dump_solution_for_var): Use find.
16803         (set_used_smts): Fix formatting.
16804         (compute_points_to_sets): Updated for new functions.
16805         (ipa_pta_execute): Ditto.
16806
16807 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
16808             Richard Sandiford  <richard@codesourcery.com>
16809
16810         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
16811         parallels.
16812         * calls.c (expand_call): If the return value is a PARALLEL,
16813         extract its first member.
16814         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
16815         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
16816         use FUNCTION_EXTRA_EPILOGUE.
16817         (m68k_function_value): Return a PARALLEL if the return value
16818         is of a pointer type.
16819         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
16820         (FUNCTION_EXTRA_EPILOGUE): Remove.
16821         * config/m68k/m68k.md (D0_REG): New constant.
16822
16823 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
16824
16825         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
16826         output a NOP for empty epilogues.
16827
16828 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16829
16830         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
16831         before function.  Extend register save check to include all
16832         registers, not just integer ones.
16833
16834 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
16835
16836         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
16837         (m68k_use_return_insn): ...this.
16838         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
16839         * config/m68k/m68k.c (use_return_insn): Rename to...
16840         (m68k_use_return_insn): ...this.
16841         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
16842         of USE_RETURN_INSN.
16843
16844 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
16845
16846         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
16847         nearest even, fix denormal rounding overflow.
16848
16849 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16850
16851         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
16852         f%$smove and f%$move.
16853         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
16854         (extendsfdf2_cf): Use fdmove instead of f%&move.
16855         (truncdfsf2_cf): Use fsmove instead of f%$smove.
16856         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
16857
16858 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16859
16860         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
16861         GPR<-GPR moves.
16862
16863 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16864
16865         * real.h (real_format): Add a canonical_nan_lsbs_set field.
16866         (coldfire_single_format): Declare.
16867         (coldfire_double_format): Likewise.
16868         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
16869         of qnan_msb_set to determine the lower bits of a canonical
16870         NaN significand.
16871         (encode_ieee_double): Likewise.
16872         (encode_ieee_quad): Likewise.
16873         (ieee_single_format): Initialize canonical_nan_lsbs_set.
16874         (mips_single_format): Likewise.
16875         (ieee_double_format): Likewise.
16876         (mips_double_format): Likewise.
16877         (ieee_extended_motorola_format): Likewise.
16878         (ieee_extended_intel_96_format): Likewise.
16879         (ieee_extended_intel_128_format): Likewise.
16880         (ieee_extended_intel_96_round_53_format): Likewise.
16881         (ibm_extended_format): Likewise.
16882         (mips_extended_format): Likewise.
16883         (ieee_quad_format): Likewise.
16884         (mips_quad_format): Likewise.
16885         (vax_f_format): Likewise.
16886         (vax_d_format): Likewise.
16887         (vax_g_format): Likewise.
16888         (i370_single_format): Likewise.
16889         (i370_double_format): Likewise.
16890         (decimal_single_format): Likewise.
16891         (decimal_double_format): Likewise.
16892         (decimal_quad_format): Likewise.
16893         (c4x_single_format): Likewise.
16894         (c4x_extended_format): Likewise.
16895         (real_internal_format): Likewise.
16896         (coldfire_single_format): New real_format.
16897         (coldfire_double_format): Likewise.
16898         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
16899         canonical_nan_lsbs_set.
16900         (pdp11_d_format): Likewise.
16901         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
16902         if TARGET_COLDFIRE_CPU.
16903
16904 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16905
16906         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
16907         (output_call, m68k_legitimize_call_address): Declare.
16908         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
16909         parenthesees.  Add support for a 'W' constraint.
16910         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
16911         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
16912         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
16913         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
16914         variables.
16915         (override_options): Initialize them.  Do not set flag_no_function_cse
16916         for TARGET_ID_SHARED_LIBRARY.
16917         (m68k_output_pic_call): Delete.
16918         (m68k_legitimize_call_address): New function.
16919         (print_operand): Remove the %o prefix.  Handle the %p prefix.
16920         (output_call): New function.
16921         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
16922         target address from the GOT if symbolic jumps are not allowed.
16923         * config/m68k/m68k.md (call, general_operand): Do not set
16924         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
16925         Merge separate flag_pic and !flag_pic define_insns into...
16926         (*call, *call_value): ...these new patterns.  Match the address
16927         rather than the containing MEM and require it to be a call_operand.
16928         Use output_call to generate the asm template.
16929         * config/m68k/predicates.md (const_call_operand): New predicate.
16930         (call_operand): Likewise.
16931
16932 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
16933
16934         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
16935         (STACK_GROWS_DOWNWARD): Define to 1.
16936         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
16937         comments, emphasizing that these values are only defaults.
16938         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
16939         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
16940
16941 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16942
16943         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
16944
16945 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
16946             Richard Sandiford  <richard@codesourcery.com>
16947
16948         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
16949         (FP_REGNO_P): New macros.
16950         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
16951         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
16952         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
16953         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
16954
16955 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
16956
16957         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16958         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
16959         to $tmake_file.
16960         * config/m68k/t-floatlib: New file, extracting common code from...
16961         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
16962         * config/m68k/t-uclinux: Here.
16963         * config/m68k/fpgnulib.c: Do not compile extendeed precision
16964         routines on ColdFire targets.
16965
16966 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
16967
16968         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
16969         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
16970         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
16971         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
16972         explicitly set MOTOROLA to 1.
16973         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
16974
16975 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16976             Nathan Sidwell  <nathan@codesourcery.com>
16977
16978         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
16979         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
16980         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
16981         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
16982         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
16983         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
16984         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
16985         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
16986         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
16987         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
16988         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
16989         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
16990         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
16991         (DBX_REGISTER_NUMBER): Delete.
16992         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
16993         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
16994         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
16995
16996 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
16997
16998         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
16999         * config/flat.h: New file.
17000         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
17001         OBJECT_FORMAT_FLAT.
17002         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
17003         indirect references for -msep-data or -mid-shared-library.
17004         Do not use PC-relative code addresses either.
17005         * config/m68k/m68k.c (override_options): Restrict -fPIC error
17006         to -mpcrel.
17007         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
17008         for shared libraries and crt1.o for executables.  Use crti.o and
17009         crtbegin.o.
17010         (ENDFILE_SPEC): Use crtend.o and crtn.o.
17011         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
17012         Do not add -elf2flt or -shared-lib-id options here.
17013         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
17014         Pass -shared-lib-id if -mid-shared-library, taking the library
17015         identifier from -mshared-library-id if given, otherwise
17016         defaulting to 0.
17017         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
17018         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
17019         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
17020         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
17021         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
17022         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
17023         and crtend.o.
17024         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
17025         jump sequence for ISA A and ISA A+.
17026         (PICJUMP): Likewise.
17027
17028 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17029
17030         * config.gcc (m68k-*-uclinux*): Base the port on the common
17031         and m68k GNU/Linux files rather than on the generic ELF ones.
17032         * config/m68k/uclinux.h (TARGET_VERSION): Override.
17033         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
17034
17035 2007-01-18  Julian Brown  <julian@codesourcery.com>
17036             Richard Sandiford  <richard@codesourcery.com>
17037
17038         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
17039         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17040         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
17041         before redefining.
17042         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
17043         80 unconditionally.
17044         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17045
17046 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17047
17048         * doc/install.texi: Document m68k-uclinuxoldabi.
17049         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
17050         * config/m68k/uclinux-oldabi.h: New file, copied from
17051         config/m68k/uclinux.h.
17052
17053 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
17054
17055         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
17056         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
17057         (m32r_compute_frame_size): Use unsigned for regno.
17058         (m32r_reload_lr): Use gen_frame_mem.
17059         (pop): New.
17060         (m32r_output_function_epilogue): Don't output the function epilogue
17061         textually here.
17062         (m32r_expand_epilogue): New.
17063         (direct_return): Return false if the function has the interrupt
17064         attribute.
17065         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
17066         * config/m32r/m32r.md (epilogue): New expander.
17067         (return_lr, return_rte): New insns.
17068         (return): Make it expander.
17069         (return_normal): New expander.
17070
17071 2007-01-18  Josh Conner  <jconner@apple.com>
17072
17073         PR target/30485
17074         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
17075         support for UNLE, UNLT, UNGE, and UNGT.
17076
17077 2007-01-18  Jan Hubicka  <jh@suse.cz>
17078
17079         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
17080         * tree-tailcall (add_virtual_phis): Likewise.
17081         (optimize_tail_call): Return TODOs.
17082         (execute_tail_calls): Return TODOs.
17083         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
17084         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
17085         changed.
17086         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
17087         Cleanup cfg using TODO.
17088         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
17089         * passes.c (execute_function_todo): When cleanup did something, remove
17090         unused locals.
17091         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
17092         (make_edges): Don't cleanup_cfg.
17093
17094 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
17095
17096         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
17097         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
17098         operate on the top of stack.
17099         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
17100         register handling of instructions that output to the second
17101         stack slot.
17102         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
17103         (move_for_stack_reg): Special-case check for dead destination
17104         stack slot for constant load of 1.0 inside UNSPEC_TAN.
17105
17106         * config/i386/i386.md (UNSPEC_TAN): New constant.
17107         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
17108         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
17109         to correctly model move of constant 1.0 to top stack slot.
17110         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
17111         (unnamed peephole2 pattern): Remove corresponding peephole2
17112         pattern that optimizes tan insn and loading of constant 1.0.
17113         (tanxf2): Use fptanxf4_i387.
17114         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
17115         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
17116         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
17117         disable patterns for SSE math.
17118         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
17119         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
17120
17121 2007-01-18  Dirk Mueller  <dmueller@suse.de>
17122             Richard Guenther <rguenther@suse.de>
17123
17124         PR diagnostic/8268
17125         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
17126         * common.opt (Warray-bounds): Add new warning option.
17127         * c-opts.c (c_common_handle_option): Define -Warray-bounds
17128         if -Wall is given.
17129         * Makefile.in: make tree-vrp.o depend on toplev.h
17130         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
17131         is enabled.
17132         (check_array_refs, check_array_bounds, check_array_ref): New.
17133
17134 2007-01-18  Jan Hubicka  <jh@suse.cz>
17135
17136         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
17137         (execute_ssa_ccp): Return flags conditionally.
17138         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
17139         changed.
17140         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
17141
17142 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
17143
17144         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
17145         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
17146
17147         * Makefile.c (GTFILES): Add cfglayout.h.
17148         * gengtype.c (open_base_files): Likewise.
17149         * cfglayout.c (cfg_layout_function_footer,
17150         cfg_layout_function_header) Reindent to make gengtype happy.
17151         * cfglayout.h (cfg_layout_function_footer,
17152         cfg_layout_function_header): Add GTY(()) marker.
17153
17154         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
17155
17156 2007-01-18  Ben Elliston  <bje@au.ibm.com>
17157
17158         * genautomata.c (write_automata): Include xstrerror output in the
17159         error message if writing the DFA description file fails.
17160
17161 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
17162
17163         * config/mips/mips-protos.h (mips_output_external): Make it
17164         return void.
17165         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
17166         * config/mips/mips.c (irix_output_external_libcall): Likewise.
17167         (extern_list): Likewise.
17168         (extern_head): Likewise.
17169         (TARGET_ASM_FILE_END): Likewise.
17170         (mips_file_end): Likewise.
17171         (mips_output_external): Rewritten.
17172
17173 2007-01-18  Ben Elliston  <bje@au.ibm.com>
17174
17175         * genpreds.c (write_insn_preds_c): Only write out the function
17176         body for regclass_for_constraint if we have register constraints.
17177
17178 2007-01-17  Tom Tromey  <tromey@redhat.com>
17179
17180         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
17181         * doc/install.texi (Testing): Use sourceware.org.
17182         (Binaries): Likewise.
17183         (Specific): Likewise.
17184         * doc/contrib.texi (Contributors): Use sourceware.org.
17185
17186 2007-01-17  Anatoly Sokolov <aesok@post.ru>
17187
17188         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
17189         (AVR_ENHANCED): Rename to ...
17190         (AVR_HAVE_MUL): ... new.
17191         (avr_enhanced_p): Rename to ...
17192         (avr_have_mul_p): ... new.
17193         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
17194         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
17195         * config/avr/avr.c (avr_enhanced_p): Rename to ...
17196         (avr_have_mul_p): ... new.
17197         (base_arch_s): Rename 'enhanced' to 'have_mul'.
17198         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
17199         'avr_enhanced_p' and 'enhanced'.
17200         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
17201         AVR_HAVE_MUL instead of AVR_ENHANCED.
17202         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17203         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
17204         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
17205         instead of AVR_ENHANCED.
17206         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17207         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
17208         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
17209
17210 2007-01-17  Ian Lance Taylor  <iant@google.com>
17211
17212         * vec.h (VEC_reserve_exact): Define.
17213         (vec_gc_p_reserve_exact): Declare.
17214         (vec_gc_o_reserve_exact): Declare.
17215         (vec_heap_p_reserve_exact): Declare.
17216         (vec_heap_o_reserve_exact): Declare.
17217         (VEC_OP (T,A,reserve_exact)): New static inline function, three
17218         versions.
17219         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
17220         negative parameter.
17221         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
17222         (VEC_OP (T,A,copy)) [all versions]: Likewise.
17223         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
17224         * vec.c (calculate_allocation): Add exact parameter.  Change all
17225         callers.
17226         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
17227         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
17228         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
17229         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
17230         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
17231         (vec_heap_p_reserve_exact): New function.
17232         (vec_heap_o_reserve_exact): New function.
17233
17234 2007-01-17  Jan Hubicka  <jh@suse.cz>
17235
17236         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
17237
17238 2007-01-17  Eric Christopher  <echristo@apple.com>
17239
17240         * config.gcc: Support core2 processor.
17241
17242 2007-01-16  Jan Hubicka  <jh@suse.cz>
17243
17244         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
17245         the names, just unlink the chain so we don't crash on dangling
17246         pointers
17247         to dead SSA names.
17248
17249 2007-01-16  Jan Hubicka  <jh@suse.cz>
17250
17251         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
17252         * tree-pass.h: Reorder to make IPA passes appear toegher.
17253         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
17254         Declare.
17255         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
17256         parameters, do not call early inliner.
17257         * ipa-inline.c: Update comments.  Include tree-flow.h
17258         (cgraph_decide_inlining): Do not compute inlining parameters.
17259         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
17260         be called with function context set up.
17261         (pass_ipa_inline): Remove unreachable functions before pass.
17262         (cgraph_early_inlining): Simplify assuming to be called from the
17263         PM as local pass.
17264         (pass_early_inline): New pass.
17265         (cgraph_gate_ipa_early_inlining): New gate.
17266         (pass_ipa_early_inline): Turn into simple wrapper.
17267         (compute_inline_parameters): New function.
17268         (gate_inline_passes): New gate.
17269         (pass_inline_parameters): New pass.
17270         (apply_inline): Move here from tree-optimize.c
17271         (pass_apply_inline): New pass.
17272         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
17273         transforming.
17274         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
17275         doing them by hand.
17276         (tree_function_versioning): Do not allocate dummy struct function.
17277         * tree-inline.h (optimize_inline_calls): Update prototype.
17278         * tree-optimize.c (execute_fixup_cfg): Export.
17279         (pass_fixup_cfg): Remove
17280         (tree_rest_of_compilation): Do not apply inlines.
17281         * tree-flow.h (execute_fixup_cfg): Declare.
17282         * Makefile.in (gt-passes.c): New.
17283         * passes.c: Include gt-passes.h
17284         (init_optimization_passes): New passes.
17285         (nnodes, order): New static vars.
17286         (do_per_function_toporder): New function.
17287         (execute_one_pass): Dump current pass here.
17288         (execute_ipa_pass_list): Don't dump current pass here.
17289
17290 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
17291
17292         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
17293         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
17294
17295 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
17296
17297         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
17298         (strong_alias): Define.
17299         (__gcc_qmul): Provide non-FMA for soft-float.
17300         (__gcc_qdiv): Same.
17301         (__gcc_qneg): New.
17302         (__gcc_qeq): New.
17303         (__gcc_qle): New.
17304         (__gcc_qge): New.
17305         (__gcc_qunord): New.
17306         (__gcc_stoq): New.
17307         (__gcc_dtoq): New.
17308         (__gcc_qtos): New.
17309         (__gcc_qtod): New.
17310         (__gcc_qtoi): New.
17311         (__gcc_qtou): New.
17312         (__gcc_itoq): New.
17313         (__gcc_utoq): New.
17314         (fmsub): New.
17315         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
17316         soft-float functions.
17317         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
17318         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
17319         about long double soft float.
17320
17321 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
17322             Tehila Meyzels  <tehila@il.ibm.com>
17323
17324         * tree-vectorizer.h (is_pattern_stmt_p): New.
17325         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
17326         formatting (tabs instead of spaces). Cleanup and clarify setting
17327         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
17328         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
17329         (vectorizable_type_demotion): Check that types are integral.
17330         (vectorizable_type_promotion): Likewise.
17331         (vectorizable_store): Fix typo.  Eliminate new-line at end of
17332         comments.
17333
17334 2007-01-16  Jan Hubicka  <jh@suse.cz>
17335
17336         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
17337         cgraph edges too.
17338
17339 2007-01-15  Eric Christopher  <echristo@apple.com>
17340
17341         * ifcvt.c: Include vec.h, vecprim.h.
17342         (check_cond_move_block): New argument regs.
17343         Reorganize. Add registers used to regs.
17344         (cond_move_process_if_block): Use regs set above as
17345         loop bounds.
17346
17347 2007-01-15  Eric Christopher  <echristo@apple.com>
17348
17349         * config/darwin.h: Update copyright.
17350         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
17351         (LINK_COMMAND_SPEC): Add -u.
17352         (LINK_SPEC): Fix umbrella for above.
17353
17354 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
17355
17356         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
17357         glibc CVS.
17358
17359 2007-01-15  Tom Tromey  <tromey@redhat.com>
17360
17361         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
17362         * doc/install.texi (Testing): Don't mention jacks.
17363         (Configuration): Document --enable-java-maintainer-mode.  Move
17364         --with-java-home to libgcj-specific section.  Document
17365         --with-ecj-jar.
17366         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
17367
17368 2007-01-15  Jan Hubicka  <jh@suse.cz>
17369
17370         * tree-ssa-dce.c (DCE_TODOs): New.
17371         (propagate_necessity): Return if something changed.
17372         (eliminate_unnecessary_stmts): Likewise.
17373         (perform_tree_ssa_dce): Return TODO flags when needed.
17374         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
17375
17376 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
17377
17378         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
17379         (fyl2x_extend<mode>xf3_i387): New insn pattern.
17380         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
17381         patterns using X87MODEF12 mode macro.  Extend operand 1
17382         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
17383         (log10<mode>2): Ditto.
17384         (log2<mode>2): Ditto.
17385         (log1p<mode>2): Ditto.
17386         (logb<mode>2): Ditto.
17387         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
17388         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
17389         (*fxtractxf3_i387): Rename from *fxtractxf3.
17390         (fxtract_extend<mode>xf3_i387): New insn pattern.
17391         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
17392         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
17393         and gen_fyl2xxf3_i387().
17394
17395 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
17396
17397         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
17398         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
17399         get_loop_exit_edges.  Changed return type to bool.
17400         * cfgloop.h (fix_loop_placement): Declaration removed.
17401
17402 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
17403
17404         * param.h (MIN_VECT_LOOP_BOUND): New.
17405         * params.def (MIN_VECT_LOOP_BOUND): New.
17406         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
17407         argument - minimum threshold for number of iterations.
17408         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
17409         argument to declaration.
17410         * tree-vect-analyze.c (vect_analyze_operations): Check value of
17411         MIN_VECT_LOOP_BOUND.
17412         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
17413         slpeel_tree_peel_loop_to_edge with additional argument.
17414         (vect_do_peeling_for_alignment): Likewise.
17415         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
17416
17417 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
17418
17419         PR target/30413
17420         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
17421         operands of size 1.
17422
17423 2007-01-14  Jan Hubicka  <jh@suse.cz>
17424
17425         * tree-dfa.c (remove_referenced_var): New function.
17426         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
17427         prune referenced vars list too.
17428         * tree-flow.h (remove_referenced_var): Declare.
17429
17430 2007-01-14  Jan Hubicka  <jh@suse.cz>
17431
17432         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
17433         separately.
17434         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
17435         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
17436         * except.h (verify_eh_throw_table_statements): Kill prototype.
17437         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
17438         into call exrepssions.
17439         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
17440         eh trhow verifier.
17441         * tree-cfg.c: Include pointer-set.h.
17442         (verify_node_sharing): Work on pointer set.
17443         (verify_eh_throw_stmt_node): New.
17444         (verify_stmts): Use pointers sets, verify throw_stmt.
17445
17446 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
17447
17448         * ipa-reference.c (analyze_function): Consider also addresses taken
17449         in phi nodes.
17450
17451 2007-01-12  Roger Sayle  <roger@eyesopen.com>
17452
17453         * c-typeck.c (null_pointer_constant_p): Replace use of
17454         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17455         (build_c_cast): Likewise.
17456
17457 2007-01-12  Roger Sayle  <roger@eyesopen.com>
17458
17459         * tree.h (force_fit_type_double): Remove unused final argument.
17460         * c-common.c (constant_expression_warning): Replace use of
17461         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17462         (convert_and_check): Likewise.
17463         (shorten_compare): Update call to force_fit_type_double.
17464         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
17465         * convert.c (convert_to_pointer): Update call to
17466         force_fit_type_double.
17467         * fold-const.c (force_fit_type_double): Remove overflowed_const
17468         argument.
17469         (int_const_binop, fold_convert_const_int_from_int,
17470         fold_convert_const_int_from_real, fold_div_compare,
17471         fold_sign_changed_comparison, fold_unary, fold_negate_const,
17472         fold_abs_const, fold_not_const): Remove the final argument from
17473         calls to force_fit_type_double.
17474
17475 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17476
17477         * configure.ac: Set insn to "nop" for spu-*-* also.
17478         * configure: Regenerate.
17479
17480 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
17481
17482         * builtins.def : Add BUILT_IN_FREE.
17483
17484 2007-01-12  Jan Hubicka  <jh@suse.cz>
17485
17486         PR tree-optimization/30443
17487         * tree-inline.c (tree_function_versioning): Do not optimize when
17488         cloning for inlining.
17489
17490 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
17491
17492         * doc/loop.texi: Document recording of loop exits.
17493         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
17494         (update_single_exits_after_duplication,
17495         update_single_exit_for_duplicated_loop,
17496         update_single_exit_for_duplicated_loops): Removed.
17497         (duplicate_loop_to_header_edge): Do not call
17498         update_single_exits_after_duplication and
17499         update_single_exit_for_duplicated_loops.
17500         (loop_version): Do not update single_exit information.
17501         (fix_loop_structure): Use record_loop_exits instead of
17502         mark_single_exit_loops.
17503         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
17504         the lists of loop exits.
17505         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
17506         split_edge, merge_blocks): Update the lists of loop exits.
17507         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
17508         loop_optimizer_init.
17509         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
17510         of mark_single_exit_loops.
17511         (loop_optimizer_finalize): Call release_recorded_exits.
17512         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
17513         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
17514         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
17515         update single exit information.
17516         * lambda-code.c (perfect_nestify): Ditto.
17517         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
17518         (mark_single_exit_loops): Removed.
17519         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
17520         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
17521         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
17522         functions.
17523         (get_loop_exit_edges, single_exit): Use recorded exit lists.
17524         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
17525         (verify_loop_structure): Verify consistency of the exit lists.
17526         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
17527         (set_single_exit): Removed.
17528         * cfgloop.h (struct loop_exit): New function.
17529         (struct loop): single_exit_ field replaced by exits field.
17530         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
17531         LOOPS_HAVE_RECORDED_EXITS.
17532         (struct loops): Added exits hash.
17533         (mark_single_exit_loops, set_single_exit): Declaration removed.
17534         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
17535
17536 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17537
17538         * doc/invoke.texi: Avoid use of @headitem.
17539
17540 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17541
17542         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
17543
17544 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17545
17546         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
17547         list of targets.
17548
17549 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
17550             Richard Sandiford  <richard@codesourcery.com>
17551
17552         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
17553         * config/m68k/m68k.opt: Resort options.
17554         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
17555
17556 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
17557             Richard Sandiford  <richard@codesourcery.com>
17558
17559         * doc/invoke.texi: Document the macros that are defined by
17560         m68k's -mtune and -mhard-float options.
17561         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
17562         (m68k_cpp_cpu_family): Likewise.
17563         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
17564         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
17565         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
17566         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
17567         (m68k_cpp_cpu_family): Likewise.
17568
17569 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17570
17571         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
17572         macros besides mc68000 as tuning macros.  Use a switch statement
17573         to set them and mcpu32.
17574
17575 2007-01-12  Julian Brown  <julian@codesourcery.com>
17576
17577         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
17578         (TARGET_68040_ONLY): Rename to...
17579         (TARGET_68040): ...this.
17580         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
17581         * config/m68k/m68k.md: Likewise.
17582
17583 2007-01-12  Julian Brown  <julian@codesourcery.com>
17584             Nathan Sidwell  <nathan@codesourcery.com>
17585             Richard Sandiford  <richard@codesourcery.com>
17586
17587         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
17588         the -mcpu= argument associated with the --with-cpu setting.
17589         Define M68K_DEFAULT_TUNE to the default -mtune= option,
17590         if different from the one implied by the -mcpu setting.
17591         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
17592         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
17593         * doc/invoke.texi: Mention ColdFire in the introduction to the
17594         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
17595         -mno-div and -mhard-float options.  Make -m68881 a synonym for
17596         -mhard-float.  Document the previously-undocumented -m5206e,
17597         -m528x, -m5307 and -m5407 options.  Tweak the existing option
17598         documentation for consistency.
17599         * doc/install.texi: Mention new --with-cpu arguments.
17600         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
17601         default CPU if neither -mcpu nor -march are specified.
17602         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
17603         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
17604         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
17605         using m68k_tune to decide between families that implement the
17606         same ISA.  Use m68k_tune to set __mcfv4e__.
17607         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
17608         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
17609         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
17610         (FL_ISA_C, FL_ISA_MMU): New macros.
17611         (MASK_COLDFIRE): Delete.
17612         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
17613         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
17614         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
17615         (TARGET_HARD_FLOAT): Do not define here.
17616         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
17617         (TUNE_68000): New macro.
17618         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
17619         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
17620         (TUNE_CFV2): Redefine in terms of m68k_tune.
17621         (uarch_type, target_device, fpu_type): New enums.
17622         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
17623         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
17624         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
17625         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
17626         (FL_FOR_isa_c): New macros.
17627         (m68k_isa): New enum.
17628         (m68k_target_selection): New structure.
17629         (all_devices, all_isas, all_microarchs): New tables.
17630         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
17631         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
17632         (MASK_ALL_CPU_BITS): Delete.
17633         (m68k_find_selection): New function.
17634         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
17635         Map the legacy target options to a combination of the new ones.
17636         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
17637         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
17638         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
17639         settings.
17640         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
17641         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
17642         properties.
17643         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
17644         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
17645         * config/m68k/m68k-devices.def: New file.
17646
17647 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17648             Nathan Sidwell  <nathan@codesourcery.com>
17649
17650         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
17651         (SUBTARGET_EXTRA_SPECS): New macros.
17652         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
17653         use %(asm_cpu_spec) instead.
17654         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
17655         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
17656         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
17657         (EXTRA_SPECS): Rename to...
17658         (SUBTARGET_EXTRA_SPECS): ...this.
17659
17660 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
17661             Richard Sandiford  <richard@codesourcery.com>
17662             Julian Brown  <julian@codesourcery.com>
17663
17664         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
17665         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
17666         to the configuration's default CPU.
17667         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
17668         Remove default masks.
17669         (m680[012]0-*-*): Set the default with_cpu to the first part of
17670         the target name.
17671         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
17672         (m68k*-*-linux): Extend the --with-cpu handling to...
17673         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
17674         and m68010.  Don't set target_cpu_default2.
17675         * doc/install.texi: Document --with-cpu for m68k.
17676         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
17677         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
17678         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
17679         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
17680         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
17681         (ASM_SPEC): Remove use of %(asm_cpu_default).
17682         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
17683         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
17684         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
17685         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
17686         __HAVE_FPU__ if TARGET_HARD_FLOAT.
17687         (TARGET_DEFAULT): Delete.
17688         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
17689         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
17690         (CPP_CPU_SPEC): Delete.
17691         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
17692         the appropriate string.
17693         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
17694         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
17695         (ASM_SPEC): Don't use %(asm_default_spec).
17696         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
17697         TARGET_DEFAULT and add MASK_68881.
17698         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
17699
17700 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17701
17702         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
17703         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
17704         MASK_68010 alongside MASK_68020.
17705         * doc/invoke.texi: Document -m68010.
17706         * config/m68k/m68k.opt (m68010): New.
17707         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
17708         if TUNE_68010.
17709         (TUNE_68010): New macro.
17710         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
17711         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
17712         (M68K_CPU_m68332): Add MASK_68010.
17713         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
17714         fallback definition.
17715         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
17716         defines.
17717         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
17718         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
17719         to all entries that use MASK_68020.
17720         (output_move_simode_const, output_move_himode, output_move_qimode)
17721         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
17722         instead of TARGET_68020 to select clr behavior.  Remove comment
17723         about there being no TARGET_68010.
17724         * config/m68k/m68k.md: Likewise throughout.
17725
17726 2007-01-12  Julian Brown  <julian@codesourcery.com>
17727
17728         * config/m68k/m68k.h (TARGET_ISAB): New macro.
17729         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
17730         * config/m68k/m68k.md: Likewise.
17731
17732 2007-01-12  Julian Brown  <julian@codesourcery.com>
17733
17734         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
17735         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
17736
17737 2007-01-12  Julian Brown  <julian@codesourcery.com>
17738
17739         * config/m68k/m68k.h (TUNE_68040_60): New macro.
17740         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
17741         * config/m68k/m68k.md: Likewise.
17742
17743 2007-01-12  Julian Brown  <julian@codesourcery.com>
17744             Richard Sandiford  <richard@codesourcery.com>
17745
17746         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
17747         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
17748         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
17749         TARGET_CPU32.
17750         (TARGET_CPU32): Rename to...
17751         (TUNE_CPU32): ...this.
17752         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
17753         (TUNE_CFV2): New macros.
17754         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
17755         remove conditions that are implied by TARGET_68020.
17756         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
17757         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
17758         (m68k_output_function_epilogue): Likewise.
17759         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
17760         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
17761         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
17762         non-68000 timings.  Refactor multiplication and division costs.
17763         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
17764         TUNE_CPU32 instead of TARGET_CPU32.
17765         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
17766         and TUNE_68060 instead of TARGET_68060.
17767         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
17768         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
17769         TARGET_CPU32.
17770         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
17771         && !TARGET_COLDFIRE" to choose between moveq and clr.
17772         Likewise in the unnamed movsf pattern.
17773         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
17774         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
17775         ashiftrt pattern.
17776
17777 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
17778
17779         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
17780         of tabbing before backslashes.
17781
17782 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17783
17784         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
17785         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
17786         (ASM_OUTPUT_INTERNAL_LABEL): Define.
17787
17788 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
17789
17790         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
17791         find_interesting_uses_cond.
17792         (find_interesting_uses_cond): Use extract_cond_operands.
17793         (rewrite_use_compare): Use extract_cond_operands and
17794         force_gimple_operand_bsi.  Do not call update_stmt.
17795         (determine_use_iv_cost_condition): Use extract_cond_operands.
17796         Return cheaper of using original bound and changing the exit bound.
17797
17798 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
17799
17800         PR tree-optimization/29516
17801         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
17802         most_expensive_mult_to_index, addr_to_parts,
17803         create_mem_ref, maybe_fold_tmr): Make the type of
17804         fields of TARGET_MEM_REF sizetype.
17805         (move_fixed_address_to_symbol, move_pointer_to_base):
17806         New functions.
17807         * tree.def (TARGET_MEM_REF): Add comment on types of
17808         the operands.
17809
17810 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
17811
17812         * c-common.c (vector_types_convertible_p): Treat opaque types as
17813         always convertible if they have the same size, but not otherwise.
17814
17815 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
17816
17817         * ifcvt.c (struct noce_if_info): Add comments to the fields.
17818         Remove the b_unconditional field.
17819         (noce_try_sign_mask): Do not look at b_unconditional.
17820         (noce_process_if_block): Do not use merge_if_blocks.  Update
17821         the CFG here.  Do not set b_unconditional.
17822         (cond_move_process_if_block): Likewise.
17823         (find_cond_trap): Likewise.
17824         (check_cond_move_block): Require simple jump insns at the end
17825         of the basic block.
17826
17827 2007-01-11  Jan Hubicka  <jh@suse.cz>
17828
17829         PR tree-optimization/1046
17830         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
17831         when alias info is not ready.
17832         (pass_tail_recursion): Do not require aliasing.
17833         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
17834         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
17835         * tree-ssa-copy.c (pass_copy_prop): Likewise.
17836         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
17837         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
17838         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
17839         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
17840         before inlining.
17841         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
17842         When aliasing is not build, mark statement as volatile.
17843
17844 2007-01-11  Tom Tromey  <tromey@redhat.com>
17845
17846         PR preprocessor/15185, PR preprocessor/20989:
17847         * doc/cppopts.texi <-MT>: Update description of algorithm for
17848         computing default target.
17849         <-M, -MD>: Reword "basename" text.
17850
17851 2007-01-11  Roger Sayle  <roger@eyesopen.com>
17852
17853         * builtins.c (expand_builtin_pow, expand_builtin_powi,
17854         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
17855         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
17856         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
17857         fold_builtin_bswap, real_constp, fold_builtin_pow,
17858         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
17859         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
17860         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17861         * convert.c (convert_to_pointer): Likewise.
17862         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
17863         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
17864         const_binop, fold_convert_const_int_from_int,
17865         fold_convert_const_int_from_real,
17866         fold_convert_const_real_from_real, sign_bit_p,
17867         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
17868         fold_sign_changed_comparison, fold_unary, fold_comparison,
17869         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
17870         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
17871         * print-tree.c (print_node_brief, print_node): Likewise.
17872         * stor-layout.c (place_field, layout_type): Likewise.
17873         * tree-chrec.c (keep_cast): Likewise.
17874         * tree.c (build_vector, build_real, build_real_from_int_cst,
17875         build_complex): Likewise.
17876
17877 2007-01-11  Roger Sayle  <roger@eyesopen.com>
17878
17879         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
17880         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
17881
17882 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
17883
17884         * configure.ac (strict1_warn): Rename to strict_warn.
17885         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
17886         cc_set_by_configure, quoted_cc_set_by_configure,
17887         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
17888         all_boot_languages, all_stagestuff): Remove.
17889         (target_list): Remove bootstrap targets.
17890         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
17891         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
17892         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
17893         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
17894         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
17895         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
17896         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
17897         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
17898         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
17899         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
17900         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
17901         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
17902         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
17903         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
17904         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
17905         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
17906         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
17907         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
17908         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
17909         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
17910         (mostlyclean): Adjust.
17911         (clean, distclean): Don't mention bootstrap stuff.
17912         * configure: Regenerate.
17913         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
17914         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
17915         treelang/config-lang.in (stagestuff): Remove.
17916         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
17917         stageprofile, stagefeedback, stagestuff): Remove mention.
17918
17919 2007-01-11  Nick Clifton  <nickc@redhat.com>
17920
17921         * config/mcore/predicates.md (mcore_general_movesrc_operand):
17922         Accept CONSTs.
17923         (mcore_general_movdst_operand): Do not accept CONST_INTs.
17924         (mcore_arith_K_S_operand): Run the test for the S constraint not
17925         the test for the M constraint.
17926         (mcore_addsub_operand): Do not accept integer values that are
17927         larger than 32 bits.
17928         * config/mcore/mcore.md: Remove unused constraints from split.
17929         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
17930         (addsi3): Likewise.
17931         (allocate_stack): Likewise.
17932         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
17933         operands to 32 bits.
17934         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
17935         INTVAL.
17936         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
17937         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
17938         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
17939         mcore_output_bclri, mcore_output_andn, output_inline_const,
17940         mcore_output_move, mcore_output_movedouble): Likewise.
17941         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
17942         (output_inline_const): Likewise.
17943         (output_inline_const): Fix format strings used in sprintf
17944         statements.
17945         * config/mcore/mcore-protos.h: Update prototypes for changed
17946         functions in mcore.c.
17947         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
17948         HOST_WIDE_INT and not int.
17949         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
17950         CONST_OK_FOR_N): Likewise.
17951         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
17952         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
17953         an INTVAL.
17954
17955 2007-01-10  Jan Hubicka  <jh@suse.cz>
17956
17957         * tree-vrp.c (remove_range_assertions): Release defs.
17958         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
17959         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
17960
17961 2007-01-10  Paul Brook  <paul@codesourcery.com>
17962
17963         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
17964         * config/arm/arm.md (mulsi3subsi): New insn.
17965
17966 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
17967
17968         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
17969         (tree_transform_and_unroll_loop): New.
17970         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
17971         Declare.
17972
17973 2007-01-10  Robert Kennedy <jimbob@google.com>
17974
17975         * fold-const.c (fold_comparison): Fold comparisons like (x *
17976         1000 < 0) to (x < 0).
17977
17978 2007-01-10  Ian Lance Taylor  <iant@google.com>
17979
17980         * tree-pretty-print.c (dump_generic_node): Print parentheses when
17981         operands have the same priority.
17982
17983 2007-01-10  Tom Tromey  <tromey@redhat.com>
17984
17985         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
17986         (fold_binary): Likewise.
17987         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
17988         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
17989         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
17990         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
17991         * langhooks.h (struct lang_hooks): Removed field
17992         'can_use_bit_fields_p'.
17993
17994 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
17995
17996         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
17997
17998 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
17999
18000         * function.c (get_last_funcdef_no): New function.
18001         * function.h (get_last_funcdef_no): Declare.
18002         * tree-inline.c (initialize_cfun): Add initialization.
18003         (tree_function_versioning): Cleanup.
18004
18005 2007-01-10  Jan Hubicka  <jh@suse.cz>
18006
18007         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
18008         PHIs.
18009
18010 2007-01-10  Sa Liu  <saliu@de.ibm.com>
18011             Ben Elliston  <bje@au.ibm.com>
18012
18013         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
18014         for SAVE_NONLOCAL and Pmode for any other save level.
18015         * spu-protos.h (spu_restore_stack_block): Declare.
18016         * spu.md (save_stack_block): Remove.
18017         (restore_stack_block): Call spu_restore_stack_block.
18018         * spu.c (spu_restore_stack_block): New function.
18019         (spu_expand_epilogue): Remove old comment.
18020
18021 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
18022
18023         PR tree-optimization/30322
18024         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
18025         (cand_value_at): Return the value as aff_tree.
18026         (may_eliminate_iv): Convert the bound from aff_tree to tree.
18027         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
18028         aff_combination_mult): New functions.
18029         (aff_combination_add): Use aff_combination_add_cst.
18030         (aff_combination_convert): Allow conversions to a wider type.
18031         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
18032         * tree-affine.h (aff_combination_mult): Declare.
18033
18034 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
18035
18036         * doc/tm.texi: Update documentation to reflect reality of exec
18037         and start file search behaviours. Update copyright year.
18038         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
18039         header file directories.
18040
18041 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
18042
18043         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
18044         (*cosxf2): Rename to cosxf2_i387.
18045         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
18046         using X87MODEF12 mode macro. Rename patterns to
18047         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
18048         for SSE math.
18049         (*cosdf2, *cossf2): Ditto.
18050         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
18051         to match extended input operands.
18052         (sincos<mode>3): New expander.
18053         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
18054         insn patterns and corresponding splitters.
18055
18056 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
18057
18058         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
18059         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
18060
18061 2007-01-09  Nicolas Pitre  <nico@cam.org>
18062
18063         PR target/30173
18064         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
18065
18066 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
18067
18068         * target.h (struct gcc_target): New field library_rtti_comdat.
18069         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
18070         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
18071         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
18072         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
18073
18074 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
18075
18076         * doc/invoke.texi (Optimize Options): Correct description of -O0.
18077
18078 2007-01-08  Richard Guenther  <rguenther@suse.de>
18079
18080         * tree.h (force_fit_type_double): Export.
18081         (force_fit_type): Remove.
18082         * fold-const.c (force_fit_type_double): New function.
18083         (force_fit_type): Remove.
18084         (int_const_binop): Use it.
18085         (fold_convert_const_int_from_int): Likewise.
18086         (fold_convert_const_int_from_real): Likewise.
18087         (fold_div_compare): Likewise.
18088         (fold_sign_changed_comparison): Likewise.
18089         (fold_unary): Likewise.
18090         (fold_negate_const): Likewise.
18091         (fold_abs_const): Likewise.
18092         (fold_not_const): Likewise.
18093         * c-common.c (shorten_compare): Use force_fit_type_double.
18094         * convert.c (convert_to_pointer): Likewise.
18095
18096 2007-01-08  Richard Guenther  <rguenther@suse.de>
18097
18098         * tree.h (build_int_cst_wide_type): Export.
18099         * tree.c (build_int_cst_wide_type): New function.
18100         (build_int_cst_wide): Fix comment.
18101         * builtins.c (fold_builtin_object_size): Use build_int_cst
18102         to build -1 or 0 of the correct type.  Use fit_double_type
18103         to check for overflow.
18104         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
18105         to build the mask.
18106         (decode_field_reference): Likewise.
18107         (all_ones_mask_p): Likewise.
18108         (native_interpret_int): Use build_int_cst_wide_type.
18109         (fold_binary): Use build_int_cst_type to build an all-ones
18110         value.
18111         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
18112
18113 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
18114
18115         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
18116
18117 2007-01-09  Ben Elliston  <bje@au.ibm.com>
18118
18119         * genautomata.c (STATS_OPTION): New option.
18120         (stats_flag): New flag.
18121         (gen_automata_option): Handle it.
18122         (initiate_automaton_gen): Ditto.
18123         (write_automata): Output statistics only if stats_flag is
18124         set. Likewise, output time statistics only if time_flag is set.
18125         * doc/md.texi (Processor pipeline description): Document new flag.
18126
18127 2007-01-08  Richard Guenther  <rguenther@suse.de>
18128
18129         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
18130         * tree.c (build_int_cst_type): Likewise.
18131         (size_in_bytes): Don't call force_fit_type on the result.
18132         (int_fits_type_p): Use fit_double_type.
18133         * fold-const.c (fit_double_type): New function.
18134         (force_fit_type): Use it.
18135         * tree.h (fit_double_type): Export.
18136
18137 2007-01-08  Jan Hubicka  <jh@suse.cz>
18138
18139         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
18140         * ipa.c (function_and_variable_visibility): Fix return type.
18141
18142 2007-01-08  Richard Guenther  <rguenther@suse.de>
18143
18144         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
18145         of offset to build the index.
18146         * tree-pretty-print.c (dump_generic_node): Don't build negated
18147         const just for printing.
18148         * c-pretty-print.c (pp_c_integer_constant): Likewise.
18149         * builtins.c (fold_builtin_int_roundingfn): Check if result
18150         fits the type by using force_fit_type and comparing the result.
18151         * predict.c (predict_loops): Use compare_tree_int for comparison.
18152         * tree.c (build_int_cst): Fall back to integer_type_node for
18153         NULL_TREE type.
18154         (build_int_cst_wide): Assert type is non-null.
18155
18156 2007-01-08  Roberto Costa  <roberto.costa@st.com>
18157
18158         * tree-vrp.c (extract_range_from_cond_expr): New.
18159         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
18160         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
18161         as expressions.
18162         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
18163         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
18164         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
18165         used as expressions.
18166         * tree-object-size.c (cond_expr_object_size): New.
18167         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
18168
18169 2007-01-08  Jan Hubicka  <jh@suse.cz>
18170
18171         * tree-ssa-forwprop.c (forward_propagate_into_cond,
18172         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
18173         statement.
18174
18175 2007-01-08  Richard Guenther  <rguenther@suse.de>
18176
18177         PR tree-optimization/23603
18178         * tree-vrp.c (set_value_range_to_truthvalue): New function.
18179         (extract_range_from_binary): Fall back to truthvalue instead of
18180         varying for TRUTH_*_EXPR.
18181         (extract_range_from_comparison): Fall back to truthvalue instead of
18182         varying.
18183         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
18184         if all visited PHI values were constant.
18185
18186 2007-01-08  Jan Hubicka  <jh@suse.cz>
18187
18188         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
18189         (cgraph_analyze_function): break out from ...
18190         (cgraph_finalize_compilation_unit): ... here.
18191         (cgraph_expand_function): Remove forgoten commented out line.
18192         (cgraph_optimize): Analyze functions.
18193
18194 2007-01-08  Jan Hubicka  <jh@suse.cz>
18195
18196         * tree-pas.h (TODO_remove_function): New flag.
18197         (TODO_update*): Renumber.
18198         (pass_ipa_increase_alignment,
18199         pass_ipa_function_and_variable_visibility): New passes.
18200         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
18201         (cgraph_function_and_variable_visibility): Move to ipa.c
18202         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
18203         cgraph_increase_alignment.
18204         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
18205         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
18206         calling tree-inline.
18207         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
18208         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
18209         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
18210         (gate_increase_alignment): New function.
18211         (pass_ipa_increase_alignment): New pass.
18212         * ipa.c: Inline tree-pass.h and timevar.h
18213         (function_and_variable_visibility): Move here from cgraphunit.c
18214         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
18215         * passes.c (init_optimization_passes): Add the two new passes.
18216         (execute_todo): Handle cgraph_remove_functions.
18217
18218 2007-01-08  Nick Clifton  <nickc@redhat.com>
18219
18220         * config/frv/predicates.md (reg_or_0_operand): Accept
18221         CONST_DOUBLEs.
18222
18223 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
18224
18225         * config/bfin/rtems.h, config/bfin/t-rtems: New.
18226         * config.gcc: Add bfin*-rtems*.
18227
18228 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
18229
18230         * c.opt: Add -flax-vector-conversions.
18231         * c-typeck.c (convert_for_assignment): Pass flag to
18232         vector_types_convertible_p to allow emission of note.
18233         (digest_init): Likewise.
18234         * c-opts.c: Handle -flax-vector-conversions.
18235         * c-common.c (flag_lax_vector_conversions): New.
18236         (vector_types_convertible_p): Unless -flax-vector conversions
18237         has been passed, disallow conversions between vectors with
18238         differing numbers of subparts and/or element types.  If such
18239         a conversion is disallowed, possibly emit a note on the first
18240         occasion only to inform the user of -flax-vector-conversions.
18241         The new last argument specifies this.
18242         * c-common.h (flag_lax_vector_conversions): New.
18243         (vector_types_convertible_p): Add extra argument.
18244         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
18245         char_type_node for V*QI type vectors.
18246         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
18247         Update to satisfy new typechecking rules.
18248         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
18249         C and C++ variants.
18250         * doc/invoke.texi (C Dialect Options): Document
18251         -flax-vector-conversions.
18252
18253 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
18254
18255         PR tree-optimization/29877
18256         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
18257         a register variable on the RHS to not be replaceable.
18258
18259 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
18260         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
18261         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
18262         const_simm15, const_pow2, const_npow2): Added.
18263         * config/score/misc.md (insv, extv, extzv, movmemsi,
18264         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
18265         * config/score/score.c (score_address_cost, score_select_cc_mode):
18266         Added.
18267         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
18268         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
18269         Update score_print_operand.
18270         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
18271         Adjust register allocate order and update some macro define.
18272         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
18273         mdx_block_move_straight, mdx_block_move_loop_head,
18274         mdx_block_move_loop_body, mdx_block_move_loop_foot,
18275         mdx_block_move_loop, mdx_block_move): Added.
18276         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
18277         mdp_limm): Updated and fix some bug and typo.
18278         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
18279         (movsf, movdf, doloop_end): Added.
18280
18281 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
18282
18283         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
18284         config/arm/thumb2.md: Fix comment typos.
18285         * doc/extend.texi: Fix a typo.
18286
18287 2007-01-07  Eric Christopher  <echristo@apple.com>
18288
18289         * configure.ac: Check for __stack_chk_fail for darwin.
18290         * configure: Regenerate.
18291
18292 2007-01-07  Richard Guenther  <rguenther@suse.de>
18293
18294         * tree-vrp.c (extract_range_from_assert): CSE calls to
18295         compare_values where possible.
18296         (extract_range_from_unary_expr): Likewise.
18297
18298 2007-01-07  Anatoly Sokolov <aesok@post.ru>
18299
18300         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
18301         * config/avr/avr.c (call_insn_operand): Delete function.
18302         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
18303         instead of register number. Use predicates.
18304         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
18305         call_insn_operand): Add.
18306
18307 2007-01-06  Jan Hubicka  <jh@suse.cz>
18308
18309         * tree-pass.h (pass_build_cgraph_edges): Declare.
18310         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
18311         (visited_nodes): Remove.
18312         (cgraph_create_edges): Move to cgraphbuild.c; rename to
18313         build_cgrpah_edges; make visited_nodes local.
18314         (cgraph_process_new_functions): DO not call initialize_inline_failed.
18315         (record_references_in_initializer): Move to cgraphbuild.c
18316         (initialize_inline_failed, rebuild_cgraph_edges,
18317         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
18318         (verify_cgraph_node): Make visited_nodes local.
18319         (cgraph_analyze_function): Do not call cgraph_create_edges and
18320         initialize_inline_failed.
18321         (cgraph_expand_function): Do not call cgraph_lower_function;
18322         assert that function is already lowered.
18323         * Makefile.in (cgraphbuild.o): New.
18324         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
18325         at the end of lowering passes.
18326
18327 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
18328
18329         * ifcvt.c (cond_move_convert_if_block): New function, code
18330         factored out from...
18331         (cond_move_process_if_block): ...here.  Call the new function
18332         on the THEN and ELSE blocks.
18333         (merge_if_block): Do not copy global_live_at_end, merge_blocks
18334         already takes care of this.
18335
18336 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18337
18338         PR c/19978
18339         * tree.h (TREE_OVERFLOW_P): New.
18340         * c-typeck.c (parser_build_unary_op): Warn only if result
18341         overflowed and operands did not.
18342         (parser_build_binary_op): Likewise.
18343         (convert_for_assignment): Remove redundant overflow_warning.
18344         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
18345
18346 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18347
18348         * c-typeck.c (store_init_value): Split over two lines to follow
18349         the GNU coding style.
18350
18351 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
18352
18353         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
18354         __GXX_EXPERIMENTAL_CXX0X__.
18355         * doc/cpp.texi: Same.
18356
18357 2007-01-05  Richard Guenther  <rguenther@suse.de>
18358
18359         PR middle-end/27826
18360         * tree.c (get_narrower): Do not construct COMPONENT_REFs
18361         with mismatched types.  Instead explicitly build a
18362         conversion NOP_EXPR.
18363
18364 2007-01-05  Ian Lance Taylor  <iant@google.com>
18365
18366         * c-common.c (decl_with_nonnull_addr_p): New function.
18367         (c_common_truthvalue_conversion): Call it.
18368         * c-typeck.c (build_binary_op): Likewise.
18369         * c-common.h (decl_with_nonnull_addr_p): Declare.
18370
18371 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
18372
18373         PR c/30360
18374         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
18375         denom against 0.0.
18376
18377 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
18378
18379         * doc/install.texi (Final install): Document the fact that
18380         the GNAT runtime should not be stripped.
18381
18382 2007-01-04  Jan Hubicka  <jh@suse.cz>
18383
18384         * tree-inline.c (fold_marked_statements): Update operand caches
18385         and EH after folding
18386
18387 2007-01-04  Ian Lance Taylor  <iant@google.com>
18388
18389         * c-common.c (check_function_nonnull): Whitespace fix.
18390
18391 2007-01-04  Jan Hubicka  <jh@suse.cz>
18392
18393         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
18394         comitted older version of patch.
18395         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
18396         function, celanup cfg and collect garbage.
18397
18398 2007-01-04  Mike Stump  <mrs@apple.com>
18399
18400         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
18401         (clean): Likewise.
18402
18403 2007-01-04  Eric Christopher  <echristo@apple.com>
18404
18405         * libgcc2.c (__bswapsi2): Use SItype.
18406         (__bswapdi2): Use DItype.
18407         * libgcc2.h: Update for above.
18408
18409 2007-01-04  Paul Brook  <paul@codesourcery.com>
18410
18411         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
18412         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
18413         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
18414         umulsidi3, umulsidi3adddi, smulsi3_highpart,
18415         umulsi3_highpart): Make conditional on !arm_arch6.
18416         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
18417         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
18418         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
18419         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
18420         umulsi3_highpart_v6): New insns.
18421
18422 2007-01-04  Roger Sayle  <roger@eyesopen.com>
18423
18424         * fold-const.c (fold_convert): When casting an expression to void,
18425         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
18426         have a type.  Instead of attempting to build a NOP_EXPR, return
18427         these "special" trees directly.
18428
18429 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
18430
18431         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
18432         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
18433         rs6000_cost->fp not 0 as adjustment for outer NEG.
18434
18435 2007-01-04  Jan Hubicka  <jh@suse.cz>
18436
18437         * cgraph.c (cgraph_release_function_body): New function.
18438         (cgraph_remove_node): Use it.
18439         * cgraph.h (cgraph_release_function_body): Declare.
18440         * cgraphunit.c (cgraph_expand_function): Use it.
18441         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
18442         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
18443         is initialized and while compilation of other function is running.
18444         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
18445         statement CFG annotations from here to ...
18446         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
18447
18448 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
18449
18450         * cfgloop.h (enum li_flags): Make the constants powers of two.
18451
18452 2007-01-04  Jan Hubicka  <jh@suse.cz>
18453
18454         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
18455         set.
18456         (fold_marked_statements): New function.
18457         (optimize_inline_calls, tree_function_versioning): Fold new statements.
18458         * tree-inline.h (copy_body_data): Add statements_to_fold.
18459
18460 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
18461
18462         * config.gcc: Mention libgcc/config.host.
18463         * Makefile.in: Update comments mentioning libgcc.
18464         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
18465         (all.cross, start.encap, rest.encap, rest.cross): Update
18466         dependencies for libgcc move.
18467         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
18468         (clean-target, clean-target-libgcc): Delete.
18469         (srcdirify, GCC_EXTRA_PARTS): New macros.
18470         (libgcc-support, libgcc.mvars): New rules.
18471         (distclean): Remove mention of mklibgcc.
18472         (install): Don't reference INSTALL_LIBGCC.
18473         (install-common): Don't reference EXTRA_PARTS.
18474         (install-libgcc, install-multilib): Delete rules.
18475         * mklibgcc.in: Delete file.
18476         * doc/configfiles.texi: Don't mention mklibgcc.
18477
18478         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
18479         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
18480         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
18481         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
18482         (mklibgcc, ldblspecs): Likewise.
18483
18484         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
18485         (posixpre.def): Use $(T).
18486         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
18487         (SHLIB_SRC, SHLIB_INSTALL): Delete.
18488         (SHLIB_LINK): Make dummy.
18489         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
18490
18491         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
18492
18493         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
18494         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
18495         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
18496         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
18497
18498         * configure.ac (all_outputs): Remove mklibgcc.
18499         * configure: Regenerated.
18500
18501 2007-01-03  Josh Conner  <jconner@apple.com>
18502
18503         PR middle-end/29683
18504         * calls.c (compute_argument_addresses): Set stack and stack_slot
18505         for partial args, too.
18506         (store_one_arg): Use locate.size.constant for the size when
18507         generating a save_area.
18508
18509 2007-01-03  Robert Kennedy <jimbob@google.com>
18510
18511         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
18512         whose definitions are deleted due to basic block merging.
18513
18514 2007-01-03  Paul Brook  <paul@codesourcery.com>
18515
18516         PR target/16634
18517         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
18518         functions.
18519         (use_return_insn): Return 0 for Thumb interrupt functions.
18520         (print_multi_reg): Add rfe argument for IRQ returns.
18521         (arm_output_epilogue): Pop interrupt return address directly into PC.
18522         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
18523
18524 2007-01-03  Paul Brook  <paul@codesourcery.com>
18525
18526         Merge from sourcerygxx-4_1.
18527         * config/arm/thumb2.md: New file.
18528         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
18529         Thumb-2.
18530         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
18531         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
18532         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
18533         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
18534         tables.
18535         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
18536         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
18537         comptibility.
18538         * config/arm/ieee754-sf.S: Ditto.
18539         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
18540         (thumb1_base_register_rtx_p): ... to this.
18541         (thumb_index_register_rtx_p): Rename...
18542         (thumb1_index_register_rtx_p): ... to this.
18543         (thumb_output_function_prologue): Rename...
18544         (thumb1_output_function_prologue): ... to this.
18545         (thumb_legitimate_address_p): Rename...
18546         (thumb1_legitimate_address_p): ... to this.
18547         (thumb_rtx_costs): Rename...
18548         (thumb1_rtx_costs): ... to this.
18549         (thumb_compute_save_reg_mask): Rename...
18550         (thumb1_compute_save_reg_mask): ... to this.
18551         (thumb_final_prescan_insn): Rename...
18552         (thumb1_final_prescan_insn): ... to this.
18553         (thumb_expand_epilogue): Rename...
18554         (thumb1_expand_epilogue): ... to this.
18555         (arm_unwind_emit_stm): Rename...
18556         (arm_unwind_emit_sequence): ... to this.
18557         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
18558         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
18559         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
18560         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
18561         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
18562         thumb2_output_casesi): New functions.
18563         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
18564         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
18565         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
18566         THUMB2_WORK_REGS): Define.
18567         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
18568         arm_condexec_mask, arm_condexec_masklen)): New variables.
18569         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
18570         (arm_override_options): Check new CPU capabilities.
18571         Set new architecture flag variables.
18572         (arm_isr_value): Handle v7m interrupt functions.
18573         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
18574         Thumb-2.
18575         (const_ok_for_arm): Handle Thumb-2 constants.
18576         (arm_gen_constant): Ditto.  Use movw when available.
18577         (arm_function_ok_for_sibcall): Return false for v7m interrupt
18578         functions.
18579         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
18580         (thumb_find_work_register, arm_load_pic_register,
18581         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
18582         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
18583         print_multi_reg, output_mov_long_double_fpa_from_arm,
18584         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
18585         output_mov_double_fpa_from_arm, output_move_double,
18586         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
18587         output_return_instruction, arm_output_function_prologue,
18588         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
18589         arm_output_mi_thunk, thumb_set_return_address): Ditto.
18590         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
18591         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
18592         (arithmetic_instr, shift_op): Use arm_shift_nmem.
18593         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
18594         '!' and 'L'.
18595         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
18596         (thumb_expand_prologue): Use thumb_set_frame_pointer.
18597         (arm_file_start): Output directive for unified syntax.
18598         (arm_unwind_emit_set): Handle stack alignment instruction.
18599         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
18600         Add v6t2, v7, v7a, v7r and v7m.
18601         (RETLDM): Add Thumb-2 code.
18602         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
18603         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
18604         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
18605         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
18606         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
18607         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
18608         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
18609         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
18610         ADJUST_INSN_LENGTH): Define.
18611         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
18612         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
18613         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
18614         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
18615         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
18616         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
18617         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
18618         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
18619         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
18620         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
18621         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
18622         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
18623         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
18624         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
18625         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
18626         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
18627         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
18628         cortex-m3.
18629         * config/arm/arm-tune.md: Regenerate.
18630         * config/arm/arm-protos.h: Update prototypes.
18631         * config/arm/vfp.md: Enable patterns for Thumb-2.
18632         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
18633         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
18634         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
18635         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
18636         * config/arm/libunwind.S: Add Thumb-2 code.
18637         * config/arm/constraints.md: Update include Thumb-2.
18638         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
18639         * config/arm/ieee754-df.S: Ditto.
18640         * config/arm/bpabi.S: Ditto.
18641         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
18642         * config/arm/predicates.md (low_register_operand,
18643         low_reg_or_int_operand, thumb_16bit_operator): New.
18644         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
18645         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
18646         * config/arm/t-arm-elf: Add armv7 multilib.
18647         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
18648         Include thumb2.md.
18649         (UNSPEC_STACK_ALIGN, ce_count): New.
18650         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
18651         arm_zero_extendsidi2, arm_zero_extendqidi2): New
18652         insns/expanders.
18653         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
18654         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
18655         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
18656         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
18657         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
18658         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
18659         insns.
18660         * doc/extend.texi: Document ARMv7-M interrupt functions.
18661         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
18662
18663 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
18664
18665         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
18666         (struct _Unwind_Context): Rename args_size to flags, remove
18667         signal_frame field, add a new args_size field and version field.
18668         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
18669         _Unwind_IsExtendedContext): New inline functions.
18670         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
18671         Assume by_value array is only present if _Unwind_IsExtendedContext.
18672         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
18673         _Unwind_IsSignalFrame.
18674         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
18675         (uw_update_context_1): Use _Unwind_SetSignalFrame.
18676         (uw_init_context_1): Initialize context->flags to
18677         EXTENDED_CONTEXT_BIT.
18678         * config/rs6000/linux-unwind.h (frob_update_context): Use
18679         _Unwind_SetSignalFrame.
18680
18681 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18682
18683         PR middle-end/30353
18684         * gimplify.c (gimplify_modify_expr_complex_part): Move below
18685         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
18686         the value.
18687
18688 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
18689
18690         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
18691         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
18692         RET, AT_SP): Remove.
18693         * config/i386/i386.md (*sse_prologue_save_insn): Use return
18694         instead of RET.
18695
18696         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18697         * cfgbuild.c (find_basic_blocks): Likewise.
18698         * cfgrtl.c (rtl_create_basic_block): Likewise.
18699         * function.c (temp_slots_at_level): Likewise.
18700         * reg-stack.c (stack_regs_mentioned): Likewise.
18701         * regclass.c (allocate_reg_info): Likewise.
18702         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18703         set_bb_for_stmt, move_block_to_fn): Likewise.
18704         * tree-complex.c (tree_lower_complex): Likewise.
18705         * vec.h (VEC_safe_grow_cleared): New.
18706
18707         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
18708
18709 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
18710
18711         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
18712         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
18713         to loop_version.
18714         * cfgloopmanip.c (scale_loop_frequencies): Export.
18715         (loopify): Scale the frequencies by prescribed coefficients.
18716         (set_zero_probability): New function.
18717         (duplicate_loop_to_header_edge): Improve updating of frequencies.
18718         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
18719         and frequencies according to arguments.
18720         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
18721         correctly.
18722         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
18723         * modulo-sched.c (sms_schedule): Set probabilities for entering
18724         versioned loop correctly.
18725         * tree-vect-transform.c (vect_transform_loop): Ditto.
18726         * cfgloop.h (loopify, loop_version): Declaration changed.
18727         (scale_loop_frequencies): Declared.
18728
18729 2007-01-02  Jan Hubicka  <jh@suse.cz>
18730
18731         * cgraph.c: Include tree-flow.h
18732         (cgraph_add_new-function): Handle IPA_SSA mode; execute
18733         early_local_passes.
18734         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
18735         * tree-pass.h (pass_all_early_optimizations): Declare.
18736         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
18737         early_local_passes.
18738         (cgraph_analyze_function): Do early_local_passes.
18739         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
18740         Do not add referenced vars.
18741         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
18742         SSA form.
18743         (gate_all_early_local_passes): New gate.
18744         (pass_early_local_passes): Use new gate.
18745         (execute_early_local_optimizations): New functions.
18746         (gate_all_early_optimizations): New gate.
18747         (pass_all_early_optimizations): New pass.
18748         (execute_free_datastructures): Free SSA only when initialized.
18749         (gate_init_datastructures): Init only when optimizing.
18750         (tree_lowering_passes): Do early local passes when called late.
18751         * tree-profile.c (do_tree_profiling): Don't profile functions added
18752         late.
18753         (do_early_tree_profiling, pass_early_tree_profile): Kill.
18754         * tree-cfg.c (update_modified_stmts): Do not update when operands are
18755         not active.
18756         * passes.c (init_optimizations_passes): Reorder so we go into SSA
18757         during early_local_passes.
18758         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
18759
18760
18761 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
18762
18763         * Makefile.in: Update copyright year.
18764
18765 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
18766
18767         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
18768         in $(lang_checks) and check-consistency targets.
18769
18770 2007-01-02  Jan Hubicka  <jh@suse.cz>
18771
18772         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
18773         Do not add referenced vars.
18774         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
18775         are not active.
18776         * passes.c (init_optimization_passes): Put mudflap_2 after
18777         free_datastructures.
18778
18779 2007-01-02  Jan Hubicka  <jh@suse.cz>
18780
18781         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
18782         Set NOTHROW flag on call statements proved to be nothrow.
18783         Update statement of local calls so new pure/const functions are
18784         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
18785         goto receivers.
18786         (tree_rest_of_compilation): Register hooks and initialize bitmap
18787         early. Do not set after_inlining flag.
18788
18789 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
18790
18791         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
18792         HOST_BITS_PER_LONGLONG
18793
18794 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18795
18796         PR c/19977
18797         * c-typeck.c (store_init_value): Don't emit pedantic overflow
18798         warning for non-static initializers.
18799
18800 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
18801
18802         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
18803         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
18804         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
18805         Always use set_unique_reg_note to add REG_EQUAL notes.
18806
18807 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
18808
18809         Revert:
18810         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
18811
18812         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18813         * cfgbuild.c (find_basic_blocks): Likewise.
18814         * cfgrtl.c (rtl_create_basic_block): Likewise.
18815         * function.c (temp_slots_at_level): Likewise.
18816         * reg-stack.c (stack_regs_mentioned): Likewise.
18817         * regclass.c (allocate_reg_info): Likewise.
18818         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18819         set_bb_for_stmt, move_block_to_fn): Likewise.
18820         * tree-complex.c (tree_lower_complex): Likewise.
18821         * vec.h (VEC_safe_grow_cleared): New.
18822
18823 2007-01-02  Ian Lance Taylor  <iant@google.com>
18824
18825         * c-common.c (c_common_truthvalue_conversion): When warning about
18826         using an assignment as a truth value, set TREE_NO_WARNING.
18827
18828 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18829
18830         PR middle-end/7651
18831         * c.opt (Wold-style-declaration): New.
18832         * doc/invoke.texi (C-only Warning Options): New.
18833         (Wold-style-declaration): Document it.
18834         (Wextra): Enabled by -Wextra.
18835         * c-opts.c (c_common_post_options): Enabled by -Wextra.
18836         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
18837         -Wold-style-declaration.
18838
18839 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
18840
18841         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
18842         * cfgbuild.c (find_basic_blocks): Likewise.
18843         * cfgrtl.c (rtl_create_basic_block): Likewise.
18844         * function.c (temp_slots_at_level): Likewise.
18845         * reg-stack.c (stack_regs_mentioned): Likewise.
18846         * regclass.c (allocate_reg_info): Likewise.
18847         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
18848         set_bb_for_stmt, move_block_to_fn): Likewise.
18849         * tree-complex.c (tree_lower_complex): Likewise.
18850         * vec.h (VEC_safe_grow_cleared): New.
18851
18852 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
18853
18854         * c-common.c (c_common_nodes_and_builtins): Since variants of
18855         void_type_node get built before it is given a name, we need to
18856         give those variants the name, too.
18857         (complete_array_type): We need to work with the canonical main
18858         type of the array, from which we will build the qualified version.
18859         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
18860         * print-tree.c (print_node): Display canonical type information
18861         for each type.
18862         * stor-layout.c (layout_type): When we don't know the
18863         alignment of a type for which we're building an array, we end up
18864         guessing wrong, so make the type require structural equality.
18865         * tree.c (make_node_stat): When we build a new type, it is its
18866         own canonical type.
18867         (build_type_attribute_qual_variant): When building an attribute
18868         variant, its canonical type is the non-attribute variant. However,
18869         if the attributes are target-dependent and they differ, we need to
18870         use structural equality checks for this type.
18871         (build_qualified_type): A qualified type is not equivalent to its
18872         unqualified variant; set the canonical type appropriately.
18873         (build_distinct_type_copy): When building a distinct type from
18874         another type, the new type is its own canonical type.
18875         (build_variant_type_copy): When building a new type variant, we
18876         assume that it is equivalent to the original type.
18877         (build_pointer_type_for_mode): When building a pointer type, also
18878         build a canonical type pointer.
18879         (build_reference_type_for_mode): When building a reference type,
18880         also build a canonical type reference.
18881         (build_index_type): When we can't hash an index type (e.g.,
18882         because its maximum value is negative), the index type requires
18883         structural equality tests.
18884         (build_array_type): Build the canonical form of an array type.
18885         (build_function_type): Function types require structural equality,
18886         because they contain default arguments, attributes, etc.
18887         (build_method_type_directly): Ditto for method types.
18888         (build_offset_type): Build the canonical offset type.
18889         (build_complex_type): Build the canonical vector type.
18890         (make_vector_type): Build the canonical vector type.
18891         * tree.h (TYPE_CANONICAL): New.
18892         (TYPE_STRUCTURAL_EQUALITY_P): New.
18893         (SET_TYPE_STRUCTURAL_EQUALITY): New.
18894         (struct tree_type): Added "canonical" field.
18895         * params.h (VERIFY_CANONICAL_TYPES): New.
18896         * doc/c-tree.texi (TYPE_CANONICAL): Document.
18897         (TYPE_STRUCTURAL_EQUALITY_P): Document.
18898         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
18899         * doc/invoke.texi (verify-canonical-types): Document --param
18900         parameter for verifying canonical types.
18901
18902 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
18903
18904         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
18905         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
18906         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
18907         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
18908         tm_file.
18909         * config/rs6000/e500.h: New.
18910         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
18911         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
18912         Remove.
18913         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
18914         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
18915         TARGET_E500_DOUBLE): Remove.
18916         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
18917         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
18918         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
18919         * config/rs6000/rs6000.c (rs6000_override_options): Use
18920         CHECK_E500_OPTIONS.
18921
18922 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
18923
18924         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
18925         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
18926         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
18927         rs6000_emit_cmove): Don't check TARGET_E500.
18928         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
18929         sordered): Don't check TARGET_E500.
18930
18931 2007-01-01  Eric Christopher  <echristo@apple.com>
18932
18933         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
18934         HARD_REGISTER_NUM_P.
18935
18936 2007-01-01  Roger Sayle  <roger@eyesopen.com>
18937
18938         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
18939         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
18940         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
18941         eq/ne Y".
18942
18943 2007-01-01  Mike Stump  <mrs@apple.com>
18944
18945         * configure.ac: Remove support for building with Apple's gcc-3.1.
18946
18947 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
18948
18949         PR middle-end/30311
18950         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
18951         REG is a hard register.  Do not modify REG before calling
18952         subreg_nregs.
18953         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
18954         multiple of the size of YMODE for certain lowpart cases.
18955
18956 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
18957
18958         PR middle-end/30253
18959         * gimplify (voidify_wrapper_expr): Update for
18960         GIMPLE_MODIFY_STMT.
18961
18962 2007-01-01  Andreas Schwab  <schwab@suse.de>
18963
18964         PR target/29166
18965         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
18966         save of BR0 in extra_spill_size instead of spill_size.
18967         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
18968         area.
18969         (ia64_expand_epilogue): Restore BR0 from its new location.
18970
18971 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
18972
18973         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
18974         Use a temporary variable if the left hand side is not a gimple
18975         register.
18976
18977 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
18978
18979         * gimplify.c (gimplify_return_expr): Make the temporary variable
18980         for the return expression, a gimple register variable.
18981
18982 2007-01-01  Jan Hubicka  <jh@suse.cz>
18983
18984         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
18985         INSN_LIST.
18986
18987 2007-01-01  Mike Stump  <mrs@apple.com>
18988
18989         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
18990         .literal16.
18991         * config/darwin.c (machopic_select_rtx_section): Use
18992         HAVE_GAS_LITERAL16.
18993         (darwin_mergeable_constant_section): Likewise.
18994         * configure: Regenerate.
18995         * config.in: Regenerate.
18996
18997 2007-01-01  Jan Hubicka  <jh@suse.cz>
18998             Andrew Pinski  <pinskia@gmail.com>
18999
19000         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
19001         before starting IPA passes.