OSDN Git Service

687c8b63dec27eabc3e44e76c3ad380ef226738e
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-11-23  Richard Guenther  <rguenther@suse.de>
2         Michael Matz  <matz@suse.de>
3
4         PR tree-optimization/34176
5         * alloc-pool.h (empty_alloc_pool): Declare.
6         * alloc-pool.c (empty_alloc_pool): New function.
7         * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
8         valid table if a lookup from the optimistic table failed.
9         (vn_unary_op_lookup): Likewise.
10         (vn_binary_op_lookup): Likewise.
11         (vn_phi_lookup): Likewise.
12         (process_scc): Clear optimistic tables before every iteration.
13
14 2007-11-23  Richard Guenther  <rguenther@suse.de>
15
16         * tree-ssa-copy.c (may_propagate_copy): Remove redundant
17         checks.
18         (merge_alias_info): Do verification only if checking is
19         enabled.  Merge flow-sensitive alias information in simple
20         cases.
21         * tree-ssa-operands.c (get_addr_dereference_operands): Also
22         complain about missing NMTs.
23
24 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
25
26         PR c++/34198
27         * c-common.c (conversion_warning): For INTEGER_TYPE to
28         INTEGER_TYPE conversions call get_narrower on expr to avoid
29         spurious warnings from binop shortening or when the implicit
30         conversion can't change the value.
31
32 2007-11-22  Joseph Myers  <joseph@codesourcery.com>
33
34         PR c/14050
35         * c-decl.c (set_array_declarator_inner): Don't give error for
36         static or type qualifiers in abstract declarator.  Remove
37         abstract_p parameter.
38         * c-tree.h (set_array_declarator_inner): Update prototype.
39         * c-parser.c (c_parser_direct_declarator_inner): Update call to
40         set_array_declarator_inner.
41         * doc/standards.texi: Update for C99 TC3.
42
43 2007-11-22  Hans-Peter Nilsson  <hp@bitrange.com>
44
45         * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
46         line in my edit of the last change.
47
48 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
49
50         PR target/33947
51         * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
52         and TREE_READONLY on the fn decl rather than passing a chain
53         of attributes.
54
55 2007-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>
56
57         * config/sh/sh.md (divsi_inv_m3): Handle zero dividend
58         specially.
59
60 2007-11-22  Uros Bizjak  <ubizjak@gmail.com>
61
62         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
63         of ix86_arch and ix86_tune into a switch statement.
64         (enum processor_type): Default PROCESSOR_I386 to 0.
65         * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
66         of "ix86_tune == PROCESSOR_K6".
67         (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
68         a switch statement.
69
70 2007-11-22  Tom Tromey  <tromey@redhat.com>
71
72         * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
73         avoid writing into string allocated by ggc_alloc_string.
74
75 2007-11-21  Kaz Kojima  <kkojima@gcc.gnu.org>
76
77         PR target/34155
78         * config/sh/sh.md (binary_sf_op): Remove.
79         (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
80         * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
81         and gen_binary_sf_op1.
82
83 2007-11-21  Hans-Peter Nilsson  <hp@axis.com>
84
85         * regclass.c (init_reg_autoinc): Fix typo preventing test of
86         secondary output reload when setting forbidden_inc_dec_class.
87
88 2007-11-21  Richard Guenther  <rguenther@suse.de>
89
90         PR tree-optimization/34148
91         * tree-ssa-structalias.c (create_variable_info_for): Do not use
92         field-sensitive PTA for single-element structures.
93         * tree-ssa-alias.c (create_overlap_variables_for): Do not create
94         SFTs for single-element structures.
95
96 2007-11-20  Richard Guenther  <rguenther@suse.de>
97
98         PR middle-end/34154
99         * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
100         of the signed INT_CST_LT.
101         * stmt.c (expand_case): Likewise.
102         (estimate_case_costs): Likewise.
103
104 2007-11-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
105
106         * read-rtl.c (fatal_expected_char): Print EOF as text rather that
107         its binary representation.
108
109 2007-11-20  Richard Guenther  <rguenther@suse.de>
110
111         * tree-ssa-operands.c (add_virtual_operand): Consistently prune
112         accesses.
113
114 2007-11-20  Thiemo Seufer  <ths@mips.com>
115
116         * config/mips/mips.c (mips_file_start): Add support for
117         flagging 32-bit code with -mfp64 floating-point.
118
119 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
120
121         PR c/34146
122         * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
123         (c_gimplify_expr): Use it.
124
125 2007-11-20  Ben Elliston  <bje@au.ibm.com>
126
127         * config/spu/spu_mfcio.h: Fix typo.
128
129 2007-11-20  Ben Elliston  <bje@au.ibm.com>
130
131         * unwind.inc: Comment that unwind-sjlj.c includes this file.
132
133 2007-11-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
134             Ben Elliston  <bje@au.ibm.com>
135
136         * config/spu/mfc_tag_release.c: New file.
137         * config/spu/mfc_multi_tag_release.c: Likewise.
138         * config/spu/mfc_multi_tag_reserve.c: Likewise.
139         * config/spu/mfc_tag_release.c: Likewise.
140         * config/spu/mfc_tag_reserve.c: Likewise.
141         * config/spu/mfc_tag_table.c: Likewise.
142         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
143         (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
144         * config/spu/spu_mfcio.h: Avoid <stdint.h>.
145         (uint64_t): Typedef if __IN_LIBGCC2 is defined.
146         (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
147         (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
148         mfc_multi_tag_release): Likewise.
149         (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
150         __mfc_multi_tag_release): Declare.
151
152 2007-11-19  Jason Merrill  <jason@redhat.com>
153
154         PR debug/28834, debug/29436, c/32326
155         * tree.c (build_type_attribute_qual_variant): Refuse to make
156         a distinct copy of a struct/enum type.  Use build_distinct_type_copy.
157         * doc/extend.texi (Type Attributes): Don't encourage people to add
158         attributes to struct/enum types in a typedef.  Fix
159         transparent_union example.
160
161         * tree-inline.c (remap_type_1): Remove code that's redundant with
162         remap_type.
163         (build_duplicate_type): Set id.copy_decl.
164         * c-common.c (handle_transparent_union_attribute): Simplify logic.
165
166 2007-11-19  Peter Bergner  <bergner@vnet.ibm.com>
167
168         * config/rs6000/rs6000.c (invalid_e500_subreg,
169         rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
170         rs6000_legitimize_address, rs6000_legitimize_reload_address,
171         rs6000_legitimate_address, function_arg_advance,
172         spe_build_register_parallel, rs6000_spe_function_arg,
173         rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
174         emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
175         rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
176         TDmode similarly to DFmode and TFmode.
177         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
178         DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
179
180 2007-11-19  Eric Botcazou  <ebotcazou@adacore.com>
181
182         * stor-layout.c (lang_adjust_rli): Delete.
183         (set_lang_adjust_rli): Likewise.
184         (layout_type): Do not call lang_adjust_rli hook.
185         * tree.h (set_lang_adjust_rli): Delete.
186
187 2007-11-19  Bernd Schmidt  <bernd.schmidt@analog.com>
188         
189         * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
190         n_dregs_to_save and n_pregs_to_save.
191         (n_pregs_to_save, n_dregs_to_save): Use it.  New argument CONSECUTIVE;
192         all callers changed.
193         (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
194         able to save single D/P registers that aren't saved by the push/pop
195         multiple insns.
196
197 2007-11-19  Richard Guenther  <rguenther@suse.de>
198
199         PR tree-optimization/34099
200         * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
201         MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
202         if only one operand is undefined.
203
204 2007-11-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
205
206         PR tree-optimization/34036
207         * opts.c (set_fast_math_flags): Do not set flags in common
208         with set_unsafe_math_optimizations_flags, invoke it directly.
209         (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
210         and flag_signed_zeros.
211         * toplev.c (process_options): Force flag_associative_math to 0 and
212         warn, if it is set and either flag_trapping_math or flag_signed_zeros
213         is set too.
214         * doc/invoke.texi (Optimize Options): Document the new behavior
215         of -funsafe-math-optimizations, that -fassociative-math requires
216         both -fno-signed-zeros and -fno-trapping-math and make it clear
217         that -fno-trapping-math requires -fno-signaling-nans.  Refactor
218         documentation of -ffast-math.
219
220 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
221
222         PR rtl-optimization/34132
223         * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
224         and insn.
225
226         PR middle-end/33335
227         * optabs.h (optab_table): Change type to struct optab from optab.
228         (convert_optab_table): Similarly.
229         Adjust all _optab macros to expand to addresses of optab_table
230         resp. convert_optab_table elements rather than the values of the
231         elements.
232         * optabs.c (optab_table): Change typype to struct optab from optab.
233         If compiled by recent GCC, initialize all the insn_code fields in
234         the array using designated range initializers.
235         (convert_optab_table): Similarly.
236         (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
237         set_conv_libfunc): Into libfunc_entry's optab field store index within
238         optab_table resp. convert_optab_table array instead of difference
239         between two separately malloced addresses.
240         (new_optab): Add op argument, don't return anything.  Initialize
241         just the insn_code field in handlers array and only when needed.
242         (init_optab, init_optabv): Add op argument, don't return anything.
243         Adjust new_optab caller.
244         (new_convert_optab): Removed.
245         (init_convert_optab): Add op argument, don't return anything, don't
246         call new_convert_optab.  If needed, initialize insn_code field in
247         handlers array.
248         (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
249         callers.
250         (debug_optab_libfuncs): Adjust uses of optab_table and
251         convert_optab_table arrays.
252
253 2007-11-18  Richard Guenther  <rguenther@suse.de>
254
255         PR tree-optimization/34127
256         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
257         Make code match up the comments, require compatibility of the
258         pointed-to types.
259
260 2007-11-17  Richard Guenther  <rguenther@suse.de>
261
262         PR middle-end/34130
263         * fold-const.c (extract_muldiv_1): Do not move negative
264         constants inside ABS_EXPR.
265
266 2007-11-16  Ian Lance Taylor  <iant@google.com>
267
268         * collect2.c (dump_file): If a demangled symbol is followed by a
269         space, make sure we output at least one space.
270
271 2007-11-16  Richard Guenther  <rguenther@suse.de>
272
273         PR middle-end/34030
274         * fold-const.c (fold_binary): Use correct types for folding
275         1 << X & Y to Y >> X & 1.
276
277 2007-11-16  Richard Guenther  <rguenther@suse.de>
278
279         PR tree-optimization/33870
280         * tree.h (struct tree_memory_tag): Add base_for_components flag.
281         (struct tree_struct_field_tag): Remove nesting_level field.
282         (SFT_NESTING_LEVEL): Remove.
283         (SFT_BASE_FOR_COMPONENTS_P): Add.
284         * tree-flow.h (struct fieldoff): Remove nesting_level field.  Add
285         base_for_components flag.
286         (push_fields_onto_fieldstack): Remove nesting_level parameter.
287         * tree-ssa-alias.c (create_sft): Likewise.  Add base_for_components
288         parameter.
289         (create_overlap_variables_for): Deal with it.
290         * tree-dfa.c (dump_subvars_for): Likewise.
291         (dump_variable): Likewise.
292         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
293         Set base_for_components for first elements of sub-structures.
294         (create_variable_info_for): Handle base_for_components.
295         (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
296         pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
297         * tree-ssa-operands.c (ref_nesting_level): Remove.
298         (add_vars_for_offset): Remove full_ref parameter, always add
299         the offset of the pointed-to SFT.
300         (add_virtual_operand): Adjust for changed signature of
301         add_vars_for_offset.
302
303 2007-11-16  Sa Liu  <saliu@de.ibm.com>
304
305         * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined 
306         floatunssidf2 and floatunsdidf2.
307
308 2007-11-16  Richard Guenther  <rguenther@suse.de>
309
310         PR tree-optimization/34113
311         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
312         Use correct conversion direction for checking type compatibility.
313
314 2007-11-16  Richard Guenther  <rguenther@suse.de>
315
316         PR tree-optimization/34099
317         * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
318         that produce UNDEFINED result if at least one of its operands
319         is UNDEFINED.  By default the result is only UNDEFINED if all
320         operands are UNDEFINED.
321
322 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
323
324         PR driver/30460
325         * gcc.c (init_spec): Don't initialize asm_debug here...
326         (main): ... but here.
327
328 2007-11-07  Tom Tromey  <tromey@redhat.com>
329
330         * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to
331         'func'. 
332         * tree-parloops.c (create_loop_fn): Use set_cfun.
333         * gengtype.c (open_base_files): Emit #undef cfun.
334         * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
335         * function.h (cfun): New define.
336         * function.c: Undefine cfun.
337
338 2007-11-07  Eric B. Weddington  <eweddington@cso.atmel.com>
339
340         * config/avr/avr.c (avr_mcu_types): Add attiny88.
341         * config/avr/avr.h (LINK_SPEC): Likewise.
342         (CRT_BINUTILS_SPECS): Likewsie.
343         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
344
345 2007-11-15  Jakub Jelinek  <jakub@redhat.com>
346
347         PR middle-end/23848
348         * tree-ssa-ccp.c (optimize_stack_restore): New function.
349         (execute_fold_all_builtins): Call optimize_stack_restore for
350         BUILT_IN_STACK_RESTORE.
351
352 2007-11-15  Paolo Bonzini  <bonzini@gnu.org>
353
354         * fwprop.c (try_fwprop_subst): Skip profitability check for forward
355         propagation into an address; that's done in should_replace_address.
356                 
357 2007-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
358
359         * config/spu/spu-protos.h (legitimate_const): Remove prototype.
360         * config/spu/spu.c (legitimate_const): Remove.
361         (classify_immediate): Inline call to legitimate_const.
362         (spu_legitimate_address): Likewise.  Allow SYMBOL_REF + CONST_INT
363         for any constant, not just -512 .. 511.
364
365 2007-11-15  Sa Liu  <saliu@de.ibm.com>
366
367         * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
368         condition from HONOR_NANS test.
369         * config/spu/spu.md (ceq_df): Always generate comparison code
370         inline, including checks for NaNs and infinities.
371         (cgt_df): Likewise.
372         (cgt_v2df): Likewise.
373         (cmpdf): Make this expander unconditional.
374
375 2007-11-15  Richard Guenther  <rguenther@suse.de>
376
377         * tree-ssa-alias.c (create_overlap_variables_for): Make sure
378         to only create SFTs if we also create variable infos for PTA.
379         * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping
380         SFTs.
381
382 2007-11-15  Richard Guenther  <rguenther@suse.de>
383
384         * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
385         type for TBAA pruning.
386         (find_what_p_points_to): Call set_uids_in_ptset with the original
387         pointer, not the decl of the solution we collapsed to.
388
389 2007-11-14  David Daney  <ddaney@avtrex.com>
390
391         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
392         to find sigcontext.
393
394 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
395
396         PR target/33923
397         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
398         for registers in BR_REGS class.
399
400 2007-11-14  Jakub Jelinek  <jakub@redhat.com>
401
402         PR middle-end/34088
403         * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
404         init_ssa_operands has not been called for cfun.
405
406 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
407
408         PR tree-optimization/34046
409         * cfg.c (update_bb_profile_for_threading): Avoid the division for the
410         scaling if the old probability is greater than the new base.
411
412 2007-11-14  Sebastian Pop  <sebastian.pop@amd.com>
413
414         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
415         unused edges after loop duplication.
416
417 2007-11-14  Uros Bizjak  <ubizjak@gmail.com>
418
419         * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
420         (enum target_cpu_default): ... this enum.
421         (TARGET_CPU_DEFAULT_NAMES): Remove macro.  Move initializer to ...
422         * config/i386/i386.c (override_options): ... here.
423         * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
424         TARGET_CPU_DEFAULT_i486.
425
426 2007-11-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
427
428         * global.c (rest_of_handle_global_alloc): Fix comment typos.
429         * config/sh/sh.c (sh_rtx_costs): Likewise.
430         * ChangeLog: Likewise.
431
432 2007-11-13  Sebastian Pop  <sebastian.pop@amd.com>
433
434         * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
435         should not be of pointer type.
436
437 2007-11-13  Michael Meissner  <michael.meissner@amd.com>
438
439         * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate
440         line.
441
442 2007-11-13  Sterling Augustine  <sterling@tensilica.com>
443             Bob Wilson  <bob.wilson@acm.org>
444         
445         * config/xtensa/unwind-dw2-xtensa.c: New.
446         * config/xtensa/unwind-dw2-xtensa.h: New.
447         * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
448         (DWARF2_UNWIND_INFO): Remove.
449         (DWARF_FRAME_REGISTERS): Define.
450         (EH_RETURN_DATA_REGNO): Define.
451         * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
452         (eh_return): New.
453         * config/xtensa/t-xtensa (LIB2ADDEH): Define.
454         
455 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
456
457         * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
458         -fsched-stalled-insns.
459
460         PR tree-optimization/34063
461         * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
462         as first chrec_fold_plus operand rather than second.
463
464 2007-11-13  Diego Novillo  <dnovillo@google.com>
465
466         PR tree-optimization/33870
467         * tree.h (strcut tree_memory_tag): add field unpartitionable.
468         remove field in_nested_struct.
469         (struct tree_struct_field_tag): add field nesting_level.
470         (sft_in_nested_struct): remove.
471         (sft_nesting_level): define.
472         (sft_unpartitionable_p): define.
473         * tree-ssa-alias.c (mem_sym_score): if mp->var is not
474         partitionable, return long_max.
475         (compute_memory_partitions): do not partition sfts marked
476         unpartitionable.
477         (create_sft): add argument nesting_level.  set
478         sft_nesting_level with it.  update all users.
479         (create_overlap_variables_for): show nesting level.
480         * tree-dfa.c (dump_subvars_for): likewise.
481         (dump_variable): likewise.
482         show whether the sft is partitionable or not.
483         * tree-flow.h (struct fieldoff): remove field
484         in_nested_struct.
485         add field nesting_level.
486         * tree-ssa-structalias.c (struct variable_info): remove
487         field in_nested_struct.
488         (push_fields_onto_fieldstack): add argument
489         nesting_level.  update all users.
490         update documentation.
491         update pair->nesting_level with nesting_level.
492         make recursive calls with nesting_level + 1.
493         (set_uids_in_ptset): if an sft is added to the points-to
494         set, mark it as unpartitionable.
495         * tree-ssa-operands.c (ref_nesting_level): new.
496         (add_vars_for_offset): call it.
497         add argument full_ref.  update
498         callers.
499         if var is inside a nested structure and the nesting level
500         of full_ref is lower than the nesting level of var,
501         adjust offset by the offset of var.
502
503 2007-11-13  Victor Kaplansky  <victork@il.ibm.com>
504
505         PR tree-optimization/32582
506         * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
507
508 2007-11-12  Danny Smith  <dannysmith@users.sourceforge.net>
509
510         * doc/extend.texi (dllimport): Document that pointers to dllimport'd
511         functions can be used as constant.
512
513 2007-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
514
515         PR rtl-optimization/34035
516         * cse.c (cse_cfg_altered): New global variable.
517         (cse_jumps_altered): Make boolean.
518         (recorded_label_ref): Likewise.
519         (cse_insn): Adjust for above changes.
520         (cse_extended_basic_block): Likewise.  Set cse_cfg_altered
521         if dead edges have been purged.
522         (cse_main): Change return value specification and adjust code.
523         (rest_of_handle_cse): Adjust for above change.
524         (rest_of_handle_cse2): Likewise.
525         * gcse.c (rest_of_handle_gcse): Likewise.
526
527 2007-11-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
528             Michael Meissner  <michael.meissner@amd.com>
529
530         * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
531         get the appropriate suffix for the coms* instruction.
532         (sse5_pcmov_<mode>): Restrict operands of pcmov
533         for scalar case to be only xmm registers and not memory.
534
535         * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
536         constraints to follow the mnemonics for the pcmov instruction   
537
538 2007-11-12  Richard Sandiford  <rsandifo@nildram.co.uk>
539
540         PR target/34042
541         * config/mips/mips.c (mips_return_fpr_single): New function.
542         (mips_function_value): Use it when returning single-field
543         aggregates in FPRs.
544         (mips_expand_call): Handle the PARALLELs created by
545         mips_return_fpr_single.
546
547 2007-11-12  Richard Guenther  <rguenther@suse.de>
548
549         PR middle-end/34070
550         * fold-const.c (fold_binary): If testing for non-negative
551         operands with tree_expr_nonnegative_warnv_p make sure to
552         use op0 which has all (sign) conversions retained.
553
554 2007-11-12  Richard Guenther  <rguenther@suse.de>
555
556         PR middle-end/34027
557         * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
558         (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
559
560 2007-11-12  Ira Rosen  <irar@il.ibm.com>
561
562         PR tree-optimization/33953
563         * tree-vect-transform.c (vectorizable_operation): In case of SLP,
564         allocate vec_oprnds1 according to the number of created vector
565         statements. In case of shift with scalar argument, store scalar operand
566         for every vector statement to be created for the SLP node. Fix a
567         comment.
568
569 2007-11-10  Steven Bosscher  <stevenb.gcc@gmail.com>
570
571         * gcse.c (CUID_INSN): Remove.
572         (cuid_insn): Ditto.
573         (alloc_gcse_mem): Don't allocate cuid_insn.
574         (free_gcse_mem): Don't free cuid_insn.
575
576 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
577
578         PR fortran/34020
579         * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
580         nops.
581
582         PR middle-end/34018
583         * tree-inline.h (copy_body_data): Add regimplify field.
584         * tree-inline.c (copy_body_r): Set id->regimplify to true
585         if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
586         substitutions.
587         (copy_bb): Clear id->regimplify before walk_tree, if it is
588         set afterwards, regimplify the whole statement.
589
590         PR tree-optimization/33680
591         * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
592         if the added cast involves variable length types.
593
594 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
595             Maxim Kuvyrkov  <maxim@codesourcery.com>
596
597         * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
598         instead of TRUE_BARRIER for jumps.  Add register dependencies
599         even when reg_pending_barrier is set.
600
601 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
602
603         * haifa-sched.c (haifa_classify_insn): Rename to ...
604         (haifa_classify_rtx): ...  this.  Improve handling of COND_EXECs,
605         handle PARALLELs by recursing.  Use it ...  
606         (haifa_classify_insn): ...  here.  Reimplement.
607
608 2007-11-09  Richard Guenther  <rguenther@suse.de>
609
610         * bitmap.h (bitmap_single_bit_set_p): Declare.
611         * bitmap.c (bitmap_single_bit_set_p): New function.
612         * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
613         (maybe_create_global_var): Use bitmap_empty_p.
614
615 2007-11-09  Paolo Bonzini  <bonzini@gnu.org>
616             Jakub Jelinek  <jakub@redhat.com>
617
618         PR rtl-optimization/34012
619         * fwprop.c (try_fwprop_subst): Do not replace if the new
620         SET_SRC has a higher cost than the old one.
621
622 2007-11-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
623
624         PR rtl-optimization/33732
625         * reload.c (push_reload): Check that the REG_DEAD note was referring
626         to a hardreg or to a pseudo that has been assigned exactly one hardreg
627         before considering it in order to select the reload register.
628         (combine_reloads): Likewise.
629         (find_dummy_reload): Likewise.
630
631 2007-11-09  Richard Guenther  <rguenther@suse.de>
632
633         * tree-flow.h (struct ptr_info_def): Make escape_mask a
634         ENUM_BITFIELD.
635         (struct ptr_info_def): Likewise.
636         (enum escape_type): Also use bit zero.
637
638 2007-11-09  Richard Guenther  <rguenther@suse.de>
639
640         PR tree-optimization/33604
641         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
642         Disregard changes in CV qualifiers of pointed to types for
643         forward propagating ADDR_EXPRs.
644         * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
645         expression.
646
647 2007-11-09  Richard Sandiford  <rsandifo@nildram.co.uk>
648
649         * dse.c (find_shift_sequence): Always choose an integer mode for
650         new_mode.
651         (replace_read): Require both the read and store mode to be
652         integer ones.  Remove a then-redundant FLOAT_P check.
653
654 2007-11-08  Richard Guenther  <rguenther@suse.de>
655
656         * tree-dfa.c (remove_referenced_var): If removing a
657         variable which has subvars, also remove those from
658         the referenced vars.  Do not create a variable annotation.
659
660 2007-11-08  Bob Wilson  <bob.wilson@acm.org>
661
662         * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
663         argument for gen_entry calls.
664         * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
665         (entry): Use the new attribute value.  Remove unused first operand.
666
667 2007-11-08  Tom Tromey  <tromey@redhat.com>
668
669         * c-parser.c (c_parser_translation_unit): Use location in error.
670         (c_parser_external_declaration): Likewise.
671         (c_parser_declaration_or_fndef): Likewise.
672         (c_parser_enum_specifier): Likewise.
673         (c_parser_struct_or_union_specifier): Likewise.
674         (c_parser_struct_declaration): Likewise.
675         (c_parser_typeof_specifier): Likewise.
676         (c_parser_parms_list_declarator): Likewise.
677         (c_parser_asm_string_literal): Likewise.
678         (c_parser_braced_init): Likewise.
679         (c_parser_initelt): Likewise.
680         (c_parser_compound_statement_nostart): Likewise.
681         (c_parser_statement_after_labels): Likewise.
682         (c_parser_do_statement): Likewise.
683         (c_parser_asm_statement): Likewise.
684         (c_parser_conditional_expression): Likewise.
685         (c_parser_unary_expression): Likewise.
686         (c_parser_sizeof_expression): Likewise.
687         (c_parser_postfix_expression): Likewise.
688         (c_parser_postfix_expression_after_paren_type): Likewise.
689         (c_parser_objc_class_instance_variables): Likewise.
690         (c_parser_objc_method_definition): Likewise.
691         (c_parser_objc_methodprotolist): Likewise.
692         (c_parser_pragma): Likewise.
693         (c_parser_omp_clause_num_threads): Likewise.
694         (c_parser_omp_clause_schedule): Likewise.
695         (c_parser_omp_all_clauses): Likewise.
696         (c_parser_omp_sections_scope): Likewise.
697         (c_parser_label): Use location of label, not colon.
698
699 2007-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
700
701         PR target/33774
702         * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
703         IN_TARGET_LIBS.
704
705 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
706
707         PR middle-end/33826
708         * ipa-pure-const.c (static_execute): Added code to keep recursive
709         functions from being marked as pure or const.
710         * ipa-utils.c (searchc): Fixed comment.
711                 
712 2007-11-08  Tom Tromey  <tromey@redhat.com>
713
714         * common.opt (fshow-column): Default to 0.
715         * configure: Rebuilt.
716         * configure.ac (--enable-mapped-location): Default to 'yes'.
717
718 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
719
720         * common.opt: Add pointer to doc/options.texi.
721         * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
722         -fipa-reference): Add or correct doc.  Sorted options list for -Os
723         -O, -O2.
724
725 2007-11-07  Bernhard Fischer  <aldot@gcc.gnu.org>
726
727         PR target/16350
728         * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
729         * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
730         TARGET_BIG_ENDIAN_DEFAULT.  Use for MULTILIB_DEFAULTS.
731         (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
732         (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
733         * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
734         to TARGET_BIG_ENDIAN_DEFAULT.
735         (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
736         * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
737         to TARGET_BIG_ENDIAN_DEFAULT.
738
739 2007-11-07  Diego Novillo  <dnovillo@google.com>
740
741         * tree.h (struct tree_struct_field_tag): Move field
742         in_nested_struct ...
743         (struct tree_memory_tag): ... here.
744
745 2007-11-07  Diego Novillo  <dnovillo@google.com>
746
747         PR 33870
748         * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
749         (SFT_IN_NESTED_STRUCT): Define.
750         * tree-dfa.c (dump_subvars_for): Show offset of each
751         sub-var.
752         * tree-flow.h (struct fieldoff): Add field in_nested_struct.
753         * tree-ssa-structalias.c (struct variable_info): Likewise.
754         (push_fields_onto_fieldstack): If OFFSET is positive,
755         set in_nested_struct.
756         (create_variable_info_for): Copy setting of
757         in_nested_struct from the field offset object.
758         (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
759         variable info object.
760         * tree-ssa-operands.c (add_vars_for_offset): If VAR
761         belongs to a nested structure, adjust OFFSET by
762         SFT_OFFSET(VAR).
763
764 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
765
766         PR rtl-optimization/33737
767         * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
768         target block after computing the probabilities of outgoing edges.
769         Cap the frequency to BB_FREQ_MAX.
770         * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
771         frequency of the basic block if it has been reused.
772
773 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
774
775         PR rtl-optimization/33822
776         * rtl.h (REG_OFFSET): Fix comment.
777         * var-tracking.c (INT_MEM_OFFSET): New macro.
778         (var_mem_set): Use it.
779         (var_mem_delete_and_set): Likewise.
780         (var_mem_delete): Likewise.
781         (same_variable_part_p): Likewise.
782         (vt_get_decl_and_offset): Likewise.
783         (offset_valid_for_tracked_p): New predicate.
784         (count_uses): Do not track locations with invalid offsets.
785         (add_uses): Likewise.
786         (add_stores): Likewise.
787
788 2007-11-07  Tom Tromey  <tromey@redhat.com>
789
790         * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
791         (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
792
793 2007-11-07  Dmitry Zhurikhin  <zhur@ispras.ru>
794             Andrey Belevantsev  <abel@ispras.ru>
795
796         * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
797         generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
798         (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
799         Save calculated max_asap in it.         
800         (sms_schedule): Calculate maxii using max_asap.
801
802 2007-11-07  Andreas Krebbel  <krebbel1@de.ibm.com>
803
804         * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
805         with -mhard-dfp/-mno-hard-dfp.
806
807 2007-11-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
808             Jakub Jelinek  <jakub@redhat.com>
809
810         PR middle-end/33670
811         * haifa-sched.c (check_sched_flags): Remove.
812         (sched_init): Don't call it.
813
814 2007-11-06  Diego Novillo  <dnovillo@google.com>
815
816         * tree-flow.h (struct fieldoff): Reformat comment.
817         Document fields.
818         * tree-ssa-operands.c: Tidy top-level comments.
819         (add_vop): Likewise.
820         (add_vars_for_offset): Tidy parameter formatting..
821         (get_addr_dereference_operands): Likewise.
822         (get_indirect_ref_operands): Likewise.
823         (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
824         <OMP_ATOMIC_STORE>: Likewise.
825
826 2007-11-06  Rask Ingemann Lambertsen  <rask@sygehus.dk>
827
828         PR target/32787
829         * config/i386/driver-i386.c: Test for __GNUC__ instead of
830         GCC_VERSION which is always defined.
831
832 2007-11-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
833
834         PR target/30961
835         * reload1.c (find_reloads): Also check in_reg when handling a
836         simple move with an input reload and a destination of a hard
837         register.
838
839 2007-11-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
840
841         * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
842         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
843         TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
844         TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
845         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
846         (m68k_sched_attr_type2): New function.
847         (sched_adjust_cost_state): New static variable.
848         (m68k_sched_adjust_cost): New static function implementing
849         scheduler hook.
850         (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
851         New static variables.
852         (m68k_sched_variable_issue): New static function implementing
853         scheduler hook.
854         (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
855         (sched_dump_split_class): New static function.
856         (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
857         variables.
858         (sched_dump_dfa_class, m68k_sched_dump): New static function.
859         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
860         m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
861         m68k_sched_dfa_post_advance_cycle): New static functions implementing
862         scheduler hooks.
863
864         * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
865         (CPU_UNITS_QUERY): Define.
866
867         * config/m68k/cf.md: New file.
868         * config/m68k/m68.md (cf.md): New include.
869
870 2007-11-06  Tom Tromey  <tromey@redhat.com>
871
872         PR c++/32256, PR c++/32368:
873         * function.c (saved_in_system_header): New global.
874         (push_cfun): Save in_system_header.
875         (pop_cfun): Restore in_system_header.
876         (push_struct_function): Save in_system_header.
877
878 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
879
880         PR c++/33977
881         PR c++/33886
882         * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
883         (complete_array_type): Set canonical type appropriately.
884         * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
885         C and C++ front ends now have different versions of this function,
886         because the C++ version needs to maintain canonical types here.
887
888 2007-11-04  Razya Ladelsky  <razya@il.ibm.com>
889         
890         * tree-parloops.c (reduction_info): Remove reduction_init field.
891         (initialize_reductions): Remove creation of the reduction_init variable.
892         (struct data_arg): Remove.
893         (add_field_for_reduction, create_stores_for_reduction): New functions.
894         (add_field_for_name): Remove reduction handling.
895         (separate_decls_in_loop): Call add_field_for_reduction,
896         create_stores_for_reduction.
897
898 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
899
900         PR tree-optimization/33458
901         * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
902         !is_gimple_val PHI argument, gimplify it and insert it on edge.
903
904         PR tree-optimization/33993
905         * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
906         rather than build_constructor_from_list if all list values are
907         constants.
908         (get_initial_def_for_induction): Use build_vector instead of
909         build_constructor_from_list.
910
911 2007-11-05  Mark Mitchell  <mark@codesourcery.com>
912
913         PR target/33579
914         * tree.h (DECL_INIT_PRIORITY): Do not require
915         DECL_HAS_INIT_PRIORITY_P.
916         (DECL_FINI_PRIORITY): Likewise.
917         * tree.c (decl_init_priority_lookup): Remove assert.
918         (decl_fini_priority_insert): Likewise.
919         * cgraphunit.c (static_ctors): Make it a VEC.
920         (static_dtors): Likewise.
921         (record_cdtor_fn): Adjust accordingly.
922         (build_cdtor): Generate multiple functions for each initialization
923         priority.
924         (compare_ctor): New function.
925         (compare_dtor): Likewise.
926         (cgraph_build_cdtor_fns): Sort the functions by priority before
927         calling build_cdtor.
928         (cgraph_build_static_cdtor): Put the priority in the function's
929         name.
930
931 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
932
933         PR driver/32632
934         * common.opt: Add shared and pie.
935
936 2007-11-05  Bob Wilson  <bob.wilson@acm.org>
937
938         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
939         replace references to virtual_stack_vars_rtx in goto_handler.
940
941 2007-11-05  Paul Brook  <paul@codesourcery.com>
942
943         * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
944         * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
945         (arm_file_start): Don't set Tag_ABI_PCS_wchar_t.  Call
946         arm_lang_output_object_attributes_hook.
947         * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
948         (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
949         * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
950         prototype.
951         * config/arm/t-arm.c (arm.o): New rule.
952         * config/arm/arm-c.c: New file.
953
954 2007-11-05  Nick Clifton  <nickc@redhat.com>
955             Sebastian Pop  <sebastian.pop@amd.com>
956
957         PR tree-optimization/32540
958         PR tree-optimization/33922
959         * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
960         * tree-ssa-pre.c: Include params.h.
961         (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
962         to limit the maximum length of the PA set for a given block.
963         * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
964         * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
965
966 2007-11-05  Nathan Sidwell  <nathan@codesourcery.com>
967
968         * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
969         __fixunssfDI): Make return type unsigned.
970         * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
971         __fixunssfDI): Make return type unsigned.
972
973 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
974
975         PR tree-optimization/33856
976         * tree-data-ref.c (get_references_in_stmt): Don't add
977         REFERENCE_CLASS_P trees to references vector if get_base_address
978         returns NULL on them.
979
980 2007-11-05  Alexandre Oliva  <aoliva@redhat.com>
981
982         * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
983
984 2007-11-04  Andrew Pinski  <pinskia@gmail.com>
985
986         PR middle-end/32931
987         * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
988         for TRUTH_NOT_EXPR to type.
989
990 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
991
992         * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
993
994 2007-11-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
995
996         PR fortran/10220
997         * dwarf2out.c (add_calling_convention_attribute): Change
998         second argument. Set calling convention to DW_CC_program for
999         Fortran main program.
1000         (gen_subprogram_die): Adjust to new prototype for
1001         add_calling_convention_attribute.
1002
1003 2007-11-03  Dorit Nuzman  <dorit@il.ibm.com>
1004
1005         PR tree-optimization/33987
1006         * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
1007         Fix indentation.
1008         (vectorizable_reduction): Add type check.
1009
1010 2007-11-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1011
1012         PR c/29062
1013         * c-parser.c (c_parser_statement_after_labels): Error if a
1014         declaration is parsed after a label.
1015         
1016 2007-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
1017
1018         PR debug/33921
1019         * reorg.c (emit_delay_sequence): Do not clear the locator on
1020         the jump instruction.
1021
1022 2007-11-03  Jakub Jelinek  <jakub@redhat.com>
1023
1024         PR middle-end/33670
1025         * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
1026         current sched region.
1027
1028 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1029
1030         * config/ia64/ia64.c (struct reg_write_state): Change into
1031         unsigned short bitfields rather than unsigned int, decrease
1032         first_pred to just 10 bits.
1033         (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
1034         into two char array.
1035         (rws_insn_set, rws_insn_test): New functions.
1036         (in_safe_group_barrier): New variable.
1037         (rws_update): Remove first argument, always set rws_sum array.
1038         (rws_access_regno): Use rws_insn_set macro.  Only call rws_update
1039         or update rws_sum if !in_safe_group_barrier, adjust rws_update
1040         args.
1041         (rtx_needs_barrier): Use rws_insn_test macro.
1042         (safe_group_barrier_needed): Don't save/restore rws_sum array,
1043         instead set/clear in_safe_group_barrier flag.
1044
1045 2007-11-02  Bob Wilson  <bob.wilson@acm.org>
1046
1047         * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
1048         REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
1049         pointer or frame pointer.
1050         * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
1051         (MUST_USE_SJLJ_EXCEPTIONS): Define.
1052         (DWARF2_UNWIND_INFO): Define.
1053         (INCOMING_RETURN_ADDR_RTX): Define.
1054         (DWARF_FRAME_RETURN_COLUMN): Define.
1055
1056 2007-11-02  Tom Tromey  <tromey@redhat.com>
1057
1058         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
1059         traversing pool.
1060
1061 2007-11-02  Diego Novillo  <dnovillo@google.com>
1062
1063         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
1064         argument from function pointer ANALYZE_EXPR.  Update all
1065         users.
1066         * cgraph.c (debug_cgraph_node): New.
1067         (debug_cgraph): New.
1068
1069 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1070
1071         PR rtl-optimization/33648
1072         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
1073         the newly created basic block.
1074
1075 2007-11-01  Richard Guenther  <rguenther@suse.de>
1076
1077         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
1078
1079 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
1080
1081         PR rtl-optimization/33828
1082         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
1083         of VBEIN and VBEOUT.
1084
1085 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
1086
1087         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
1088         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
1089         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
1090
1091 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
1092
1093         * gcc.c (getenv_spec_function): Escape the environment variable's
1094         value.
1095
1096 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1097
1098         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
1099         show that CSE means common subexpression elimination.  Change wording
1100         for -fsee and define LCM.  Remove capitalization of optimizations
1101         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
1102
1103 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1104
1105         PR testsuite/25352
1106         * doc/sourcebuild.texi (Test Directives): Document that xfail
1107         has no effect for dg-do except when dg-do-what is "run".
1108
1109 2007-11-01  Tom Tromey  <tromey@redhat.com>
1110
1111         * c-decl.c (grokdeclarator): Set decl source locations.
1112         * c-parser.c (c_parser_enum_specifier): Set location.
1113         (c_parser_struct_or_union_specifier): Likewise.
1114
1115 2007-11-01  Tom Tromey  <tromey@redhat.com>
1116
1117         * print-tree.c (print_node): Print column number.
1118
1119 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
1120
1121         PR debug/33537
1122         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
1123         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
1124         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
1125
1126         PR rtl-optimization/33673
1127         * gcse.c (cprop_jump): If a conditional jump has been optimized
1128         into unconditional jump, make the remaining normal edge fallthru
1129         and delete the jump insn.
1130
1131 2007-11-01  Ben Elliston  <bje@au.ibm.com>
1132
1133         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
1134         (set_mem_attrs_from_reg): Likewise.
1135
1136 2007-11-01  Michael Matz  <matz@suse.de>
1137
1138         PR tree-optimization/33961
1139         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
1140         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
1141         (add_or_mark_expr): New argument 'store', using it to search
1142         the hash table.
1143         (nt_init_block): Adjust calls to add_or_mark_expr.
1144
1145 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
1146
1147         PR target/31507
1148         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
1149         for the first push_operand.
1150
1151 2007-10-31  Revital Eres  <eres@il.ibm.com>
1152
1153         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
1154         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
1155         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
1156         movmisalignv2sf, vcondv2sf): New.
1157         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
1158         UNSPEC_EXTODD_V2SF): Define new constants.
1159         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
1160         paired_emit_vector_cond_expr): New.
1161         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
1162         * config/rs6000/rs6000.c (paired_expand_vector_move,
1163         paired_emit_vector_cond_expr, paired_emit_vector_compare):
1164         New functions.
1165         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
1166
1167 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
1168
1169         PR tree-optimization/32377
1170         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
1171         work also for unknown number of iterations.
1172         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
1173         number of iterations is not known.
1174
1175 2007-10-31  Richard Guenther  <rguenther@suse.de>
1176
1177         PR middle-end/33779
1178         * fold-const.c (extract_muldiv_1): Make sure to not introduce
1179         new undefined integer overflow.
1180         (fold_binary): Avoid useless conversion.
1181
1182 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1183
1184         PR target/33948
1185         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P
1186         check.
1187
1188 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
1189
1190         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
1191
1192         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
1193         with -mhard-dfp/-mno-hard-dfp.
1194         * config/s390/s390.opt: Likewise.
1195         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
1196         definition.
1197
1198 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1199
1200         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
1201
1202 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1203
1204         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
1205         optimization options.
1206         (Optimize Options): Add -fdce and -fdse to the list of optimizations
1207         enabled by -O.  Document -fdce and -fdse.
1208
1209 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
1210
1211         PR c++/33709
1212         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
1213         convert second operand of COMPOUND_EXPR to the original type of
1214         that argument.
1215
1216 2007-10-30  Richard Guenther  <rguenther@suse.de>
1217
1218         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
1219         of loop adding SFTs as virtual operands.
1220
1221 2007-10-30  Richard Guenther  <rguenther@suse.de>
1222
1223         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
1224
1225 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
1226
1227         PR tree-optimization/32893
1228         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
1229         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
1230
1231 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1232
1233         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
1234         x86_64 versions.
1235         (sub_ddmmss): Likewise.
1236         (umul_ppmm): Likewise.
1237         (udiv_qrnnd): Likewise.
1238
1239 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
1240
1241         PR testsuite/24841
1242         * doc/sourcebuild.texi (Test Directives): Document that dg-require
1243         directives must come before dg-additional-sources.
1244
1245 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
1246
1247         PR tree-optimization/33723
1248         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
1249         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
1250
1251 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
1252
1253         PR tree-optimization/33614
1254         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
1255         if they can't be reduced to VECTOR_CSTs and aren't legitimate
1256         initializer constants.
1257
1258 2007-10-29  Richard Guenther  <rguenther@suse.de>
1259
1260         PR tree-optimization/33870
1261         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
1262         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
1263         SFTs.
1264
1265 2007-10-29  Richard Guenther  <rguenther@suse.de>
1266
1267         * passes.c (init_optimization_passes): Exchange store_copy_prop
1268         with copy_prop.
1269         * tree-pass.h (pass_store_copy_prop): Remove.
1270         * tree-ssa-copy.c (do_store_copy_prop): Remove.
1271         (stmt_may_generate-copy): Do not handle store_copy_prop.
1272         (get_copy_of_val): Likewise.
1273         (set_copy_of_val): Likewise.
1274         (copy_prop_visit_assignment): Likewise.
1275         (copy_prop_visit_stmt): Likewise.
1276         (copy_prop_visit_phi_node): Likewise.
1277         (init_copy_prop): Likewise.
1278         (execute_copy_prop): Likewise.
1279         (do_copy_prop): Remove.
1280         (gate_store_copy_prop): Likewise.
1281         (store_copy_prop): Likewise.
1282         (pass_store_copy_prop): Likewise.
1283         (pass_copy_prop): Call execute_copy_prop.
1284         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
1285         * common.opt (ftree-store-copy-prop): Mark obsolete.
1286         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
1287
1288 2007-10-29  Ian Lance Taylor  <iant@google.com>
1289
1290         * ifcvt.c (noce_can_store_speculate_p): New static function.
1291         (noce_process_if_block): Call it.
1292         (if_convert): Remove recompute_dominance parameter.  Change all
1293         callers.
1294
1295 2007-10-29  Richard Guenther  <rguenther@suse.de>
1296
1297         * tree-flow-inline.h (get_subvar_at): Use binary search.
1298         (get_first_overlapping_subvar): New function to binary search
1299         for the first overlapping subvar.
1300         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
1301         just handle adding subvars for a pointed-to subvar.  Optimize
1302         and use get_first_overlapping_subvar.
1303         (add_vars_for_bitmap): Fold into single caller.
1304         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
1305         and non pointed-to bits of add_vars_for_offset.
1306
1307 2007-10-29  Revital Eres  <eres@il.ibm.com> 
1308
1309         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
1310
1311 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
1312             Zdenek Dvorak  <ook@ucw.cz>
1313
1314         OMP_ATOMIC Changes,
1315         reduction support for automatic parallelization.
1316
1317         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
1318         OMP_ATOMIC_STORE.
1319         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
1320         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
1321         and OMP_ATOMIC_STORE.
1322         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1323         * gimple-low.c (lower_stmt): Same.
1324         * gimplify.c (gimplify_expr): Same.
1325         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
1326         gimplify_omp_atomic_mutex): Remove.
1327         (gimplify_omp_atomic): Change it to simply gimplify the
1328         statement instead of expanding it.
1329         * omp-low.c: Add includes to optabs.h, cfgloop.h.
1330         (expand_omp_atomic, expand_omp_atomic_pipeline,
1331         goa_stabilize_expr, expand_omp_atomic_mutex,
1332         expand_omp_atomic_fetch_op): New functions to implement
1333         expansion of OMP_ATOMIC.
1334         (expand_omp, build_omp_regions_1): Add support for
1335         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
1336         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
1337         OMP_ATOMIC_STORE.
1338         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
1339         OMP_ATOMIC_STORE.
1340         * tree-parloops.c: add include to tree-vectorizer.h.
1341         (reduction_info): New structure for reduction.
1342         (reduction_list): New list to represent list of reductions per loop.
1343         (struct data_arg): New helper structure for reduction.
1344         (reduction_info_hash, reduction_info_eq, reduction_phi,
1345         initialize_reductions, create_call_for_reduction,
1346         create_phi_for_local_result, create_call_for_reduction_1,
1347         create_loads_for_reductions, create_final_loads_for_reduction):
1348         New functions.
1349         (loop_parallel_p): Identify reductions, add reduction_list parameter.
1350         (separate_decls_in_loop_name): Support reduction variables.
1351         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
1352         call create_loads_for_reduction for each reduction.
1353         (canonicalize_loop_ivs): Identify reductions, add reduction_list
1354         parameter.
1355         (transform_to_exit_first_loop): Add reduction support, add
1356         reduction_list parameter.
1357         (gen_parallel_loop): Add reduction_list parameter.  Add call
1358         separate_decls_in_loop with
1359         the new argument.  Traverse reductions and call
1360         initialize_reductions, create_call_for_reduction.
1361         (parallelize_loops): Create and delete the reduction list.
1362         (add_field_for_name): Change use of data parameter.  Add fields for
1363         reductions.
1364         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
1365         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
1366         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1367         * tree-inline.c (estimate_num_insns_1): add cases for
1368         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1369         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1370         * tree-ssa-operands.c (get_addr_dereference_operands):
1371         New function.  Subroutine of get_indirect_ref_operands.
1372         (get_indirect_ref_operands): Call get_addr_dereference_operands.
1373         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1374
1375
1376 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
1377
1378         * config/cris/cris.c: Include df.h.
1379         (cris_address_cost): Add gcc_assert for canonicalization
1380         assumptions.  For PLUS with MULT or register, correct
1381         test for register in other arm.  Tweak comments.
1382
1383 2007-10-28  Richard Guenther  <rguenther@suse.de>
1384
1385         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
1386         telling if the var is to be treated as points-to location.
1387         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
1388         (add_virtual_operand): Only recurse into MPTs if aliases
1389         is from a NMT.
1390
1391 2007-10-28  Richard Guenther  <rguenther@suse.de>
1392
1393         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
1394         (add_vars_for_bitmap): Do not recurse further.  Only add vars
1395         for pointed-to SFTs.
1396         (add_virtual_operand): Re-instantiate loop to add operands for
1397         aliases.  Recurse into MPTs.
1398         (get_indirect_ref_operands): If we fall back to use a pointers
1399         SMT, make sure to not prune based on the access offset and size.
1400
1401 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
1402
1403         PR tree-opt/33589
1404         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
1405         the eh information on the statement.
1406
1407 2007-10-28  Richard Guenther  <rguenther@suse.de>
1408
1409         * tree-flow.h (subvar_t): Make it a VEC.
1410         (struct subvar): Remove.
1411         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
1412         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
1413         variable subvars.
1414         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
1415         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
1416         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
1417         (set_initial_properties): Likewise.
1418         (setup_pointers_and_addressables): Likewise.
1419         (new_type_alias): Likewise.
1420         (create_overlap_variables_for): Likewise.
1421         * tree-dfa.c (dump_subvars_for): Likewise.
1422         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
1423         (get_expr_operands): Likewise.
1424         (add_to_addressable_set): Likewise.
1425         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
1426
1427 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
1428
1429         PR tree-optimization/33920
1430         * tree-if-conv.c (tree_if_conversion): Force predicate of single
1431         successor bb to true when predecessor bb has NULL predicate.
1432         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
1433
1434 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1435
1436         * config/mips/mips.md: Add combiner patterns for DImode extensions
1437         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
1438         for consistency.
1439
1440 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1441
1442         PR target/33895
1443         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
1444
1445 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1446
1447         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
1448         LIBCALL notes if they are about to be moved to the same insn.
1449
1450 2007-10-27  Richard Guenther  <rguenther@suse.de>
1451
1452         PR tree-optimization/33870
1453         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
1454         duplication.  Remove redundant call to access_can_touch_variable.
1455         (add_vars_for_bitmap): New helper for recursing over MPT contents.
1456         (add_virtual_operand): Use it.
1457
1458 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1459
1460         PR fortran/31608
1461         * pa.h (ASM_PN_FORMAT): Delete define.
1462
1463 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
1464
1465         * doc/invoke.texi (Option Summary, optimizations): Remove
1466         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
1467         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
1468         -fsplit-wide-types to match later entry.  Break up a long line.
1469         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
1470         missing @gol to the end of a line.
1471         (Optimization Options): Remove -fbounds-check, which is also
1472         documented under Code Generation Options.  Remove =n from
1473         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
1474         to -fcprop-registers to match other options, and say when it is
1475         enabled rather than disabled.  Remove extra index entry for
1476         -fno-cx-limited-range.  Add index entries for -fstack-protector
1477         and -fstack-protector-all.
1478         (Code Gen Options): Add index entry for -ftls-model.
1479
1480 2007-10-26  Anatoly Sokolov <aesok@post.ru>
1481
1482         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
1483         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
1484         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
1485         expand_epilogue, output_movhi): Don't handle 'main' function.
1486         (avr_attribute_table): Add 'OS_task' function attribute.
1487         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
1488         'is_OS_task' field.
1489         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
1490         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
1491         'main' function.
1492         * config/avr/avr.opt (minit-stack): Remove.
1493
1494 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
1495
1496         * tree-nested.c (get_trampoline_type): Fix thinko.
1497
1498 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
1499
1500         PR c++/33601
1501         * tree.c (build_offset_type): Build canonical type based on the
1502         TYPE_MAIN_VARIANT of the base type.
1503
1504 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
1505
1506         * reorg.c (emit_delay_sequence): Move insn locator from the
1507         first insn to the sequence.
1508
1509 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
1510
1511         * ipa-pure-const.c (check_decl): Return immediately when
1512         pure_const_state has been set to IPA_NEITHER.
1513
1514 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1515
1516         PR tree-optimization/33833
1517         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
1518         and convert init to sizetype in inner_base construction.
1519
1520 2007-10-25  Richard Guenther  <rguenther@suse.de>
1521
1522         * tree-flow.h (mem_sym_stats): Remove.
1523         (dump_mem_sym_stats_for_var): Declare.
1524         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
1525         (mem_sym_stats): Move ...
1526         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
1527         (mem_sym_score): Rename from ...
1528         (pscore): ... this.  Remove.
1529         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
1530         not the frequencies.
1531         (compare_mp_info_entries): Make sort stable by disambiguating
1532         on DECL_UID.
1533
1534 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1535
1536         PR tree-optimization/33866
1537         * tree-vect-transform.c (vectorizable_store): Check operands of all
1538         the stmts in the group of strided accesses. Get def stmt type for each
1539         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
1540
1541 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
1542
1543         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
1544         (Yt): Rename register constraint to Y2.
1545         * config/i386/sse.md: Use renamed register constraints.
1546         * config/i386/mmx.md: Ditto.
1547         * config/i386/i386.md: Ditto.
1548
1549 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1550
1551         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
1552
1553 2007-10-24  Chao-ying Fu  <fu@mips.com>
1554
1555         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
1556         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
1557
1558 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1559             Olga Golovanevsky <olga@il.ibm.com>
1560         
1561         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
1562         the compiler that wr.wrap and wr.domain are initialized in
1563         any case.
1564
1565 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1566
1567         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
1568         to print gcov_type values.
1569
1570 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
1571
1572         * config/avr/avr.h: Do not include progmem_section definition when
1573         building with IN_TARGET_LIBS.
1574
1575 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1576
1577         PR target/33755
1578         * config/mips/mips.c (mips_lo_sum_offset): New structure.
1579         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
1580         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
1581         (mips_orphaned_high_part_p: New functions.
1582         (mips_avoid_hazard): Don't check INSN_P here.
1583         (mips_avoid_hazards): Rename to...
1584         (mips_reorg_process_insns): ...this.  Cope with
1585         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
1586         or turn them into nops.
1587         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
1588         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
1589         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
1590         (mips_override_options): Set flag_delayed_branch to 0.
1591
1592 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1593
1594         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
1595         MIPS-specific implementation details.
1596         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
1597         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
1598         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
1599         for targets with movmemsi.
1600         (MOVE_BY_PIECES_P): Define.
1601         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
1602         (mips_block_move_loop): Add a bytes_per_iter argument.
1603         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
1604         Update call to mips_block_move_loop.
1605
1606 2007-10-24  Michael Matz  <matz@suse.de>
1607
1608         PR debug/33868
1609         * var-tracking.c (variable_union): Don't break after one loop
1610         iteration but only when a difference is found.
1611         (dump_variable): Also print DECL_UID.
1612
1613 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1614
1615         * ipa-type-escape.h: Expose function
1616         is_array_access_through_pointer_and_index.
1617         * ipa-type-escape.c
1618         (is_array_access_through_pointer_and_index):
1619         Add three new parameters. Add support of
1620         POINTER_PLUS_EXPR tree code.
1621
1622 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1623
1624         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
1625         * tree-pass.h: Add pass_ipa_struct_reorg.
1626         * common.opt: Add ipa-struct-reorg flag.
1627         * Makefile.in: Add ipa-strcut-reorg.o compilation.
1628         * passes.c: Add pass pass_ipa_struct_reorg.
1629         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
1630         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
1631
1632 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1633
1634         PR tree-optimization/33804
1635         * tree-vect-transform.c (vectorizable_operation): Remove the
1636         checks that the vectorization is worthwhile from the transformation
1637         phase.
1638
1639 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1640
1641         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
1642         vectype cannot be determined for the scalar type.
1643         (vect_analyze_slp_instance): Likewise.
1644         * tree-vect-transform.c (vect_model_reduction_cost): Change the
1645         return type to bool. Return false if vectype cannot be determined 
1646         for the scalar type.
1647         (vect_get_constant_vectors): Return false if vectype cannot be
1648         determined for the scalar type.
1649         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
1650         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
1651         vectorizable_reduction): Likewise.      
1652
1653 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1654
1655         * config.gcc: For a FreeBSD target, parse the value of ${target}
1656         to determine the value of FBSD_MAJOR, instead of adding an
1657         explicit check for every possible FreeBSD major version.
1658
1659 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
1660
1661         PR rtl-optimization/33846
1662         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
1663
1664 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
1665
1666         PR tree-optimization/33860
1667         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
1668         interleaved accesses in case the dr is inside the inner-loop during
1669         outer-loop vectorization.
1670
1671 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
1672
1673         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
1674         Document MEM_POINTER.  Replace mentions of "integrated"
1675         field with "return_val".  Delete outdated stuff.
1676
1677 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
1678
1679         * config/rs6000/rs6000.c (rs6000_override_options): Set
1680         rs6000_altivec_abi on AIX.
1681         (conditional_register_usage): Set VR20:31 fixed on AIX.
1682
1683 2007-10-23  Richard Guenther  <rguenther@suse.de>
1684
1685         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
1686         SSA_NAME pointers.
1687
1688 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
1689         David S. Miller  <davem@davemloft.net>
1690
1691         * df-scan.c (df_get_call_refs): Mark global registers as both a
1692         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
1693
1694 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
1695
1696         PR tree-optimization/33834
1697         PR tree-optimization/33835
1698         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
1699         stmts need to be checked for success seperately.
1700         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
1701         Remove the check that stmt is not LIVE.
1702         (vectorizable_assignment, vectorizable_induction): Likewise.
1703         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1704         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
1705         Likewise.
1706         (vectorizable_live_operation): Check that op is not NULL. 
1707
1708 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
1709
1710         * doc/invoke.texi (Optimization Options): In the summary, show
1711         that the value for options -falign-jumps, -falign-labels,
1712         -falign-loops, -falign-functions, -fsched-stalled-insns, and
1713         -fsched-stalled-insns-dep is optional.  In the summary, show that
1714         -fsched-stalled-insns takes an optional argument and that
1715         -fparallelize-loops takes an argument.  Add opindex for several
1716         optimization options, and fix typos in the opindex commands for
1717         several others.  In the descriptions for -fsched-stalled-insns
1718         and -fsched-stalled-insns-dep, show the options with and without
1719         values.
1720
1721 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
1722
1723         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
1724         produced.
1725         * config/avr/avr.h (LINK_SPEC): Likewise.
1726         (CRT_BINUTILS_SPECS): Likewsie.
1727         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1728
1729 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1730
1731         PR rtl-optimization/33644
1732         * cfgcleanup.c: Do not include dce.h.
1733         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
1734         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
1735         * dce.c (something_changed): Delete.
1736         (libcall_dead_p): New predicate.
1737         (delete_unmarked_insns): Use it to delete dead libcalls.
1738         Deal with REG_LIBCALL and REG_RETVAL notes.
1739         (prescan_libcall_for_dce): New function.
1740         (prescan_insns_for_dce): Use it to deal with libcalls.
1741         (mark_reg_dependencies): Do nothing special for libcalls.
1742         (dce_process_block): Likewise.
1743         (fast_dce): Delete unused local variable.
1744         (run_fast_dce): Do not return a value.
1745         * dce.h (struct df): Delete.
1746         (run_fast_dce): Adjust prototype.
1747         * optabs.c (libcall_id): Delete.
1748         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
1749         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
1750         * reload1.c (reload): Delete REG_LIBCALL_ID case.
1751         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
1752         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
1753         notes instead of REG_LIBCALL_ID notes.
1754         * reg-notes.def (LIBCALL_ID): Delete.
1755         * Makefile.in (see.o): Add dce.h dependency.
1756         (cfgcleanup.o): Remove dce.h dependency.
1757
1758 2007-10-22  Michael Matz  <matz@suse.de>
1759
1760         PR tree-optimization/33855
1761         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
1762         and VECTOR_TYPE.
1763
1764 2007-10-22  Ira Rosen  <irar@il.ibm.com>
1765
1766         PR tree-optimization/33854
1767         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1768         FLOAT_EXPR to the list of promotion operations. 
1769
1770 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1771
1772         PR target/29473
1773         PR target/29493
1774         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
1775         (print_reg): Print register prefix only with AT&T asm syntax. 
1776         Support pc_rtx for RIP register.
1777         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
1778         relative addressing.  Always print segment register prefix with AT&T
1779         asm syntax and never with Intel asm syntax.
1780         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
1781         Fix prefix for 16-byte XFmode operands.
1782         (output_addr_const_extra): Support Intel asm syntax.
1783         (x86_file_start): Don't use register prefix with Intel asm syntax.
1784         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
1785         ("return_internal_long"): Fix Intel asm syntax output.
1786         ("set_got_rex64"): Support Intel asm syntax.
1787         ("set_rip_rex64"): Likewise.
1788         ("set_got_offset_rex64"): Likewise.
1789         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
1790         syntax.
1791         ("*tls_global_dynamic_64"): Likewise.
1792         ("*tls_local_dynamic_base_64"): Likewise.
1793         ("*load_tp_si")("*load_tp_di"): Likewise.
1794         ("*add_tp_si")("*add_tp_di"): Likewise.
1795         ("*tls_dynamic_lea_64"): Likewise.
1796         ("*sibcall_value_1_rex64_v"): Likewise.
1797         ("stack_tls_protect_set_si"): Likewise.
1798         ("stack_tls_protect_set_di"): Likewise.
1799         ("stack_tls_protect_test_si"): Likewise.
1800         ("stack_tls_protect_test_di"): Likewise.
1801         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
1802         syntax output.
1803         ("*movv2sf_internal_rex64"): Likewise.
1804         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
1805         (__get_cpuid_max): Likewise.
1806
1807 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1808
1809         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
1810         the STRICT_P argument type "bool" rather than "int".
1811         (mips_legitimate_address_p): Likewise.
1812         (fp_register_operand, lo_operand): Delete.
1813         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1814         (mips_emit_scc): Rename to...
1815         (mips_expand_scc): ...this.
1816         (gen_conditional_branch): Rename to...
1817         (mips_expand_conditional_branch): ...this.
1818         (gen_conditional_move): Rename to...
1819         (mips_expand_conditional_move): ...this.
1820         (mips_gen_conditional_trap): Rename to...
1821         (mips_expand_conditional_trap): ...this and take an rtx code instead
1822         of an operands array.
1823         (mips_expand_call): Give the SIBCALL_P argument type "bool"
1824         rather than "int".
1825         (mips_emit_fcc_reload): Rename to...
1826         (mips_expand_fcc_reload): ...this.
1827         (init_cumulative_args): Rename to...
1828         (mips_init_cumulative_args): ...this and remove the libname argument.
1829         (function_arg_advance): Rename to...
1830         (mips_function_arg_advance): ...this.
1831         (function_arg): Rename to...
1832         (mips_function_arg): ...this and use "rtx" instead of
1833         "struct rtx_def *".
1834         (function_arg_boundary): Rename to...
1835         (mips_function_arg_boundary): ...this.
1836         (mips_expand_unaligned_load): Rename to...
1837         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1838         and BITPOS arguments type "HOST_WIDE_INT".
1839         (mips_expand_unaligned_store): Rename to...
1840         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1841         and BITPOS arguments type "HOST_WIDE_INT".
1842         (override_options): Rename to...
1843         (mips_override_options): ...this.
1844         (print_operand): Rename to...
1845         (mips_print_operand): ...this.
1846         (print_operand_address): Rename to...
1847         (mips_print_operand_address): ...this.
1848         (mips_output_ascii): Remove the PREFIX argument.
1849         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1850         rather than "int".
1851         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1852         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
1853         of "struct rtx_def *".
1854         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1855         rather than "int".
1856         (build_mips16_call_stub): Delete.
1857         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1858         (mips_use_ins_ext_p): Give the second and third arguments type
1859         "HOST_WIDE_INT" rather than "rtx".
1860         * config/mips/mips.h: Update after the above changes.  Tweak comments
1861         and formatting.
1862         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
1863         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
1864         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1865         element type from "char" to "bool".
1866         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
1867         (mips_cpu_info_table): Delete.
1868         * config/mips/mips.md: Update after the above changes.  Tweak some
1869         formatting.
1870         * config/mips/mips-ps-3d.md: Likewise.
1871         * config/mips/mips.c: Tweak comments and formatting.
1872         Use NULL-like macros rather than 0 in various places.
1873         (mips_section_threshold): Rename to...
1874         (mips_small_data_threshold): ...this and give it an unsigned type.
1875         (num_source_filenames): Remove explicit initialization.
1876         (sdb_label_count): Likewise.
1877         (sym_lineno): Delete.
1878         (set_noat): Make static.
1879         (mips_branch_likely): Likewise, and give it type "bool".
1880         (mips_isa_info): Rename to...
1881         (mips_isa_option_info): ...this.
1882         (mips_flag_delayed_branch): Rename to...
1883         (mips_base_delayed_branch): ...this.
1884         (mips_split_addresses): Delete.
1885         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1886         element type from "char" to "bool".
1887         (mips_regno_to_class): Add an explicit array size.
1888         (mips16_flipper): Change from type "int" to type "bool".
1889         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
1890         (mips_tls_operand_p): Rename to...
1891         (mips_tls_symbol_p): ...this.
1892         (mips_global_symbol_p): Remove redundant "const".
1893         (mips_offset_within_alignment_p): Simplify.
1894         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
1895         to STRICT_P and give it type bool.
1896         (mips_valid_base_register_p): Likewise.
1897         (mips_classify_address): Likewise.
1898         (mips_legitimate_address_p): Likewise.
1899         (mips16_unextended_reference_p): Take the offset as an
1900         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
1901         (mips_const_insns): Use IN_RANGE.
1902         (mips_force_temporary): Remove an unnecessary copy_rtx.
1903         (mips16_gp_pseudo_reg): Simplify.
1904         (mips_split_symbol): Remove an unnecessary copy_rtx.
1905         (mips_legitimize_tls_address): Only create registers if we need them.
1906         (mips_legitimize_address): Use mips_split_plus.
1907         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
1908         variable COST to NUM_OPS.
1909         (mips_legitimize_move): Use gen_lowpart.
1910         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
1911         (m16_check_op): Use IN_RANGE.
1912         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1913         (mips_split_doubleword_move): Pass booleans to mips_subword.
1914         (mips_output_move): Store the mode in a local variable.
1915         Explicitly assert that this function does not deal with
1916         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
1917         cases more consistent.
1918         (mips_relational_operand_ok_p): Rename to...
1919         (mips_int_order_operand_ok_p): ...this.
1920         (mips_canonicalize_comparison): Rename to...
1921         (mips_canonicalize_int_order_test): ...this.
1922         (mips_emit_int_relational): Rename to...
1923         (mips_emit_int_order_test): ...this.  Store the mode in a local
1924         variable.
1925         (mips_reverse_fp_cond_p): Rename to...
1926         (mips_reversed_fp_cond): ...this.
1927         (mips_emit_compare): Make the order of the statements more consistent.
1928         (mips_emit_scc): Rename to...
1929         (mips_expand_scc): ...this.
1930         (gen_conditional_branch): Rename to...
1931         (mips_expand_conditional_branch): ...this.
1932         (gen_conditional_move): Rename to...
1933         (mips_expand_conditional_move): ...this.  Build the condition
1934         separately from the main pattern.
1935         (mips_gen_conditional_trap): Rename to...
1936         (mips_expand_conditional_trap): ...this and take an rtx code instead
1937         of an operands array.  Simplify.
1938         (init_cumulative_args): Rename to...
1939         (mips_init_cumulative_args): ...this.  Use memset rather than a
1940         copy from a zeroed static.  Use prototype_p and stdarg_p.
1941         (mips_arg_info): Rename to...
1942         (mips_get_arg_info): ...this and put the INFO argument first.
1943         (function_arg): Rename to...
1944         (mips_function_arg): ...this and use "rtx" instead of
1945         "struct rtx_def *".  Only split structures into chunks if 
1946         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
1947         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
1948         comparison with REAL_TYPE.  Rename local variable REG to REGNO
1949         and make it unsigned.
1950         (function_arg_advance): Rename to...
1951         (mips_function_arg_advance): ...this.
1952         (function_arg_boundary): Rename to...
1953         (mips_function_arg_boundary): ...this.
1954         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
1955         with MODE_INT.
1956         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
1957         comparison with REAL_TYPE.
1958         (mips_function_value): Remove the FUNC argument.  Rename local
1959         variable UNSIGNEDP to UNSIGNED_P.
1960         (mips_return_in_memory): Use IN_RANGE.
1961         (mips_setup_incoming_varargs): Pass a boolean rather than an int
1962         to FUNCTION_ARG_ADVANCE.
1963         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
1964         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
1965         SIZE and RSIZE if needed.
1966         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
1967         rather than "int".
1968         (build_mips16_function_stub): Rename to...
1969         (mips16_build_function_stub): ...this.
1970         (build_mips16_call_stub): Rename to...
1971         (mips16_build_call_stub): ...this.  Make static, and return a
1972         "bool" rather than an "int".  Rename the ARG_SIZE argument to
1973         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
1974         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
1975         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
1976         rather than "int".
1977         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
1978         are not sibling ones.
1979         (mips_emit_fcc_reload): Rename to...
1980         (mips_expand_fcc_reload): ...this.
1981         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
1982         "HOST_WIDE_INT".
1983         (mips_expand_unaligned_load): Rename to...
1984         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1985         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
1986         SUBREG_BYTE check.
1987         (mips_expand_unaligned_store): Rename to...
1988         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1989         and BITPOS arguments type "HOST_WIDE_INT".
1990         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
1991         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
1992         Use IN_RANGE.
1993         (mips_init_split_addresses): Replace with...
1994         (mips_split_addresses_p): ...this new function.
1995         (mips_init_relocs): Check mips_split_addresses_p () rather than
1996         mips_split_addresses.  Always initialize mips_split_p with booleans.
1997         (print_operand_reloc): Rename to...
1998         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
1999         a fatal_error.
2000         (print_operand): Rename to...
2001         (mips_print_operand): ...this.
2002         (print_operand_address): Rename to...
2003         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
2004         (mips_in_small_data_p): Simplify.
2005         (mips_output_ascii): Remove the PREFIX argument and "register"
2006         keywords.  Use the STRING parameter directly and cast to
2007         "unsigned char".
2008         (mips16e_collect_argument_save_p): Use IN_RANGE.
2009         (mips_function_has_gp_insn): Simplify.
2010         (mips_set_return_address): Use BITSET_P.
2011         (mips_restore_gp): Use a separate statement to pick the base
2012         register.
2013         (mips_output_function_prologue): Use a local FRAME variable.
2014         (mips_save_reg): Pass booleans to mips_subword.
2015         (mips_expand_prologue): Use a local FRAME variable.  Use
2016         cprestore_size to detect when .cprestore is needed.
2017         (mips_restore_reg): Use GP_REG_FIRST.
2018         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
2019         rather than "int".  Use local FRAME and REGNO variables.
2020         (mips_can_use_return_insn): Return a "bool" rather than an "int".
2021         (mips_secondary_reload_class): Give the IN_P argument type "bool"
2022         rather than "int".
2023         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
2024         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
2025         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
2026         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
2027         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
2028         (builtin_description): Rename to...
2029         (mips_builtin_description): ...this.
2030         (mips_bdesc): Rename to...
2031         (mips_ps_bdesc): ...this.
2032         (sb1_bdesc): Rename to...
2033         (mips_sb1_bdesc): ...this.
2034         (dsp_bdesc): Rename to...
2035         (mips_dsp_bdesc): ...this.
2036         (dsp_32only_bdesc): Rename to...
2037         (mips_dsp_32only_bdesc): ...this.
2038         (bdesc_map): Rename to...
2039         (mips_bdesc_map): ...this.
2040         (bdesc_arrays): Rename to...
2041         (mips_bdesc_arrays): ...this.
2042         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
2043         Tweak error message.
2044         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
2045         Rename local variables I and J to OPNO and ARGNO respectively.
2046         Assert that the number of arguments is no more than the number of
2047         input operands.
2048         (mips_expand_builtin_compare): Use an array of arguments rather
2049         than an array of operands.  Assert that the number of operands is
2050         as expected.
2051         (add_constant): Rename to...
2052         (mips16_add_constant): ...this.  Use XNEW.
2053         (dump_constants_1): Rename to...
2054         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
2055         (dump_constants): Rename to...
2056         (mips16_emit_constants): ...this.
2057         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
2058         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
2059         Assign mips16_p to was_mips16_p.
2060         (mips_parse_cpu): Tweak warning message.
2061         (override_options): Rename to...
2062         (mips_override_options): ...this.  Move the mips_cost initialization
2063         out of the "shared with GAS" block.  Quote option names in error
2064         messages.
2065         (mips_conditional_register_usage): Make local variable REGNO unsigned.
2066         (mips_order_regs_for_local_alloc): Remove register keyword.
2067
2068 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2069
2070         * system.h (IN_RANGE): Cast each argument individually.
2071
2072 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2073
2074         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
2075         MIPS16 code unless using o32 or o64.  
2076
2077 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2078
2079         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
2080         for modes smaller than 4 bytes.
2081         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
2082         FPR alternatives.
2083
2084 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2085
2086         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
2087         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
2088         (ASM_OUTPUT_ALIGNED_BSS): Delete.
2089         * config/mips/mips.c (mips_output_aligned_bss): Delete.
2090
2091 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2092
2093         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
2094         sibling calls to "mips16" functions if the function satisfies
2095         const_call_insn_operand.
2096
2097 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2098
2099         * config/mips/mips.c (mips_va_start): Fix types in calls
2100         to build_int_cst.
2101
2102 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2103
2104         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
2105         if ISA_HAS_FP4.
2106
2107 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2108
2109         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
2110         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
2111         instead of checking mips_isa.
2112
2113 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2114
2115         * doc/invoke.texi (-mpaired-single): Don't say that the option
2116         requires 64-bit code.
2117         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
2118         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
2119         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
2120         V2SF if ISA_MIPS32R2.
2121         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
2122         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
2123         to ISA_HAS_NMADD_NMSUB.
2124         (mips_split_doubleword_move): Handle V2SF.
2125         (mips_modes_tieable_p): New function.
2126         (override_options): Report a warning rather than an error when
2127         -mpaired-single is used on ISAs that don't support it; use
2128         ISA_HAS_PAIRED_SINGLE to check that case.
2129         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
2130         and DF move splitters with a single MOVE64 splitter, thereby adding
2131         a V2SF splitter too.
2132         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
2133         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
2134         (HALFMODE): Add V2SF.
2135         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
2136         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
2137         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
2138         (movv2sf_hardfloat_32bit): New pattern.
2139         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
2140         TARGET_DOUBLE_FLOAT conditions.
2141
2142 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
2143
2144         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
2145         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
2146         64-bit register in 64-bit libgcc.
2147
2148 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
2149
2150         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
2151         * config/avr/avr.h (LINK_SPEC): Likewise.
2152         (CRT_BINUTILS_SPECS): Likewsie.
2153         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2154
2155 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2156
2157         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
2158         and -Wfatal-errors together.
2159         
2160 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
2161
2162         PR target/33812
2163         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
2164         change for vrsave, ie restore after frame pop.
2165
2166 2007-10-19  David S. Miller  <davem@davemloft.net>
2167
2168         * config/sparc/niagara2.md: Fix copyright notice.
2169
2170 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
2171
2172         PR tree-optimization/23820
2173         PR tree-optimization/24309
2174         PR tree-optimization/33766
2175         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
2176         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
2177         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
2178         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
2179         * tree-loop-linear.c (perfect_loop_nest_depth): New.
2180         (linear_transform_loops): Use perfect_loop_nest_depth.
2181         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
2182         should have a single condition: their exit.
2183
2184 2007-10-19  Richard Guenther  <rguenther@suse.de>
2185
2186         PR middle-end/33816
2187         PR middle-end/32921
2188         * stor-layout.c (layout_type): Assert that aggregates do not
2189         have their alias sets set.
2190         * alias.c (get_alias_set): Return alias set zero for incomplete
2191         types, return the alias set of the element for incomplete array
2192         types, but do not remember these.
2193
2194 2007-10-19  Richard Guenther  <rguenther@suse.de>
2195
2196         Revert
2197         2007-10-19  Richard Guenther  <rguenther@suse.de>
2198
2199         PR middle-end/32921
2200         * tree.c (build_array_type): Do not re-layout unbound array
2201         types.
2202
2203 2007-10-19  Richard Guenther  <rguenther@suse.de>
2204
2205         PR middle-end/32921
2206         * tree.c (build_array_type): Do not re-layout unbound array
2207         types.
2208
2209 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2210
2211         * config/mips/mips.c (mips_canonicalize_comparison):  Check
2212         mips_relational_operand_ok_p before trying to rewrite the test.
2213         Only calculate PLUS_ONE if needed.
2214         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
2215         here.
2216
2217 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2218
2219         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
2220         calculation.
2221
2222 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2223
2224         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
2225         the call uses the incoming value of $2.
2226
2227 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2228
2229         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
2230         rather then gen_rtx_MEM.
2231         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
2232         gen_rtx_MEM.
2233         (mips_set_return_address): Likewise.
2234         (mips_restore_gp): Likewise.
2235
2236 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2237
2238         * config/mips/mips.c (gpr_mode): Delete.
2239         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
2240         instead of gpr_mode.
2241         (mips_for_each_saved_reg): Likewise.
2242         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2243         (override_options): Don't initialize gpr_mode.
2244         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
2245
2246 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2247
2248         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
2249         case last.
2250         (mips_class_max_nregs): Calculate the smallest consituent register
2251         size and use that to determine an upper bound on the number of
2252         registers.
2253
2254 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2255
2256         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
2257         split out from...
2258         (mips_expand_epilogue): ...here.
2259         (mips_mdebug_abi_name): New function, split out from...
2260         (mips_file_start): ...here.
2261         (mips_hard_regno_mode_ok_p): New function, split out from...
2262         (override_options): ...here.
2263         (mips_expand_builtin_1): New function, split out from...
2264         (mips_expand_buitin): ...here.  Abort if we don't recognize
2265         the function.
2266
2267 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2268
2269         * config/mips/mips.c (build_mips16_function_stub): Load the
2270         target address into $1 before transfering the arguments.
2271         Don't use ".set noreorder".
2272         (build_mips16_call_stub): Likewise.
2273
2274 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2275
2276         * config/mips/mips.c (mips_output_32bit_xfer): New function.
2277         (mips_output_64bit_xfer): Likewise.
2278         (mips16_fp_args): Rename to...
2279         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
2280         with a DIRECTION argument.  Use mips_output_32bit_xfer and
2281         mips_output_64bit_xfer.
2282         (build_mips16_function_stub): Update accordingly.
2283         (mips16_fpret_double): Delete.
2284         (build_mips16_call_stub): Update after above changes.
2285         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
2286         of mips16_fpret_double.  Use GP_REG_RETURN.
2287
2288 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2289
2290         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
2291         use asm_out_file instead.
2292         (build_mips16_function_stub): Likewise.
2293         (build_mips16_call_stub, mips_output_function_prologue): Update
2294         accordingly.
2295
2296 2007-10-18  David S. Miller  <davem@davemloft.net>
2297
2298         Add Niagara-2 support.
2299         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
2300         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
2301         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
2302         (include): Add inclusion of niagara2.md
2303         * config/sparc/sparc.c (niagara2_costs): New.
2304         (sparc_override_options): Add niagara2 entry to cpu_default[]
2305         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
2306         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
2307         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
2308         (sparc_initialize_trampoline): Handle niagara2 like niagara.
2309         (sparc64_initialize_trampoline): Likewise.
2310         (sparc_use_sched_lookahead): Likewise.
2311         (sparc_issue_rate): Likewise.
2312         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
2313         mcpu=niagara2
2314         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
2315         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
2316         TARGET_CPU_niagara2.
2317         (PROCESSOR_NIAGARA2): New.
2318         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
2319         (BRANCH_COST): Likewise.
2320         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
2321         * config/sparc/sol2.h: Likewise.
2322         * config/sparc/niagara2.md: New file.
2323
2324 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2325
2326         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
2327         and fp_reg_size.
2328         (mips_compute_frame_info): Remove associated code.
2329         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
2330
2331 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2332
2333         * config/mips/mips-protos.h (compute_frame_size): Delete.
2334         * config/mips/mips.h: Update comments.
2335         * config/mips/mips.c (mips_frame_info): Remove initialized.
2336         (compute_frame_size): Rename to...
2337         (mips_compute_frame_info): ...this and make static.  Remove the
2338         SIZE argument and return no value.  Remove the setting of initialized.
2339         Update rest of file accordingly.
2340         (mips_set_return_address): Don't call compute_frame_size.
2341         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
2342         Don't call compute_frame_size.
2343
2344 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2345
2346         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
2347         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
2348         mips_hard_frame_pointer_required.
2349         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
2350         large MIPS16 frames.
2351         * config/mips/mips.c (mips_frame_pointer_required): New function.
2352
2353 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2354
2355         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
2356         and hard_frame_pointer_offset.
2357         (mips_debugger_offset): Use hard_frame_pointer_offset.
2358         (mips16e_collect_argument_save_p): Likewise.
2359         (compute_frame_size): Initialize arg_pointer_offset and
2360         hard_frame_pointer_offset.
2361         (mips_initial_elimination_offset): Use them.
2362         (mips_output_function_prologue): Use hard_frame_pointer_offset.
2363         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2364
2365 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2366
2367         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
2368         profiling code.
2369         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
2370         "unsigned int" rather than "int" and put them with the other
2371         register-related fields.  Put expanded comments above fields
2372         rather than to their right.
2373         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
2374         with a NUM_REGS_PTR argument.
2375         (mips16e_save_restore_pattern_p): Update accordingly.
2376         (compute_frame_size): Clarify frame diagram.  Rewrite.
2377
2378 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2379
2380         * config/mips/mips-ftypes.def: New file.
2381         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
2382         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
2383         (mips_function_type): Redefine using mips-ftypes.def.
2384         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
2385         (mips_builtin_vector_type): New function.
2386         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
2387         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
2388         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
2389         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
2390         macros.
2391         (mips_build_function_type): New function.
2392         (mips_init_builtins): Use it to create types lazily.
2393
2394 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2395
2396         * config/mips/mips.h (set_volatile): Delete.
2397         * config/mips/mips.c (set_volatile): Delete.
2398         (mips_print_operand_punctuation): New function, split out from
2399         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
2400         Use the same character ordering in the code and the comments.
2401         Use a recursive call to handle '*'.  Abort on unknown characters.
2402         (mips_init_print_operand_punct): New function, split out from
2403         override_options.
2404         (mips_print_int_branch_condition): New function, split out from
2405         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
2406         to report unexpected codes.
2407         (mips_print_float_branch_condition): New function, split out from
2408         print_operand.  Use output_operand_lossage to report unexpected codes.
2409         (print_operand): Rework to use a case statement.  Use the
2410         same letter ordering in the code and the comments.  Use
2411         output_operand_lossage to report unexpected codes and
2412         reverse_condition to handle inverted branch conditions.
2413         (override_options): Use mips_init_print_operand_punct.
2414
2415 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2416
2417         * config/mips/mips.h: Move variable declarations to end of file and
2418         enclose them all in #ifndef USED_FOR_TARGET.
2419         * config/mips/mips.c: Reorder functions into more logical groups,
2420         and so that callees appear before callers.  Put the targetm
2421         initializer at the end of the file.  Remove forward static
2422         declarations where possible.
2423         (mips_init_builtins): Add "static" to definition.
2424         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
2425
2426 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2427
2428         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
2429         (TARGET_MAX_ANCHOR_OFFSET): Delete.
2430         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
2431         (mips_set_mips16_mode): Initialize min_anchor_offset and
2432         max_anchor_offset directly to constants.
2433
2434 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2435
2436         * config/mips/mips.c: Delete trailing whitespace.
2437
2438 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2439
2440         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
2441         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
2442         and pick the first.
2443         * config/mips/mips.md (load_call<mode>): Don't make the unspec
2444         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
2445
2446 2007-10-18  David Daney  <ddaney@avtrex.com>
2447
2448         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
2449         reg_offset variable to calculate register locations.
2450
2451 2007-10-18  Richard Guenther  <rguenther@suse.de>
2452
2453         * tree-ssa.c (uid_ssaname_map_eq): New function.
2454         (uid_ssaname_map_has): Likewise.
2455         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
2456         * tree-flow.h (struct gimple_df): Make default_defs a
2457         uid_ssaname map.
2458         * tree-dfa.c (gimple_default_def): Deal with it.
2459         (set_default_def): Likewise.
2460
2461 2007-10-18  Richard Guenther  <rguenther@suse.de>
2462
2463         * tree-flow.h (struct gimple_df): Make referenced_vars
2464         a uid_decl_map.
2465         (uid_decl_map_eq): Declare.
2466         (uid_decl_map_hash): Likewise.
2467         * tree-ssa.c (uid_decl_map_eq): New function.
2468         (uid_decl_map_hash): Likewise.
2469         (init_tree_ssa): Make referenced_vars a uid_decl_map.
2470         * tree-flow-inline.h (first_referenced_var): Deal with
2471         the referenced_vars representation change.
2472         (next_referenced_var): Likewise.
2473         * tree-dfa.c (referenced_var_lookup): Likewise.
2474         (referenced_var_check_and_insert): Likewise.
2475         (remove_referenced_var): Likewise.
2476
2477 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
2478
2479         * config/mips/mips.c (mips_dwarf_register_span): New.
2480         (TARGET_DWARF_REGISTER_SPAN): Define.
2481
2482 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
2483
2484         * config.gcc : update score-*-elf(extra_objs).
2485         * config/score/mac.md : Remove.
2486         * config/score/misc.md : Remove.
2487         * config/score/score7.md : Remove.
2488         * config/score/score-mdaux.h : Remove.
2489         * config/score/score-mdaux.c : Remove.
2490         * config/score/score-version.h : Remove.
2491         * config/score/score-generic.md : New.
2492         * config/score/score3.h : New.
2493         * config/score/score3.c : New.
2494         * config/score/score7.h : New.
2495         * config/score/score7.c : New.
2496         * config/score/mul-div.S : add flush_cache score3 support.
2497         * config/score/elf.h : Fix some typos.
2498         * config/score/score.md : merge score3 and score7 pattern.
2499         * config/score/score.c : use to seperate which target it used.
2500         * config/score/score.h : use to seperate the target macro.
2501         * config/score/score.opt : remove -mmac option , add -mscore3,
2502         -mscore3d and -march OPTION support.
2503  
2504 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2505
2506         * cfgexpand.c (expand_stack_vars): Add checking to make sure
2507         that the offset of a variable is not greater than the size
2508         of the paritition.
2509
2510 2007-10-17  Anatoly Sokolov <aesok@post.ru>
2511
2512         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
2513         atmega88p, atmega168p and atmega328p devices.
2514         * config/avr/avr.h (LINK_SPEC): (Ditto.).
2515         (CRT_BINUTILS_SPECS): (Ditto.).
2516         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2517
2518 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2519
2520         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
2521         * ddg.c: Ditto.
2522         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
2523         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
2524         (print_insn): Move declaration to ...
2525         * rtl.h (print_insn): ... here.
2526
2527 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2528
2529         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
2530         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
2531         m68k_sched_branch_type): Move declarations to ...
2532         * config/m68/m68k-protos.h: ... here.
2533
2534 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2535
2536         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
2537
2538 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2539
2540         * config/avr/avr.c (avr_mcu_types): Add attiny48.
2541         * config/avr/avr.h (LINK_SPEC): Likewise.
2542         (CRT_BINUTILS_SPECS): Likewsie.
2543         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2544
2545 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2546
2547         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
2548         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
2549         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2550
2551 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2552
2553         PR middle-end/33794
2554         * reg-stack.c (move_for_stack_reg): Swap input argument of
2555         UNSPEC_TAN insn to the top of the stack.
2556
2557 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2558
2559         PR target/32961
2560         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
2561         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
2562         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
2563         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
2564         immediate shift value.
2565         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
2566         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
2567         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
2568         Remove macros for !__OPTIMIZE__ case.
2569
2570 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
2571
2572         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
2573         directness anymore.
2574         (perform_var_substitution): Only DFS from real nodes. Don't test
2575         for directness.
2576         (unite_pointer_equivalences): Fix broken test.
2577
2578 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
2579
2580         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
2581         altivec sp_offset.  Rearrange sp_offset assignments to
2582         correspond to stack adjustments.  Use frame_reg_rtx for
2583         SPE register restores.  Correct SPE stack adjustment.
2584
2585 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2586
2587         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
2588         * toplev.c (check_global_declaration_1): Use appropriate warning
2589         option instead of unnamed warning.
2590         * stor-layout.c (layout_decl): Likewise.
2591         * c-typeck.c (build_conditional_expr): Likewise.
2592         (build_compound_expr): Fix wrong comment.
2593         (build_binary_op): Use appropriate warning option instead of
2594         unnamed warning.
2595         * cfgexpand.c (tree_expand_cfg): Likewise.
2596         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2597         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
2598         (execute_warn_function_return): Likewise.
2599         * stmt.c (warn_if_unused_value): Likewise.
2600
2601 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
2602
2603         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
2604         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
2605         similar devices.
2606         (CRT_BINUTILS_SPECS): Likewsie.
2607         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2608
2609 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
2610
2611         PR target/33594
2612         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
2613
2614 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
2615
2616         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
2617         (fini_dce): Only release them for the fast pass.
2618         (end_ud_dce): Delete.
2619         (rest_of_handle_ud_dce): Do not modify df_in_progress.
2620         Call fini_dce instead of end_ud_dce.
2621         (rest_of_handle_fast_dce): Do not modify df_in_progress.
2622         (run_fast_df_dce): Reset df_in_progress to false on exit.
2623
2624 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
2625             Maxim Kuvyrkov  <maxim@codesourcery.com>
2626
2627         * target.h (unspec_may_trap_p): New target hook.
2628         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
2629         * targhooks.c (default_unspec_may_trap_p): Default implementation of
2630         the hook.
2631         * targhooks.h (default_unspec_may_trap_p): Declare it.
2632         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
2633         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
2634         * rtl.h (may_trap_p_1): Declare.
2635         
2636         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
2637         override default hook implementation.
2638         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
2639         hook.
2640
2641 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2642
2643         * doc/invoke.texi (Wextra): Move it just after Wall, list the
2644         options enabled by Wextra and mention Wuninitialized.
2645         
2646 2007-10-15  Nigel Stephens  <nigel@mips.com>
2647
2648         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
2649
2650 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2651
2652         PR tree-optimization/33136
2653         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
2654
2655 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2656
2657         PR tree-optimization/33735
2658         PR tree-optimization/33572
2659         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
2660         2007-10-09's change.
2661         * except.c (duplicate_eh_regions): Don't look for prev_try
2662         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
2663
2664 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2665
2666         PR middle-end/33706
2667         * tree-inline.c (copy_bb): Use bsi_replace to replace a
2668         __builtin_va_arg_pack-containing call stmt.
2669
2670 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
2671
2672         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
2673         program flag.
2674
2675 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2676
2677         PR tree-optimization/33619
2678         * tree-ssa-ter.c (is_replaceable_p): Return false for all
2679         calls.
2680
2681 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
2682
2683         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
2684
2685 2007-10-15  Richard Guenther  <rguenther@suse.de>
2686
2687         * fold-const.c (extract_array_ref): Remove.
2688         (fold_comparison): Handle POINTER_PLUS_EXPR with the
2689         generic address expression comparison folding.  Remove
2690         the folding that used extract_array_ref.
2691
2692 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2693
2694         PR target/33133
2695         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
2696         speculation type of insn can be changed before trying to do that.
2697
2698 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
2699
2700         * dse.c (struct insn_info): Add 'frame_read' field.
2701         (scan_insn): For the call to a const function, set frame_read if
2702         reload has been run.
2703         If the insn reads the frame, kill the frame related stores.
2704         (scan_reads_nospill): Likewise.
2705
2706 2007-10-14  Jason Merrill  <jason@redhat.com>
2707
2708         * tree-eh.c (optimize_double_finally): Don't assume that the
2709         cleanup we're duplicating is only one statement.
2710
2711 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
2712
2713         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
2714         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
2715         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
2716         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
2717         tree-vect-transform.c: Fix comment typos.
2718         * doc/extend.texi: Fix a typo.
2719
2720         * c-common.h: Remove the prototype for c_expand_body.
2721         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
2722         * tree.h: Remove the prototype for fold_build_call_expr.
2723
2724         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2725         Remove.
2726         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
2727
2728 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
2729
2730         * config/rs6000/aix53.h: New file.
2731         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
2732         (TARGET_ALTIVEC_ABI): Same.
2733         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
2734         (TARGET_ALTIVEC_ABI): Delete.
2735         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
2736         stanza defaulting to aix5.3.
2737
2738 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2739
2740         * config/i386/i386.md (SI_REG, DI_REG): New constants.
2741         (strmov): Use defined constants.
2742         (cmpstrnsi): Likewise.
2743         * config/i386/i386.c (decide_alg): Use defined constants.
2744         (ix86_expand_strlen): Likewise.
2745
2746 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
2747
2748         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
2749         * var-tracking.c (micro_operation_def): Update comment on u.loc.
2750         (mode_for_reg_attrs, var_lowpart): New functions.
2751         (add_uses): Consider recording a lowpart of LOC for MO_USE.
2752         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
2753         or copy is known, set LOC to the SET that performs the set, instead
2754         of the destination.
2755         (find_src_status, find_src_set_src): Remove LOC parameter.
2756         Replace INSN with the source value.
2757         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
2758         handling MO_SET and MO_COPY.  Update the calls to find_src_status
2759         and find_src_set_src.
2760
2761 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2762
2763         PR 11001
2764         * config/i386/i386.md (strmov): Check for esi and edi usage.
2765         * config/i386/i386.c (decide_alg): Check whether we can use a
2766         rep prefix and adjust algorithm choice accordingly.
2767         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
2768
2769 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2770
2771         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
2772
2773 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2774
2775         * global.c (build_insn_chain): Formatting fixes.
2776
2777 2007-10-12  Richard Guenther <rguenther@suse.de>
2778
2779         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
2780         combining both operands require either both have single uses
2781         or combining to a constant.
2782
2783 2007-10-12  Richard Guenther  <rguenther@suse.de>
2784
2785         PR middle-end/26198
2786         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
2787         a rhs with side-effects or which is a load.
2788         (forward_propagate_into_cond): Also try combining both operands.
2789
2790 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
2791
2792         PR tree-optimization/33742
2793         * tree-vect-transform.c (vectorizable_operation): Return false
2794         if get_vectype_for_scalar_type for scalar_dest can't be determined.
2795         (vectorizable_call): Same for rhs_type and lhs_type.
2796
2797 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2798
2799         PR tree-optimization/33645
2800         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
2801         pass it to walk_tree.
2802         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
2803         When calling set_is_used on a VAR_DECL, if data is not NULL and
2804         its DECL_UID is in the bitmap, call mark_all_vars_used on its
2805         DECL_INITIAL after clearing the bit in bitmap.
2806         (remove_unused_locals): Adjust mark_all_vars_used callers.
2807         Instead of removing unused global vars from unexpanded_var_list
2808         immediately record them in bitmap, call mark_all_vars_used on
2809         all used global vars from unexpanded_var_list and only purge
2810         global vars that weren't found used even during that step.
2811  
2812 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2813
2814         * gthr-posix.h (__gthread_active_init): Create detached instead of
2815         joinable thread when testing whether threads are active on hppa-hpux.
2816         * gthr-posix95.h (__gthread_active_init): Likewise.
2817
2818 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2819
2820         PR middle-end/33676
2821         * global.c (build_insn_chain): Include insn that occur between
2822         basic blocks.
2823         
2824 2007-10-11  Tom Tromey  <tromey@redhat.com>
2825
2826         * gengtype-yacc.y: Delete.
2827
2828 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
2829
2830         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
2831         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
2832         function_value_32, function_value_64, function_value_ms_64,
2833         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
2834         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
2835         Use new constants.
2836
2837 2007-10-11  Richard Guenther  <rguenther@suse.de>
2838
2839         * gcse.c (hash_scan_set): If the next nonnote insn is in
2840         a different basic block insert the set.
2841
2842 2007-10-11  Richard Guenther  <rguenther@suse.de>
2843
2844         PR middle-end/33724
2845         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
2846         (verify_gimple_expr): Use it to verify pointer-to types for
2847         ADDR_EXPRs.
2848
2849 2007-10-11  Richard Guenther  <rguenther@suse.de>
2850
2851         PR c/33726
2852         * c-typeck.c (build_array_ref): Do not strip qualifiers from
2853         the array element type.
2854
2855 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
2856
2857         PR rtl-optimization/33638
2858         * dse.c (struct insn_info): Remove 'stack_read' field,
2859         add 'stack_pointer_based' field.
2860         (record_store): For a store with non-constant base, record
2861         whether it is stack pointer based.
2862         (scan_insn): For the call to a const function, remove stack
2863         pointer based stores from the list of local active stores.
2864         (scan_reads_nospill): Delete code dealing with const functions.
2865
2866 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2867
2868         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
2869         to HOST_WIDE_INT.
2870         (conflict_p, set_conflict, set_conflicts): Likewise.
2871         * global.c (global_alloc): Likewise.
2872         * ra.h: Update prototypes.
2873
2874 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
2875
2876         * opth-gen.awk: Fixed generation of comment stating the origin
2877           of options.h
2878
2879 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
2880
2881         Revert:
2882         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2883         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2884         and '%}', respectively.
2885
2886         Revert:
2887         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2888         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2889         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2890         and '}'.
2891         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2892         meant to be output.
2893
2894         Revert:
2895         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2896         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2897         syntax for ASSEMBLER_DIALECT.
2898         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2899
2900 2007-10-10  Revital Eres  <eres@il.ibm.com>
2901
2902         * modulo-sched.c (check_nodes_order): Dump the final order of
2903         the nodes.
2904         (get_sched_window): Add dump info.
2905         (calculate_order_params): Dump order params of the nodes.
2906
2907 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2908
2909         PR middle-end/33669
2910         * ra-conflict.c (record_one_conflict_between_regnos, 
2911         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
2912         (global_conflicts): Enhanced incorrect check.
2913         
2914 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
2915
2916         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
2917         if flag_exceptions is not set.
2918         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
2919         assemble_name rather than incorrectly emulating it.
2920
2921         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
2922         friends are removed from G++.
2923
2924 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2925
2926         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
2927         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
2928         enabling them is redundant. Don't check two times for
2929         c_dialect_cxx.
2930         
2931 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
2932
2933         * ra-conflict.c (record_one_conflict_between_regnos): Revert
2934         the last change.
2935         (set_conflicts_for_earlyclobber): Likewise.
2936         (global_conflicts): Likewise.
2937
2938 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2939
2940         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2941         and '%}', respectively.
2942
2943 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2944
2945         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2946         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2947         and '}'.
2948         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2949         meant to be output.
2950
2951 2007-10-09  Richard Guenther  <rguenther@suse.de>
2952
2953         PR middle-end/33692
2954         * gimplify.c (canonicalize_component_ref): Honor qualifiers
2955         of referenced structure and component.
2956
2957 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2958
2959         PR middle-end/33669
2960         * ra-conflict.c (record_one_conflict_between_regnos,
2961         set_conflicts_for_earlyclobber, global_conflicts): Improved
2962         logging.
2963         (global_conflicts): Removed incorrect check.
2964
2965 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2966
2967         PR tree-optimization/33615
2968         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
2969         if the statement might throw.  Fix formatting.
2970
2971 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2972
2973         PR tree-optimization/33615
2974         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
2975         if the rhs might throw.
2976
2977 2007-10-09  Jan Hubicka  <jh@suse.cz>
2978
2979         * invoke.texi (align-threshold, align-loop-iterations): Document.
2980         * final.c: Include cfgloop.h, params.h
2981         (compute_alignments): Dump decisions and compare them with loop
2982         structure; honor given parameters.
2983         (pass_compute_alignments): New dump file.
2984         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
2985         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
2986
2987 2007-10-09  James E. Wilson  <wilson@specifix.com>
2988
2989         PR tree-optimization/33655
2990         PR middle-end/22156
2991         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
2992         convert it to bitsizetype before size_binop call.
2993
2994 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
2995
2996         PR tree-optimization/33572
2997         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
2998         the absence of a corresponding edge from the exit block.
2999
3000 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
3001
3002         PR middle-end/22156
3003         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
3004         bit-field layout.
3005         (sra_build_assignment): Likewise.  Set up mask depending on
3006         precision, not type.
3007         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
3008         computing bit masks.
3009         (sra_build_elt_assignment): Don't view-convert from signed to
3010         unsigned.
3011         (sra_explode_bitfield_assignment): Use bit-field type if
3012         possible.  Use BYTES_BIG_ENDIAN.
3013
3014 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
3015
3016         PR middle-end/22156
3017         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
3018         the original stmt can throw.
3019         (sra_build_bf_assignment): Fix type mismatch when applying negated
3020         mask.
3021
3022 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
3023
3024         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
3025         '#pragma mark' to be executed at preprocessing time.
3026
3027 2007-10-08  Ollie Wild  <aaw@google.com>
3028
3029         * varasm.c (compare_constant): Removed call to
3030         lang_hooks.expand_constant.
3031         (copy_constants): Removed call to lang_hooks.expand_constant.
3032         (compute_reloc_for_constant): Removed call to
3033         lang_hooks.expand_constant.
3034         (output_addressed_constants): Removed call to
3035         lang_hooks.expand_constant.
3036         (constructor_static_from_elts_p): Removed call to
3037         lang_hooks.expand_constant.
3038         (output_constant): Removed calls to lang_hooks.expand_constant.
3039         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3040         * langhooks-def.h (lhd_return_tree): Removed.
3041         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3042         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3043         * langhooks.c (lhd_return_tree): Removed.
3044
3045 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
3046
3047         * combine.c (setup_incoming_promotions): Ensure that
3048         arguments that have not undergone mode promotions do not
3049         incorrectly get marked as being sign- or zero-extended.
3050
3051 2007-10-08  Richard Guenther  <rguenther@suse.de>
3052
3053         PR middle-end/33693
3054         PR middle-end/33695
3055         PR middle-end/33697
3056         * fold-const.c (fold_binary): Use correct types in folding
3057         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
3058         and building of RROTATE_EXPR.
3059
3060 2007-10-08  Richard Guenther  <rguenther@suse.de>
3061
3062         PR middle-end/33691
3063         PR middle-end/33694
3064         PR middle-end/33696
3065         * fold-const.c (fold_binary): Use the correct types when
3066         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
3067         (fold_binary): Use the correct types when folding
3068         (-A) - B to (-B) - A.
3069         (fold_unary): Use the correct types when folding ~(X).
3070
3071 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3072
3073         * doc/invoke.texi (Wall): fix formatting issues.
3074         
3075 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
3076
3077         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
3078         truncated shift counts.
3079
3080 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
3081
3082         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
3083         syntax for ASSEMBLER_DIALECT.
3084         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
3085
3086 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3087             Nathan Froyd  <froydnj@codesourcery.com>
3088
3089         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
3090         when determining whether to record INCOMING_RETURN_ADDR_RTX.
3091
3092 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3093
3094         Revert:
3095         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3096
3097         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3098         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3099         the function, temporarily point the debug interface to the null one.
3100
3101 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3102
3103         PR tree-optimization/33655
3104         PR middle-end/22156
3105         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
3106         elements.
3107
3108 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3109
3110         PR tree-optimization/33572
3111         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
3112         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
3113         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
3114         return PHI node.
3115         (copy_edges_for_bb): Handle nonlocal label edges.
3116         (make_nonlocal_label_edges): Deleted.
3117         (optimize_inline_calls): Don't call it.
3118
3119 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
3120
3121         * gthr-single.h: Revert last change.
3122
3123 2007-10-05  Michael Matz  <matz@suse.de>
3124
3125         PR middle-end/33667
3126         * lower-subreg.c (decompose_multiword_subregs): Use
3127         validate_unshare_change().
3128
3129 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
3130
3131         * ra-conflict.c: Include "sparseset.h".
3132         (conflicts): Change to HOST_WIDEST_FAST_INT.
3133         (allocnos_live): Redefine variable as a sparseset.
3134         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
3135         Delete macros.
3136         (allocno_row_words): Removed global variable.
3137         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
3138         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
3139         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
3140         (record_one_conflict_between_regnos): Cache allocno values and reuse.
3141         Use set_conflict_p.
3142         (record_one_conflict): Update uses of allocnos_live to use
3143         the sparseset routines.  Use set_conflicts_p.
3144         (mark_reg_store): Likewise.
3145         (set_reg_in_live): Likewise.
3146         (global_conflicts): Update uses of allocnos_live.
3147         Use the new adjacency list to visit an allocno's neighbors
3148         rather than iterating over all possible allocnos.
3149         Call set_conflicts_p to setup conflicts rather than adding
3150         them manually.
3151         * global.c: Comments updated.  
3152         (CONFLICTP): Delete define.
3153         (regno_compare): New function.  Add prototype.
3154         (global_alloc): Sort the allocno to regno mapping according to
3155         which basic blocks the regnos are referenced in.  Modify the
3156         conflict bit matrix to a compressed triangular bitmatrix.
3157         Only allocate the conflict bit matrix and adjacency lists if
3158         we are actually going to allocate something.
3159         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
3160         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
3161         allocno's neighbors rather than iterating over all possible allocnos.
3162         (mirror_conflicts): Removed function.
3163         (dump_conflicts): Iterate over regnos rather than allocnos so
3164         that all dump output will be sorted by regno number.
3165         Use the FOR_EACH_CONFLICT macro.
3166         * ra.h: Comments updated.
3167         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
3168         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
3169         Add prototypes.
3170         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
3171         (adjacency_list_d, adjacency_iterator_d): New types.
3172         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
3173         adjacency_iter_next, regno_basic_block): New static inline functions.
3174         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
3175         (conflict_p): Add function prototype.
3176         * sparseset.h, sparseset.c: New files.
3177         * Makefile.in (OBJS-common): Add sparseset.o.
3178         (sparseset.o): New rule.
3179
3180 2007-10-05  Richard Guenther  <rguenther@suse.de>
3181
3182         PR middle-end/33666
3183         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
3184         to (long long)ptr.
3185
3186 2007-10-05  Michael Matz  <matz@suse.de>
3187
3188         PR inline-asm/33600
3189         * function.c (match_asm_constraints_1): Check for input
3190         being used in the outputs.
3191
3192 2007-10-05  Richard Guenther  <rguenther@suse.de>
3193
3194         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
3195
3196 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
3197
3198         PR target/33635
3199         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
3200         subset checks.  Make the cost of FPR -> FPR moves depend on
3201         mips_mode_ok_for_mov_fmt_p.
3202
3203 2007-10-04  Doug Kwan  <dougkwan@google.com>
3204
3205         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
3206         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3207         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3208         support of conditional variables.
3209         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
3210         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3211         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3212         support of conditional variables.
3213         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
3214         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3215         conditional variables.
3216         * gthr.h: Update comments to document new interface.
3217
3218 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
3219
3220         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
3221         DECL_IGNORED_P.
3222
3223 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3224
3225         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
3226
3227 2007-10-04  Richard Guenther  <rguenther@suse.de>
3228
3229         PR middle-end/33641
3230         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
3231         does not need to be of INTEGER_TYPE.
3232         (verify_gimple_2): New function split out from ...
3233         (verify_gimple_1): ... here.  ICE if there was an error during
3234         verification.
3235
3236 2007-10-04  Michael Matz  <matz@suse.de>
3237
3238         PR rtl-optimization/33653
3239         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
3240         * dse.c (scan_insn): Same.
3241
3242 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3243
3244         * config.gcc: Remove USE_GAS for m68k targets.
3245
3246 2007-10-04  Richard Guenther  <rguenther@suse.de>
3247
3248         PR tree-optimization/33627
3249         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
3250         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
3251         split out from ...
3252         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
3253         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
3254
3255 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3256
3257         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
3258         commands_in_epilogues): Remove variables.
3259         (avr_file_start): Remove unneded initializations of commands_in_file,
3260         commands_in_prologues and commands_in_epilogues variables.
3261         (avr_file_end): Remove dead code.
3262
3263 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3264
3265         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
3266         MOTOROLA is to true.
3267
3268 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
3269
3270         PR target/33635
3271         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
3272         (mips_split_doubleword_move): ...this.
3273         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
3274         use natural endianness for multi-format FPR values.
3275         (mips_split_64bit_move): Rename to...
3276         (mips_split_doubleword_move): ...this and extend to 64-bit words.
3277         Use move_doubleword_fpr* patterns for moves involving FPRs.
3278         (mips_save_reg): Update the call to mips_split_64bit_move.
3279         (mips_secondary_reload_class): Return NO_REGS for any reload of a
3280         nonzero constant into an FPR if the constant can be forced to memory.
3281         * config/mips/mips.md: Update the splitter calls to
3282         mips_split_64bit_move.
3283         (UNSPEC_LOAD_DF_LOW): Rename to...
3284         (UNSPEC_LOAD_LOW): ...this.
3285         (UNSPEC_LOAD_DF_HIGH): Rename to...
3286         (UNSPEC_LOAD_HIGH): ...this.
3287         (UNSPEC_STORE_DF_HIGH): Rename to...
3288         (UNSPEC_STORE_WORD): ...this.
3289         (SPLITF): New mode iterator.
3290         (HALFMODE): New mode attribute.
3291         (movtf): New expander.
3292         (*movtf_internal): New define_insn_and_split.
3293         (move_doubleword_fpr<mode>): New expander.
3294         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
3295         with...
3296         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
3297         (mfhc1<mode>): ...these more general patterns.
3298
3299 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3300
3301         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
3302
3303 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3304
3305         * gcse.c (hash_scan_set): Insert set in insn before note at
3306         the end of basic block.
3307
3308 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
3309
3310         PR tree-optimization/33576
3311         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
3312         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
3313         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
3314         (remove_iv): Declared.
3315         * lambda-code.c (remove_iv): Not static.
3316         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
3317         Don't remove ivs there, save ivs in the buffer.
3318
3319 2007-10-03  Jason Merrill  <jason@redhat.com>
3320
3321         PR c++/15764
3322         * tree-eh.c (same_handler_p): New fn.
3323         (optimize_double_finally): New fn.
3324         (refactor_eh_r): New fn.
3325         (refactor_eh): New fn.
3326         (pass_refactor_eh): New pass.
3327         * tree-pass.h: Declare it.
3328         * passes.c (init_optimization_passes): Add it.
3329
3330 2007-10-03  Doug Kwan  <dougkwan@google.com>
3331         Richard Guenther  <rguenther@suse.de>
3332
3333         PR debug/31899
3334         * dwarf2out.c (reference_to_unused): Disable sanity checking,
3335         be conservative instead.
3336
3337 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3338
3339         PR fortran/26682
3340         * doc/invoke.texi (-fwhole-program): Document that Fortran
3341         doesn't support this option.
3342
3343 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
3344
3345         PR middle-end/33617
3346         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
3347         expand_expr.
3348
3349 2007-10-02  David Daney  <ddaney@avtrex.com>
3350
3351         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
3352         against constant zero.
3353         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
3354         operand.
3355
3356 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
3357
3358         * ra-conflict.c: New file.
3359         * ra.h: New file.
3360         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
3361         usage to DF_LIVE usage.
3362         (reload): Remove reference to df_get_live_top.
3363         * rtlanal.c (subreg_nregs_with_regno): New function.  
3364         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
3365         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
3366         (df_has_eh_preds): Removed.
3367         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
3368         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
3369         bb_has_eh_pred.
3370         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
3371         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
3372         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
3373         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
3374         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
3375         (global_alloc): Turn off rescanning insns after call to
3376         global_conflicts and added call to set_preferences.
3377         (global_conflicts): Moved to ra-alloc.c.
3378         (set_preferences_1, set_preferences): New function.
3379         (mirror_conflicts): Changed types for various variables.
3380         (mark_elimination): Change DF_RA_LIVE
3381         usage to DF_LIVE usage.
3382         (build_insn_chain): Rewritten from scratch and made local.
3383         (print_insn_chain, print_insn_chains): New functions.
3384         (dump_conflicts): Do not print conflicts for fixed_regs.
3385         (rest_of_handle_global_alloc): Turn off insn rescanning.
3386         * hard-reg-set.h: Fixed comment.
3387         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
3388         usage to DF_LIVE usage and delete refs to TOP sets.
3389         (block_alloc): Mark regs as live if they are in the artificial
3390         defs at top of block.
3391         (find_stack_regs): New function.
3392         (rest_of_handle_local_alloc): Changed urec problem to live
3393         problem and do not turn off df rescanning.
3394         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
3395         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
3396         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
3397         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
3398         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
3399         fields in df_ref_flags.  The rest have been renumbered.  
3400         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
3401         at -O1.
3402         * rtl.h (subreg_nregs_with_regno): New function.
3403         * df-problems.c: (df_get_live_out, df_get_live_in,
3404         df_get_live_top): Removed reference to DF_RA_LIVE.
3405         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
3406         df_live_alloc, df_live_reset, df_live_local_finalize,
3407         df_live_free): Make top set only if different from in set.
3408         (df_lr_top_dump, df_live_top_dump): Only print top set if
3409         different from in set.
3410         (df_lr_bb_local_compute): Removed unnecessary check.
3411         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
3412         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
3413         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
3414         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3415         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
3416         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
3417         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
3418         df_urec_add_problem): Removed.
3419         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
3420         bb_has_eh_pred. 
3421         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
3422         * basic_block.h (bb_has_abnormal_pred): New function.
3423         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
3424         usage to DF_LIVE usage.
3425         
3426 2007-10-02  Revital Eres  <eres@il.ibm.com>
3427
3428         * config/rs6000/predicates.md (easy_vector_constant): Return false
3429         for 750CL paired vectors.
3430         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
3431         vector constant.
3432         (vec_initv2sf): Add new description.
3433         (vconcatsf): Likewise.
3434         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
3435         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
3436
3437 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3438
3439         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
3440         sinking the last stmt in a BB.
3441
3442 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3443
3444         PR middle-end/22156
3445         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
3446         (sra_hash_tree): Handle BIT_FIELD_REFs.
3447         (sra_elt_hash): Don't hash bitfld blocks.
3448         (sra_elt_eq): Skip them in parent compares as well.  Handle
3449         BIT_FIELD_REFs.
3450         (build_element_name_1): Handle BIT_FIELD_REFs.
3451         (instantiate_element): Propagate nowarn from parents.  Create
3452         BIT_FIELD_REF for variables that are widened by scalarization.
3453         Gimple-zero-initialize all bit-field variables that are not
3454         part of parameters that are going to be scalarized on entry.
3455         (instantiate_missing_elements_1): Return the sra_elt.
3456         (canon_type_for_field): New.
3457         (try_instantiate_multiple_fields): New.  Infer widest possible
3458         access mode from decl or member type, but clip it at word
3459         size, and only widen it if a field crosses an alignment
3460         boundary.
3461         (instantiate_missing_elements): Use them.
3462         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3463         (scalar_bitfield_p): New.
3464         (sra_build_assignment): Optimize assignments from scalarizable
3465         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
3466         counts.
3467         (REPLDUP): New.
3468         (sra_build_bf_assignment): New.  Optimize assignments to
3469         scalarizable BIT_FIELD_REFs.
3470         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
3471         assignments to full variables.
3472         (generate_copy_inout): Use the new macros and functions.
3473         (generate_element_copy): Likewise.  Handle bitfld differences.
3474         (generate_element_zero): Don't recurse for blocks.  Use
3475         sra_build_elt_assignment.
3476         (generate_one_element_init): Take elt instead of var.  Use
3477         sra_build_elt_assignment.
3478         (generate_element_init_1): Adjust.
3479         (bitfield_overlap_info): New struct.
3480         (bitfield_overlaps_p): New.
3481         (sra_explode_bitfield_assignment): New.  Adjust widened
3482         variables to account for endianness.
3483         (sra_sync_for_bitfield_assignment): New.
3484         (scalarize_use): Re-expand assignment to/from scalarized
3485         BIT_FIELD_REFs.  Explode or sync needed members for
3486         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
3487         (scalarize_copy): Use REPLDUP.
3488         (scalarize_ldst): Move assert before dereference.  Adjust EH
3489         handling.
3490         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3491
3492 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
3493
3494         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
3495         Rename CR_* constants to CMP_*.  Fix spacing.
3496
3497 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3498
3499         PR other/33585
3500         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
3501         to be processed with the special script doc/install.texi2html.
3502         
3503 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3504
3505         * doc/invoke.texi (Wall): List the options enabled by Wall.
3506         (Wstrict-aliasing): Add missing @option.
3507         
3508 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
3509
3510         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
3511         rather than gen_lowpart to change a register from DImode to DFmode.
3512         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
3513         both FROM and TO are integer modes that are no bigger than 4 bytes.
3514         (mips_mode_ok_for_mov_fmt_p): New function.
3515         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
3516         (mips_secondary_reload_class): Tweak formatting and comments.
3517         Use reg_class_subset_p instead of direct comparisons with
3518         classes.  Only allow direct FPR<->FPR moves for modes that
3519         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
3520         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
3521         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
3522         (*movdi_64bit): Likewise.
3523         (*movsi_internal): Likewise.
3524         (*movhi_internal): Likewise.
3525         (*movqi_internal): Likewise.
3526
3527 2007-09-30  Diego Novillo  <dnovillo@google.com>
3528
3529         PR 33593
3530         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
3531         throw an exception.
3532
3533 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
3534
3535         PR tree-optimization/33597
3536         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
3537         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
3538
3539 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
3540
3541         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
3542         instead of variants of (!reload_in_progress && !reload_completed).
3543         (x86_expand_vector_move): Ditto.
3544
3545 2007-09-28  Ollie Wild  <aaw@google.com>
3546
3547         Revert
3548         2007-09-27  Ollie Wild  <aaw@google.com>
3549
3550         * varasm.c (compare_constant): Removed call to
3551         lang_hooks.expand_constant.
3552         (copy_constants): Removed call to lang_hooks.expand_constant.
3553         (compute_reloc_for_constant): Removed call to
3554         lang_hooks.expand_constant.
3555         (output_addressed_constants): Removed call to
3556         lang_hooks.expand_constant.
3557         (constructor_static_from_elts_p): Removed call to
3558         lang_hooks.expand_constant.
3559         (output_constant): Removed calls to lang_hooks.expand_constant.
3560         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3561         * langhooks-def.h (lhd_return_tree): Removed.
3562         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3563         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3564         * langhooks.c (lhd_return_tree): Removed.
3565
3566 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3567
3568         PR target/33347
3569         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
3570         argument to gen_selb.
3571
3572 2007-09-28  Chao-ying Fu  <fu@mips.com>
3573
3574         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
3575         * doc/libgcc.texi (Fixed-point fractional library routines):
3576         Fix typos for neg and cmp functions.
3577
3578 2007-09-28  Michael Matz  <matz@suse.de>
3579
3580         PR rtl-optimization/33552
3581         * function.c (match_asm_constraints_1): Check for overlap in
3582         inputs and replace all occurences.
3583
3584 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
3585
3586         * config/mips/mips.c (override_options): Fix comment typo.
3587
3588 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
3589
3590         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
3591         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
3592         * config/bfin/t-bfin-linux (crti.o): Don't build.
3593         (crtn.o): Likewise.
3594         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3595         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
3596         (crtn.o): Likewise.
3597         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3598
3599 2007-09-27  Ollie Wild  <aaw@google.com>
3600
3601         * varasm.c (compare_constant): Removed call to
3602         lang_hooks.expand_constant.
3603         (copy_constants): Removed call to lang_hooks.expand_constant.
3604         (compute_reloc_for_constant): Removed call to
3605         lang_hooks.expand_constant.
3606         (output_addressed_constants): Removed call to
3607         lang_hooks.expand_constant.
3608         (constructor_static_from_elts_p): Removed call to
3609         lang_hooks.expand_constant.
3610         (output_constant): Removed calls to lang_hooks.expand_constant.
3611         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3612         * langhooks-def.h (lhd_return_tree): Removed.
3613         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3614         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3615         * langhooks.c (lhd_return_tree): Removed.
3616
3617 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3618
3619         PR middle-end/33436
3620         * expr.c (emit_group_load_1): Split constant double when destination
3621         length is half source length.
3622
3623 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
3624
3625         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
3626         (mips_cpu_info): Add tune_flags.
3627         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
3628         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
3629         Remove end marker.
3630         (override_options): Remove deprecation code.  Use branch-likely
3631         instructions for optimize_size or if the tuning flags do not
3632         suggest otherwise.  Tweak warning.
3633         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
3634
3635 2007-09-27  Matthias Klose  <doko@ubuntu.com>
3636
3637         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
3638         multilib osdirname if it exists.
3639         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
3640
3641 2007-09-27  Ian Lance Taylor  <iant@google.com>
3642
3643         PR tree-optimization/33565
3644         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
3645         assignments of comparisons.
3646         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
3647         parameter.  Change caller.  Defer overflow warnings around call to
3648         fold_binary.
3649         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
3650         TREE_NO_WARNING is set on the statement.
3651         * tree-ssa-forwprop.c
3652         (tree_ssa_forward_propagate_single_use_vars): Don't test
3653         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
3654         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3655
3656 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
3657
3658         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
3659         reduce offset by units of 0x10000 for SPE vector modes or modes
3660         used with E500 double instructions.
3661
3662 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
3663
3664         * simplify-rtx.c (comparison_result): New.
3665         (simplify_const_relational_operation): Use it instead of the five
3666         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
3667         Improve bounds-checking optimizations; remove subsumed POPCOUNT
3668         optimizations.  Extract nonzero_address_p optimizations into a
3669         separate "if" together with optimizations where op1 is const0_rtx.
3670         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
3671         floating-point arguments too when appropriate.  Hoist test for ABS
3672         outside the final switch statement.
3673         * cse.c (fold_rtx): Don't look for an IOR equivalent of
3674         folded_arg0 if we found a constant equivalent.  Remove
3675         transformations done in simplify-rtx.c for "op0 RELOP op0".
3676
3677 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
3678
3679         * builtins.c (expand_builtin, expand_builtin_object_size,
3680         expand_builtin_memory_chk, maybe_emit_chk_warning,
3681         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
3682         for diagnostics.
3683         * expr.c (expand_expr_real_1): Likewise.
3684         * langhooks-def.h (struct diagnostic_info): Add forward decl.
3685         (lhd_print_error_function): Add third argument.
3686         * langhooks.h (struct diagnostic_info): Add forward decl.
3687         (struct lang_hooks): Add third argument to print_error_function.
3688         * diagnostic.h (diagnostic_info): Add abstract_origin field.
3689         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
3690         second argument.
3691         (diagnostic_report_current_function): Likewise.
3692         * toplev.c (announce_function): Pass NULL as second argument to
3693         diagnostic_set_last_function.
3694         * diagnostic.c (diagnostic_report_current_function): Add second
3695         argument, pass it as third argument to lang_hooks.print_error_function.
3696         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
3697         to diagnostic_report_current_function.
3698         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
3699         and message.abstract_origin.
3700         (verbatim): Initialize abstract_origin.
3701         * pretty-print.h (text_info): Add abstract_origin field.
3702         * pretty-print.c (pp_base_format): Handle %K.
3703         * langhooks.c (lhd_print_error_function): Add third argument.  If
3704         diagnostic->abstract_origin, print virtual backtrace.
3705         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
3706         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
3707         (init_dynamic_diag_info): Likewise.
3708
3709 2007-09-26  David Daney  <ddaney@avtrex.com>
3710
3711         PR target/33479
3712         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
3713         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
3714         sync_old_nand<mode>, sync_new_nand<mode>,
3715         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
3716         Update length attributes.
3717         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
3718         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
3719         length attributes.
3720         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
3721         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
3722         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
3723         post-loop sync.
3724
3725 2007-09-26  Richard Guenther  <rguenther@suse.de>
3726
3727         PR tree-optimization/33563
3728         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
3729         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
3730         aggregate stores.
3731         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
3732         get_use_of_stmt_lhs.
3733
3734 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
3735
3736         PR c/25309
3737         * c-common.c (complete_array_type): Diagnose too-large arrays and
3738         set type to error_mark_node.
3739
3740 2007-09-26  Richard Guenther  <rguenther@suse.de>
3741
3742         PR tree-optimization/30375
3743         PR tree-optimization/33560
3744         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
3745         with calls.
3746
3747         Revert
3748         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
3749
3750         * tree-ssa-dse.c (aggregate_vardecl_d): New.
3751         (dse_global_data): Add aggregate_vardecl field.
3752         (dse_possible_dead_store_p): New.
3753         Add prev_defvar variable.
3754         Allow immediate uses and previous immediate uses to differ
3755         if they are setting different parts of the whole.
3756         (get_aggregate_vardecl): New.
3757         (dse_record_partial_aggregate_store): New.
3758         (dse_whole_aggregate_clobbered_p): New.
3759         (dse_partial_kill_p): New.
3760         Call dse_maybe_record_aggregate_store().
3761         When checking whether a STMT and its USE_STMT refer to the
3762         same memory address, check also for partial kills that clobber
3763         the whole.
3764         Move some variable definitions to the block where they are used.
3765         (aggregate_vardecl_hash): New.
3766         (aggregate_vardecl_eq): New.
3767         (aggregate_vardecl_free): New.
3768         (aggregate_whole_store_p): New.
3769         (tree_ssa_dse): Initialize and free aggregate_vardecl.
3770         Mark which aggregate stores we care about.
3771
3772 2007-09-25  DJ Delorie  <dj@redhat.com>
3773
3774         PR target/33551
3775         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
3776         XINT.
3777
3778 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
3779
3780         PR target/33524
3781         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
3782         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
3783         for vector int32 -> int64 conversions.  Don't write beyond the end
3784         of the allocated vector for int32 -> int64 conversions.
3785
3786 2007-09-25  Revital Eres  <eres@il.ibm.com>
3787
3788         * config/rs6000/paired.h (paired_sel): New.
3789         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
3790         (rs6000_expand_ternop_builtin): Pass zero const_double operand
3791         when expanding selv2sf.
3792         * config/rs6000/rs6000.h (rs6000_builtins): Add
3793         PAIRED_BUILTIN_SELV2SF4.
3794
3795 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
3796
3797         PR c/32295
3798         * c-typeck.c (default_conversion): Call require_complete_type
3799         before perform_integral_promotions.
3800         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
3801         (build_c_cast): Call require_complete_type except for casts to
3802         void types.
3803         (convert_for_assignment): Call require_complete_type.
3804
3805 2007-09-25  Revital Eres  <eres@il.ibm.com>
3806
3807         * config/spu/spu.md: Fix doloop pattern.
3808
3809 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
3810
3811         * config/bfin/bfin.c (expand_prologue_reg_save,
3812         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
3813         and ASTAT moved here...
3814         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
3815         ... from here.  New argument ALL; callers changed.
3816         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
3817         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
3818         have the "saveall" attribute.
3819
3820 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
3821
3822         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
3823         bogus target macro.
3824         (INCOMING_REGNO, OUTGOING_REGNO): Define.
3825         * config/mmix/mmix.c (mmix_opposite_regno): New function.
3826         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
3827
3828         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
3829         with REG_P tests before REGNO access.
3830
3831 2007-09-24  DJ Delorie  <dj@redhat.com>
3832
3833         PR target/31482
3834         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
3835         constraint.
3836         (movqicc_<code>_<mode>): Likewise.
3837         (movhicc_<code>_<mode>): Likewise.
3838
3839 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3840
3841         PR target/33184
3842         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
3843         register for reload.
3844
3845 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
3846
3847         PR c++/14688
3848         * config/i386/i386.c (ix86_comp_type_attributes): Check
3849         METHOD_TYPE too.
3850
3851 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3852
3853         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
3854         "move.l %a4,%a4" to produce nops.
3855         * config/m68k/m68k.c (override_options): Reset align options,
3856         if neccessary align macro isn't avaible.
3857
3858 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3859
3860         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
3861
3862 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3863
3864         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
3865         the basic block.
3866         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
3867         reload is completed.
3868         (peephole pattern): Convert most of them to RTL peephole pattern.
3869
3870 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3871
3872         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
3873         (moved from fp compare patterns).
3874         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
3875         Cleanup predicates to relieve reload.
3876         (conditional_trap): Reject conditional trap with fp condition.
3877         * config/m68k/predicates.md (fp_src_operand): New, reject
3878         certain constants early.
3879
3880 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
3881
3882         * final.c (final_scan_insn): Remove accidentally duplicated code.
3883
3884 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3885
3886         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
3887         Allow --with-tune=cell and --with-cpu=cell.
3888
3889 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
3890
3891         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
3892         * config/rs6000/rs6000.opt (swdiv): Change option to ...
3893         (recip): this.
3894         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
3895         function.
3896         (TARGET_BUILTIN_RECIPROCAL): Use it.
3897         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
3898         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
3899         (rs6000_emit_swrsqrtsf): New.
3900         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
3901         rsqrtf. 
3902         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
3903         (divsf3): Remove swdiv support.
3904         (recipsf3): New.
3905         (rsqrtsf2): New.
3906         (rsqrt_internal1): New.
3907         (divdf3): Remove swdiv support.
3908         (reciptdf3): New.
3909
3910 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
3911
3912         PR c++/33506
3913         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
3914         field.
3915         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
3916         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
3917         * tree.c (type_hash_eq): For FUNCTION_TYPE use
3918         lang_hooks.type.type_hash_eq in addition to generic tests.
3919
3920 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
3921         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
3922
3923         * tree-inline.h (eni_weights): Add field target_builtin_cost to
3924         reflect the cost per call to a target specific builtin.
3925         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
3926         call to a target specific builtin, then use target_builtin_call_cost.
3927         (init_inline_once): Initialize target_builtin_call_cost field.
3928
3929 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
3930
3931         PR middle-end/33472
3932         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
3933         complex types.
3934
3935 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
3936
3937         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
3938         * configure: Regenerated.
3939
3940 2007-09-23  Ollie Wild  <aaw@google.com>
3941
3942         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
3943         operand.
3944         (get_pointer_modulus_and_residue): New function.
3945
3946 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3947
3948         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
3949         combine an SC return value into a single register.
3950
3951 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3952
3953         * opth-gen.awk (target_flags_explicit): Declare.
3954         * toplev.h (target_flags_explicit): Delete declaration.
3955         * toplev.c (target_flags): Likewise.
3956         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
3957         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
3958         Never return true for TARGET_MIPS16.
3959         * config/mips/mips.c (mips_llsc): Delete.
3960         (mips_handle_option): Remove -mllsc handling.
3961         (mips_strip_unspec_address): Tweak comment.
3962         * config/mips/mips.opt (mllsc): Use a target mask.
3963
3964 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3965
3966         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
3967         word_mode as well as Pmode.
3968
3969 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3970
3971         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
3972         parameters from word_mode to the subword type if such a truncation
3973         is not a no-op.
3974
3975 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3976
3977         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
3978         * configure: Regenerated.
3979
3980 2007-09-23  Jan Hubicka  <jh@suse.cz>
3981
3982         * params.def (INLINE_CALL_COST): Set to 12.
3983         * invoke.texi (inline-call-cost): Update default value.
3984
3985 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3986
3987         * config/alpha/alpha.md (movti): Use operand_subword for the split.
3988
3989 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
3990             Revital Eres  <eres@il.ibm.com>
3991
3992         * modulo-sched.c (doloop_register_get): Rewrite the loop which
3993         checks whether the count_reg is found outside the control part.
3994
3995 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3996
3997         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
3998         instead of checking CALL_EXPR_FN directly to test for builtins.
3999         If error or warning attributes are present, print
4000         error resp. warning.
4001         * c-common.c (handle_error_attribute): New function.
4002         (c_common_attribute_table): Add error and warning
4003         attributes.
4004         * doc/extend.texi: Document error and warning attributes.
4005
4006         * tree.h (block_nonartificial_location): New prototype.
4007         * tree.c (block_nonartificial_location): New function.
4008         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
4009         if artificial attribute is present on abstract inline decl.
4010         * c-common.c (handle_artificial_attribute): New function.
4011         (c_common_attribute_table): Add artificial attribute.
4012         * final.c (override_filename, override_linenum): New variables.
4013         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
4014         and override_linenum if inside of a block inlined from
4015         __attribute__((__artificial__)) function.
4016         (notice_source_line): Honor override_filename and override_linenum.
4017         * doc/extend.texi: Document __attribute__((__artificial__)).
4018         * config/i386/emmintrin.h: Add __artificial__ attribute to
4019         all __always_inline__ functions.
4020         * config/i386/mmintrin.h: Likewise.
4021         * config/i386/tmmintrin.h: Likewise.
4022         * config/i386/mm3dnow.h: Likewise.
4023         * config/i386/pmmintrin.h: Likewise.
4024         * config/i386/ammintrin.h: Likewise.
4025         * config/i386/xmmintrin.h: Likewise.
4026         * config/i386/smmintrin.h: Likewise.
4027         * config/i386/bmmintrin.h: Likewise.
4028         * config/i386/mmintrin-common.h: Likewise.
4029
4030         PR middle-end/28755
4031         * expr.c (expand_constructor): New function.
4032         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
4033         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
4034         CONSTRUCTOR.
4035
4036 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4037
4038         * config/mips/mips.c (dump_constants_1): Generalize to include
4039         fractional and accumulator modes.
4040
4041 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4042
4043         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
4044         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
4045         flags for MIPS16.
4046         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
4047         TARGET_HARD_FLOAT when testing whether -mpaired-single is
4048         supported.
4049         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
4050         TARGET_DSP.
4051         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
4052         TARGET_DSPR2.
4053         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
4054         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
4055         TARGET_HARD_FLOAT.
4056         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
4057         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
4058         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
4059         throughout.
4060         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
4061         TARGET_HAS_DSPR2.
4062         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
4063         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
4064         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
4065
4066 2007-09-22  Jason Merrill  <jason@redhat.com>
4067
4068         PR c++/19407
4069         * attribs.c (lookup_attribute_spec): Split out...
4070         (decl_attributes): From here.
4071         * tree.h: Declare it.
4072
4073 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4074
4075         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
4076
4077 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4078
4079         * tree-inline.c (remap_type_1): Correctly chain variants.
4080
4081 2007-09-22  Richard Guenther  <rguenther@suse.de>
4082
4083         PR tree-optimization/33146
4084         * fold-const.c (fold_binary): Use the original tree
4085         for negating.
4086         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
4087         also changes "sign".
4088
4089 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4090
4091         PR target/32325
4092         * except.c (finish_eh_generation): Call commit_edge_insertions if
4093         there are insns queued on the entry edge.
4094         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
4095         the entry edge.
4096
4097 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4098
4099         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
4100
4101 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
4102
4103         * config/i386/i386.c: Delete trailing whitespace.
4104         * config/i386/i386.h: Ditto.
4105         * config/i386/bmmintrin.h: Ditto.
4106         * config/i386/sync.md: Ditto.
4107         * config/i386/ppro.md: Ditto.
4108         * config/i386/mmx.md: Ditto.
4109         * config/i386/constraints.md: Ditto.
4110         * config/i386/sse.md: Ditto.
4111         * config/i386/athlon.md: Ditto.
4112         * config/i386/i386.md: Ditto.
4113
4114 2007-09-21  Richard Guenther  <rguenther@suse.de>
4115
4116         PR tree-optimization/33508
4117         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
4118         quadratic loop by keeping a bitmap of variables we have
4119         to clobber all subvariables for.
4120         (set_initial_properties): Likewise.
4121
4122 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
4123
4124         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
4125
4126 2007-09-20  Nigel Stephens  <nigel@mips.com>
4127             Chao-ying Fu  <fu@mips.com>
4128
4129         * c-decl.c (finish_declspecs): When _Sat is used without
4130         _Fract or _Accum, set the default type to cts_fract.
4131         This avoids a warning of "type defaults to int".
4132
4133 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4134
4135         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
4136         bit-fields wider than one bit.
4137
4138 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
4139
4140         PR debug/33316
4141         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
4142         DECL_NAME.
4143         * dbxout.c (dbxout_type): Likewise.
4144
4145         PR c/33238
4146         PR c/27301
4147         * gimplify.c (gimplify_vla_decl): New function.
4148         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
4149         Call it.
4150         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
4151
4152 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4153
4154         * doc/invoke.texi (-minterlink-mips16): Document.
4155         * config/mips/mips.opt (minterlink-mips16): New option.
4156         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
4157         -minterlink-mips16
4158
4159 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4160
4161         * doc/extend.texi (Attribute Syntax): Remove old speculative
4162         future direction.
4163
4164 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
4165
4166         * combine.c: Include cgraph.h.
4167         (setup_incoming_promotions): Rework to allow more aggressive
4168         elimination of sign extensions when all call sites of the
4169         current function are known to lie within the current unit.
4170
4171 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4172
4173         * dse.c (find_shift_sequence): No-op rework of control flow.
4174
4175 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
4176
4177         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
4178         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
4179
4180 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4181
4182         * cfgexpand.c (dump_stack_var_partition): Use the correct
4183         index for the offset.
4184
4185 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
4186
4187         * config/mips/sde.h: Switch to GPLv3.
4188
4189 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
4190
4191         * tree-sra.c (decide_block_copy): Decide if there are groups.
4192
4193 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
4194
4195         * config/m68k/m68k.c (output_move_himode): Remove jump table
4196         recognition.
4197         config/m68k/m68k.md (lea): Likewise.
4198         * config/m68k/m68k.c (print_operand_address): Use simple pc
4199         relative addressing.
4200
4201 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4202
4203         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
4204         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
4205         default definition.
4206         (asm_insn_count): Pass template as second argument to it.
4207         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4208         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4209         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4210         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4211         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4212         (sh_insn_length_adjustment): Pass template as second argument to it.
4213         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
4214
4215         * config/bfin/bfin.md (define_asm_attributes): New.
4216
4217 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
4218
4219         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
4220         to tm_file.
4221         * config/bfin/print-sysroot-suffix.sh: New.
4222         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
4223         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4224         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4225         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
4226         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4227         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4228         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
4229         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4230         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4231         (linux-sysroot-suffix.h): New target.
4232         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
4233         (mspecld-anomaly): Likewise.
4234         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
4235         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
4236         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
4237         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
4238         (bfin_si_revision): Declare.
4239         (bfin_workarounds): Declare.
4240         (WA_SPECULATIVE_LOADS): Define.
4241         (ENABLE_WA_SPECULATIVE_LOADS): Define.
4242         (WA_SPECULATIVE_SYNCS): Define.
4243         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
4244         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
4245         (LIB_SPEC): Add %s to the linker scripts.
4246         Use proper linker script for bf522, bf525, bf527,
4247         bf538, bf539, bf542, bf544, bf548, and bf549.
4248         * config/bfin/bfin.c (bfin_si_revision): Define.
4249         (bfin_workarounds): Define.
4250         (struct bfin_cpu): New.
4251         (bfin_cpus): New.
4252         (bfin_handle_option): Handle silicon revision part of -mcpu option.
4253         (override_options): Set bfin_workarounds.
4254         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
4255         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
4256         ENABLE_WA_SPECULATIVE_LOADS.
4257         (bfin_reorg): Likewise.
4258         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
4259         macros for bf522, bf525, bf527, bf538, bf539,
4260         bf542, bf544, bf548, and bf549.
4261         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
4262         Don't define __ID_SHARED_LIB__ when -msep-data.
4263         (TARGET_DEFAULT): Define as 0.
4264         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
4265         * doc/invoke.texi (Blackfin Options): Document silicon
4266         revision part of -mcpu option and it now accepts bf522, bf525,
4267         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
4268
4269 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4270
4271         * alias.c (memory_modified_1): Deconstify.
4272         (memory_modified_in_insn_p): Don't use const_note_stores.
4273         * rtl.h (const_note_stores): Delete.
4274         * rtlanal.c (const_note_stores): Likewise.
4275
4276 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4277
4278         * dse.c (find_shift_sequence): Temporarily revert to forbidding
4279         word shifts.
4280
4281 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4282
4283         PR target/33388
4284         PR target/33397
4285         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
4286         (addsi_small_int): Likewise.
4287         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
4288         (one_cmplsi2): Likewise.
4289         (negsi2): Delete.
4290         (enter_func): Expand insn using hard_frame_pointer_rtx and
4291         stack_pointer_rtx.
4292         (*enter_func): New.
4293         * config/fr30/fr30.c (fr30_expand_prologue): Check for
4294         hard_frame_pointer_rtx instead of using REGNO() check.
4295         Properly sign extend GEN_INT() argument.
4296
4297 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4298
4299         * config/m68k/m68k.c (override_options): Remove USE_GAS,
4300         use %. syntax.
4301         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
4302         alternatives with just jcc.
4303         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
4304         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
4305         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
4306         dbge_hi, dbge_si): Likewise.
4307
4308 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4309
4310         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
4311         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
4312         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
4313         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
4314         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
4315
4316 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
4317
4318         * config/m68k/m68k-devices.def (51qe): New device.
4319         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
4320         to all uses of FL_FOR_isa_c for compatibility.
4321         (all_microarchs): Add cfv1 microarchitecture.
4322         (m68k_handle_option): Handle m51qe option.
4323         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
4324         (TUNE_CFV1): New macro.
4325         (enum uarch_type): Add ucfv1.
4326         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
4327         
4328 2007-09-18  Richard Guenther  <rguenther@suse.de>
4329
4330         PR tree-optimization/31863
4331         * tree-ssa-structalias.c (create_variable_info_for): Always
4332         free the fieldstack.
4333
4334 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
4335
4336         * opts.c (decode_options): Enable vectorization under -O3.
4337
4338 2007-09-18  Richard Guenther  <rguenther@suse.de>
4339
4340         PR tree-optimization/33340
4341         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
4342         SSA_NAMEs that occur in abnormal PHI nodes.
4343
4344 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4345
4346         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
4347         Don't use const_get_call_expr_in.
4348         * tree-gimple.c (const_get_call_expr_in): Delete.
4349         * tree-gimple.h (const_get_call_expr_in): Likewise.
4350
4351 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4352
4353         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
4354         not yet have a basic block.
4355         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
4356
4357 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4358
4359         * config/mips/mips.c (mips_file_start): Add ".previous" directives
4360         to both ".section"s.
4361
4362 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4363
4364         * config/mips/mips.c (mips_output_mi_thunk): Use
4365         mips_function_ok_for_sibcall and const_call_insn_operand
4366         to determine if a direct sibcall is allowed.  Use
4367         mips_classify_symbol to determine a global pointer is needed.
4368
4369 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4370
4371         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
4372
4373 2007-09-17  Chao-ying Fu  <fu@mips.com>
4374             Nigel Stephens  <nigel@mips.com>
4375
4376         * config/fixed-bit.h: New file.
4377         * config/fixed-bit.c: New file.
4378         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
4379
4380 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
4381
4382         * c-format.h (format_kind_info): Add alloc_char field.
4383         * c-format.c (scanf_flag_specs): Add 'm'.
4384         (scanf_flag_pairs): Add 'a', 'm' pair.
4385         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
4386         (format_types_orig): Add alloc_char fields.
4387         (check_format_info_main): Rename aflag to alloc_flag.
4388         Handle fki->alloc_char. modifier after width and before length
4389         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
4390         length modifiers as well.
4391         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
4392
4393         PR middle-end/33423
4394         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
4395         returned by build_call_expr.
4396
4397 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4398
4399         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
4400         NULL for variable-sized records too.
4401         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
4402
4403 2007-09-17  Tom Tromey  <tromey@redhat.com>
4404
4405         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
4406         (c_builtin_function): Likewise.
4407         (grokdeclarator): Likewise.
4408
4409 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
4410
4411         PR rtl-optimization/26449
4412         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
4413         (seq_insns_valid_p): Removed.
4414
4415 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4416
4417         * tree-nomudflap.c (gate_mudflap): New static function.
4418         (pass_mudflap_1): Use it as gate function.
4419         (pass_mudflap_2): Likewise.
4420
4421 2007-09-17  Jan Hubicka  <jh@suse.cz>
4422
4423         PR middle-end/33348
4424         PR target/33406
4425         * loop-invariant.c (move_invariant_reg): Unshare sequence.
4426
4427 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
4428
4429         PR tree-optimization/33319
4430         * tree-vect-analyze.c (vect_same_range_drs): New.
4431         (vect_vfa_range_equal): New.
4432         (vect_is_duplicate_ddr): Removed.
4433         (vect_mark_for_runtime_alias_test): Do not perform marking when
4434         optimizing for size or max_param for alias checking is zero.
4435         Move the function before vect_analyze_data_ref_dependence.
4436         (vect_analyze_data_ref_dependence): Add call to
4437         vect_mark_for_runtime_alias_test in two cases when dependence
4438         is not clear.
4439         (vect_analyze_data_ref_dependences): Do not call to
4440         vect_mark_for_runtime_alias_test.
4441         (vect_prune_runtime_alias_test_list): New.
4442         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
4443         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
4444         Update vec_outside_cost.
4445         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
4446         (vect_create_cond_for_alias_checks): Build the base address of data
4447         reference from DR_GROUP_FIRST_DR.
4448         (vect_loop_versioning): New.
4449         (vect_transform_loop): Add a call to vect_loop_versioning.
4450         Remove factored out code.
4451
4452 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4453
4454         PR middle-end/33273
4455         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
4456         to BLKmode.
4457
4458 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4459
4460         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
4461         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
4462         Fix the call to insn_rtx_cost.  Skip access sizes that require a
4463         real truncation of the store register.  Use convert_move instead
4464         of gen_lowpart when narrowing the result.
4465         (replace_read): Use convert_move instead of gen_lowpart when
4466         narrowing the store rhs.
4467
4468 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4469
4470         * config/mips/mips.md (SHORT): Fix long line.
4471         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
4472         to QImode and HImode.
4473
4474 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4475
4476         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
4477
4478 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
4479
4480         * tree-parloops.c: New file.
4481         * tree-ssa-operands.h (free_stmt_operands): Declare.
4482         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
4483         block.
4484         * tree-pass.h (pass_parallelize_loops): Declare.
4485         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
4486         virtual operands.
4487         (build_omp_regions_1): Allow analysing just a single OMP region and
4488         its subregions.
4489         ( build_omp_regions_root, omp_expand_local): New functions.
4490         (build_omp_regions): Add argument to build_omp_regions_1 call.
4491         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
4492         autoparallelization is run.
4493         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
4494         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
4495         pass_parallelize_loops): New.
4496         * common.opt (ftree-parallelize-loops): New.
4497         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
4498         parallelize_loops): Declare.
4499         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
4500         * Makefile.in (tree-parloops.o): Added.
4501         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
4502         New functions.
4503         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
4504         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
4505         one extra edge as well.
4506         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
4507         Use VEC_free to free doms vector.
4508         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
4509         operands.  Recompute operand caches in the new function.
4510         (move_sese_region_to_fn): Update loop info.
4511         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
4512         * tree-ssa-operands.c (free_stmt_operands): New function.
4513
4514         * doc/passes.texi: Document autoparallelization.
4515         * doc/invoke.texi (-ftree-parallelize-loops): New option.
4516
4517 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4518
4519         PR target/33062
4520         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
4521         TYPE_PRECISION.
4522
4523 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
4524
4525         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
4526         the VEC is not NULL.
4527         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
4528         get_vectype_for_scalar_type succeeded.
4529         (vectorizable_conversion): Likewise.
4530
4531 2007-09-14  Jan Hubicka  <jh@suse.cz>
4532
4533         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
4534         TARGET_64BIT.
4535
4536 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
4537
4538         PR target/33438
4539         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
4540         register when operands[2] equals operands[1].
4541         (remainderxf3): Ditto.
4542
4543 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
4544             Nigel Stephens  <nigel@mips.com>
4545
4546         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
4547         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
4548         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
4549         declaration.
4550         (_Unwind_ForcedUnwind): Likewise.
4551         (_Unwind_Resume): Likewise.
4552         (_Unwind_Resume_or_Rethrow): Likewise.
4553         (_Unwind_Backtrace): Likewise.
4554         (_Unwind_SjLj_RaiseException): Likewise.
4555         (_Unwind_SjLj_ForcedUnwind): Likewise.
4556         (_Unwind_SjLj_Resume): Likewise.
4557         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
4558         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
4559         to definition.
4560         (_Unwind_ForcedUnwind): Likewise.
4561         (_Unwind_Resume): Likewise.
4562         (_Unwind_Resume_or_Rethrow): Likewise.
4563         (_Unwind_Backtrace): Likewise.
4564         * unwind-compat.c (_Unwind_Backtrace): Likewise.
4565         (_Unwind_ForcedUnwind): Likewise.
4566         (_Unwind_RaiseException): Likewise.
4567         (_Unwind_Resume): Likewise.
4568         (_Unwind_Resume_or_Rethrow): Likewise.
4569
4570         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
4571         nomips16 mode when IN_LIBGCC2 with hard float.
4572
4573 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
4574
4575         * config/mips/sdemtk.opt: Update to GPLv3.
4576         * config/mips/sdemtk.h: Likewise.
4577
4578 2007-09-14  Nigel Stephens  <nigel@mips.com>
4579
4580         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
4581         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
4582         for mipsisa32-*-linux*.
4583
4584 2007-09-14  Nigel Stephens  <nigel@mips.com>
4585             David Ung  <davidu@mips.com>
4586             Thiemo Seufer  <ths@mips.com>
4587             Richard Sandiford  <richard@codesourcery.com>
4588
4589         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
4590         * configure.ac: Add a mipssde threading type.
4591         * configure: Regenerate.
4592         * config/mips/sdemtk.h: New file.
4593         * config/mips/t-sdemtk: Likewise.
4594         * config/mips/sdemtk.opt: Likewise.
4595         * gthr-mipssde.h: Likewise.
4596         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
4597         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
4598         (MIPS_ICACHE_SYNC): New macro, split from ...
4599         * config/mips/mips.md (clear_cache): ...here.
4600         * config/mips/mips.c (mips_save_reg_p): Check
4601         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
4602         (build_mips16_function_stub): Use targetm.strip_name_encoding.
4603         (build_mips16_call_stub): Likewise.
4604
4605 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
4606
4607         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
4608
4609 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
4610
4611         PR target/32337
4612         * config/ia64/ia64.c (find_gr_spill): Don't decrement
4613         current_frame_info.n_local_regs.  Don't return emitted local
4614         regs.
4615         (ia64_compute_frame_size): Improve unwind hack to put
4616         RP, PFS, FP in that order by allowing some of the registers
4617         been already emitted, as long as they are emitted to the
4618         desired register.
4619
4620 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4621
4622         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
4623         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
4624         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
4625
4626 2007-09-13  Eric Christopher  <echristo@apple.com>
4627             Kenneth Zadeck <zadeck@naturalbridge.com>
4628
4629         * dse.c (find_shift_sequence): New function.
4630         (replace_read): Add case to remove read if it requires shift.
4631         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
4632         
4633 2007-09-13  Tom Tromey  <tromey@redhat.com>
4634
4635         * c-common.c (fname_as_string): Update.
4636         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
4637         (c_lex_one_token): Update.  Add 'parser' argument.
4638         (c_parser_simple_asm_expr): Update.
4639         (c_parser_attributes): Update.
4640         (c_parser_asm_statement): Update.
4641         (c_parser_asm_operands): Update.
4642         (c_parser_peek_token): Update.
4643         (c_parser_peek_2nd_token): Update.
4644         * c-lex.c (c_lex_string_translate): Remove.
4645         (c_lex_return_raw_strings): Likewise.
4646         (c_lex_with_flags): Added 'lex_flags' argument.
4647         (lex_string): Added 'translate' argument.
4648         * c-pragma.h (c_lex_with_flags): Update.
4649         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
4650         (C_LEX_STRING_NO_TRANSLATE): New define.
4651         (C_LEX_RAW_STRINGS): Likewise.
4652
4653 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4654
4655         From Jie Zhang:
4656         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
4657         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
4658         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
4659         (bfin_init_builtins): Initialize __builtin_bfin_ones,
4660         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
4661         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
4662         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
4663         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
4664         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
4665         (bdesc_1arg): Add __builtin_bfin_ones.
4666         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
4667         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
4668         and __builtin_bfin_csqu_fr16.
4669         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
4670         (ones): New define_insn.
4671         (ssaddhi3_parts): New define_insn.
4672         (sssubhi3_parts): New define_insn.
4673         (flag_mulhi_parts): New define_insn.
4674
4675 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
4676
4677         * common.opt (femit-class-debug-always): Turn off by default.
4678
4679 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4680
4681         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
4682         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
4683
4684 2007-09-13  James E. Wilson  <wilson@specifix.com>
4685
4686         PR tree-optimization/33389
4687         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
4688         then set build_loads before returning.
4689
4690 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
4691             David Ung  <davidu@mips.com>
4692
4693         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
4694         {d}addiu and a negative immediate such that it works with MIPS16
4695         instructions.
4696         
4697 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4698
4699         PR bootstrap/33418
4700         * configure.ac (ld_vers): Support Linux linker.
4701         * configure: Regenerated.
4702
4703 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4704             Sandra Loosemore <sandra@codesourcery.com>
4705
4706         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
4707         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
4708         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
4709         nomips16 into decl attributes.
4710         (TARGET_INSERT_ATTRIBUTES): Override.
4711         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
4712         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
4713         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
4714         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
4715         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
4716         (mips_use_mips16_mode_p): Reimplement as a function that takes
4717         a decl and considers only decl attributes.  If the decl is nested
4718         function, use its parent attributes.
4719         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
4720         instead of SYMBOL_REF_MIPS16_FUNC_P.
4721         (mips_set_mips16_mode): Move call to sorry here from old
4722         mips_use_mips16_mode_p.
4723         (mflip_mips16_entry): New structure.
4724         (mflip_mips16_htab): New variable.
4725         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
4726         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
4727         (mips_merge_decl_attributes): New function.
4728         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
4729         Use mips_use_mips16_mode_p.
4730         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
4731         SYMBOL_REF_MIPS16_FUNC_P.
4732         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
4733
4734 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4735
4736         * c-parser.c (c_parser_struct_declaration): Check for a null return.
4737
4738 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4739
4740         PR driver/33309
4741         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
4742
4743 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
4744             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4745             Tony Linthicum  <tony.linthicum@amd.com>
4746
4747         * tree.h (function_args_iterator): New type to iterate over
4748         function arguments.
4749         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
4750         function arguments providing a pointer to the argument.
4751         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
4752         function arguments providing the argument.
4753         (function_args_iter_init): Inline function to initialize
4754         function_args_iterator.
4755         (function_args_iter_cond_ptr): Inline function to return the next
4756         pointer to hold the argument.
4757         (function_args_iter_cond): Inline function to return the next
4758         argument.
4759         (function_args_iter_cond_next): Advance the function args
4760         iterator.
4761         (stdarg_p): New function, return true if variable argument
4762         function.
4763         (prototype_p): New function, return true if function is
4764         prototyped.
4765         (function_args_count): New function, count the number of arguments
4766         of a function.
4767
4768         * tree.c (stdarg_p): New function, return true if variable
4769         argument function.
4770         (prototype_p): New function, return true if function is
4771         prototyped.
4772
4773         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4774         (TARGET_ROUND): New macro for the round/ptest instructions which
4775         are shared between SSE4.1 and SSE5.
4776         (OPTION_MASK_ISA_ROUND): Ditto.
4777         (OPTION_ISA_ROUND): Ditto.
4778         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4779         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4780
4781         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4782         (-mfused-madd): New switch to give users control over whether the
4783         compiler optimizes to use the multiply/add SSE5 instructions.
4784
4785         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
4786         m_ATHLON_K8_AMDFAM10, and change all uses.
4787         (enum pta_flags): Add PTA_SSE5.
4788         (ix86_handle_option): Turn off 3dnow if -msse5.
4789         (override_options): Add SSE5 support.
4790         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4791         instructions.
4792         (ix86_expand_sse_movcc): Add SSE5 support.
4793         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4794         vector type to the next largest size.
4795         (ix86_expand_sse5_pack): New function to use pperm to pack a
4796         vector type to the next smallest size.
4797         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4798         (IX86_BUILTIN_FMADDSD): Ditto.
4799         (IX86_BUILTIN_FMADDPS): Ditto.
4800         (IX86_BUILTIN_FMADDPD): Ditto.
4801         (IX86_BUILTIN_FMSUBSS): Ditto.
4802         (IX86_BUILTIN_FMSUBSD): Ditto.
4803         (IX86_BUILTIN_FMSUBPS): Ditto.
4804         (IX86_BUILTIN_FMSUBPD): Ditto.
4805         (IX86_BUILTIN_FNMADDSS): Ditto.
4806         (IX86_BUILTIN_FNMADDSD): Ditto.
4807         (IX86_BUILTIN_FNMADDPS): Ditto.
4808         (IX86_BUILTIN_FNMADDPD): Ditto.
4809         (IX86_BUILTIN_FNMSUBSS): Ditto.
4810         (IX86_BUILTIN_FNMSUBSD): Ditto.
4811         (IX86_BUILTIN_FNMSUBPS): Ditto.
4812         (IX86_BUILTIN_FNMSUBPD): Ditto.
4813         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4814         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4815         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4816         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4817         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4818         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4819         (IX86_BUILTIN_PPERM): Ditto.
4820         (IX86_BUILTIN_PERMPS): Ditto.
4821         (IX86_BUILTIN_PERMPD): Ditto.
4822         (IX86_BUILTIN_PMACSSWW): Ditto.
4823         (IX86_BUILTIN_PMACSWW): Ditto.
4824         (IX86_BUILTIN_PMACSSWD): Ditto.
4825         (IX86_BUILTIN_PMACSWD): Ditto.
4826         (IX86_BUILTIN_PMACSSDD): Ditto.
4827         (IX86_BUILTIN_PMACSDD): Ditto.
4828         (IX86_BUILTIN_PMACSSDQL): Ditto.
4829         (IX86_BUILTIN_PMACSSDQH): Ditto.
4830         (IX86_BUILTIN_PMACSDQL): Ditto.
4831         (IX86_BUILTIN_PMACSDQH): Ditto.
4832         (IX86_BUILTIN_PMADCSSWD): Ditto.
4833         (IX86_BUILTIN_PMADCSWD): Ditto.
4834         (IX86_BUILTIN_PHADDBW): Ditto.
4835         (IX86_BUILTIN_PHADDBD): Ditto.
4836         (IX86_BUILTIN_PHADDBQ): Ditto.
4837         (IX86_BUILTIN_PHADDWD): Ditto.
4838         (IX86_BUILTIN_PHADDWQ): Ditto.
4839         (IX86_BUILTIN_PHADDDQ): Ditto.
4840         (IX86_BUILTIN_PHADDUBW): Ditto.
4841         (IX86_BUILTIN_PHADDUBD): Ditto.
4842         (IX86_BUILTIN_PHADDUBQ): Ditto.
4843         (IX86_BUILTIN_PHADDUWD): Ditto.
4844         (IX86_BUILTIN_PHADDUWQ): Ditto.
4845         (IX86_BUILTIN_PHADDUDQ): Ditto.
4846         (IX86_BUILTIN_PHSUBBW): Ditto.
4847         (IX86_BUILTIN_PHSUBWD): Ditto.
4848         (IX86_BUILTIN_PHSUBDQ): Ditto.
4849         (IX86_BUILTIN_PROTB): Ditto.
4850         (IX86_BUILTIN_PROTW): Ditto.
4851         (IX86_BUILTIN_PROTD): Ditto.
4852         (IX86_BUILTIN_PROTQ): Ditto.
4853         (IX86_BUILTIN_PROTB_IMM): Ditto.
4854         (IX86_BUILTIN_PROTW_IMM): Ditto.
4855         (IX86_BUILTIN_PROTD_IMM): Ditto.
4856         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4857         (IX86_BUILTIN_PSHLB): Ditto.
4858         (IX86_BUILTIN_PSHLW): Ditto.
4859         (IX86_BUILTIN_PSHLD): Ditto.
4860         (IX86_BUILTIN_PSHLQ): Ditto.
4861         (IX86_BUILTIN_PSHAB): Ditto.
4862         (IX86_BUILTIN_PSHAW): Ditto.
4863         (IX86_BUILTIN_PSHAD): Ditto.
4864         (IX86_BUILTIN_PSHAQ): Ditto.
4865         (IX86_BUILTIN_FRCZSS): Ditto.
4866         (IX86_BUILTIN_FRCZSD): Ditto.
4867         (IX86_BUILTIN_FRCZPS): Ditto.
4868         (IX86_BUILTIN_FRCZPD): Ditto.
4869         (IX86_BUILTIN_CVTPH2PS): Ditto.
4870         (IX86_BUILTIN_CVTPS2PH): Ditto.
4871         (IX86_BUILTIN_COMEQSS): Ditto.
4872         (IX86_BUILTIN_COMNESS): Ditto.
4873         (IX86_BUILTIN_COMLTSS): Ditto.
4874         (IX86_BUILTIN_COMLESS): Ditto.
4875         (IX86_BUILTIN_COMGTSS): Ditto.
4876         (IX86_BUILTIN_COMGESS): Ditto.
4877         (IX86_BUILTIN_COMUEQSS): Ditto.
4878         (IX86_BUILTIN_COMUNESS): Ditto.
4879         (IX86_BUILTIN_COMULTSS): Ditto.
4880         (IX86_BUILTIN_COMULESS): Ditto.
4881         (IX86_BUILTIN_COMUGTSS): Ditto.
4882         (IX86_BUILTIN_COMUGESS): Ditto.
4883         (IX86_BUILTIN_COMORDSS): Ditto.
4884         (IX86_BUILTIN_COMUNORDSS): Ditto.
4885         (IX86_BUILTIN_COMFALSESS): Ditto.
4886         (IX86_BUILTIN_COMTRUESS): Ditto.
4887         (IX86_BUILTIN_COMEQSD): Ditto.
4888         (IX86_BUILTIN_COMNESD): Ditto.
4889         (IX86_BUILTIN_COMLTSD): Ditto.
4890         (IX86_BUILTIN_COMLESD): Ditto.
4891         (IX86_BUILTIN_COMGTSD): Ditto.
4892         (IX86_BUILTIN_COMGESD): Ditto.
4893         (IX86_BUILTIN_COMUEQSD): Ditto.
4894         (IX86_BUILTIN_COMUNESD): Ditto.
4895         (IX86_BUILTIN_COMULTSD): Ditto.
4896         (IX86_BUILTIN_COMULESD): Ditto.
4897         (IX86_BUILTIN_COMUGTSD): Ditto.
4898         (IX86_BUILTIN_COMUGESD): Ditto.
4899         (IX86_BUILTIN_COMORDSD): Ditto.
4900         (IX86_BUILTIN_COMUNORDSD): Ditto.
4901         (IX86_BUILTIN_COMFALSESD): Ditto.
4902         (IX86_BUILTIN_COMTRUESD): Ditto.
4903         (IX86_BUILTIN_COMEQPS): Ditto.
4904         (IX86_BUILTIN_COMNEPS): Ditto.
4905         (IX86_BUILTIN_COMLTPS): Ditto.
4906         (IX86_BUILTIN_COMLEPS): Ditto.
4907         (IX86_BUILTIN_COMGTPS): Ditto.
4908         (IX86_BUILTIN_COMGEPS): Ditto.
4909         (IX86_BUILTIN_COMUEQPS): Ditto.
4910         (IX86_BUILTIN_COMUNEPS): Ditto.
4911         (IX86_BUILTIN_COMULTPS): Ditto.
4912         (IX86_BUILTIN_COMULEPS): Ditto.
4913         (IX86_BUILTIN_COMUGTPS): Ditto.
4914         (IX86_BUILTIN_COMUGEPS): Ditto.
4915         (IX86_BUILTIN_COMORDPS): Ditto.
4916         (IX86_BUILTIN_COMUNORDPS): Ditto.
4917         (IX86_BUILTIN_COMFALSEPS): Ditto.
4918         (IX86_BUILTIN_COMTRUEPS): Ditto.
4919         (IX86_BUILTIN_COMEQPD): Ditto.
4920         (IX86_BUILTIN_COMNEPD): Ditto.
4921         (IX86_BUILTIN_COMLTPD): Ditto.
4922         (IX86_BUILTIN_COMLEPD): Ditto.
4923         (IX86_BUILTIN_COMGTPD): Ditto.
4924         (IX86_BUILTIN_COMGEPD): Ditto.
4925         (IX86_BUILTIN_COMUEQPD): Ditto.
4926         (IX86_BUILTIN_COMUNEPD): Ditto.
4927         (IX86_BUILTIN_COMULTPD): Ditto.
4928         (IX86_BUILTIN_COMULEPD): Ditto.
4929         (IX86_BUILTIN_COMUGTPD): Ditto.
4930         (IX86_BUILTIN_COMUGEPD): Ditto.
4931         (IX86_BUILTIN_COMORDPD): Ditto.
4932         (IX86_BUILTIN_COMUNORDPD): Ditto.
4933         (IX86_BUILTIN_COMFALSEPD): Ditto.
4934         (IX86_BUILTIN_COMTRUEPD): Ditto.
4935         (IX86_BUILTIN_PCOMEQUB): Ditto.
4936         (IX86_BUILTIN_PCOMNEUB): Ditto.
4937         (IX86_BUILTIN_PCOMLTUB): Ditto.
4938         (IX86_BUILTIN_PCOMLEUB): Ditto.
4939         (IX86_BUILTIN_PCOMGTUB): Ditto.
4940         (IX86_BUILTIN_PCOMGEUB): Ditto.
4941         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4942         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4943         (IX86_BUILTIN_PCOMEQUW): Ditto.
4944         (IX86_BUILTIN_PCOMNEUW): Ditto.
4945         (IX86_BUILTIN_PCOMLTUW): Ditto.
4946         (IX86_BUILTIN_PCOMLEUW): Ditto.
4947         (IX86_BUILTIN_PCOMGTUW): Ditto.
4948         (IX86_BUILTIN_PCOMGEUW): Ditto.
4949         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4950         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4951         (IX86_BUILTIN_PCOMEQUD): Ditto.
4952         (IX86_BUILTIN_PCOMNEUD): Ditto.
4953         (IX86_BUILTIN_PCOMLTUD): Ditto.
4954         (IX86_BUILTIN_PCOMLEUD): Ditto.
4955         (IX86_BUILTIN_PCOMGTUD): Ditto.
4956         (IX86_BUILTIN_PCOMGEUD): Ditto.
4957         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4958         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4959         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4960         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4961         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4962         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4963         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4964         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4965         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4966         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4967         (IX86_BUILTIN_PCOMEQB): Ditto.
4968         (IX86_BUILTIN_PCOMNEB): Ditto.
4969         (IX86_BUILTIN_PCOMLTB): Ditto.
4970         (IX86_BUILTIN_PCOMLEB): Ditto.
4971         (IX86_BUILTIN_PCOMGTB): Ditto.
4972         (IX86_BUILTIN_PCOMGEB): Ditto.
4973         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4974         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4975         (IX86_BUILTIN_PCOMEQW): Ditto.
4976         (IX86_BUILTIN_PCOMNEW): Ditto.
4977         (IX86_BUILTIN_PCOMLTW): Ditto.
4978         (IX86_BUILTIN_PCOMLEW): Ditto.
4979         (IX86_BUILTIN_PCOMGTW): Ditto.
4980         (IX86_BUILTIN_PCOMGEW): Ditto.
4981         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4982         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4983         (IX86_BUILTIN_PCOMEQD): Ditto.
4984         (IX86_BUILTIN_PCOMNED): Ditto.
4985         (IX86_BUILTIN_PCOMLTD): Ditto.
4986         (IX86_BUILTIN_PCOMLED): Ditto.
4987         (IX86_BUILTIN_PCOMGTD): Ditto.
4988         (IX86_BUILTIN_PCOMGED): Ditto.
4989         (IX86_BUILTIN_PCOMFALSED): Ditto.
4990         (IX86_BUILTIN_PCOMTRUED): Ditto.
4991         (IX86_BUILTIN_PCOMEQQ): Ditto.
4992         (IX86_BUILTIN_PCOMNEQ): Ditto.
4993         (IX86_BUILTIN_PCOMLTQ): Ditto.
4994         (IX86_BUILTIN_PCOMLEQ): Ditto.
4995         (IX86_BUILTIN_PCOMGTQ): Ditto.
4996         (IX86_BUILTIN_PCOMGEQ): Ditto.
4997         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4998         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4999         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
5000         OPTION_MASK_ISA_ROUND for instructions that are shared between
5001         SSE4.1 and SSE5.
5002         (bdesc_2arg): Ditto.
5003         (bdesc_sse_3arg): Ditto.
5004         (enum multi_arg_type): New enum for describing the various SSE5
5005         intrinsic argument types.
5006         (bdesc_multi_arg): New table for SSE5 intrinsics.
5007         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
5008         (ix86_expand_multi_arg_builtin): New function for creating SSE5
5009         intrinsics.
5010         (ix86_expand_builtin): Add SSE5 intrinsic support.
5011         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
5012         operand instructions.
5013         (ix86_expand_sse5_multiple_memory): New function to split the
5014         second memory reference from SSE5 instructions.
5015         (type_has_variadic_args_p): Delete in favor of stdarg_p.
5016         (ix86_return_pops_args): Use stdarg_p to determine if the function
5017         has variable arguments.
5018         (ix86_setup_incoming_varargs): Ditto.
5019         (x86_this_parameter): Ditto.
5020
5021         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
5022         declaration.
5023         (ix86_expand_sse5_pack): Ditto.
5024         (ix86_sse5_valid_op_p): Ditto.
5025         (ix86_expand_sse5_multiple_memory): Ditto.
5026
5027         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
5028         constant for SSE5 support.
5029         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
5030         (UNSPEC_SSE5_TRUEFALSE): Ditto.
5031         (UNSPEC_SSE5_PERMUTE): Ditto.
5032         (UNSPEC_SSE5_ASHIFT): Ditto.
5033         (UNSPEC_SSE5_LSHIFT): Ditto.
5034         (UNSPEC_FRCZ): Ditto.
5035         (UNSPEC_CVTPH2PS): Ditto.
5036         (UNSPEC_CVTPS2PH): Ditto.
5037         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
5038         (PCOM_TRUE): Ditto.
5039         (COM_FALSE_S): Ditto.
5040         (COM_FALSE_P): Ditto.
5041         (COM_TRUE_S): Ditto.
5042         (COM_TRUE_P): Ditto.
5043         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
5044         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
5045         types.
5046         (memory attribute): Ditto.
5047         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5048         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
5049         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5050         (floor<mode>2): Ditto.
5051         (ceil<mode>2): Ditto.
5052         (btrunc<mode>2): Ditto.
5053         (nearbyintdf2): Ditto.
5054         (nearbyintsf2): Ditto.
5055         (sse_setccsf): Disable if SSE5.
5056         (sse_setccdf): Ditto.
5057         (sse5_setcc<mode>): New support for SSE5 conditional move.
5058         (sse5_pcmov_<mode>): Ditto.
5059
5060         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
5061         (SSEMODEF4): Ditto.
5062         (SSEMODEF2P): Ditto.
5063         (ssemodesuffixf4): New mode attribute for SSE5.
5064         (ssemodesuffixf2s): Ditto.
5065         (ssemodesuffixf2c): Ditto.
5066         (sserotatemax): Ditto.
5067         (ssescalarmode): Ditto.
5068         (sse_maskcmpv4sf3): Disable if SSE5.
5069         (sse_maskcmpv2df3): Ditto.
5070         (sse_vmmaskcmpv4sf3): Ditto.
5071         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
5072         instructions.
5073         (sse5_vmfmadd<mode>4): Ditto.
5074         (sse5_fmsub<mode>4): Ditto.
5075         (sse5_vmfmsub<mode>4): Ditto.
5076         (sse5_fnmadd<mode>4): Ditto.
5077         (sse5_vmfnmadd<mode>4): Ditto.
5078         (sse5_fnmsub<mode>4): Ditto.
5079         (sse5_vmfnmsub<mode>4): Ditto.
5080         (sse5i_fmadd<mode>4): Ditto.
5081         (sse5i_fmsub<mode>4): Ditto.
5082         (sse5i_fnmadd<mode>4): Ditto.
5083         (sse5i_fnmsub<mode>4): Ditto.
5084         (sse5i_vmfmadd<mode>4): Ditto.
5085         (sse5i_vmfmsub<mode>4): Ditto.
5086         (sse5i_vmfnmadd<mode>4): Ditto.
5087         (sse5i_vmfnmsub<mode>4): Ditto.
5088         (mulv16qi3): Add SSE5 support.
5089         (mulv4si3): Ditto.
5090         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
5091         (sse2_mulv4si3): Disable if SSE5.
5092         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
5093         (sse4_1_roundps): Ditto.
5094         (sse4_1_roundsd): Ditto.
5095         (sse4_1_roundss): Ditto.
5096         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
5097         be generated.
5098         (sse_maskcmpsf3): Ditto.
5099         (sse_vmmaskcmpv4sf3): Ditto.
5100         (sse2_maskcmpv2df3): Ditto.
5101         (sse2_maskcmpdf3): Ditto.
5102         (sse2_vmmaskcmpv2df3): Ditto.
5103         (sse2_eq<mode>3): Ditto.
5104         (sse2_gt<mode>3): Ditto.
5105         (sse5_pcmov_<mode>): Add SSE5 support.
5106         (vec_unpacku_hi_v16qi): Ditto.
5107         (vec_unpacks_hi_v16qi): Ditto.
5108         (vec_unpacku_lo_v16qi): Ditto.
5109         (vec_unpacks_lo_v16qi): Ditto.
5110         (vec_unpacku_hi_v8hi): Ditto.
5111         (vec_unpacks_hi_v8hi): Ditto.
5112         (vec_unpacku_lo_v8hi): Ditto.
5113         (vec_unpacks_lo_v8hi): Ditto.
5114         (vec_unpacku_hi_v4si): Ditto.
5115         (vec_unpacks_hi_v4si): Ditto.
5116         (vec_unpacku_lo_v4si): Ditto.
5117         (vec_unpacks_lo_v4si): Ditto.
5118         (sse5_pmacsww): New SSE5 intrinsic insn.
5119         (sse5_pmacssww): Ditto.
5120         (sse5_pmacsdd): Ditto.
5121         (sse5_pmacssdd): Ditto.
5122         (sse5_pmacssdql): Ditto.
5123         (sse5_pmacssdqh): Ditto.
5124         (sse5_pmacsdqh): Ditto.
5125         (sse5_pmacsswd): Ditto.
5126         (sse5_pmacswd): Ditto.
5127         (sse5_pmadcsswd): Ditto.
5128         (sse5_pmadcswd): Ditto.
5129         (sse5_pcmov_<move>): Conditional move support on SSE5.
5130         (sse5_phaddbw): New SSE5 intrinsic insn.
5131         (sse5_phaddbd): Ditto.
5132         (sse5_phaddbq): Ditto.
5133         (sse5_phaddwd): Ditto.
5134         (sse5_phaddwq): Ditto.
5135         (sse5_phadddq): Ditto.
5136         (sse5_phaddubw): Ditto.
5137         (sse5_phaddubd): Ditto.
5138         (sse5_phaddubq): Ditto.
5139         (sse5_phadduwd): Ditto.
5140         (sse5_phadduwq): Ditto.
5141         (sse5_phaddudq): Ditto.
5142         (sse5_phsubbw): Ditto.
5143         (sse5_phsubwd): Ditto.
5144         (sse5_phsubdq): Ditto.
5145         (sse5_pperm): Ditto.
5146         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
5147         (sse5_pperm_zero_v16qi_v8hi): Ditto.
5148         (sse5_pperm_sign_v8hi_v4si): Ditto.
5149         (sse5_pperm_zero_v8hi_v4si): Ditto.
5150         (sse5_pperm_sign_v4si_v2di): Ditto.
5151         (sse5_pperm_sign_v4si_v2di): Ditto.
5152         (sse5_pperm_pack_v2di_v4si): Ditto.
5153         (sse5_pperm_pack_v4si_v8hi): Ditto.
5154         (sse5_pperm_pack_v8hi_v16qi): Ditto.
5155         (sse5_perm<mode>): New SSE5 intrinsic insn.
5156         (rotl<mode>3): Ditto.
5157         (sse5_rotl<mode>3): Ditto.
5158         (sse5_ashl<mode>3): Ditto.
5159         (sse5_lshl<mode>3): Ditto.
5160         (sse5_frcz<mode>2): Ditto.
5161         (sse5s_frcz<mode>2): Ditto.
5162         (sse5_cvtph2ps): Ditto.
5163         (sse5_cvtps2ph): Ditto.
5164         (sse5_vmmaskcmp<mode>3): Ditto.
5165         (sse5_com_tf<mode>3): Ditto.
5166         (sse5_maskcmp<mode>3): Ditto.
5167         (sse5_maskcmp_uns<mode>3): Ditto.
5168         (sse5_maskcmp_uns2<mode>3): Ditto.
5169         (sse5_pcom_tf<mode>3): Ditto.
5170         
5171         * config/i386/predicates.md (const_0_to_31_operand): New predicate
5172         to match 0..31.
5173         (sse5_comparison_float_operator): New predicate to match the
5174         comparison operators supported by the SSE5 com instruction.
5175         (ix86_comparison_int_operator): New predicate to match just the
5176         signed int comparisons.
5177         (ix86_comparison_uns_operator): New predicate to match just the
5178         unsigned int comparisons.
5179
5180         * doc/invoke.texi (-msse5): Add documentation.
5181         (-mfused-madd): Ditto.
5182
5183         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
5184
5185         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
5186         mmintrin-common.h.
5187         (x86_64-*-*): Ditto.
5188
5189         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
5190
5191         * config/i386/bmmintrin.h: New file, provide common x86 compiler
5192         intrinisics for SSE5.
5193
5194         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
5195         mmintrin-common.h.
5196
5197         * config/i386/mmintrin-common.h: New file, to contain common
5198         instructions between SSE4.1 and SSE5.
5199
5200         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
5201         FOREACH_FUNCTION_ARGS to iterate over the argument list.
5202         (gen_regparm_prefix): Ditto.
5203
5204         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
5205         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
5206         prototype_p to determine if a function is prototyped.
5207
5208 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
5209
5210         * config/dfp-bit.c (dfp_conversion_exception): New function.
5211         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
5212         (DFP_TO_INT): Ditto.
5213         (INT_TO_DFP): Ditto.
5214         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
5215
5216 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
5217
5218         PR target/32338
5219         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
5220         before sp restoration even when total_size is 0, but
5221         frame_pointer_needed.
5222
5223 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
5224
5225         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
5226         (xtensa_copy_incoming_a7): Use start_sequence instead of
5227         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
5228         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
5229         of the saveregs sequence.
5230
5231 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
5232
5233         * c-tree.h (grokfield): Add a "tree *" argument.
5234         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
5235         Chain nested decl attributes to it.  Don't call decl_attributes here.
5236         (groktypename): Pass grokdeclarator a pointer to the attribute list.
5237         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
5238         (grokfield): Take a pointer to the decl's attributes and pass
5239         it to grokdeclarator.
5240         * c-parser.c (c_parser_struct_declaration): Update the calls to
5241         grokfield.  Call decl_attributes for anonymous struct and union
5242         fields.
5243
5244 2007-09-12  Jan Hubicka  <jh@suse.cz>
5245
5246         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
5247
5248 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5249
5250         PR tree-optimization/32377
5251         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
5252         between positive and negative dependence distance using DDR_REVERSED_P.
5253
5254 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
5255
5256         PR tree-optimization/33373
5257         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
5258         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
5259
5260 2007-09-12  Jan Hubicka  <jh@suse.cz>
5261
5262         PR target/33393
5263         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
5264         for !SSE_MATH
5265
5266 2007-09-12  Christian Bruel  <christian.bruel@st.com>
5267
5268         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
5269         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
5270         
5271 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5272
5273         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
5274         for oprnd1 if not required.
5275         (vectorizable_operation): Use scalar operand in SLP in case of 
5276         shift with scalar argument.
5277
5278 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5279
5280         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
5281         to 1.
5282
5283 2007-09-11  James E. Wilson  <wilson@specifix.com>
5284
5285         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
5286         TARGET_UNWIND_INFO is defined.
5287         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
5288         after definition.
5289
5290 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5291
5292         * config/sh/sh.c (calc_live_regs): Use
5293         current_function_saves_all_registers instead of
5294         current_function_has_nonlocal_label.
5295         (sh_allocate_initial_value): Likewise.
5296         (sh_get_pr_initial_val): Likewise.
5297         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
5298         * config/sh/sh.md (load_ra): Likewise.
5299
5300 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
5301
5302         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
5303
5304         PR target/33360
5305         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
5306         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
5307
5308 2007-09-12  Sa Liu  <saliu@de.ibm.com>
5309
5310         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
5311         operands to DFmode GE or LE compares.
5312
5313 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
5314
5315         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
5316         REG_CLASS_NAMES): Add P0REGS.
5317         (REGNO_REG_CLASS): Return it where appropriate.
5318         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
5319         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
5320         * doc/md.texi (Blackfin family): Document 'q' constraints.
5321
5322 2007-09-11  Steve Kenton  <skenton@ou.edu>
5323
5324         * pa/linux-unwind.h: Guard with inhibit_libc.
5325         * pa/hpux-unwind.h: Likewise.
5326
5327 2007-09-11  David Daney  <ddaney@avtrex.com>
5328
5329         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
5330         * doc/install.texi: Document new --with-llsc and --without-llsc
5331         options.
5332         * config.gcc: Handle --with-llsc and --without-llsc configure options.
5333         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
5334         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
5335         ISA_HAS_SYNC.
5336         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
5337         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5338         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5339         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5340         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
5341         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
5342         * config/mips/mips.opt (mllsc): New option.
5343         * config/mips/mips.c (mips_llsc): Define variable.
5344         (mips_handle_option): Handle mllsc option.
5345         (override_options): Set mips_print_operand_punct for '|' and '-'.
5346         (print_operand): Add new %| and %- operand codes.
5347         * config/mips/mips.h (mips_llsc_setting): New enum type.
5348         (mips_llsc): Declare.
5349         (OPTION_DEFAULT_SPECS): Add llsc handling.
5350         (GENERATE_SYNC): New macro.
5351         (GENERATE_LL_SC): New macro.
5352         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
5353         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5354         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
5355         in %| and %- operand codes.
5356
5357 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
5358
5359         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
5360         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
5361
5362 2007-09-11  Jason Merrill  <jason@redhat.com>
5363
5364         PR middle-end/27945
5365         * stor-layout.c (layout_decl): Do pack variable size fields.    
5366
5367 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
5368
5369         * config/m68k/predicates.md (movsi_const0_operand,
5370         non_symbolic_call_operand): New predicates.
5371
5372         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
5373         New constraints.
5374         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
5375         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
5376         CW, CZ, CS, Ap and Ac.
5377
5378         * config/m68k/m68k.md (UNSPEC_IB): New constant.
5379         (constraints.md): New include.
5380         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
5381         opx_mem, opy_mem, op_mem, guess, split): New attributes.
5382         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
5383         Specify attributes.
5384         (pushdi): Add split.
5385         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
5386         attributes.  Split tstsi_internal_68020_cf from it.
5387         (tstsi_internal_68020_cf): New pattern.
5388         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
5389         (tst<mode>_cf): Specify attributea.
5390         (cmpsi_cf): Name pattern.  Specify attributes.
5391         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
5392         (pushexthisi_const): Fix to use alternatives.  Specify
5393         attributes.
5394         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
5395         from it.  Fix to use alternatives.  Specify attributes.
5396         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
5397         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
5398         attributes.
5399         (movsf_cf_soft): Specify attributes.
5400         (movdf_cf_soft): Add split.
5401         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
5402         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
5403         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
5404         (truncdfsf2_68881): Name pattern.  Specify attributes.
5405         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
5406         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
5407         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
5408         Specify attributes.
5409         (addsi3_5200): Fix to use alternatives.  Specify attributes.
5410         Add splits.
5411         (add<mode>3_cf, subdi_dishl32): Specify attributes.
5412         (subsi3): Add alternative for subq.l.  Specify attributes.
5413         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
5414         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
5415         attributes.
5416         (umulhisi3): Specify attributes.
5417         (mulhisisi3_z): Name pattern.  Specify attributes.
5418         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
5419         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
5420         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
5421         bsetmemqi): Specify attributes.
5422         (bsetmemqi_ext): Name pattern.  Specify attributes.
5423         (bclrmemqi): Specify attributes.
5424         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
5425         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
5426         attributes.
5427         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
5428         pattern.  Specify attributes.
5429         (jump): Specify attributes.
5430         (tablejump_internal): Name pattern.  Specify attributes.
5431         (call_value): Split into non_symbolic_call_value,
5432         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
5433         alternatives.  Specify attributes.
5434         (non_symbolic_call_value, symbolic_call_value_jsr,
5435         symbolic_call_value_bsr): New patterns.
5436         (nop, return, unlink, indirect_jump): Specify attributes.
5437         (trap): Fix condition.  Specify attributes.
5438         (ib): New pattern.
5439
5440         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
5441         (override_options): Initialize it.  Initialize m68k_sched_cpu.
5442         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
5443         (const_method): Make global, rename to m68k_const_method.
5444         (const_int_cost, output_move_const_into_data_reg): Update.
5445         (output_move_double): Parametrize to emit rtl code, rename to
5446         handle_move_double.
5447         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
5448         emit_movsi): New static functions.
5449         (output_move_double): New function with semantics of old
5450         output_move_double.
5451         (m68k_emit_move_double): New function.
5452         (m68k_sched_cpu): New variable.
5453         (attr_op_type): New enum.
5454         (sched_guess_p): New variable.
5455         (sched_address_type, sched_operand_type, sched_attr_op_type):
5456         New static functions.
5457         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5458         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
5459         (sched_branch_type): New static variable.
5460         (m68k_sched_branch_type): New function.
5461         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
5462         (m68k_symbolic_call_var): Declare.
5463         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
5464         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
5465         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5466         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
5467         Declare.
5468
5469 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
5470
5471         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
5472         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
5473         error if __builtin_va_arg_pack_len () wasn't optimized out during
5474         inlining.
5475         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
5476         with the number of inline's anonymous arguments.
5477         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
5478
5479 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
5480
5481         * fold-const.c (extract_muldiv_1): Do not simplify
5482         var * c * c to var.
5483
5484 2007-09-11  Jan Hubicka <jh@suse.cz>
5485
5486         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
5487         (TARGET_INTER_UNIT_CONVERSIONS): New.
5488         * i386.md (floatsi expanders): Remove redundant check for SImode
5489         source; offload to memory when asked for.
5490         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
5491         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5492         Update conditions;
5493         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
5494         floatsidf2_mixed_memory, floatsidf2_sse_memory
5495         floatdisf2_mixed_memory, floatsisf2_sse_memory,
5496         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
5497
5498 2007-09-11  Jan Hubicka <jh@suse.cz>
5499
5500         * toplev.c (process_options): all frontends now do unit-at-a-time.
5501         * cgraphunit.c: update comments.
5502         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
5503         * c-decl.c (finish_function): use cgraph_add_new_function.
5504         * function.c (expand_function_end): We are always unit-at-a-time.
5505
5506 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5507
5508         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
5509         settings for MIPS16.
5510         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
5511
5512 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5513
5514         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
5515         SYMBOL_FORCE_TO_MEM constants.
5516         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
5517         (mips16_rewrite_pool_refs_info): New structure.
5518         (mips16_rewrite_pool_constant): New function, split out from...
5519         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
5520         mips16_rewrite_pool_refs_info structure rather than a pointer
5521         to a constant pool.  Force force_to_mem_operands into memory.
5522         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
5523         * config/mips/predicates.md (force_to_mem_operand): New predicate.
5524         * config/mips/constraints.md (kf): New constraint.
5525         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
5526         (*movsi_mips16): Likewise.
5527
5528 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5529             Nigel Stephens  <nigel@mips.com>
5530             David Ung  <davidu@mips.com>
5531
5532         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
5533         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
5534         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
5535         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
5536         (mips_zero_extend_cost): New functions.
5537         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
5538         Use the new functions.  Tweak many cost estimates, both here
5539         and in the new subroutines.  Return false when the cost of the
5540         operands has not been calculated.  Check for *clear_upper32.
5541         Check for floating-point multiply-add, reciprocal and rsqrt
5542         patterns.  Handle comparison and rotation codes.
5543
5544 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
5545
5546         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
5547         override default.
5548         * config/i386/i386.c (get_dllimport_decl): Don't strip
5549         FASTCALL_PREFIX.
5550
5551 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5552
5553         PR c/30013
5554         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
5555         declarations to top.
5556         (DFP_TO_BFP): Use for either XFmode or TFmode.
5557         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
5558         of BFP_VIA_TYPE.
5559         * config/dfp-bit.h: Include float.h.
5560         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
5561         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
5562         which doesn't mean the same thing.
5563         (BFP_KIND): Use 4 to mean TFmode.
5564         (BFP_FMT): Specify the number of decimal digits based on the
5565         number of mantissa digits.
5566         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
5567         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
5568         (STR_TO_BFP): Use strtold for XFmode or TFmode.
5569         (TFtype): Define if TFmode is supported.
5570         * doc/libgcc.texi (Decimal float library routines): Document
5571         TF conversion functions.
5572
5573 2007-09-10  Chao-ying Fu  <fu@mips.com>
5574
5575         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
5576         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
5577         (mips_emit_compare): Process fixed-point modes.
5578         (mips_pad_arg_upward): Support fixed-point types.
5579         (override_options): Allow fixed-point modes in accumulators.
5580         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
5581         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
5582         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
5583         (mips_scalar_mode_supported_p): New function to accept fixed-point
5584         modes if the width is not greater than two BITS_PER_WORD.
5585         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
5586         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
5587         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
5588         LONG_LONG_ACCUM_TYPE_SIZE): Define.
5589         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
5590         modes.
5591         ("IMODE"): New mode attribute.
5592         (mips-fixed.md): Include.
5593         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
5594         ACCUM, UACCUM.
5595         * config/mips/mips-fixed.md: New file.
5596
5597 2007-09-11  Ben Elliston  <bje@au.ibm.com>
5598
5599         * config/spu/spu.md: Formatting fixes.
5600
5601 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5602
5603         * config/dfp-bit.c (dfp_unary_func): Delete.
5604         (dfp_unary_op): Delete.
5605         (dfp_binary_op): Use decFloat functions instead of decNumber
5606         functions for binary operations.
5607         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
5608         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
5609         DFP_C_TYPE.
5610         (dfp_compare_op): Use decFloat functions insteadof decNumber
5611         functions for comparisons.
5612         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
5613         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
5614         DFP_C_TYPE.
5615         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
5616         call to dxx_binary_op and decFloat function.
5617         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
5618         calls to dxx_binary_op and decFloat function.
5619         * config/dfp-bit.h: Include decFloat header files.
5620         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
5621         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
5622         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
5623         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
5624
5625 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
5626             Jan Sjodin <jan.sjodin@amd.com>
5627
5628         * tree-vect-analyze.c (vect_analyze_operations): Change
5629         comparison of loop iterations with threshold to less than
5630         or equal to instead of less than. Reduce
5631         min_scalar_loop_bound by one.
5632         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
5633         Change prologue and epilogue iterations estimate to vf/2,
5634         when unknown at compile-time. Change versioning guard
5635         cost to taken_branch_cost. If peeling for alignment is
5636         unknown at compile-time, change peel guard costs to one
5637         taken branch and one not-taken branch per peeled loop.
5638         If peeling for alignment is known but number of scalar loop
5639         iterations is unknown at compile-time, change peel guard
5640         costs to one taken branch per peeled loop. Change the cost
5641         model equation to consider vector iterations as the loop
5642         iterations less the prologue and epilogue iterations.
5643         Change outside vector cost check to less than or equal to
5644         zero instead of equal to zero.
5645         (vect_do_peeling_for_loop_bound): Reduce
5646         min_scalar_loop_bound by one.
5647         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
5648         TARG_COND_NOT_TAKEN_BRANCH_COST.        
5649         * config/i386/i386.h (processor_costs): Add
5650         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
5651         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
5652         vec_align_load_cost, vect_unalign_load_cost,
5653         vec_store_cost, cond_taken_branch_cost,
5654         cond_not_taken_branch_cost.
5655         Define macros for x86 costs.
5656         * config/i386/i386.c:
5657         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
5658         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
5659         scalar_to_vec_cost, vec_align_load_cost, 
5660         vect_unalign_load_cost, vec_store_cost,
5661         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
5662         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
5663         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
5664         core2_cost, generic64_cost, generic32_cost): Set to default
5665         untuned costs.
5666         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
5667         (x86_builtin_vectorization_cost): New.
5668
5669 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5670             Ben Elliston  <bje@au.ibm.com>
5671
5672         * dfp.c: Include decimal128Local.h; 
5673         (dfp_byte_swap): Remove.
5674         (encode_decimal32, decode_decimal32): Don't handle endianness.
5675         (encode_decimal64, decode_decimal64): Ditto.
5676         (encode_decimal128, decode_decimal128): Ditto.
5677         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
5678         (__swap64): Remove.
5679         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
5680         (__swap128): Remove
5681         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
5682         * Makefile.in (DECNUM_H): Add decimal128Local.h.
5683
5684 2007-09-10  David Daney  <ddaney@avtrex.com>
5685
5686         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
5687         define_constants.
5688         (memory_barrier): Rewrote as an insn that clobbers memory.
5689
5690 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5691
5692         * config/mips/mips.c (mips_global_pointer): Check
5693         call_really_used_regs instead of call_used_regs.
5694         (mips_save_reg_p): Likewise.  Save all call-saved registers
5695         if current_function_saves_all_registers.  Fix indentation.
5696         No longer treat $18 as a special case.
5697         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
5698
5699 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5700
5701         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
5702         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
5703         the introductory comment.
5704         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5705         (override_options): Don't test for it.
5706         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5707         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
5708         * config/mips/vr.h: As for config/mips/sde.h.
5709
5710 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5711             Revital Eres  <eres@il.ibm.com>
5712
5713         * target.h (struct gcc_target.sched): New field: sms_res_mii.
5714         (struct ddg): Define.
5715         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
5716         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
5717         * config/spu/spu.c: Include ddg.h.
5718         (TARGET_SCHED_SMS_RES_MII): Define.
5719         (spu_sms_res_mii): New function to calculate mii.
5720         * modulo-sched (res_MII): Use it.
5721         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
5722
5723 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5724
5725         * config/s390/s390.c (s390_dump_pool): Create copy of constant
5726         pool entries since they might hold values that must not be shared.
5727
5728 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
5729
5730         PR target/33369
5731         * config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
5732         Use 'N' operand constraint for op2.
5733         (lshr<mode>3): Ditto.
5734         (ashl<mode>3): Ditto.
5735         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
5736         (vec_shr_<mode>): Ditto.
5737         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
5738         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
5739
5740 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5741
5742         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
5743         Change mode macro in the last real_2expN parameter to uppercase.
5744
5745 2007-09-10  Michael Matz  <matz@suse.de>
5746
5747         * tree-pass.h (pass_cselim): Declare new pass.
5748         * passes.c (init_optimization_passes): Link in pass_cselim.
5749         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
5750         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
5751         cond_store_replacement.
5752         (condstoretemp): New static variable.
5753         (cond_store_replacement): New function.
5754         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
5755         tree_ssa_phiopt_worker.
5756         (struct name_to_bb): New.
5757         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
5758         nt_init_block, nt_fini_block): New static functions.
5759         (seen_ssa_names, nontrap_set): New static variables.
5760         (gate_cselim, pass_cselim): Define new pass.
5761         * common.opt (ftree-cselim): New flag.
5762         * toplev.c (process_options): Set flag_tree_cselim if required.
5763
5764 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
5765
5766         * simplify-rtx.c (simplify_relational_operation_1): For recent
5767         canonicalization, don't recurse if op1 equals both PLUS arguments.
5768
5769 2007-09-09  David Daney  <ddaney@avtrex.com>
5770
5771         * optabs.c (expand_sync_operation):  Use plus insn if minus
5772         CONST_INT_P(val).
5773         (expand_sync_fetch_operation):  Ditto.
5774
5775 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5776
5777         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
5778         of cvtpq2ps.
5779         (*floatsisf2_sse_vector): Likewise.
5780
5781 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
5782
5783         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
5784
5785 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5786
5787         * config/i386/i386.h (ix86_tune_indices): Rename
5788         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
5789         (TARGET_USE_VECTOR_CONVERTS): Updated.
5790         * config/i386/i386.c: Likewise.
5791
5792 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5793             Nigel Stephens <nigel@mips.com>
5794
5795         * doc/invoke.texi (Overall Options):  Add .sx file extension
5796         as a synonym for .S.
5797         * cppspec.c (known_suffixes): Likewise.
5798         * gcc.c (default_compilers): Likewise.
5799
5800 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5801
5802         PR target/30315
5803         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
5804         * simplify-rtx.c (simplify_relational_operation_1): Add the
5805         canonicalization from i386.h.
5806         * doc/md.texi (Canonicalization of Instructions): Document it.
5807
5808 2007-09-09  Jan Hubicka  <jh@suse.cz>
5809             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5810
5811         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
5812         (TARGET_USE_VECTOR_CONVERTS): New.
5813         * i386.md: New post-reload splitters for converting SF to DF and DF to
5814         SF.
5815         (floatsi* expander): Special case vector conversions.
5816         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
5817         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
5818         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
5819         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5820         Disable when doing vector converts.
5821         (floatsi<mode>2_i387): Disable when
5822         * sse.md (vec_dupv2df): Export.
5823         * i386.c (ix86_tune_features): Enable SSE conversions.
5824
5825 2007-09-09  Richard Guenther  <rguenther@suse.de>
5826
5827         * tree-ssa-operands.c (add_virtual_operand): Only mark
5828         stores as has_volatile_ops if alias information is not available.
5829
5830 2007-09-09  Revital Eres  <eres@il.ibm.com>
5831
5832         * doc/contrib.texi: Add myself.
5833
5834 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5835
5836         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
5837         stmt_vinfo_set_outside_of_loop_cost): New functions.
5838         * tree-vect-transform.c (vect_get_cost_fields): Remove.
5839         (vect_model_simple_cost): Call
5840         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
5841         field instead of calling vect_get_cost_fields.
5842         (vect_model_store_cost, vect_model_load_cost): Likewise.
5843
5844 2007-09-09  Revital Eres  <eres@il.ibm.com>
5845
5846         * config/rs6000/rs6000.c (paired_init_builtins): Add const
5847         declaration to bdesc_paired_preds variable.
5848         (paired_expand_builtin): Likewise.
5849
5850 2007-09-09  Revital Eres  <eres@il.ibm.com>
5851
5852         * dbgcnt.def (sms_sched_loop): New counter.
5853         * modulo-sched.c: Use sms_sched_loop instead of
5854         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
5855         perform swing modulo scheduling on.  Include dbgcnt.h.
5856         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
5857         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
5858
5859 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
5860
5861         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
5862         Substitute all uses with ...
5863         (MODEF): New mode iterator.
5864
5865         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
5866         from pre-regalloc define_insn_and_split splitter pattern.
5867         (*fix_trunc<mode>_i387_1): Ditto.
5868         (*fistdi2_1): Ditto.
5869         (*fist<mode>2_1): Ditto.
5870         (frndintxf2_floor): Ditto.
5871         (*fist<mode>2_floor_1): Ditto.
5872         (frndintxf2_ceil): Ditto.
5873         (*fist<mode>2_ceil_1): Ditto.
5874         (frndintxf2_trunc): Ditto.
5875         (frndintxf2_mask_pm): Ditto.
5876
5877         (prologue): Use (const_int 0) as never generated filler insn.
5878         (epilogue): Ditto.
5879         (sibcall_epilogue): Ditto.
5880         (eh_return_si): Ditto.
5881         (eh_return_di): Ditto.
5882
5883         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
5884         using MODEF mode iterator.
5885         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
5886         using MODEF mode iterator.
5887         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
5888         using MODEF mode iterator.
5889         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
5890         Macroize expander using MODEF mode iterator.
5891
5892         (zero_extendsidi2): Remove operand constraints from expander.
5893         (smuldi3_highpart): Ditto.
5894         (indirect_jump): Ditto.
5895         (tablejump): Ditto.
5896         (rsqrtsf2): Ditto.
5897         * config/i386/sse.md (storentv4sf): Ditto.
5898         (storentv2df): Ditto.
5899         (storentv2di): Ditto.
5900         (storentsi): Ditto.
5901         (sse2_cvtpd2ps): Ditto.
5902         (vec_interleave_highv16qi): Ditto.
5903         (vec_interleave_lowv16qi): Ditto.
5904         (vec_interleave_highv8hi): Ditto.
5905         (vec_interleave_lowv8hi): Ditto.
5906         (vec_interleave_highv4si): Ditto.
5907         (vec_interleave_lowv4si): Ditto.
5908         (vec_interleave_highv2di): Ditto.
5909         (vec_interleave_lowv2di): Ditto.
5910         (sse2_maskmovdqu): Ditto.
5911         * config/i386/mmx.md (mmx_maskmovq): Ditto.
5912
5913 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5914
5915         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
5916         (struct _slp_tree, struct _slp_instance): Define new data structures
5917         along macros for their access.
5918         (struct _loop_vec_info): Define new fields: strided_stores,
5919         slp_instances, and slp_unrolling_factor along macros for their access.
5920         (enum slp_vect_type): New.
5921         (struct _stmt_vec_info): Define new field, slp_type, and macros for
5922         its access.
5923         (STMT_VINFO_STRIDED_ACCESS): New macro.
5924         (vect_free_slp_tree): Declare.
5925         (vectorizable_load): Add an argument of type slp_tree.
5926         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
5927         vectorizable_assignment): Likewise.
5928         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
5929         Declare (make extern).
5930         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
5931         (new_loop_vec_info): Likewise.
5932         (destroy_loop_vec_info): Free memory allocated for SLP structures.
5933         * tree-vect-analyze.c: Include recog.h.
5934         (vect_update_slp_costs_according_to_vf): New.
5935         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
5936         functions. For not pure SLP stmts with strided access check that the
5937         group size is power of 2. Update the vectorization factor according to
5938         SLP. Call vect_update_slp_costs_according_to_vf.
5939         (vect_analyze_group_access): New.
5940         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
5941         (vect_free_slp_tree): New functions.
5942         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
5943         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
5944         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
5945         vect_detect_hybrid_slp): Likewise.
5946         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
5947         and vect_detect_hybrid_slp.
5948         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
5949         SLP costs into account.
5950         (vect_get_cost_fields): New function.
5951         (vect_model_simple_cost): Make extern, add SLP parameter and handle
5952         SLP.
5953         (vect_model_store_cost, vect_model_load_cost): Likewise.
5954         (vect_get_constant_vectors): New function.
5955         (vect_get_slp_vect_defs, vect_get_slp_defs,
5956         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
5957         vect_get_vec_defs): Likewise.
5958         (vectorizable_reduction): Don't handle SLP for now.
5959         (vectorizable_call): Don't handle SLP for now. Add argument to
5960         vect_model_simple_cost.
5961         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
5962         get SLPed and vectorized defs). Fix indentation and spacing.
5963         (vectorizable_assignment): Handle SLP.
5964         (vectorizable_induction): Don't handle SLP for now.
5965         (vectorizable_operation): Likewise.
5966         (vectorizable_type_demotion): Add argument to
5967         vect_model_simple_cost.
5968         (vectorizable_type_promotion): Likewise.
5969         (vectorizable_store, vectorizable_load): Handle SLP.
5970         (vectorizable_condition): Don't handle SLP for now.
5971         (vect_transform_stmt): Add a new argument for SLP. Check that there is
5972         no SLP transformation required for unsupported cases. Add SLP
5973         argument for supported cases.
5974         (vect_remove_stores): New function.
5975         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
5976         (vect_transform_loop): Schedule SLP instances.
5977         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
5978
5979 2007-09-09  Andrew Haley  <aph@redhat.com>
5980
5981         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
5982         signed optab.
5983
5984 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
5985
5986         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
5987         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
5988         Similar for what label_refs can go in the JUMP_TARGET field.  Split
5989         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
5990         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
5991         REG_LABEL when replacing an operand with a LABEL_REF for a
5992         non-jump insn.
5993         (subst_reloads): When replacing a LABEL_REG with a register,
5994         instead of generating a REG_LABEL note, assert that there already
5995         is one or that the label is a known target for the insn.
5996         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
5997         note, check the JUMP_LABEL field.  Remove "else" after return.
5998         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
5999         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
6000         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
6001         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
6002         insns.  Iterate over all notes; don't assume there's only one.
6003         * cse.c (recorded_label_ref): Adjust comment to refer to
6004         REG_LABEL_OPERAND.
6005         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
6006         insns, not just NONJUMP_INSN_P.
6007         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
6008         isn't a jump target.
6009         * jump.c (rebuild_jump_labels): Adjust head comment.
6010         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
6011         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
6012         (mark_all_labels): For JUMP_P insns without a target, check if the
6013         the target is noted on the previous nonjump insn.
6014         (mark_jump_label_1): New function, guts from mark_jump_label.
6015         <case IF_THEN_ELSE>: Handle first operand as a non-target when
6016         marking jump target labels.
6017         <case LABEL_REF>: Adjust for whether to generate a
6018         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
6019         For 'E' format rtl, iterate in descending element order.
6020         (delete_related_insns): Handle both REG_LABEL_TARGET and
6021         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
6022         reference count, delete and fallthrough.  Move finding-next-
6023         non-deleted insn last in the function.  Look at all INSN_P insns
6024         for REG_LABEL_OPERAND notes.
6025         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
6026         JUMP.
6027         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
6028         JUMP_LABEL, output the INSN_UID of it.
6029         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
6030         and/or REG_LABEL_TARGET.
6031         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
6032         with jump.c copy by only adding notes for labels actually
6033         referenced in the insn.
6034         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
6035         usage count increment; handle all INSN_P trial insns.
6036         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
6037         notes.
6038         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
6039         REG_LABEL_TARGET and REG_LABEL_OPERAND.
6040         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
6041         REG_LABEL_OPERAND.
6042         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
6043         JUMP_P insns and REG_LABEL_OPERAND everywhere.
6044         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
6045         on all INSN_P insns.
6046         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
6047         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
6048         REG_LABEL_OPERAND notes.
6049         * reload1.c (calculate_needs_all_insns): Adjust comments.
6050         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
6051         * config/alpha/alpha.md (split for load of an address into a
6052         four-insn sequence on Unicos/Mk): Adjust to use
6053         REG_LABEL_OPERAND.
6054         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
6055
6056 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6057
6058         Revert:
6059         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6060         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6061         FOR_BB_INSNS_SAFE instead of for loop.
6062         * cse.c (cse_extended_basic_block): Likewise.
6063         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6064         that the for loop does not invoke NEXT_INSN on a deleted insn.
6065         * function.c (instantiate_virtual_regs): Likewise.
6066         * lower-subreg.c (remove_retval_note): Likewise.
6067         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6068         FOR_BB_INSNS.
6069         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6070         a deleted insn.
6071         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6072         insn, if it's a jump.
6073         (try_redirect_by_replacing_jump): New variable jump_p. Call
6074         tablejump_p before delete_insn_chain.
6075         * reload1.c (reload): New variable next. Make sure that the for
6076         loop does not invoke NEXT_INSN on a deleted insn.
6077         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6078         (delete_output_reload): New variable prev. Make sure the the for
6079         loops do not invoke PREV_INSN on a deleted insn.
6080
6081 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6082
6083         * pa/constraints.md: Remove 'X' from unused letters comment.
6084
6085 2007-09-08  Richard Guenther  <rguenther@suse.de>
6086
6087         * tree-tailcall.c (find_tail_calls): If we don't have aliases
6088         computed check stmt_ann->references_memory instead of counting
6089         virtual operands.
6090  
6091 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
6092
6093         * cse.c (fold_rtx): Use validate_unshare_change() instead of
6094         validate_change() in one more case.
6095
6096 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
6097
6098         PR tree-optimization/32283
6099         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
6100         estimated_loop_iterations.
6101         (determine_use_iv_cost_condition): Decrease cost of expressions
6102         used in iv elimination.
6103
6104 2007-09-08  Richard Guenther  <rguenther@suse.de>
6105
6106         * tree-cfg.c (verify_gimple_expr): Avoid building new
6107         pointer types, use TYPE_POINTER_TO if available instead.
6108
6109 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
6110
6111         PR target/33329
6112         PR rtl-optimization/26449
6113         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
6114         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
6115         split1 pass.
6116         (mulv16qi3): Implement as define_insn_and_split pattern instead of
6117         define_expand.  Split insn in split1 pass.
6118         (mulv2di3): Ditto.
6119
6120 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
6121
6122         PR tree-optimization/33301
6123         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
6124         when relevant.
6125
6126 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
6127
6128         PR tree-optimization/32183
6129         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
6130
6131         * tree-ssa-reassoc.c: Include cfgloop.h.
6132         (is_reassociable_op): Add a loop argument and return true only
6133         for inside loop.
6134         (linearize_expr): Updated.
6135         (should_break_up_subtract): Likewise.
6136         (linearize_expr_tree): Likewise.
6137         (init_reassoc): Call loop_optimizer_init with
6138         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
6139         with CDI_DOMINATORS.
6140         (fini_reassoc): Call loop_optimizer_finalize.
6141
6142 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
6143
6144         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
6145         if there is no i-cache.
6146
6147 2007-09-07  Richard Guenther  <rguenther@suse.de>
6148
6149         Reapply
6150         2007-09-06  Richard Guenther  <rguenther@suse.de>
6151
6152         PR tree-optimization/32586
6153         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6154         folding if nothing changed.
6155         (simplify_unary_expression): New function.  Do tree combining
6156         on conversion like codes.
6157         (try_to_simplify): Call it.
6158
6159 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6160
6161         PR target/33286
6162         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
6163         (__gthread_active,__gthread_start, __gthread_active_init): New.
6164         * gthr-posix95.h: Likewise.
6165
6166 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
6167
6168         * function.h (struct function): Rename calls_unwind_init
6169         to saves_all_registers.
6170         (current_function_saves_all_registers): Renamed from
6171         current_function_calls_unwind_init.
6172         * reload1.c (reload): Set current_function_saves_all_registers.
6173         * except.c (expand_builtin_unwind_init): Likewise.
6174         * config/m68k/m68k.c (m68k_save_reg): Use
6175         current_function_saves_all_registers to save pic register.
6176
6177 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
6178
6179         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
6180         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
6181
6182         Reapply reverted changes:
6183
6184         2007-09-06  Jan Hubicka  <jh@suse.cz>
6185  
6186         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
6187         of real_2expN.
6188
6189         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6190
6191         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6192         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6193
6194         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6195
6196         * optabs.c (expand_float): Convert unsigned integer as signed only
6197         if it provides sufficient accuracy; add mode argument to real_2expN.
6198         (expand_fix): Fix comment typos; extend binary float into mode
6199         wider than destination for converion to unsigned integer; add mode
6200         argument to real_2expN.
6201         * real.c (real_2expN): Add mode argument to special-case decimal
6202         float values.
6203         * real.h (real_2expN): Ditto.
6204         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6205         real_2expN.
6206         (fixed_from_string): Ditto.
6207         (fixed_to_decimal): Ditto.
6208         (fixed_convert_from_real): Ditto.
6209         (real_convert_from_fixed): Ditto.
6210         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6211         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6212         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6213         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6214
6215 2007-09-07  Diego Novillo  <dnovillo@google.com>
6216
6217         * tree-flow.h (const_block_stmt_iterator): Remove.
6218         Update all users to use block_stmt_iterator.
6219         * tree-iterator.h (const_tree_stmt_iterator): Remove.
6220         Update all users to use tree_stmt_iterator.
6221
6222 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
6223
6224         * config/mips/mips.c (mips_set_current_function): Temporarily
6225         make this a no-op to fix bootstrap errors, pending rewrite.
6226
6227 2007-09-07  Jan Hubicka  <jh@suse.cz>
6228
6229         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
6230         in the pass.
6231
6232 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
6233
6234         PR tree-optimization/33299
6235         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
6236         uses for all relevant loop-exit phis, not just the first.
6237
6238 2007-09-07  Richard Guenther  <rguenther@suse.de>
6239
6240         PR middle-end/33330
6241         * tree-ssa-operands.c (access_can_touch_variable): An access
6242         of the form (*p)[0] can touch a variable of same size.
6243
6244 2007-09-07  Jan Hubicka  <jh@suse.cz>
6245
6246         * passes.c (init_optimization_passes): Add simple dce and addressable
6247         passes.
6248         * tree-ssa.c (execute_update_addresses_taken): New function.
6249         (pass_update_address_taken): New.
6250         * tree-ssa-dse.c (execute_simple_dse): New function.
6251         (pass_simple_dse): New.
6252         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
6253
6254 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6255
6256         PR middle-end/33321
6257         * doc/invoke.texi: Fix -Wstrict-overflow= table.
6258
6259 2007-09-07  Richard Guenther  <rguenther@suse.de>
6260
6261         Revert
6262         2007-09-06  Richard Guenther  <rguenther@suse.de>
6263
6264         PR tree-optimization/32586
6265         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6266         folding if nothing changed.
6267         (simplify_unary_expression): New function.  Do tree combining
6268         on conversion like codes.
6269         (try_to_simplify): Call it.
6270
6271 2007-09-07  Richard Guenther  <rguenther@suse.de>
6272             Uros Bizjak  <ubizjak@gmail.com>
6273
6274         PR tree-optimization/32821
6275         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
6276         NULL in the call to set_bb_stmt_list.
6277
6278 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6279
6280         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
6281         float calls here, rather than leaving some to the caller.
6282         Use call_internal_direct and call_value_internal_direct.
6283         * config/mips/mips.md (call_internal_direct): New pattern.
6284         (call_value_internal_direct): Likewise.
6285
6286 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6287
6288         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
6289         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
6290         to 0 for MIPS16.
6291         (override_options): Set mips_base_move_loop_invariants.
6292
6293 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6294
6295         * config/mips/mips.opt (mcode-readable=): Move to keep list
6296         alphabetical.
6297
6298 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6299
6300         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
6301         and -mgpopt options.  Adjust the -G documentation to match.
6302         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
6303         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
6304         function, split out from mips_classify_symbol.  Return false for
6305         !TARGET_LOCAL_SDATA.
6306         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
6307         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
6308         (override_options): Check whether the -mgpopt setting is consistent
6309         with the other flags.
6310         (symbolic_expression_p): Delete.
6311         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
6312         and default_elf_select_rtx_section.
6313         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
6314         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
6315         external data and TARGET_EXTERN_SDATA.
6316
6317 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6318
6319         PR fortran/33303
6320         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
6321
6322 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6323
6324         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6325         FOR_BB_INSNS_SAFE instead of for loop.
6326         * cse.c (cse_extended_basic_block): Likewise.
6327         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6328         that the for loop does not invoke NEXT_INSN on a deleted insn.
6329         * function.c (instantiate_virtual_regs): Likewise.
6330         * lower-subreg.c (remove_retval_note): Likewise.
6331         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6332         FOR_BB_INSNS.
6333         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6334         a deleted insn.
6335         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6336         insn, if it's a jump.
6337         (try_redirect_by_replacing_jump): New variable jump_p. Call
6338         tablejump_p before delete_insn_chain.
6339         * reload1.c (reload): New variable next. Make sure that the for
6340         loop does not invoke NEXT_INSN on a deleted insn.
6341         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6342         (delete_output_reload): New variable prev. Make sure the the for
6343         loops do not invoke PREV_INSN on a deleted insn.
6344
6345 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
6346
6347         * cgraphbuild.c (rebuild_cgraph_edges): Export.
6348         * cgraph.h (rebuild_cgraph_edges): Declare.
6349         * tree-pass.h (pass_expand_omp_ssa): New.
6350         * omp-low.c (find_omp_clause): Export.
6351         (copy_var_decl): Split from omp_copy_decl_2.
6352         (build_omp_barrier): Return the call to emit instead of emitting
6353         it directly.
6354         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
6355         build_omp_barrier.
6356         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
6357         expand_omp_for_generic, expand_omp_for_static_nochunk,
6358         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
6359         Adapted to work on SSA form.
6360         (execute_expand_omp): Do not invalidate dominance information.
6361         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
6362         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
6363         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
6364         a gimple_reg.
6365         (force_gimple_operand): Allow gimplifying code expressions without
6366         value.
6367         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
6368         * common.opt (fopenmp-ssa): New.
6369         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
6370         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
6371         * tree-cfg.c: Include tree-inline.h.
6372         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
6373         (replace_by_duplicate_decl, replace_ssa_name,
6374         mark_virtual_ops_in_region): New functions.
6375         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
6376         to work on SSA form.
6377         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
6378         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
6379         constructs.
6380
6381 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6382
6383         * tree-loop-linear.c: Include obstack.h.
6384         (linear_transform_loops): New obstack lambda_obstack.
6385         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
6386         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
6387         and free afterwards.
6388         * lambda.h (struct obstack): New forward declaration.
6389         (lambda_linear_expression_new): New parameter of type struct
6390         obstack *.
6391         (lambda_loopnest_new): Likewise.
6392         (lambda_loopnest_transform): Likewise.
6393         (lambda_body_vector_new): Likewise.
6394         (lambda_body_vector_compute_new): Likewise.
6395         (gcc_loopnest_to_lambda_loopnest): Likewise.
6396         (lambda_loopnest_to_gcc_loopnest): Likewise.
6397         * lambda-code.c: Include obstack.h.
6398         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
6399         allocation of ret.
6400         (lambda_body_vector_new): Likewise.
6401         (lambda_linear_expression_new): Likewise.
6402         (lambda_lattice_new): Likewise.
6403         (lambda_loopnest_new): Likewise.  Additionally use obstack to
6404         allocate LN_LOOPS(ret).
6405         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
6406         it to lambda_lattice_new.
6407         (lambda_body_vector_compute_new): New parameter lambda_obstack.
6408         Pass it to lambda_body_vector_new.
6409         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
6410         it to lambda_lattice_new.
6411         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
6412         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
6413         (lambda_compute_target_space): Likewise.
6414         (lambda_compute_auxillary_space): New parameter lambda_obstack.
6415         Pass it to lambda_lattice_compute_base and
6416         compute_nest_using_fourieer_motzkin.
6417         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
6418         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
6419         and lambda_lattice_compute_target_space.
6420         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
6421         Pass it to lambda_linear_expression_new.
6422         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
6423         to gcc_tree_to_linear_expression.
6424         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
6425         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
6426         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
6427         Pass it to lambda_body_vector_new and
6428         lambda_body_vector_compute_new.
6429         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
6430         (lambda-code.o): Likewise.
6431
6432 2007-09-06  Chao-ying Fu  <fu@mips.com>
6433
6434         * ginclude/stdfix.h: New file.
6435         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
6436         (convert.o): Add dependence on fixed-value.h.
6437         * c-convert.c (convert): Support FIXED_POINT_TYPE.
6438         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
6439         to define fixed-point constants.
6440         (c_cpp_builtins): Define fixed-point constants.
6441         * convert.c (fixed-value.h): New include.
6442         (convert_to_real): Update comment to include fixed-point.
6443         Support FIXED_POINT_TYPE.
6444         (convert_to_integer): Update comment to include fixed-point.
6445         Support FIXED_POINT_TYPE.
6446         (convert_to_complex): Support FIXED_POINT_TYPE.
6447         (convert_to_fixed): New function.
6448         * convert.h (convert_to_fixed): Declare.
6449         * genopinit.c: Add comment about $Q for only fixed-point modes.
6450         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
6451         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
6452         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
6453         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
6454         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
6455         usneg_optab for fixed-point modes.
6456         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
6457         modes.
6458         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
6459         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
6460         unsigned saturation optabs, when type is saturating.
6461         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
6462         (expand_fixed_convert): New function.
6463         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
6464         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
6465         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
6466         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
6467         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
6468         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
6469         functions.
6470         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
6471         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
6472         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
6473         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
6474         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
6475         satfractuns_optab.
6476         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
6477         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
6478         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
6479         fractuns, satfractuns.
6480         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
6481         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
6482         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
6483         OTI_ssmsub_widen,  OTI_usmsub_widen.
6484         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
6485         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
6486         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
6487         umsub_widen_optab, usmsub_widen_optab): Define.
6488         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
6489         COI_satfractuns.
6490         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
6491         Define.
6492         (expand_fixed_convert): Declare.
6493         * expr.c (convert_move): Support the move of fixed-point modes.
6494         (emit_move_insn_1): Handle fixed-point mode to move via integer.
6495         (categorize_ctor_elements_1): Handle FIXED_CST.
6496         (count_type_elements): Handle FIXED_POINT_TYPE.
6497         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
6498         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6499         Support FIXED_CST.
6500         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
6501         multiply and add/subtract for fixed-point types.
6502         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
6503         mode, we jump to binop directly.
6504         Support FIXED_CONVERT_EXPR.
6505         (do_store_flag): Check FIXED_CST to put a constant second.
6506         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
6507         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6508         (const_vector_from_tree): Support FIXED_CST.
6509         * doc/extend.texi (Fixed-Point): New node.
6510         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
6511         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
6512         satfract, fractuns, satfractuns): Document them.
6513
6514 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
6515
6516         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
6517         addresses into I registers.
6518
6519 2007-09-06  Jan Hubicka  <jh@suse.cz>
6520             Andreas Tobler  <a.tobler@schweiz.org>
6521
6522         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
6523         sharing.
6524         (machopic_legitimize_pic_address): Likewise.
6525
6526 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6527             Jan Hubicka  <jh@suse.cz>
6528
6529         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
6530         instead of ufloat_optab->handlers directly.
6531         (floatdidf2): Likewise.
6532
6533 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
6534
6535         * config/mips/mips.c:  Include diagnostic.h.
6536         (mips_set_current_function): Check errorcount and sorrycount 
6537         before generating RTL.
6538
6539 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6540
6541         PR target/33256
6542         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
6543         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
6544         (print_operand_reloc): Likewise.
6545
6546 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
6547
6548         Revert:
6549
6550         2007-09-06  Jan Hubicka  <jh@suse.cz>
6551  
6552         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6553         real_2expN.
6554
6555         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6556
6557         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6558         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6559
6560         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6561
6562         * optabs.c (expand_float): Convert unsigned integer as signed only
6563         if it provides sufficient accuracy; add mode argument to real_2expN.
6564         (expand_fix): Fix comment typos; extend binary float into mode
6565         wider than destination for converion to unsigned integer; add mode
6566         argument to real_2expN.
6567         * real.c (real_2expN): Add mode argument to special-case decimal
6568         float values.
6569         * real.h (real_2expN): Ditto.
6570         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6571         real_2expN.
6572         (fixed_from_string): Ditto.
6573         (fixed_to_decimal): Ditto.
6574         (fixed_convert_from_real): Ditto.
6575         (real_convert_from_fixed): Ditto.
6576         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6577         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6578         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6579         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6580
6581 2007-09-06  Tom Tromey  <tromey@redhat.com>
6582
6583         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
6584         * c-pch.c (c_common_read_pch): Restore current location after
6585         reading PCH file.
6586         * tree.c (expand_location): Update.
6587         (expr_filename): Changed return type.  Unified the two cases.
6588         (expr_lineno): Likewise.
6589         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
6590         as lvalues.
6591         * toplev.c (line_table): Changed type.
6592         (general_init): Update.
6593         (realloc_for_line_map): New function.
6594         (general_init): Allocate line_table using GC.
6595         * fix-header.c (line_table): Changed type.
6596         (read_scan_file): Update.
6597         (read_scan_file): Update.
6598         * c-ppoutput.c (maybe_print_line): Update.
6599         (print_line): Update.
6600         (cb_line_change): Update.
6601         (cb_define): Update.
6602         (pp_file_change): Update.
6603         * c-opts.c (c_common_init_options): Update.
6604         (finish_options): Update.
6605         (push_command_line_include): Update.
6606         * c-lex.c (cb_line_change): Update.
6607         (cb_def_pragma): Update.
6608         (cb_define): Update.
6609         (cb_undef): Update.
6610         (c_lex_with_flags): Use cpp_get_token_with_location.
6611         * input.h (line_table): Changed type.
6612         (location_from_locus): New macro.
6613         * tree.h (EXPR_FILENAME): No longer an lvalue.
6614         (EXPR_LINENO): Likewise.
6615         (expr_locus, set_expr_locus): Declare separately for
6616         USE_MAPPED_LOCATION.
6617         (expr_filename, expr_lineno): Changed return type.
6618         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
6619         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
6620         (expand_gimple_basic_block): Likewise.
6621         * final.c (final_scan_insn): Use expanded_location.
6622
6623 2007-09-06  Richard Guenther  <rguenther@suse.de>
6624
6625         PR tree-optimization/32586
6626         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6627         folding if nothing changed.
6628         (simplify_unary_expression): New function.  Do tree combining
6629         on conversion like codes.
6630         (try_to_simplify): Call it.
6631         * builtins.c (fold_builtin_cexp): Fold the built expressions.
6632         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
6633
6634 2007-09-06  Jan Hubicka  <jh@suse.cz>
6635
6636         PR target/33318
6637         * cse.c (fold_rtx): Avoid invalid sharing.
6638
6639 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6640
6641         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6642         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6643
6644 2007-09-06  Revital Eres  <eres@il.ibm.com>
6645
6646         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
6647         Fix offsettable memory reference for 750CL.
6648
6649 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
6650
6651         * reload.c (find_reloads_address_1): Try to preserve original
6652         base/index regclass of operands.
6653         * regrename.c (scan_rtx_address): Likewise.
6654         (replace_oldest_value_addr): Likewise.
6655
6656 2007-09-06  Richard Guenther  <rguenther@suse.de>
6657
6658         PR tree-optimization/33302
6659         * domwalk.c (walk_dominator_tree): The exit block is
6660         interesting even if it is not reachable.
6661
6662 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6663
6664         PR middle-end/33306
6665         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
6666
6667 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
6668
6669         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
6670         robustness.
6671
6672 2007-09-05  Ian Lance Taylor  <iant@google.com>
6673
6674         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
6675         when printing.
6676         (dump_generic_node): Likewise.
6677         * print-rtl.c (print_decl_name): Likewise.
6678         * print-tree.c (print_node_brief): Likewise.
6679         (print_node): Likewise.
6680         * Makefile.in (RTL_BASE_H): Add alias.h.
6681         (TREE_H): Likewise.
6682
6683 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
6684
6685         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
6686         Defined.
6687         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
6688         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
6689
6690 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
6691
6692         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
6693         (tm_defines): Define UCLIBC_DEFAULT to 1.
6694         (extra_options): Add linux.opt.
6695         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6696         (CRT_CALL_STATIC_FUNCTION): Likewise.
6697         (NO_IMPLICIT_EXTERN_C): Likewise.
6698         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6699         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
6700         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6701         (ENDFILE_SPEC): Don't define.
6702         (LIB_SPEC): Likewise.
6703         (CRT_CALL_STATIC_FUNCTION): Likewise.
6704         (NO_IMPLICIT_EXTERN_C): Likewise.
6705         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
6706         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6707
6708 2007-09-06  Jan Hubicka  <jh@suse.cz>
6709
6710         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6711         real_2expN.
6712
6713 2007-09-06  Jan Hubicka  <jh@suse.cz>
6714
6715         * opts.c (common_handle_option): Enable inlining functions for
6716         -fprofile-generate.
6717
6718 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
6719
6720         * builtin-attrs.def (ATTR_NONNULL_3): New.
6721         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
6722         ATTR_NOTHROW_NONNULL_##FA.
6723         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
6724         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
6725         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
6726         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
6727         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
6728         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
6729         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
6730         New.
6731         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
6732         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
6733         ATTR_FORMAT_NOTHROW_3_4): Remove.
6734         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
6735         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
6736         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
6737         instead of ATTR_FORMAT_*_*.
6738
6739 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
6740
6741         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
6742         parts re-used for REG_FRAME_RELATED_EXPR.
6743
6744 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6745
6746         * optabs.c (expand_float): Convert unsigned integer as signed only
6747         if it provides sufficient accuracy; add mode argument to real_2expN.
6748         (expand_fix): Fix comment typos; extend binary float into mode
6749         wider than destination for converion to unsigned integer; add mode
6750         argument to real_2expN.
6751         * real.c (real_2expN): Add mode argument to special-case decimal
6752         float values.
6753         * real.h (real_2expN): Ditto.
6754         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6755         real_2expN.
6756         (fixed_from_string): Ditto.
6757         (fixed_to_decimal): Ditto.
6758         (fixed_convert_from_real): Ditto.
6759         (real_convert_from_fixed): Ditto.
6760         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6761         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6762         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6763         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6764
6765 2007-09-05  Ian Lance Taylor  <iant@google.com>
6766
6767         * init-regs.c (initialize_uninitialized_regs): Call
6768         emit_insn_before rather than add_insn_before.
6769
6770 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6771
6772         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
6773         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
6774         * tree-inline.h (copy_body_data): Add call_expr field.
6775         * tree-inline.c (expand_call_inline): Initialize call_expr.
6776         (copy_bb): Append anonymous inline fn arguments to arguments
6777         when inlining a CALL_EXPR_VA_ARG_PACK call.
6778         * builtins.c (expand_builtin): Issue an error if
6779         BUILT_IN_VA_ARG_PACK is seen during expand.
6780         (fold_call_expr, fold_builtin_call_array): Don't fold
6781         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
6782         __builtin_va_arg_pack () call as last argument.
6783         * gimplify.c (gimplify_call_expr): If last argument to a vararg
6784         function is __builtin_va_arg_pack (), decrease number of call
6785         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
6786         * expr.c (expand_expr_real_1): Issue an error if
6787         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
6788         * tree-pretty-print.c (dump_generic_node): Handle printing
6789         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
6790         * doc/extend.texi (__builtin_va_arg_pack): Document.
6791
6792 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
6793
6794         PR tree-optimization/21513
6795         * builtins.c (build_builtin_expect_predicate): New function.
6796         (fold_builtin_expect): Add argument for expected value.
6797         Distribute __builtin_expect over short-circuiting operations.
6798         Fold nested builtin_expects.
6799         (fold_builtin_2): Adjust call to fold_builtin_expect.
6800
6801 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6802
6803         PR web/32965
6804         PR tree-optimization/13756
6805         * doc/invoke.texi (Options That Control Optimization): Document
6806         -ftree-dse.
6807
6808 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
6809
6810         * config/i386/cpuid.h: New file.
6811         * config/i386/driver-i386.c: Include cpuid.h.
6812         (describe_cache): Shrink size and line strings to 100 bytes.
6813         (detect_caches_amd): Return "" for unsupported max_ext_level.
6814         Use __cpuid function.
6815         (detect_caches_intel): Return "" for unsupported max_level.
6816         Use __cpuid function.
6817         (host_detect_local_cpu): Change feature flag variables to
6818         unsigned int.  Initialize only extended feature flag variables.
6819         Use __get_cpuid_max to determine max supported cpuid level.
6820         Use __cpuid function to determine supported features.  Fix
6821         calculation of family id.  Remove is_amd and check signature
6822         directly.  Check for Geode signature.  Handle family 4 id.
6823         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
6824         cpu discovery code to lower part of the function.
6825         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
6826         for sub-architecture.
6827         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
6828         [PROCESSOR_K8]: Add k8-sse3 architecture.
6829         [PROCESSOR_NOCONA]: Remove.
6830         [PROCESSOR_GENERIC64]: Ditto.
6831         * config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
6832         * config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
6833         to check for SSE and FXSAVE support.
6834         * config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
6835         Add -minline-all-stringops.
6836         * config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
6837         (x86_64-*-*): Ditto.
6838
6839 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
6840
6841         * config/bfin/linux-unwind.h: New file.
6842         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
6843         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
6844
6845 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6846
6847         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
6848         * stmt.c: Include alloc-pool.h.
6849         (struct case_node): Remove GTY marker.
6850         (add_case_node): New parameter case_node_pool.  Use it for
6851         allocation of r.
6852         (expand_case): New allocation pool case_node_pool.  Initialize it,
6853         pass to add_case_node and free it.
6854
6855 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6856             David Ung  <davidu@mips.com>
6857             Nigel Stephens <nigel@mips.com>
6858
6859         Add mips16/nomips16 function attributes and -mflip-mips16 option
6860         for testing mixed-mode compilation.
6861
6862         * config/mips/mips.opt (mflip-mips16): New.
6863
6864         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
6865         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
6866
6867         * config/mips/mips.c (mips_base_target_flags): New.
6868         (mips_base_mips16): New.
6869         (mips_base_schedule_insns): New.
6870         (mips_base_reorder_blocks_and_partition): New.
6871         (mips_base_align_loops): New.
6872         (mips_base_align_jumps): New.
6873         (mips_base_align_functions): New.
6874         (mips16_flipper): New.
6875         (mips_attribute_table): Add "mips16" and "nomips16" entries.
6876         (TARGET_SET_CURRENT_FUNCTION): Define.
6877         (mips_mips16_type_p, mips_nomips16_type_p): New.
6878         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
6879         (mips_function_ok_for_sibcall): Make it deal with functions with
6880         mips16 attributes.
6881         (mips_init_split_addresses): New, split out from override_options.
6882         (mips_init_relocs): New, split out from override_options.
6883         (was_mips16_p): New.
6884         (mips_set_mips16_mode): New, split out from override_options.
6885         (mips_set_current_function): New.
6886         (override_options): Add sorry for unsupported mips16/pic
6887         combination.  Remove error for mips16/dsp combination.  Save
6888         base option settings.  
6889         (mips_file_start): Move mips16 mode setting output from here....
6890         (mips_output_function_prologue): ....to here.
6891         (mips_output_mi_thunk): Check for mips16 function.
6892         (build_mips16_function_stub): Don't set .mips16 here.
6893         (build_mips16_call_stub): Likewise.
6894         (mips_expand_builtin): Error in mips16 mode.
6895         (mips_use_mips16_mode_p): New.
6896         (mips_encode_section_info): Check for mips16 function, and set
6897         SYMBOL_REF_FLAGS accordingly.
6898
6899         * doc/extend.texi (Function Attributes): Document new
6900         mips16/nomips16 attributes.
6901         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
6902         (MIPS Options): Document -mflip-mips16.
6903
6904 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6905
6906         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
6907         if we encounter TLS address in MIPS16 mode.
6908         (mips_legitimize_const_move): Check cannot_force_const_mem for
6909         the (const (plus symbol offset)) case; this forces invalid TLS
6910         address in MIPS16 mode to be caught by the above call to sorry.
6911         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
6912         because that now enables emutls, which is not ABI compatible
6913         with native TLS in non-MIPS16 mode.
6914
6915 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6916
6917         Add target hook invoked when cfun changes.
6918
6919         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
6920         * target.h (struct gcc_target): Add set_current_function.
6921         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
6922         (TARGET_INITIALIZER): Add initializer for set_current_function.
6923         * tree.h (push_struct_function): New.
6924         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
6925         * function.h: Here.
6926         (set_cfun): Declare.
6927         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
6928         * function.c: Here.
6929         (push_function_context_to): Use allocate_struct_function
6930         to create null context, not init_dummy_function_start.  Use set_cfun.
6931         (pop_function_context_from): Use set_cfun.
6932         (in_dummy_function): New.
6933         (invoke_set_current_function_hook): New.
6934         (set_cfun): New.
6935         (push_cfun, pop_cfun): Use set_cfun.
6936         (push_struct_function): New.
6937         (allocate_struct_function): Call invoke_set_current_function_hook
6938         before returning.
6939         (prepare_function_start): Don't set cfun here.  Remove unused
6940         argument; fix all callers.
6941         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
6942         push_struct_function.
6943         (init_function_start): Set cfun here.
6944         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
6945         * omp-low.c (create_omp_child_function): Use push_struct_function
6946         and pop_cfun to save/restore state.
6947         (expand_omp_parallel): Remove unused saved_cfun variable.
6948         * cgraphunit.c (ipa_passes): Use set_cfun.
6949         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
6950         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
6951         * matrix-reorg.c (transform_allocation_sites): Likewise.
6952         (matrix_reorg): Use set_cfun.
6953         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
6954         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
6955         assignment to cfun; use set_cfun for the other.
6956         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
6957         (dump_function_to_file): Use push_cfun/pop_cfun here.
6958         * c-decl.c (finish_function): Use set_cfun.
6959
6960 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
6961
6962         * regrename.c (rerename_optimize): Use deferred rescanning and
6963         insert explicit calls to rescan insns when changed.
6964         
6965 2007-09-05  Jan Hubicka  <jh@suse.cz>
6966
6967         * optabs.c (libfunc_entry): Change optab to integer.
6968         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
6969         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
6970         of pointers for hashing.
6971
6972 2007-09-05  Jan Hubicka  <jh@suse.cz>
6973
6974         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
6975         verifier.
6976         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
6977         * see.c (pass_see): Likewise.
6978         * tracer.c (pass_tracer): Likewise.
6979         * postreload-gcse.c (pass_gcse2): Likewise.
6980         * postreload.c (pass_postreload_cse): Likewise.
6981         * mode-switching.c (pass_mode_switching): Likewise.
6982         * modulo-sched.c (pass_sms): Likewise.
6983         * cse.c (cse_insn): Likewise.
6984         * web.c (pass_web): Likweise.
6985         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
6986         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
6987         * loop-init.c (pass_rtl_loop_init): Likewise.
6988         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
6989         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
6990         * global.c (pass_global_alloc): Likewise.
6991         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
6992         pass_if_after_reload): Likewise.
6993         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
6994         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
6995         * regmove.c (pass_regmove): Likewise.
6996         * function.c (pass_thread_prologugues_epilogues): Likewise.
6997         * gcse.c (pass_gcse): Likewise.
6998         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
6999         * lower-subreg.c (pass_lower_subreg2): Likewise.
7000         * bt-load.c (pass_branch_target_load): Likewise.
7001         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7002         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
7003         * combine.c (pass_combine): Likewise.
7004         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
7005         (pass_partition_blocks): Likewise.
7006         * var-tracking.c (pass_variable_track): Likewise.
7007         * reg-stack.c (pass_stack_regs_run): Likewise.
7008         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
7009         * passes.c (pass_postreload): Likewise.
7010         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
7011         * tree-pass.h (TODO_verify_rtl_sharing): New.
7012         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
7013         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
7014         TODO_set_props, TODO_df_finish, TODO_df_verify,
7015         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
7016
7017 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7018
7019         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
7020         fold_real_zero_addition_p, reorder_operands_p,
7021         div_if_zero_remainder, fold_undefer_overflow_warnings,
7022         int_binop_types_match_p, fold_convert_const_int_from_int,
7023         fold_convert_const_int_from_real,
7024         fold_convert_const_int_from_fixed,
7025         fold_convert_const_real_from_real,
7026         fold_convert_const_real_from_fixed,
7027         fold_convert_const_fixed_from_fixed,
7028         fold_convert_const_fixed_from_int,
7029         fold_convert_const_fixed_from_real, maybe_lvalue_p,
7030         fold_checksum_tree, fold_check_failed, print_fold_checksum,
7031         debug_fold_checksum, multiple_of_p): Constify.
7032         * tree-flow-inline.h (get_lineno): Likewise.
7033         * tree-flow.h (get_lineno): Likewise.
7034         * tree-object-size.c (compute_object_offset, addr_object_size,
7035         alloc_object_size, pass_through_call): Likewise.
7036         * tree-pretty-print.c (op_symbol, print_call_name,
7037         print_struct_decl, do_niy): Likewise.
7038         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
7039         debug_fold_checksum): Likewise.
7040
7041 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
7042
7043         PR middle-end/33029
7044         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
7045         note, remove the associated REG_RETVAL note.
7046
7047 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7048
7049         * config.gcc (powerpc*-*-*): Install
7050         spu2vmx.h, vec_types.h, and si2vmx.h headers.
7051         * config/rs6000/spu2vmx.h: New header.
7052         * config/rs6000/si2vmx.h: New header.
7053         * config/rs6000/vec_types.h: New header.
7054
7055 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7056
7057         * varasm.c (initializer_constant_valid_p): Fix comment typo.
7058
7059 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7060
7061         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
7062         not `m' for *ptrp.
7063         (__stdcx): Make asm volatile.
7064         (__stwcx, __stdcx): Return only 0 or 1.
7065
7066 2007-09-05  Jan Hubicka  <jh@suse.cz>
7067
7068         Revert:
7069
7070         2007-09-04  Jan Hubicka  <jh@suse.cz>
7071         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7072
7073         2007-09-04  Richard Guenther  <rguenther@suse.de>
7074         * tree-ssa-operands.c (add_virtual_operand): Only mark
7075         stores as has_volatile_ops if alias information is not available.
7076
7077 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
7078
7079         * config/rs6000/tramp.asm: Include config.h.
7080         Check __PIC__ or __pic__ macro instead of SHARED.
7081
7082         PR rtl-optimization/32300
7083         * see.c (see_copy_insn): New function.
7084         (see_def_extension_not_merged, see_merge_one_use_extension,
7085         see_merge_one_def_extension): Use it.  Avoid changing
7086         PREV_INSN/NEXT_INSN chains directly, insted emit insns
7087         into sequences.  Call df_insn_delete on temporary insns
7088         that won't be emitted into the insn stream.
7089         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
7090         and run df_process_deferred_rescans () before run_fast_dce.
7091
7092         PR tree-optimization/33017
7093         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
7094         recurse for pure or const function calls.
7095
7096 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7097
7098         * c-format.c: Include alloc-pool.h.
7099         (check_format_info_main): New argument fwt_alloc.  Use allocation
7100         pool instead of GC.  Remove GC deallocation code.
7101         (check_format_arg): Create allocation pool, pass it to
7102         check_format_info_main and free it afterwards.
7103         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
7104
7105 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7106
7107         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
7108         Rename count macro arugment for clarity.
7109         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
7110         (__protected_stream_set): Likewise, pass 0.
7111
7112 2007-09-04  Jan Hubicka  <jh@suse.cz>
7113
7114         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7115
7116 2007-09-04  Jan Hubicka  <jh@suse.cz>
7117
7118         * invoke.texi (-finline-small-functions): Document.
7119         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
7120         when deciding what is inlinable.
7121         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
7122         (cgraph_decide_inlining_of_small_function): Handle new flags.
7123         (cgraph_decide_inlining_incrementally): Likewise.
7124         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
7125         * common.opt (finline-small-functions): New.
7126         * Makefile.in (build/gengtype.o-warn): Work around PR29478
7127
7128 2007-09-04  Richard Guenther  <rguenther@suse.de>
7129
7130         * tree-ssa-operands.c (add_virtual_operand): Only mark
7131         stores as has_volatile_ops if alias information is not available.
7132
7133 2007-09-04  Andrew Haley  <aph@redhat.com>
7134
7135         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
7136
7137 2007-09-04  Andrew Haley  <aph@redhat.com>
7138
7139         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
7140         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
7141         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
7142
7143 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
7144
7145         PR c++/14178
7146         * common.opt: Mention ABI version 2 in comment.
7147
7148 2007-09-04  Jan Hubicka  <jh@suse.cz>
7149
7150         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
7151         (libfunc_entry): New structure.
7152         (libfunc_hash): New hashtable.
7153         (hash_libfunc): New function.
7154         (eq_libfunc): New function.
7155         (convert_optab_libfunc): New function.
7156         (optab_libfunc): New function.
7157         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
7158         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
7159         expand_float, expand_fix, new_optab, new_convert_optab):
7160          Update for new libfunc API.
7161         (init_libfunc, init_integral_libfuncs,
7162         init_floating_libfuncs, init_interclass_conv_libfuncs
7163         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
7164         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
7165         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7166         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
7167         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
7168         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
7169         gen_extend_conv_libfunc): New.
7170         (init_one_libfunc): Revamp for hashtables.
7171         (set_conv_libfunc): Likewise.
7172         (init_optabs): Initialize hashtable; use lazy initialization where
7173         possible.
7174         * optabs.h (optab_handlers): Move out of GGC.
7175         (optab, convert_optab): Move out of GGC; add lazy gen info.
7176         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
7177         (optab_libfunc, convert_optab_libfunc): New.
7178         * builtins.c (expand_builtin_powi): Update for new API.
7179         * expr.c (convert_move): Likewise.
7180         * expmed.c (expand_divmod): Likewise.
7181
7182 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7183
7184         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
7185         GOT pointer only if there is a constant pool.  Use the allocated space
7186         for SPE also.
7187
7188 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7189
7190         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
7191         typo for AltiVec.
7192
7193 2007-09-04  Revital Eres  <eres@il.ibm.com>
7194             Richard Guenther  <rguenther@suse.de>
7195             R. Clint Whaley  <whaley@cs.utsa.edu>
7196
7197         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
7198         Document new flags.
7199         * tree-tailcall.c (process_assignment): Use -fassociative-math
7200         when reodering operands of floating-point type.
7201         * fold-const.c (fold_comparison, fold_binary): Use
7202         -fassociative-math and -freciprocal-math instead of
7203         -funsafe-math-optimization flag.
7204         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
7205         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
7206         -freciprocal-math instead of -funsafe-math-optimizations.
7207         * opts.c (set_fast_math_flags): Set -freciprocal-math and
7208         -fassociative-math when -ffast-math is set.
7209         (set_unsafe_math_optimizations_flags): New Function
7210         to set -freciprocal-math and -fassociative-math when
7211         -funsafe-math-optimizations is set.
7212         (common_handle_option): Call it.
7213         * tree-vectorizer.c (vect_is_simple_reduction): Use
7214         -fassociative-math when doing reduction on floats.
7215         * loop-unroll.c (analyze_insn_to_expand_var): Use
7216         -fassociative-math when expanding an accumulator of type float.
7217         * simplify-rtx.c (simplify_binary_operation_1): Use
7218         -fassociative-math and -freciprocal-math when reordeing operands
7219         of floating-point type.
7220         * combine.c (combine_simplify_rtx): Likewise.
7221         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
7222         Likewise.
7223         * common.opt (-fassociative-math, -freciprocal-math): New flags.
7224
7225 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
7226
7227         PR c++/18608
7228         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
7229
7230 2007-09-04  Jan Hubicka  <jh@suse.cz>
7231
7232         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
7233
7234 2007-09-04  Jan Hubicka  <jh@suse.cz>
7235
7236         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
7237         and corresponding MATCH_DUP.
7238
7239 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
7240
7241         PR middle-end/33187
7242         * combine.c (subst): Do not try to simplify X if it represents load
7243         of FP constant from the constant pool via float extension.
7244
7245 2007-09-04  Ben Elliston  <bje@au.ibm.com>
7246
7247         * c-opts.c: Include "tm_p.h".
7248         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
7249
7250 2007-09-04  Richard Guenther  <rguenther@suse.de>
7251
7252         PR tree-optimization/33291
7253         * tree-pretty-print.c (dump_generic_node): Dump all
7254         qualifiers for pointer types, not only first.  Dump
7255         qualifiers for aggregate types as well.
7256         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
7257         use the canonical type for building ARRAY_REFs.
7258         * gimplify.c (canonicalize_addr_expr): Clean up.  The
7259         correct validness check is compatibility of the pointer
7260         types.  Always use the canonical type for building
7261         ARRAY_REFs and ADDR_EXPRs.
7262         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
7263         change that disabled propagation of ADDR_EXPRs into statements
7264         with volatile ops.
7265
7266 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7267
7268         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
7269         (umulsi3_highpart): Make into expanders; existing insns are
7270         now named *[insn]_nov6.  Add stars to existing [insn]_v6
7271         counterparts' names.
7272
7273 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
7274
7275         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
7276         (unprotoize.o): Remove SHLIB_MULTILIB.
7277
7278 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
7279
7280         * doc/extend.texi: Document progmem attribute for AVR.
7281
7282 2007-09-03  Anatoly Sokolov <aesok@post.ru>
7283
7284         PR target/28902
7285         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
7286
7287 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7288
7289         * optabs.c (expand_ffs): Initialize val and defined_at_zero
7290         to avoid warnings.
7291
7292         * optabs.c: Remove unnecessary forward declarations.
7293         (expand_unop_direct): New, broken out of expand_unop.
7294         (expand_doubleword_clz): New.
7295         (expand_ctz): Move above expand_ffs.  Use
7296         start_sequence, end_sequence, add_equal_note, and
7297         expand_unop_direct.  Add more commentary.
7298         (expand_ffs): Try both ctz optab and expand_ctz.
7299         Generate a test and branch if the hardware doesn't give us
7300         a useful value for input zero.  Style improvements similar to
7301         expand_ctz.
7302
7303         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
7304
7305 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7306
7307         * config.gcc: Delete stanza for arm-semi-aof and
7308         armel-semi-aof targets.
7309         * config/arm/arm-protos.h
7310         * config/arm/arm.c
7311         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
7312         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
7313         delete aof_pic_label and remove mention of AOF in comments.
7314         * config/arm/arm.md: Delete patterns used only for AOF assembly.
7315         * config/arm/aof.h
7316         * config/arm/semiaof.h
7317         * config/arm/t-semi: Delete file.
7318
7319 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7320
7321         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
7322         CONST_CAST_BB): New macros for type-specific casts.
7323         (CONST_CAST): Add a TYPE parameter and define it in terms of
7324         CONST_CAST2.
7325
7326         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
7327         * c-lex.c (cb_ident, lex_string): Likewise,
7328         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
7329         * config/i386/i386.c (ix86_function_regparm,
7330         ix86_function_sseregparm): Use CONST_CAST_TREE.
7331         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
7332         CONST_CAST.
7333         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
7334         give_switch, set_multilib_dir): Likewise,
7335         * gengtype-parse.c (string_seq, typedef_name): Likewise,
7336         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
7337         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
7338         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
7339         * prefix.c (update_path): Likewise,
7340         * pretty-print.c (pp_base_destroy_prefix): Likewise,
7341         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
7342         * tree-cfg.c (tree_can_merge_blocks_p,
7343         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
7344         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
7345         * tree.c (build_string): Supply a TYPE for CONST_CAST.
7346         (attribute_list_contained): Use CONST_CAST_TREE.
7347
7348 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
7349
7350         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
7351
7352 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7353
7354         PR middle-end/33290
7355         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
7356         before forcing them into a register.
7357
7358 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7359
7360         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
7361         rather than define_code_macro.
7362
7363 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7364
7365         * gcc.c (xputenv): New function.
7366         (putenv_from_prefixes): Use xputenv instead of putenv.
7367         (process_command): Use xputenv instead of putenv.
7368         (set_collect_gcc_options): Use xputenv instead of putenv.
7369         (main): Use xputenv instead of putenv.
7370
7371 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7372
7373         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
7374         availability of swap instruction.
7375         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
7376
7377 2007-09-03  Revital Eres  <eres@il.ibm.com>
7378
7379         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
7380         Documentation.
7381
7382 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
7383             Ayal Zaks  <zaks@il.ibm.com>
7384             Revital Eres  <eres@il.ibm.com>
7385
7386         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
7387         compute_split_row): New functions.
7388         (ps_unschedule_node): Remove.
7389         (normalize_sched_times): Iterate over the already scheduled
7390         insns instead of the number of nodes.
7391         (MAX_SPLIT_NUM): New definition.
7392         (sms_schedule_by_order): Change the scheduling heuristic to
7393         avoid useless increases of initiation interval ii.
7394         (get_sched_window): Add dump printouts.
7395
7396 2007-09-02  David Daney  <ddaney@avtrex.com>
7397
7398         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
7399         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
7400         (optab, insn): Add more attributes.
7401         (fetchop_bit): New code macro.
7402         (immediate_insn): New code macro attribute.
7403         (sync): Change condition to ISA_HAS_SYNC.
7404         (rdhwr): Change predicate for operand 0 to register_operand.
7405         (memory_barrier): New expand.
7406         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
7407         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
7408         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
7409         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
7410         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
7411         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
7412         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
7413         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
7414         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
7415         
7416 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7417             Hans-Peter Nilsson  <hp@axis.com>
7418
7419         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
7420         Defined to describe availability and behavior of CLZ.
7421         * config/cris/cris.md (clzsi2): Implement using lz instruction.
7422         * config/cris/cris.opt: Tweak comment for "-metrax4".
7423         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
7424         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
7425         (count_leading_zeros): Define.
7426
7427 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7428
7429         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
7430
7431 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
7432
7433         PR c/29237
7434         PR middle-end/33272
7435         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
7436         decayed from array.
7437
7438 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7439
7440         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
7441         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
7442         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
7443         sched-deps.c, sched-int.h, system.h, target.h,
7444         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
7445         tree.def: Fix comment typos.
7446
7447 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7448
7449         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
7450         (override_options): Turn on -mstrict-align on non-ColdFire
7451         targets.
7452         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
7453
7454 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7455
7456         * c-common.c (const_strip_array_types): Delete.
7457         * c-common.h (const_strip_array_types): Likewise.
7458         * emit-rtl.c (const_next_insn, const_previous_insn,
7459         const_next_nonnote_insn, const_prev_nonnote_insn,
7460         const_next_real_insn, const_prev_real_insn,
7461         const_next_active_insn, const_prev_active_insn, const_next_label,
7462         const_prev_label): Delete.
7463         * gimple-low.c (block_may_fallthru): Use expr_last.
7464         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
7465         * rtl.h (const_previous_insn, const_next_insn,
7466         const_prev_nonnote_insn, const_next_nonnote_insn,
7467         const_prev_real_insn, const_next_real_insn,
7468         const_prev_active_insn, const_next_active_insn, const_prev_label,
7469         const_next_label): Delete.
7470         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
7471         * system.h (CONST_CAST): Update comment.
7472         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
7473         (const_first_stmt, const_last_stmt): Delete.
7474         (tree_block_ends_with_condjump_p): Use last_stmt.
7475         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
7476         * tree-iterator.c (const_expr_first, const_expr_last,
7477         const_expr_only): Delete.
7478         * tree.c (const_lookup_attribute): Likewise.
7479         (attribute_list_contained): Use lookup_attribute.
7480         * tree.h (const_lookup_attribute, const_expr_first,
7481         const_expr_last, const_expr_only): Delete.
7482
7483 2007-09-01  Richard Guenther  <rguenther@suse.de>
7484
7485         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
7486         instead of TREE_THIS_VOLATILE.
7487         * tree-ssa-operands.c (add_virtual_operand): Do not set
7488         has_volatile_ops.  Do not check s_ann for NULL.
7489         (get_indirect_ref_operands): Likewise.
7490         (get_expr_operands): Likewise.  For all reference trees
7491         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
7492         check base of reference for TREE_THIS_VOLATILE.
7493
7494 2007-09-01  Richard Guenther  <rguenther@suse.de>
7495
7496         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
7497         between integral types.  Also allow conversions between
7498         pointer types.
7499
7500 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7501
7502         * optabs.c (prepare_float_lib_cmp): Use
7503         libgcc_cmp_return_mode instead of word_mode.
7504         * config/dfp-bit.h: Likewise.
7505         * config/fp-bit.h: Likewise.
7506         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
7507         New function.
7508         (spu_libgcc_shift_count_mode): New function.
7509         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
7510         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
7511
7512 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
7513
7514         * tree-pretty-print.c: Include output.h.
7515         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
7516         HOST_WIDE_INT_PRINT_DEC.
7517         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
7518
7519 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
7520
7521         PR rtl-optimization/33224
7522         * loop-iv.c (latch_dominating_def): Check that the definition belongs
7523         to the analysed region.
7524
7525 2007-08-31  Richard Guenther  <rguenther@suse.de>
7526
7527         * function.c (allocate_struct_function): Do not set
7528         current_function_returns_pointer.
7529         * function.h (struct var_refs_queue): Remove.
7530         (struct simple_obstack_stack): Likewise.
7531         (struct function): Remove fixup_var_refs_queue member.
7532         Remove returns_pointer flag.
7533         (current_function_returns_pointer): Remove define.
7534
7535 2007-08-31  Nick Clifton  <nickc@redhat.com>
7536
7537         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
7538         secondary keys in order to obtain a stable sort.
7539
7540 2007-08-31  Nick Clifton  <nickc@redhat.com>
7541
7542         PR target/33132
7543         * config/m32r/constraints.md: Add W constraint for integer zero.
7544         * config/m32r/m32r.md (get_pc): Use W and i constraints.
7545         Fix length calculation by using alternatives.
7546
7547 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
7548
7549         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
7550         split out from expand_binop.
7551         (avoid_expensive_constant): New function.
7552         (expand_binop_directly): Remove commutative_op argument and
7553         (expand_binop_directly): Remove commutative_op argument and
7554         call cummutative_optab_p instead.  Do not change op0 or op1
7555         when swapping xop0 and xop1.  Apply avoid_expensive_constant
7556         to each argument after potential swapping.  Enforce the
7557         canonical order of commutative operands.
7558         (expand_binop): Use shift_optab_p and commutative_optab_p.
7559         Update the calls to expand_binop_directly.  Only force constants
7560         into registers when widening an operation.  Only swap operands
7561         once a direct expansion has been rejected.
7562         (expand_twoval_binop): Only force constants into registers when
7563         using a direct expansion.
7564
7565 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
7566
7567         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
7568         (sched_analyze_insn): Don't postprocess speculative dependencies when
7569         target has no scheduling.
7570         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
7571         'uninitialized' warning.
7572
7573 2007-08-31  Richard Guenther  <rguenther@suse.de>
7574
7575         * tree.c (build_complex_type): Always set TYPE_NAME for
7576         comples types.
7577
7578 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7579
7580         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
7581         internal macro. Default alignment factor for csect directives, chosen
7582         to match what BIGGEST_ALIGNMENT allows.
7583         (DATA_SECTION_ASM_OP): Use it.
7584         * config/rs6000/rs6000.c
7585         (rs6000_xcoff_output_readonly_section_asm_op):
7586         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
7587         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
7588         
7589 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7590
7591         * dbxout.c (dbxout_block): Move declaration within the first
7592         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
7593         block to include the definition, together with the associated
7594         helpers.
7595
7596 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
7597             Revital Eres  <eres@il.ibm.com>
7598
7599         * doc/invoke.texi (-mpaired): Document flag.
7600         * config.gcc: Include paired.h in powerpc extra_headers and
7601         750cl.h in powerpc-*-linux*paired*.
7602         * config/rs6000/rs6000.opt (-mpaired): New flag.
7603         * config/rs6000/rs6000.c (paired_init_builtins,
7604         paired_expand_builtin, paired_expand_lv_builtin,
7605         paired_expand_stv_builtin, paired_expand_predicate_builtin):
7606         New functions to support the paired single builtin functions.
7607         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
7608         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
7609         single builtins.
7610         (bdesc_paired_preds): New structure for paired predicate
7611         instructions.
7612         (rs6000_expand_builtin): Expand paired single builtins.
7613         (rs6000_init_builtins): Init paired single builtins.
7614         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
7615         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
7616         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
7617         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
7618         (rs6000_vector_mode_supported_p): Support paired vector mode.
7619         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
7620         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
7621         New.
7622         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
7623         (DATA_ALIGNMENT): Likewise.
7624         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
7625         (rs6000_builtins): Add PAIRED builtins.
7626         * config/rs6000/rs6000.md: Include paired.md.
7627         * config/rs6000/paired.h: New.
7628         * config/rs6000/paired.md: New.
7629         * config/rs6000/750cl.h: New.
7630         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
7631
7632 2007-08-30  Ollie Wild  <aaw@google.com>
7633
7634         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
7635         * gcc.c (default_compilers): Add -fno-directives-only to
7636         @assembler-with-cpp.
7637
7638 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
7639
7640         PR middle-end/33211
7641
7642         * regclass.c (initial_fixed_regs): Revert previous change and make
7643         it const again.
7644         (initial_call_used_regs): Likewise.
7645         (initial_call_really_used_regs): Delete, reverting previous addition.
7646         (initial_reg_names): Likewise.
7647         (init_reg_sets): Revert previous change.
7648         (saved_fixed_regs): New.
7649         (saved_call_used_regs): New.
7650         (saved_call_really_used_regs): New.
7651         (saved_reg_names): New.
7652         (save_register_info): New.
7653         (restore_register_info): New.
7654         (init_reg_sets_1): Replace reset of register info with call to
7655         restore_register_info.
7656         * rtl.h (save_register_info): Declare.
7657         * toplev.c (backend_init): Call save_register_info.
7658
7659 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7660
7661         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
7662         from the original statement.
7663
7664 2007-08-30  Chao-ying Fu  <fu@mips.com>
7665
7666         * c-lex.c (interpret_fixed): Declare.
7667         (interpret_float): Process _Fract and _Accum.
7668         (interpret_fixed): New function.
7669         * final.c (output_addr_const): Process CONST_FIXED.
7670         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
7671         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
7672         SS_DIV, US_DIV.
7673         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
7674         US_DIV, US_ASHIFT.
7675         (simplify_immed_subreg): Support CONST_FIXED.
7676         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7677         (simplify_subreg): Support CONST_FIXED.
7678
7679 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7680
7681         * config/rs6000/ppu_intrinsics.h: New file.
7682         * config.gcc (powerpc*-*-* <extra_headers>): Install
7683         ppu_intrinsics.h.
7684
7685 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7686
7687         * cfg.c (dump_flow_info): Change to also print entry and exit
7688         block info.
7689         * print-rtl.c (print_rtl_single): Allow to print rtl with
7690         -fdump-unnumbered.
7691         
7692 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7693
7694         * df-core.h (df_dump_region): New function.
7695         * df.h (df_dump_region): New function.
7696         * loop-invariant.c (find_defs): Add call to df_dump_region.
7697         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
7698         df_dump_region.
7699         
7700 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7701
7702         PR target/33168
7703         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
7704         true if any of the compare_section_name calls returned true,
7705         rather than if any returned false.
7706
7707 2007-08-30  Richard Guenther  <rguenther@suse.de>
7708
7709         PR tree-optimization/33199
7710         * tree-ssa-structalias.c (handle_lhs_call): New function.
7711         (find_func_aliases): In non-IPA mode make sure that for
7712         calls that return a pointer we add a constraint for the
7713         result to point to anything.
7714
7715 2007-08-30  Richard Guenther  <rguenther@suse.de>
7716
7717         * doc/invoke.texi (-mveclibabi): Document new target option.
7718         * config/i386/i386.opt (-mveclibabi): New target option.
7719         * config/i386/i386.c (ix86_veclib_handler): Handler for
7720         vectorization library support.
7721         (override_options): Handle the -mveclibabi option, initialize
7722         the vectorization library handler.
7723         (ix86_builtin_vectorized_function): As fallback call the
7724         vectorization library handler, if set.
7725         (ix86_veclibabi_acml): New static function for ACML ABI style
7726         vectorization support.
7727
7728 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7729
7730         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
7731         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
7732         SImode and update m.  Don't run gen_lowpart_common on arbitrary
7733         memory address, force it to register first.
7734
7735         PR middle-end/32758
7736         * dce.c (dce_process_block): Don't delete setters of
7737         artificially used registers.
7738
7739 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7740
7741         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
7742         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
7743         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
7744
7745 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7746
7747         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
7748         pattern.
7749         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
7750         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
7751
7752 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7753
7754         * system.h: Activate -Wcast-qual as warning-only.
7755
7756 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
7757
7758         PR target/33168
7759         * config/rs6000/rs6000.c (compare_section_name): New function.
7760         (rs6000_elf_in_small_data_p): Compare section prefixes instead
7761         of full name.
7762
7763 2007-08-29  Olivier Hainque  <hainque@adacore.com>
7764
7765         * xcoffout.c: #include debug.h.
7766         * Makefile.in (xcoffout.o): Add debug.h dependency.
7767
7768 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
7769
7770         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7771         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
7772
7773 2007-08-29  Richard Guenther  <rguenther@suse.de>
7774
7775         * tree-pretty-print.c (dump_generic_node): Print
7776         label DECL_UID as D.%u.
7777         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
7778
7779 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7780
7781         * builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
7782         * builtins.def (BUILT_IN_REALLOC): New builtin.
7783
7784 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
7785
7786         PR c++/33194
7787         * tree.c (build_type_attribute_qual_variant): Set canonical types
7788         on the final, unqualified attribute variant before building the
7789         qualified version.
7790
7791 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7792
7793         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
7794         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
7795
7796 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7797
7798         Revert
7799         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7800         * config/bfin/bfin.md (composev2hi): Put operands into vector
7801         with correct order.
7802
7803 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7804
7805         * config/bfin/bfin.md (composev2hi): Put operands into vector
7806         with correct order.
7807
7808 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7809
7810         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
7811         attribute when appropriate.
7812         (bfin_handle_l1_text_attribute): New.
7813         (bfin_handle_l1_data_attribute): New.
7814         (bfin_attribute_table): Add attributes: l1_text, l1_data,
7815         l1_data_A and l1_data_B.
7816         * doc/extend.texi (node Function Attributes): Document l1_text
7817         function attribute.
7818         (Variable Attributes): Add Blackfin subsection. Document l1_data,
7819         l1_data_A and l1_data_B variable attributes.
7820
7821 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
7822
7823         * config/bfin/bfin.opt (minline-plt): Add.
7824         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
7825         call to global functions.
7826         * doc/invoke.texi (Option Summary): Mention -minline-plt.
7827         (Blackfin Options): Document -minline-plt.
7828
7829 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7830
7831         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
7832         given a non-function.
7833         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
7834
7835 2007-08-28  DJ Delorie  <dj@redhat.com>
7836
7837         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
7838
7839 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7840
7841         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
7842
7843 2007-08-28  Richard Guenther  <rguenther@suse.de>
7844
7845         * tree.h (struct tree_function_decl): Increase size of
7846         function_code bitfield.
7847
7848 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7849             Kazu Hirata  <kazu@codesourcery.com>
7850
7851         * config/m68k/linux.h
7852         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
7853         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
7854         (m68k_return_in_memory): New.
7855         * config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
7856         New.
7857
7858 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
7859
7860         PR target/32661
7861         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7862         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
7863         operand) when top VEC_SELECT extracts scalar element.
7864         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
7865         (*vec_extract_v4sf_mem): Ditto.
7866
7867 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
7868
7869         PR middle-end/32370
7870         * passes.c (init_optimization_passes): Move pass_df_finish
7871         after pass_postreload sublist.
7872
7873         PR rtl-optimization/33148
7874         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
7875         (neg (lt X 0)) if X has scalar int mode.
7876
7877         PR debug/32914
7878         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
7879         initializer, use build_vector_from_ctor if possible to create
7880         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
7881         even after this, return NULL.
7882
7883 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7884
7885         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
7886
7887 2007-08-28  Richard Guenther  <rguenther@suse.de>
7888
7889         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
7890         (struct tree_function_decl): Make function_code a bitfield.
7891         Add disregard_inline_limits flag.
7892         * cgraphunit.c (cgraph_process_new_functions): Check
7893         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
7894         (cgraph_preserve_function_body_p): Likewise.
7895         * ipa-inline.c (compute_inline_parameters): Likewise.
7896         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
7897         for GNU C extern inline functions.
7898         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
7899         * tree-inline.c (disregard_inline_limits_p): Remove.
7900         * tree-inline.h (disregard_inline_limits_p): Likewise.
7901         * c-common.c (handle_always_inline_attribute): Set
7902         DECL_DISREGARD_INLINE_LIMITS.
7903         * langhooks.c (add_builtin_function): Verify the function code
7904         fits in the bitfield.
7905
7906 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
7907             Vladimir Yanovsky  <yanov@il.ibm.com>
7908             Revital Eres  <eres@il.ibm.com>
7909             Andrey Belevantsev  <abel@ispras.ru>
7910
7911         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
7912         is set.
7913         * modulo-sched.c: Add documentation regarding do-loop.
7914         (doloop_register_get): Change number of arguments to support
7915         the new do-loop pattern and check whether COUNT_REG has no other
7916         occurences in the loop besides in the control part.
7917         (duplicate_insns_of_cycles): Do not duplicate the insn which
7918         changes count_reg as it is already adjusted.
7919         (generate_prolog_epilog): New argument to support the new
7920         do-loop pattern.  Change the subtract instruction to use
7921         expand_simple_binop.  Call duplicate_insns_of_cycles with new
7922         argument.
7923         (sms_schedule): Call doloop_register_get and
7924         generate_prolog_epilog with new argument.  Do not handle loops
7925         with single sets insns with subreg in their lhs.
7926         * loop-doloop.c (doloop_optimize): Support for another do-loop
7927         pattern.
7928         (doloop_condition_get): Gets an instruction instead of a pattern
7929         and change the return condition when the do-loop pattern is
7930         not parallel.
7931         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
7932         deps when considering to not create edges.
7933
7934 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
7935
7936         * doc/extend.texi (gnu_inline funtion attribute): Document C++
7937         behavior.
7938
7939 2007-08-27  Jason Merrill  <jason@redhat.com>
7940
7941         PR c++/31337
7942         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
7943         zero-sized types after calling gimplify_modify_expr_rhs.
7944
7945 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7946
7947         * regclass.c (init_reg_autoinc): Fix typo.
7948
7949 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
7950         
7951         Fix PR tree-optimization/33173
7952         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
7953
7954 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
7955
7956         PR target/31385
7957         * config/i386/i386.h (VALID_DFP_MODE_P): New.
7958         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
7959         GPR.
7960
7961 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7962             David Ung  <davidu@mips.com>
7963             Nigel Stephens <nigel@mips.com>
7964
7965         Separate target-specific initialization from general
7966         back-end initialization.
7967
7968         * toplev.c (init_alignments): New, split out from...
7969         (process_options): ...here.
7970         (backend_init_target): New, split out from...
7971         (backend_init): ...here.
7972         (lang_dependent_init_target): New, split out from...
7973         (lang_dependent_init): ...here.
7974         (target_reinit): New.
7975         * toplev.h (target_reinit): Declare.
7976         * expr.c (init_expr_target): Renamed from init_expr_once, since it
7977         now can be called more than once.  Update comments.
7978         * expr.h (init_expr_target): Likewise.
7979         * alias.c (init_alias_target): Renamed from init_alias_once, since it
7980         now can be called more than once.  Explicitly zero
7981         static_reg_base_value.
7982         * emit-rtl.c (init_emit_regs): New, split out from...
7983         (init_emit_once): Here.
7984         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
7985         non-const, so that changes from command-line arguments can overwrite
7986         values provided by the static initializers.
7987         (initial_call_really_used_regs): New, used similarly to the above.
7988         (initial_reg_names): Likewise.
7989         (last_mode_for_init_move_cost): Promoted function-local static to
7990         file-scope static to make it accessible outside init_move_cost.
7991         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
7992         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
7993         reg_names since it is needed for parsing command-line options.
7994         (init_move_cost): Use last_mode_for_init_move_cost instead of
7995         function-local static.
7996         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
7997         call_really_used_regs now.  Reinitialize reg_names.  Also
7998         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
7999         reg_class_superunion.  Clear losing_caller_save_reg_set.
8000         Preserve global registers if called more than once.  Reset
8001         move cost, may_move_in_cost, may_move_out_cost, and
8002         last_mode_for_init_move_cost.
8003         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
8004         can now be invoked more than once.  Update comments.
8005         (init_regs): Update comments.
8006         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
8007         and initial_call_really_used_regs, instead of the non-initial 
8008         variables.  This allows us to save the command-line register settings
8009         after target reinitialization.
8010         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
8011         * rtl.h (init_emit_regs): Declare.
8012         (init_reg_modes_target, init_alias_target): Renamed as described
8013         above.
8014         * reload1.c (init_reload): Update comments.
8015         * optabs.c (init_optabs): Likewise.
8016         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
8017         
8018 2007-08-26  Chao-ying Fu  <fu@mips.com>
8019
8020         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
8021         __typeof().
8022
8023 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8024
8025         * alias.c (memory_modified_1, memory_modified_in_insn_p):
8026         Constify.
8027         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
8028         Likewise.
8029         * bb-reorder.c (copy_bb_p): Likewise.
8030         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
8031         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8032         block_ends_with_condjump_p): Likewise.
8033         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
8034         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8035         block_ends_with_condjump_p): Likewise.
8036         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
8037         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
8038         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
8039         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
8040         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
8041         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
8042         debug_true_const_tree instad of debug_true_tree.
8043         * debug.c (do_nothing_debug_hooks): Likewise.
8044         * debug.h (ignore_block, debug_true_const_tree): Constify.
8045         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
8046         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
8047         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
8048         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
8049         dbx_reg_number, is_based_loc, field_type,
8050         simple_type_align_in_bits, simple_decl_align_in_bits,
8051         simple_type_size_in_bits, field_byte_offset, insert_float,
8052         type_tag, member_declared_type, is_redundant_typedef,
8053         secname_for_decl, is_inlined_entry_point): Likewise.
8054         * emit-rtl.c (const_next_insn, const_previous_insn,
8055         const_next_nonnote_insn, const_prev_nonnote_insn,
8056         const_next_real_insn, const_prev_real_insn,
8057         const_next_active_insn, const_prev_active_insn, const_next_label,
8058         const_prev_label): Likewise.
8059         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
8060         Likewise.
8061         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
8062         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
8063         sched_insn_is_legitimate_for_speculation_p): Likewise.
8064         * jump.c (reversed_comparison_code_parts,
8065         reversed_comparison_code, reversed_comparison, condjump_label):
8066         Likewise.
8067         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
8068         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
8069         Likewise.
8070         * rtl.h (const_previous_insn, const_next_insn,
8071         const_prev_nonnote_insn, const_next_nonnote_insn,
8072         const_prev_real_insn, const_next_real_insn,
8073         const_prev_active_insn, const_next_active_insn, const_prev_label,
8074         const_next_label, modified_between_p, modified_in_p,
8075         const_note_storeskeep_with_call_p, condjump_label,
8076         reversed_comparison, reversed_comparison_code,
8077         reversed_comparison_code_parts, memory_modified_in_insn_p,
8078         stack_regs_mentioned): Likewise.
8079         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
8080         keep_with_call_p): Likewise.
8081         * sched-deps.c (deps_may_trap_p, sched_get_condition,
8082         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
8083         sd_lists_size, sd_lists_empty_p): Likewise.
8084         * sched-int.h (sched_insns_conditions_mutex_p,
8085         haifa_classify_insn, no_real_insns_p,
8086         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
8087         sd_lists_size, sd_lists_empty_p): Likewise.
8088         * sdbout.c (sdb_debug_hooks): Likewise.
8089         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
8090         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
8091         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
8092         Likewise.
8093         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
8094         tree_can_throw_internal): Likewise.
8095         * tree-flow-inline.h (phi_nodes): Likewise.
8096         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
8097         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
8098         * tree-gimple.c (const_get_call_expr_in): Likewise.
8099         * tree-gimple.h (const_get_call_expr_in): Likewise.
8100         * tree.c (const_lookup_attribute, attribute_list_equal,
8101         attribute_list_contained): Likewise.
8102         * tree.h (attribute_list_equal, attribute_list_contained,
8103         const_lookup_attribute): Likewise.
8104         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
8105
8106 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8107
8108         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
8109         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
8110
8111 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8112
8113         PR target/32991
8114         * config/alpha/constraints.md: Delete "svn:mime-type" property
8115         with svn propdel "svn:mime-type".
8116
8117 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8118
8119         PR middle-end/33181
8120         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
8121         non NOTE insn doesn't cross basic block.
8122         (noce_try_abs): Likewise.
8123         (noce_process_if_block): Likewise.
8124
8125 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
8126
8127         PR target/33151
8128         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
8129         operand without auto-inc-dec.
8130         * config/rs6000/rs6000.md (floatsidf2_internal): Use
8131         offsettable_mem_operand.
8132         (floatunssidf2_internal): Same.
8133         (fix_truncdfsi2_internal): Same.
8134         (floatsidf_ppc64): Same.
8135         (floatunssidf_ppc64): Same.
8136         (fix_trunctfsi2_internal): Same.
8137
8138 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8139
8140         PR bootstrap/30620
8141         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
8142         pass defines needed for version.c.
8143
8144 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
8145
8146         * configure.ac (--debug-prefix-map check): Change assembler
8147         version presumed to have feature to 2.18.
8148         * configure: Regenerate.
8149
8150 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8151
8152         * c-common.c (vector_types_convertible_p,
8153         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
8154         self_promoting_args_p): Constify.
8155         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
8156         c_promoting_integer_type_p, self_promoting_args_p,
8157         anon_aggr_type_p, vector_types_convertible_p): Likewise.
8158         * c-decl.c (anon_aggr_type_p): Likewise.
8159         * * c-dump.c (dump_stmt): Likewise.
8160         * c-objc-common.c (has_c_linkage): Likewise.
8161         * c-tree.h (same_translation_unit_p): Likewise.
8162         * c-typeck.c (null_pointer_constant_p,
8163         tagged_types_tu_compatible_p, function_types_compatible_p,
8164         type_lists_compatible_p, lvalue_or_else, lvalue_p,
8165         comptypes_internal, struct tagged_tu_seen_cache,
8166         same_translation_unit_p, alloc_tagged_tu_seen_cache,
8167         c_size_in_bytes): Likewise.
8168         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
8169         hash_ptr, eq_ptr): Likewise.
8170         * langhooks-def.h (lhd_decl_ok_for_sibcall,
8171         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
8172         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
8173         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
8174         Likewise.
8175         * optabs.c (optab_for_tree_code): Likewise.
8176         * optabs.h (optab_for_tree_code): Likewise.
8177         * rtl.h (simplify_rtx): Likewise.
8178         * simplify-rtx.c (simplify_rtx): Likewise.
8179         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
8180         dump_flag, dump_node): Likewise.
8181         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
8182         queue_and_dump_type, dump_flag): Likewise.
8183         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
8184         * tree-pass.h (dump_node): Likewise.
8185         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
8186         supportable_narrowing_operation): Likewise.
8187         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
8188         supportable_narrowing_operation): Likewise.
8189         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
8190         is_negative_overflow_infinity, is_positive_overflow_infinity,
8191         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
8192         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
8193         update_value_range, add_equivalence, ssa_name_nonnegative_p,
8194         ssa_name_nonzero_p, fp_predicate): Likewise.
8195         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
8196         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
8197         ssa_name_nonnegative_p): Likewise.
8198
8199 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
8200
8201         * config.gcc : Add x86_64-elf target.
8202
8203 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
8204
8205         * expr.c (store_expr): Fix order of store_by_pieces arguments.
8206
8207 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
8208             Nigel Stephens <nigel@mips.com>
8209
8210         PR target/11787
8211
8212         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
8213         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
8214         * expr.c (SET_BY_PIECES_P): Define.
8215         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
8216         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
8217         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
8218         store_by_pieces.
8219         * expr.h (SET_RATIO): Define.
8220         (can_store_by_pieces, store_by_pieces): Update prototypes.
8221         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
8222         can_store_by_pieces/store_by_pieces.
8223         (expand_builtin_memcpy_args): Likewise.
8224         (expand_builtin_strncpy): Likewise.
8225         (expand_builtin_memset_args): Likewise.  Also remove special case
8226         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
8227         decide what to do instead.
8228         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
8229         to can_store_by_pieces.
8230
8231         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
8232         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
8233
8234         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
8235         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
8236         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
8237         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
8238         (STORE_BY_PIECES_P): Define.
8239
8240 2007-08-24  Tom Tromey  <tromey@redhat.com>
8241
8242         * varpool.c (varpool_last_needed_node): Fix comment typo.
8243         * c-decl.c (duplicate_decls): Fix comment typo.
8244         (clone_underlying_type): Update comment.
8245
8246 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8247
8248         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
8249         alpha_in_small_data_p, alpha_split_complex_arg,
8250         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8251         Constify.
8252         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
8253         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
8254         Likewise.
8255         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
8256         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8257         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
8258         * config/darwin.c (darwin_binds_local_p): Likewise.
8259         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
8260         Likewise.
8261         * config/i386/i386-protos.h (i386_pe_binds_local_p,
8262         i386_pe_valid_dllimport_attribute_p): Likewise.
8263         * config/i386/i386.c (ix86_function_regparm,
8264         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
8265         x86_can_output_mi_thunk, ix86_mangle_type,
8266         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
8267         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
8268         i386_pe_binds_local_p): Likewise.
8269         * config/ia64/ia64.c
8270         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
8271         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
8272         ia64_invalid_conversion, ia64_invalid_unary_op,
8273         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8274         Likewise.
8275         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
8276         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
8277         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8278         * config/mips/mips.c (mips_use_blocks_for_constant_p,
8279         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
8280         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8281         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
8282         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
8283         * config/pa/pa.c (pa_commutative_p): Likewise.
8284         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
8285         Likewise.
8286         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
8287         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
8288         rs6000_use_blocks_for_constant_p,
8289         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
8290         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8291         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
8292         * config/s390/s390.c (s390_mangle_type,
8293         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
8294         Likewise.
8295         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8296         th_in_small_data_p): Likewise.
8297         * config/sh/sh.c (sh_ms_bitfield_layout_p,
8298         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8299         Likewise.
8300         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
8301         sparc_mangle_type): Likewise.
8302         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
8303         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
8304         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
8305         Likewise.
8306         * hooks.c (hook_bool_mode_const_rtx_false,
8307         hook_bool_mode_const_rtx_true,
8308         hook_bool_const_tree_hwi_hwi_const_tree_false,
8309         hook_bool_const_tree_hwi_hwi_const_tree_true,
8310         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8311         hook_constcharptr_const_tree_null,
8312         hook_constcharptr_const_rtx_null,
8313         hook_constcharptr_const_tree_const_tree_null,
8314         hook_constcharptr_int_const_tree_null,
8315         hook_constcharptr_int_const_tree_const_tree_null): New.
8316         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8317         hook_bool_tree_hwi_hwi_tree_false,
8318         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8319         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8320         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8321         hook_constcharptr_int_tree_null,
8322         hook_constcharptr_int_tree_tree_null): Delete.
8323         (default_can_output_mi_thunk_no_vcall): Constify.
8324         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8325         hook_bool_tree_hwi_hwi_tree_false,
8326         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8327         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8328         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8329         hook_constcharptr_int_tree_null,
8330         hook_constcharptr_int_tree_tree_null): Delete.
8331         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
8332         hook_bool_const_tree_hwi_hwi_const_tree_false,
8333         hook_bool_const_tree_hwi_hwi_const_tree_true,
8334         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8335         hook_constcharptr_const_tree_null,
8336         hook_constcharptr_const_rtx_null,
8337         hook_constcharptr_const_tree_const_tree_null,
8338         hook_constcharptr_int_const_tree_null,
8339         hook_constcharptr_int_const_tree_const_tree_null): New.
8340         (default_can_output_mi_thunk_no_vcall): Constify.
8341         * integrate.c (function_attribute_inlinable_p): Likewise.
8342         * integrate.h (function_attribute_inlinable_p): Likewise.
8343         * jump.c (rtx_renumbered_equal_p): Likewise.
8344         * output.h (decl_readonly_section, categorize_decl_for_section,
8345         default_use_anchors_for_symbol_p, default_binds_local_p,
8346         default_binds_local_p_1): Likewise.
8347         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
8348         Likewise.
8349         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8350         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
8351         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
8352         TARGET_COMP_TYPE_ATTRIBUTES,
8353         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
8354         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
8355         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
8356         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
8357         TARGET_DWARF_CALLING_CONVENTION): Likewise.
8358         * target.h (can_output_mi_thunk, needs_block_p,
8359         first_cycle_multipass_dfa_lookahead_guard_spec,
8360         vector_alignment_reachable, comp_type_attributes,
8361         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
8362         commutative_p, use_blocks_for_constant_p,
8363         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
8364         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
8365         invalid_within_doloop, valid_dllimport_attribute_p,
8366         split_complex_arg, invalid_arg_for_unprototyped_fn,
8367         invalid_conversion, invalid_unary_op, invalid_binary_op):
8368         Likewise.
8369         * targhooks.c (default_invalid_within_doloop,
8370         hook_invalid_arg_for_unprototyped_fn,
8371         default_builtin_vector_alignment_reachable): Likewise.
8372         (hook_bool_rtx_commutative_p): Delete.
8373         (hook_bool_const_rtx_commutative_p): New.
8374         * targhooks.h (default_invalid_within_doloop,
8375         default_builtin_vector_alignment_reachable,
8376         hook_invalid_arg_for_unprototyped_fn): Constify.
8377         (hook_bool_rtx_commutative_p): Delete.
8378         (hook_bool_const_rtx_commutative_p): New.
8379         * varasm.c (bss_initializer_p, decl_default_tls_model,
8380         categorize_decl_for_section, decl_readonly_section,
8381         default_use_anchors_for_symbol_p, default_binds_local_p,
8382         default_binds_local_p_1): Constify.
8383
8384 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8385
8386         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
8387         __NO_BUILTIN if -fno-builtin.
8388
8389 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8390
8391         * config/bfin/bfin.c (print_operand): Report error instead of
8392         ICE for wrong operand.
8393
8394 2007-08-24  Michael Matz  <matz@suse.de>
8395
8396         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
8397
8398 2007-08-24  Richard Guenther  <rguenther@suse.de>
8399
8400         PR middle-end/33166
8401         * tree-ssa.c (useless_type_conversion_p): Split into a
8402         recursive and a non-recursive part.
8403         (useless_type_conversion_p_1): New function.
8404         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
8405         from maybe_fold_offset_to_reference is trivially convertible
8406         to the desired type before doing the simplification.
8407
8408 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8409
8410         * expr.c (store_expr): Optimize initialization of an array
8411         with STRING_CST.
8412         * expr.h (builtin_strncpy_read_str): New prototype.
8413         * builtins.c (builtin_strncpy_read_str): Remove prototype.
8414         No longer static.
8415
8416 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
8417
8418         PR middle-end/33157
8419         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
8420         field when initializing if_info structure.
8421
8422 2007-08-24  Richard Guenther  <rguenther@suse.de>
8423
8424         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
8425         dependencies.
8426         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
8427         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
8428         * tree-inline.c (inlinable_function_p): Fold in common parts of
8429         the cannot_inline_tree_fn langhook.
8430         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
8431         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
8432         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8433         cannot_inline_tree_fn langhook.
8434         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8435         cannot_inline_tree_fn member.
8436
8437 2007-08-24  Richard Guenther  <rguenther@suse.de>
8438
8439         * expr.c (get_inner_reference): Do computation of bitoffset
8440         from offset in a way we can detect overflow reliably.
8441
8442 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8443
8444         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
8445
8446 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8447
8448         * config/bfin/bfin.opt (mfast-fp): Add.
8449         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
8450         libbffastfp override libgcc if -mfast-fp.
8451         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
8452         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
8453         (Blackfin Options): Document -mfast-fp.
8454
8455 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8456
8457         PR tree-optimization/32573
8458         PR middle-end/32946
8459         * tree-data-ref.c (initialize_data_dependence_relation): Clear
8460         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
8461         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
8462         (build_classic_dist_vector): Return false rather than true if
8463         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
8464         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
8465         returned false.  Don't call save_dist_v before calling
8466         build_classic_dist_vector_1.
8467         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
8468         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
8469         DDR_DIR_VECTS vectors.
8470
8471 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
8472
8473         * configure.ac (leb128): Modify sed statement to work with any
8474         binutils version string.
8475         * configure: Regenerate
8476
8477 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8478
8479         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
8480         Wrap in RTX_CODE macro guard.
8481         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
8482         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
8483         arm_mark_dllimport, arm_pe_encode_section_info,
8484         arm_pe_unique_section): Use ISO-C function declarations.
8485         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
8486         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
8487         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
8488         Likewise.
8489         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
8490         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
8491         defining.
8492         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
8493         warnings.
8494         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
8495         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
8496         (register_move_cost): Use ISO-C function declarations.
8497         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
8498         * config/score/score-protos.h (score_declare_object): Add
8499         ATTRIBUTE_PRINTF_4.
8500         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
8501         warnings.
8502         * final.c (profile_function): Avoid empty if-bodies.
8503         
8504         
8505         * calls.c (must_pass_in_stack_var_size,
8506         must_pass_in_stack_var_size_or_pad): Constify.
8507         * config/alpha/alpha-protos.h (function_value): Likewise.
8508         * config/alpha/alpha.c (alpha_return_in_memory,
8509         alpha_pass_by_reference, function_value,
8510         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
8511         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8512         Likewise.
8513         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
8514         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8515         TARGET_PROMOTE_PROTOTYPES): Likewise.
8516         * config/arm/arm-protos.h (arm_return_in_memory,
8517         arm_pad_arg_upward, arm_function_value): Likewise.
8518         * config/arm/arm.c (arm_pass_by_reference,
8519         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
8520         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8521         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
8522         Likewise.
8523         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
8524         * config/avr/avr-protos.h (avr_function_value): Likewise.
8525         * config/avr/avr.c (avr_return_in_memory,
8526         gas_output_limited_string, gas_output_ascii, avr_function_value,
8527         avr_return_in_memory): Likewise.
8528         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
8529         * config/bfin/bfin.c (bfin_pass_by_reference,
8530         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
8531         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
8532         Likewise.
8533         * config/cris/cris.c (cris_pass_by_reference,
8534         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
8535         * config/crx/crx.c (crx_return_in_memory): Likewise.
8536         * config/darwin.c (function_base, machopic_function_base_name):
8537         Likewise.
8538         * config/fr30/fr30.c (fr30_must_pass_in_stack,
8539         TARGET_PROMOTE_PROTOTYPES): Likewise.
8540         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
8541         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
8542         * config/i386/i386-protos.h (ix86_return_in_memory,
8543         ix86_sol10_return_in_memory): Likewise.
8544         * config/i386/i386.c (ix86_function_value,
8545         ix86_function_sseregparm, ix86_must_pass_in_stack,
8546         type_natural_mode, classify_argument, examine_argument,
8547         construct_container, ix86_pass_by_reference, function_value_32,
8548         function_value_64, ix86_function_value_1, return_in_memory_32,
8549         return_in_memory_64, return_in_memory_ms_64,
8550         ix86_return_in_memory, ix86_sol10_return_in_memory,
8551         TARGET_PROMOTE_PROTOTYPES): Likewise.
8552         * config/ia64/ia64-protos.h (ia64_function_value,
8553         ia64_hpux_function_arg_padding): Likewise.
8554         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
8555         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
8556         ia64_hpux_function_arg_padding): Likewise.
8557         * config/iq2000/iq2000-protos.h (function_arg,
8558         iq2000_function_value): Likewise.
8559         * config/iq2000/iq2000.c (iq2000_return_in_memory,
8560         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
8561         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8562         function_arg, iq2000_function_value): Likewise.
8563         * config/m32c/m32c-protos.h (m32c_function_value,
8564         m32c_promote_function_return): Likewise.
8565         * config/m32c/m32c.c (m32c_pass_by_reference,
8566         m32c_promote_prototypes, m32c_promote_function_return,
8567         m32c_function_value): Likewise.
8568         * config/m32r/m32r.c (m32r_return_in_memory,
8569         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8570         m32r_in_small_data_p): Likewise.
8571         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
8572         Likewise.
8573         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
8574         m68hc11_function_arg_padding): Likewise.
8575         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
8576         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
8577         m68k_function_value): Likewise.
8578         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
8579         mcore_function_value): Likewise.
8580         * config/mcore/mcore.c (handle_structs_in_regs,
8581         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8582         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8583         mcore_num_arg_regs, mcore_function_value): Likewise.
8584         * config/mips/mips-protos.h (mips_pad_arg_upward,
8585         mips_function_value): Likewise.
8586         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
8587         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
8588         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8589         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
8590         mips_function_value): Likewise.
8591         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
8592         Likewise.
8593         * config/mmix/mmix.c (mmix_pass_by_reference,
8594         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
8595         mmix_encode_section_info): Likewise.
8596         * config/mn10300/mn10300-protos.h (mn10300_function_value):
8597         Likewise.
8598         * config/mn10300/mn10300.c (mn10300_return_in_memory,
8599         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8600         mn10300_function_value): Likewise.
8601         * config/mt/mt-protos.h (mt_function_value): Likewise.
8602         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
8603         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
8604         * config/pa/pa-protos.h (function_arg_padding, function_value,
8605         pa_return_in_memory): Likewise.
8606         * config/pa/pa.c (pa_pass_by_reference,
8607         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8608         function_arg_padding, function_value, pa_return_in_memory):
8609         Likewise.
8610         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
8611         * config/rs6000/rs6000-protos.h (rs6000_function_value,
8612         function_arg_padding): Likewise.
8613         * config/rs6000/rs6000.c (rs6000_return_in_memory,
8614         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
8615         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
8616         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8617         function_arg_padding, altivec_expand_dst_builtin,
8618         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
8619         altivec_init_builtins, rs6000_common_init_builtins,
8620         rs6000_function_value): Likewise.
8621         * s390/s390-protos.h (s390_function_value): Likewise.
8622         * config/s390/s390.c (s390_function_arg_size,
8623         s390_pass_by_reference, s390_return_in_memory,
8624         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8625         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
8626         * config/score/score-protos.h (score_function_value): Likewise.
8627         * config/score/score.c (score_arg_partial_bytes,
8628         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8629         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
8630         score_pass_by_reference, score_add_offset, score_function_value):
8631         Likewise.
8632         * config/sh/sh-protos.h (sh_attr_renesas_p,
8633         sh_promote_prototypes): Likewise.
8634         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
8635         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
8636         sh_attr_renesas_p): Likewise.
8637         * config/sparc/sparc-protos.h (function_value,
8638         function_arg_padding): Likewise.
8639         * config/sparc/sparc.c (sparc_promote_prototypes,
8640         sparc_return_in_memory, sparc_pass_by_reference,
8641         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8642         function_arg_record_value_2, function_arg_record_value_1,
8643         function_arg_record_value, function_arg_record_value,
8644         function_arg_padding, function_value): Likewise.
8645         * config/spu/spu-protos.h (spu_function_value): Likewise.
8646         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
8647         spu_function_value): Likewise.
8648         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
8649         Likewise.
8650         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
8651         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8652         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8653         Likewise.
8654         * config/v850/v850.c (v850_return_in_memory,
8655         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
8656         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
8657         * config/xtensa/xtensa.c (xtensa_return_in_msb,
8658         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8659         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8660         Likewise.
8661         * explow.c (promote_mode, hard_function_value): Likewise.
8662         * expr.h (hard_function_value, promote_mode): Likewise.
8663         * function.c (aggregate_value_p): Likewise.
8664         * hooks.c (hook_bool_const_tree_true): New.
8665         * hooks.h (hook_bool_const_tree_true): New.
8666         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
8667         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
8668         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8669         TARGET_RETURN_IN_MSB): Likewise.
8670         * target.h (promote_function_args, promote_function_return,
8671         promote_prototypes, return_in_memory, return_in_msb,
8672         pass_by_reference, must_pass_in_stack, callee_copies,
8673         function_value): Likewise.
8674         * targhooks.c (default_return_in_memory,
8675         hook_pass_by_reference_must_pass_in_stack,
8676         hook_callee_copies_named,
8677         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8678         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8679         default_function_value): Likewise. 
8680         * targhooks.h (default_return_in_memory,
8681         hook_pass_by_reference_must_pass_in_stack,
8682         hook_callee_copies_named,
8683         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8684         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8685         default_function_value): Likewise.
8686         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
8687         (equiv_class_label_hash, equiv_class_label_eq): Constify.
8688         * tree-vectorizer.c (bb_in_loop_p): Likewise.
8689         * tree.c (needs_to_live_in_memory): Likewise.
8690         * tree.h (struct tree_type, needs_to_live_in_memory,
8691         aggregate_value_p, must_pass_in_stack_var_size,
8692         must_pass_in_stack_var_size_or_pad): Likewise.
8693         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
8694         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
8695         lookup_filename): Likewise.
8696
8697 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8698
8699         PR target/17390
8700         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
8701         fake fcomi i387 instruction for !TARGET_CMOVE.
8702         (ix86_expand_branch): Expand natural sequence with one jump for
8703         all targets, not only TARGET_CMOVE.
8704         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
8705         pattern to implement fake fcomi sequence.  Split instruction after
8706         reload to correct compare sequences.
8707         (*cmpfp_xf_cc): Ditto.
8708         (*cmpfp_<mode>_cc): Ditto.
8709         (*cmpfp_u_cc): Ditto.
8710         (*cmpfp_<mode>_cc): Ditto.
8711
8712 2007-08-23  Richard Guenther  <rguenther@suse.de>
8713
8714         * tree-pretty-print.c (dump_generic_node): Annotate
8715         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
8716
8717 2007-08-23  Richard Guenther  <rguenther@suse.de>
8718
8719         * builtins.c (expand_builtin_mathfn): Wrap argument in
8720         save_expr directly instead of re-building the call.
8721         (expand_builtin_mathfn_2): Likewise.
8722         (expand_builtin_mathfn_3): Likewise.
8723         (expand_builtin_interclass_mathfn): Likewise.
8724         (expand_builtin_int_roundingfn): Set arg.
8725         (expand_builtin_int_roundingfn_2): Likewise.
8726
8727 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
8728
8729         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
8730         *sse_nand<mode>3, *sse_xor<mode>3): New.
8731
8732 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8733
8734         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
8735         * config/i386/i386.c (print_operand): Handle ';' code.  Output
8736         semicolon for TARGET_MACHO.
8737         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
8738         emit semicolon after 'lock' prefix.
8739         (sync_double_compare_and_swap<mode>): Ditto.
8740         (*sync_double_compare_and_swapdi_pic): Ditto.
8741         (*sync_compare_and_swap_cc<mode>): Ditto.
8742         (sync_double_compare_and_swap_cc<mode>): Ditto.
8743         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8744         (sync_old_add<mode>): Ditto.
8745         (sync_add<mode>): Ditto.
8746         (sync_sub<mode>): Ditto.
8747         (sync_ior<mode>): Ditto.
8748         (sync_and<mode>): Ditto.
8749         (sync_xor<mode>): Ditto.
8750
8751 2007-08-22  Chao-ying Fu  <fu@mips.com>
8752
8753         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
8754         in DEF_RTL_EXPR.
8755         (copy_rtx): Handle CONST_FIXED.
8756         (rtx_equal_p): Likewise.
8757         * rtl.h (fixed_value.h): New include.
8758         (rtx_def): Add a new field of fixed_value to u.
8759         (XCNMPFV): Define for accessing fixed_value.
8760         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
8761         Define.
8762         * rtl.def (CONST_FIXED): New constant.
8763         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
8764         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
8765         US_ASHIFT): New codes.
8766         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
8767         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
8768         unsigned_fract_convert, unsigned_sat_fract): Document them.
8769         * varasm.c (assemble_integer): Extend to support fixed-point constants
8770         by using different machine classes.
8771         (decode_addr_const): Handle FIXED_CST.
8772         (const_hash_1): Likewise.
8773         (compare_constant): Likewise.
8774         (copy_constant): Likewise.
8775         (const_rtx_hash_1): Handle CONST_FIXED.
8776         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8777         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8778         MODE_VECTOR_UACCUM.
8779         (initializer_constant_valid_p): Handle FIXED_CST.
8780         (output_constant): Support FIXED_POINT_TYPE.
8781         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
8782         * cse.c (hash_rtx): Support CONST_FIXED.
8783         (exp_equiv_p): Likewise.
8784         (cannon_reg): Likewise.
8785         (fold_rtx): Likewise.
8786         (equiv_constant): Likewise.
8787         (cse_process_notes_1): Likewise.
8788         (count_reg_usage): Likewise.
8789         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
8790         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
8791         (wrap_constant): Check CONST_FIXED.
8792         (cselib_hash_rtx): Support CONST_FIXED.
8793         (cselib_subst_to_values): Likewise.
8794         * df-scan.c (df_uses_record): Likewise.
8795         * gcse.c (want_to_gcse_p): Likewise.
8796         (oprs_unchanged_p): Likewise.
8797         (oprs_not_set_p): Likewise.
8798         (compute_transp): Likewise.
8799         (extract_mentioned_regs_helper): Likewise.
8800         * genemit.c (gen_exp): Likewise.
8801         * local-alloc.c (equiv_init_varies_p): Likewise.
8802         (contains_replace_regs): Likewise.
8803         (memref_referenced_p): Likewise.
8804         * loop-invariant.c (check_maybe_invariant): Likewise.
8805         (hash_invariant_expr_1): Likewise.
8806         (invariant_expr_equal_p): Likewise.
8807         * postreload-gcse.c (oprs_unchanged_p): Likewise.
8808         * regclass.c (reg_scan_mark_refs): Likewise.
8809         * regrename.c (scan_rtx): Likewise.
8810         * resource.c (mark_referenced_resources): Likewise.
8811         (mark_set_resources): Likewise.
8812         * rtlanal.c (rtx_unstable_p): Likewise.
8813         (rtx_varies_p): Likewise.
8814         (count_occurrences): Likewise.
8815         (reg_mentioned_p): Likewise.
8816         (modified_between_p): Likewise.
8817         (modified_in_p): Likewise.
8818         (volatile_insn_p): Likewise.
8819         (volatile_refs_p): Likewise.
8820         (side_effects_p): Likewise.
8821         (may_trap_p_1): Likewise.
8822         (inequality_comparisons_p): Likewise.
8823         (computed_jump_p_1): Likewise.
8824         (commutative_operand_precedence): Likewise.
8825         * sched-deps.c (sched_analyze_2): Likewise.
8826         * sched-vis.c (print_value): Likewise.
8827         * reload.c (operands_match_p): Likewise.
8828         (subst_reg_equivs): Likewise.
8829         * reload1.c (eliminate_regs_1): Likewise.
8830         (elimination_effects): Likewise.
8831         (scan_paradoxical_subregs): Likewise.
8832         * alias.c (rtx_equal_for_memref_p): Likewise.
8833         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
8834         * emit-rtl.c (const_fixed_htab): New hash table.
8835         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
8836         Declare.
8837         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
8838         const_fixed_from_fixed_value): New functions.
8839         (verify_rtx_sharing): Handle CONST_FIXED.
8840         (copy_rtx_if_shared_1): Likewise.
8841         (reset_used_flags): Likewise.
8842         (set_used_flags): Likewise.
8843         (copy_insn_1): Likewise.
8844         (init_emit_once): Create const_fixed_htab.
8845         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
8846
8847 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
8848
8849         PR tree-optimization/32949
8850         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
8851         before failing for ivs with non-constant step.
8852
8853 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
8854
8855         * doc/md.texi (Iterators): Renamed from Macros.  All contents
8856         changed to reflect rename of respectively define_code_macro and
8857         define_mode_macro to define_code_iterator and define_mode_iterator.
8858         (Mode Iterators, Code Iterators): Similar.
8859         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
8860         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
8861         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
8862         (initialize_iterators, find_iterator, check_code_iterator)
8863         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
8864         (read_mapping, read_rtx_1): Similar.
8865         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
8866         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
8867         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
8868         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
8869         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
8870         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
8871         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
8872         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
8873         config/rs6000/sync.md, config/rs6000/rs6000.md,
8874         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
8875         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
8876         config/vax/vax.md, config/bfin/bfin.md: Similar.
8877
8878 2007-08-22  David Daney  <ddaney@avtrex.com>
8879
8880         * doc/install.texi (Testing): Mention testing on a simulator.
8881
8882 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
8883
8884         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
8885
8886         * doc/libgcc.texi (Decimal float library routines): Fix formatting
8887         and rearrange floating point conversion functions into different
8888         categories.
8889
8890 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
8891
8892         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
8893         dfa_post_advance_cycle): New scheduler hooks.
8894         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8895         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
8896         new hooks.
8897         (TARGET_SCHED): Use them.
8898         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8899         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
8900         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
8901
8902         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
8903         function to facilitate debugging.
8904         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
8905         (output_insn_has_dfa_reservation_p): New static function to output
8906         insn_has_dfa_reservation_p ().
8907         (write_automata): Use it.
8908         * genattr.c (main): Output declaration for
8909         insn_has_dfa_reservation_p ().
8910
8911 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
8912             Richard Guenther <rguenther@suse.de>
8913         
8914         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
8915         * simplify_rtx (simplify_binary_operation_1): Likewise.
8916                 
8917 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8918
8919         PR rtl-optimization/32557
8920         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
8921         of REGNO (mws->mw_reg).
8922
8923 2007-08-22  Richard Guenther  <rguenther@suse.de>
8924
8925         PR middle-end/33007
8926         * builtins.c (expand_builtin_int_roundingfn): Replace call
8927         argument wrapped with SAVE_EXPR directly.
8928         (expand_builtin_int_roundingfn_2): Likewise.
8929
8930 2007-08-22  Richard Guenther  <rguenther@suse.de>
8931
8932         * tree-inline.c (inlinable_function_p): Restore disregarding
8933         inline limits for GNU extern inline functions.
8934
8935 2007-08-22  Richard Guenther  <rguenther@suse.de>
8936
8937         PR middle-end/32563
8938         * tree.c (host_integerp): Treat sizetype as signed as it is
8939         sign-extended.
8940
8941 2007-08-21  Ian Lance Taylor  <iant@google.com>
8942
8943         PR tree-optimization/33134
8944         * tree-vrp.c (adjust_range_with_scev): Call
8945         set_value_range_to_value.
8946
8947 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8948
8949         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
8950         prototype.
8951         
8952 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8953
8954         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
8955         whitespace.
8956
8957 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
8958
8959         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
8960         cases to set eight bytes at a time.
8961         (expand_block_move): Likewise.
8962         
8963 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
8964
8965         PR debug/32610
8966         * dwarf2out.c (gen_decl_die): Don't call
8967         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
8968
8969 2007-08-21  Paul Brook  <paul@codesourcery.com>
8970             Nathan Sidwell  <nathan@codesourcery.com>
8971             Mark Mitchell  <mark@codesourcery.com>
8972             Joseph Myers  <joseph@codesourcery.com>
8973
8974         * configure.ac: Add --with-pkgversion and --with-bugurl.
8975         * configure: Regenerate.
8976         * doc/install.texi: Document them.
8977         * version.c (version_string): Remove VERSUFFIX.
8978         (VERSUFFIX): Remove.
8979         (pkgversion_string): New.
8980         (bug_report_url): Do not hard-code initializer.
8981         * version.h (pkgversion_string): Declare.
8982         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
8983         Define.
8984         (version.o): Define PKGVERSION and BUGURL.
8985         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
8986         (%.pod): Define BUGURL.
8987         * gcc.c (process_command, main): Use pkgversion_string.
8988         * toplev.c (compile_file, print_version): Likewise.
8989         * protoize.c (main): Likewise.
8990         * gcov.c (print_version): Likewise.  Update copyright date.
8991         * gcov-dump.c (print_version): Likewise.  Update copyright date.
8992         * mips-tdump.c (main): Likewise.  Update copyright date.
8993         * mips-tfile.c (main): Likewise.  Update copyright date.
8994         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
8995         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
8996         shorten description.
8997         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
8998         * doc/gccint.texi: Likewise.
8999         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
9000         Update copyright date.
9001
9002 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
9003
9004         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
9005         (ix86_expand_strlensi_unroll_1): Ditto.
9006         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
9007         (ix86_expand_carry_flag_compare): Update comment.
9008
9009 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
9010
9011         PR middle-end/32912
9012         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
9013         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
9014
9015 2007-08-21  Richard Guenther  <rguenther@suse.de>
9016
9017         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
9018
9019 2007-08-21  Richard Guenther  <rguenther@suse.de>
9020
9021         PR middle-end/33122
9022         * fold-const.c (fold_binary): Remove index +p PTR folding.
9023         Fix types of POINTER_PLUS_EXPR generated by folding of
9024         (PTR +p B) +p A.
9025
9026 2007-08-20  Chao-ying Fu  <fu@mips.com>
9027
9028         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
9029         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
9030         RID_ONEWAY, so that it can be checked in declspecs_add_type.
9031         (c_common_fixed_point_type_for_size): Declare.
9032         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
9033         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
9034         (c_token_starts_declspecs): Likewise.
9035         (c_parser_declspecs): Likewise.
9036         (c_parser_attributes): Likewise.
9037         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
9038         (c_declspecs): Add saturating_p.
9039         * c-decl.c (build_null_declspecs): Initialize saturating_p.
9040         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
9041         _Sat.  Handle RID_SAT.
9042         Avoid using void, bool, char, int, float, double, _Decimal32,
9043         _Decimal64, _Decimal128, and complex with _Sat.
9044         Handle RID_FRACT and RID_ACCUM.
9045         Make sure _Sat is used with _Fract or _Accum.
9046         (finish_declspecs): Handle cts_fract and cts_accum.
9047         * c-common.c (fixed-value.h): New include.
9048         (constant_expression_warning): Handle FIXED_CST.
9049         (overflow_warning): Likewise.
9050         (warnings_for_convert_and_check): Likewise.
9051         (c_common_fixed_point_type_for_size): New.
9052         (c_common_type_for_mode): Handle fixed-point modes to
9053         return various saturating/non-saturating, signed/unsigned types.
9054         (c_common_signed_or_unsigned_type): Support fixed-point types.
9055         (shorten_compare): Check fixed-point zero.
9056         Handle FIXED_POINT_TYPE.
9057         (c_common_truthvalue_conversion): Handle FIXED_CST.
9058         Handle FIXED_POINT_TYPE.
9059         (c_common_nodes_and_builtins): Record builtin types for fixed-point
9060         types.
9061         (handle_mode_attribute): Handle fixed-point modes.  Need to check
9062         if the signness of base type and fixed-point modes are consistent.
9063         (handle_vector_size_attribute): Handle fixed-point modes.
9064         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
9065         (warn_for_div_by_zero): Check fixed-point zero.
9066         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
9067         a common fixed-point type based on fbit, ibit, sign, and saturation.
9068         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
9069         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
9070         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
9071         (convert_for_assignment): Support FIXED_POINT_TYPE.
9072         (digest_init): Handle FIXED_POINT_TYPE.
9073         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
9074         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
9075         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
9076         GE_EXPR, LT_EXPR, GT_EXPR.
9077         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
9078         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
9079         * target.h (gcc_target): Add fixed_point_supported_p.
9080         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
9081         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
9082         (default_fixed_point_supported_p): Define.
9083         * targhooks.h (default_fixed_point_supported_p): Declare.
9084         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
9085         * doc/install.texi (Configuration): Add --enable-fixed-point.
9086         * configure.ac (--enable-fixed-point): New to enable fixed-point
9087         arithmetic extension to C.  For mips targets, we enable it by default.
9088         * configure, config.in: Regenerate.
9089
9090 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
9091
9092         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
9093
9094 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
9095
9096         * dwarf2out.c (text_section_used): Move declaration outside ifdef
9097         DWARF2_DEBUGGING_INFO.
9098         (cold_text_section_used): Same.
9099         (cold_text_section): Same.
9100
9101 2007-08-20  Richard Guenther  <rguenther@suse.de>
9102
9103         * c-typeck.c (convert_for_assignment): Use the type of
9104         the member for the initialization.
9105
9106 2007-08-20  Richard Guenther  <rguenther@suse.de>
9107
9108         * c-objc-common.c (c_disregard_inline_limits): Remove.
9109         * c-objc-common.h (c_disregard_inline_limits): Likewise.
9110         * cgraphunit.c (cgraph_process_new_functions): Call
9111         disregard_inline_limits_p.
9112         (cgraph_preserve_function_body_p): Likewise.
9113         * ipa-inline.c (compute_inline_parameters): Likewise.
9114         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
9115         Remove.
9116         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
9117         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9118         disregard_inline_limits langhook.
9119         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
9120         Remove.
9121         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9122         disregard_inline_limits langhook.
9123         * tree-inline.c (disregard_inline_limits_p): New function.
9124         * tree-inline.h (disregard_inline_limits_p): Declare.
9125
9126 2007-08-20  Richard Guenther  <rguenther@suse.de>
9127
9128         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
9129         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
9130         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9131         auto_var_in_fn_p langhook.
9132         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
9133         move ...
9134         * tree.c (auto_var_in_fn_p): ... here.
9135         (find_var_from_fn): Call auto_var_in_fn_p directly.
9136         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9137         auto_var_in_fn_p langhook.
9138         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
9139         (copy_body_r): Likewise.
9140         (self_inlining_addr_expr): Likewise.
9141         * tree.h (auto_var_in_fn_p): Declare.
9142
9143 2007-08-20  Richard Guenther  <rguenther@suse.de>
9144
9145         * tree.c (WALK_SUBTREE): Call walk_tree_1.
9146         (walk_type_fields): Take lh parameter.
9147         (walk_tree): Rename to ...
9148         (walk_tree_1): ... this.  Do not call the walk_subtrees
9149         langhook but the now passed callback.  Pass lh on recursion.
9150         (walk_tree_without_duplicates): Rename to ...
9151         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
9152         and call walk_tree_1.
9153         * tree.h (walk_tree_lh): New typedef.
9154         (walk_tree_1): Declare.
9155         (walk_tree_without_duplicates_1): Likewise.
9156         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
9157         (walk_tree_without_duplicates): New define to
9158         walk_tree_without_duplicates_1 with NULL lh parameter.
9159         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
9160         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
9161         langhook.
9162         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
9163         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
9164         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
9165         initializer.
9166
9167 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9168
9169         PR middle-end/30564
9170         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
9171         code in front of the compacting of basic blocks.
9172         Move the folding of statements inbetween the cgraph checking
9173         and compacting of basic blocks.
9174
9175 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9176            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
9177
9178         PR target/32522
9179         * config/alpha/alpha.c (va_list_skip_additions): Check for
9180         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
9181         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
9182         PLUS_EXPR when checking ap.__base.
9183         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
9184         when doing addition on pointer types.  Use size_int instead of
9185         build_int_cst.
9186         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
9187         ptr_type in the second operand.
9188
9189 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9190
9191         PR target/33115
9192         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
9193
9194 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9195
9196         PR middle-end/32940
9197         * cfgexpand.c  (expand_one_register_var): Mark pointer
9198         DECL_ARTIFICIAL as REG_POINTER also.
9199         * stmt.c (expand_decl): Likewise.
9200
9201 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
9202
9203         Fix PR 32772
9204         Fix PR 32716
9205         Fix PR 32328
9206         Fix PR 32303
9207
9208         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
9209         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
9210         on_worklist argument and avoid adding things to worklist multiple
9211         times.
9212         (add_to_worklist): Ditto.
9213         (mark_aliases_call_clobbered): Mark entire structure clobbered if
9214         single SFT is clobbered.
9215         (set_initial_properties): Ditto.
9216         (compute_call_clobbered): Update for changes to function
9217         arguments.
9218         (create_overlap_variables_for): Always create SFT for offset 0.
9219         (create_structure_vars): Handle PHI's, since we are in SSA form at
9220         this point.
9221         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
9222         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
9223         TARGET_MEM_REF.
9224         (add_vars_for_offset): Figure out aliases from access + points-to.
9225         (add_virtual_operand): Use add_vars-for_offset.
9226         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
9227         (add_call_clobber_ops): Remove makes_clobbering_call set.
9228         (get_expr_operands): Always pass through the INDIRECT_REF
9229         reference.
9230         * tree-ssa-structalias.c (struct constraint_graph): Remove
9231         variables member.
9232         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
9233         address_taken, pt_used, number_incoming.
9234         (FIRST_ADDR_NODE): Removed.
9235         (merge_graph_nodes): Remove broken code for the moment.
9236         (init_graph): New function.
9237         (build_pred_graph): Remove code to init_graph.
9238         Add location equivalence support.
9239         (struct scc_info): Rename roots to deleted.
9240         (scc_visit): Ditto.
9241         (init_scc_info): Ditto
9242         (init_topo_info): Use graph->size.
9243         (compute_topo_order): Ditto.
9244         (do_da_constraint): Removed.
9245         (do_sd_constraint): Remove calls to find().
9246         set_union_with_increment should always get 0 as last arg here.
9247         (do_complex_constraint): Replace do_da_constraint with assert.
9248         Stop calling find.
9249         (struct equiv_class_label): New.
9250         (pointer_equiv_class_table): Ditto.
9251         (location_equiv_class_table): Ditto.
9252         (equiv_class_label_hash): Ditto.
9253         (equiv_class_label_eq): Ditto
9254         (equiv_class_lookup): Ditto.
9255         (equiv_class_ladd): Ditto.
9256         (pointer_equiv_class): Ditto.
9257         (location_equiv_class): Ditto.
9258         (condense_visit): Rename and rewrite from label_visit to do only
9259         SCC related stuff for HU.
9260         (label_visit): Do HU work for HU.
9261         (perform_var_substitution): Update to do HU and location
9262         equivalence.
9263         (free_var_substitution_info): Update to free HU and location
9264         equivalence structures.  */
9265         (find_equivalent_node): Update for pointer but not location
9266         equivalence.
9267         (unite_pointer_equivalences): New function.
9268         (move_complex_constraints): Rewrite to only do moving.
9269         (rewrite_constraints): Split out of move_complex_constraints.
9270         (solve_graph): Use graph->size.
9271         (process_constraint_1): Add from_call argument, use it.
9272         Split *a = &b into two constraints.
9273         (process_constraint): Use new process_constraint_1.
9274         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
9275         (get_constraint_for): Handle non-pointer integers properly.
9276         Remove code that used to handle structures.
9277         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
9278         with unknown addends.
9279         (handle_rhs_call): New function.
9280         (find_func_aliases): Use handle_rhs_call.
9281         (set_uids_in_ptset): Add an assert.
9282         (set_used_smts): Fix bug in not considering unified vars.
9283         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
9284         (compute_points_to_sets): Update for other function changes.
9285         (delete_points_to_sets): Ditto.
9286         (ipa_pta_execute): Ditto.
9287         (pass_ipa_pta): We need to update SSA after ipa_pta.
9288         
9289 2007-08-19  Jan Hubicka  <jh@suse.cz>
9290
9291         * i386.md: Replace "rim" and "mri" constraints by "g".
9292
9293 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
9294
9295         * dwarf2out.c (text_section_used, cold_text_section_used,
9296         cold_text_section, dwarf2out_note_section_used): New.
9297         (dwarf2out_init): Initialize cold_text_section.
9298         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
9299         dwarf2out_note_section_used.
9300         (size_of_aranges): Only count entry for text section if it was
9301         used.  Count entry for cold text section if it was used.
9302         (output_aranges): Only output entries for text section and cold
9303         text section if they were used.
9304
9305 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9306
9307         * tree-pretty-print.c (debug_generic_expr): Add a comment about
9308         the function.
9309         (debug_generic_stmt): Likewise.
9310         (debug_tree_chain): Likewise.
9311
9312 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9313
9314         * tree-data-refs.c (split_constant_offset): Expose.
9315         * tree-data-refs.h (split_constant_offset): Add declaration.
9316
9317         * tree-vectorizer.h (dr_alignment_support): Renamed
9318         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
9319         Added a new value dr_explicit_realign.
9320         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
9321         dr_offset, dr_step, and dr_aligned_to, along with new access
9322         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
9323         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
9324         STMT_VINFO_DR_ALIGNED_TO.
9325
9326         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
9327         documentation.
9328         In case of outer-loop vectorization with non-fixed misalignment - use
9329         the dr_explicit_realign scheme instead of the optimized realignment
9330         scheme.
9331         (new_stmt_vec_info): Initialize new fields.
9332
9333         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
9334         'nested_in_vect_loop' case. Change verbosity level.
9335         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
9336         Don't fail on zero step in the outer-loop for loads.
9337         (vect_analyze_data_refs): Call split_constant_offset to calculate
9338         base, offset and init relative to the outer-loop.
9339
9340         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
9341         BSI function argument with a new function argument - at_loop.
9342         Simplify the condition that determines STEP. Takes additional argument
9343         INV_P. Support outer-loop vectorization (handle the
9344         nested_in_vect_loop case), including zero step in the outer-loop. Call
9345         vect_create_addr_base_for_vector_ref with additional argument.
9346         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
9347         Updated function documentation. Handle the 'nested_in_vect_loop' case.
9348         Fixed and simplified calculation of step.
9349         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
9350         of bsi, and with additional argument. Call bump_vector_ptr with
9351         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
9352         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
9353         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
9354         when the realignment setup needs to take place inside the loop.
9355         Support the dr_explicit_realign scheme. Allow generating the optimized
9356         realignment scheme for outer-loop vectorization. Added documentation.
9357         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
9358         the 'nested_in_vect_loop' case, including loads that are invariant in
9359         the outer-loop and the realignment schemes. Handle the case when the
9360         realignment setup needs to take place inside the loop. Call
9361         vect_setup_realignment with additional arguments.  Call
9362         vect_create_data_ref_ptr with additional argument and with loop instead
9363         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
9364         (vect_gen_niters_for_prolog_loop): Call
9365         vect_create_addr_base_for_vector_ref with additional arguments.
9366         (vect_create_cond_for_align_checks): Likewise.
9367         (bump_vector_ptr): Updated to support the new dr_explicit_realign
9368         scheme: takes additional argument bump; argument ptr_incr is now
9369         optional; updated documentation.
9370         (vect_init_vector): Takes additional argument (bsi). Use it, if
9371         available, to insert the vector initialization.
9372         (get_initial_def_for_induction): Pass additional argument in call to
9373         vect_init_vector.
9374         (vect_get_vec_def_for_operand): Likewise.
9375         (vect_setup_realignment): Likewise.
9376         (vectorizable_load): Likewise.
9377
9378 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9379
9380         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
9381         as argument instead of struct loop.
9382         (nested_in_vect_loop_p): New function.
9383         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
9384         vect_used_in_outer.
9385         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
9386         from other phis in the loop.
9387         (destroy_loop_vec_info): Add additional argument to declaration.
9388
9389         * tree-vectorizer.c (supportable_widening_operation): Also check if
9390         nested_in_vect_loop_p (don't allow changing the order in this case).
9391         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
9392         of struct loop. Call nested_in_vect_loop_p and don't require
9393         flag_unsafe_math_optimizations if it returns true.
9394         (new_stmt_vec_info): When setting def_type for phis differentiate 
9395         loop-header phis from other phis.
9396         (bb_in_loop_p): New function.
9397         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
9398         just update their loop_vinfo.  Order of BB traversal now matters -
9399         call dfs_enumerate_from with bb_in_loop_p.
9400         (destroy_loop_vec_info): Takes additional argument to control whether
9401         stmt_vinfo of the loop stmts should be destroyed as well.
9402         (vect_is_simple_reduction): Allow the "non-reduction" use of a
9403         reduction stmt to be defines by a non loop-header phi.
9404         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
9405
9406         * tree-vect-transform.c (vectorizable_reduction): Call
9407         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
9408         (vectorizable_call): Likewise.
9409         (vectorizable_conversion): Likewise.
9410         (vectorizable_operation): Likewise.
9411         (vectorizable_type_promotion): Likewise.
9412         (vectorizable_type_demotion): Likewise.
9413         (vectorizable_store): Likewise.
9414         (vectorizable_live_operation): Likewise.
9415         (vectorizable_reduction): Likewise. Also pass loop_info to
9416         vect_is_simple_reduction instead of loop.
9417         (vect_init_vector): Call nested_in_vect_loop_p.
9418         (get_initial_def_for_reduction): Likewise.
9419         (vect_create_epilog_for_reduction): Likewise.
9420         (vect_init_vector): Check which loop to work with, in case there's an
9421         inner-loop.
9422         (get_initial_def_for_inducion): Extend to handle outer-loop
9423         vectorization. Fix indentation.
9424         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
9425         In the case vect_induction_def get the vector def from the induction
9426         phi node, instead of calling get_initial_def_for_inducion.
9427         (get_initial_def_for_reduction): Extend to handle outer-loop 
9428         vectorization.
9429         (vect_create_epilog_for_reduction): Extend to handle outer-loop
9430         vectorization.
9431         (vect_transform_loop): Change assert to just skip this case.  Add a
9432         dump printout.
9433         (vect_finish_stmt_generation): Add a couple asserts.
9434
9435         (vect_estimate_min_profitable_iters): Multiply
9436         cost of inner-loop stmts (in outer-loop vectorization) by estimated
9437         inner-loop bound.
9438         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
9439         this is an inner-loop reduction in outer-loop vectorization.
9440
9441         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
9442         Same code as what used to be vect_analyze_scalar_cycles, only with
9443         additional argument loop, and loop_info passed to
9444         vect_is_simple_reduction instead of loop.
9445         (vect_analyze_scalar_cycles): Code factored out into
9446         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
9447         Updated documentation.
9448         (analyze_operations): Check for inner-loop loop-closed exit-phis during
9449         outer-loop vectorization that are live or not used in the outerloop,
9450         cause this requires special handling.
9451         (vect_enhance_data_refs_alignment): Don't consider versioning for
9452         nested-loops.
9453         (vect_analyze_data_refs): Check that there are no datarefs in the
9454         inner-loop.
9455         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
9456         and vect_used_in_outer_by_reduction cases.
9457         (process_use): Also consider the case of outer-loop stmt defining an
9458         inner-loop stmt and vice versa.
9459         (vect_analyze_loop_1): New function.
9460         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
9461         loops.  Call vect_analyze_loop_1.
9462         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
9463         been vectorized.  Call destroy_loop_vec_info with additional argument.
9464
9465         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
9466         in the inner-loop when doing outer-loop vectorization. Add
9467         documentation and printout.
9468         (vect_recog_dot_prod_pattern): Likewise. Also add check for
9469         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
9470
9471 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
9472
9473         * tree-affine.h (print_aff): New prototype.
9474         (debug_aff): Likewise.
9475         * tree-affine.c (print_aff): New function.
9476         (debug_aff): Likewise.
9477
9478 2007-08-18  Paul Brook  <paul@codesourcery.com>
9479             Joseph Myers  <joseph@codesourcery.com>
9480
9481         * common.opt (-fdebug-prefix-map=): New option.
9482         * opts.c: Include debug.h.
9483         (common_handle_option): Handle -fdebug-prefix-map.
9484         * final.c: Include ggc.h.
9485         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
9486         remap_debug_filename): New.
9487         * Makefile.in (final.o, opts.o): Update dependencies.
9488         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
9489         * configure.ac: Check for assembler --debug-prefix-map support.
9490         * configure, config.in: Regenerate.
9491         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
9492         (ASM_DEBUG_SPEC): Include ASM_MAP.
9493         * doc/install.texi (--with-debug-prefix-map): Document.
9494         * doc/invoke.texi (-fdebug-prefix-map): Document.
9495         * dbxout.c (dbxout_init, dbxout_start_source_file,
9496         dbxout_source_file): Call remap_debug_filename.
9497         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
9498         dwarf2out_start_source_file, dwarf2out_finish): Call
9499         remap_debug_filename.
9500         (file_table_relative_p): Do not check d->emitted_number.
9501         * toplev.c (output_file_directive): Call remap_debug_filename.
9502         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
9503         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
9504
9505 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9506
9507         * loop-invariant.c (find_invariants_to_move): Add missing macro
9508         argument.
9509
9510 2007-08-17  Tom Tromey  <tromey@redhat.com>
9511
9512         * tree.h (struct tree_label_decl): Removed old "java" fields.
9513
9514 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
9515             Nigel Stephens  <nigel@mips.com>
9516
9517         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
9518         Treat -mno-data-in-code and -mcode-xonly as aliases for
9519         -mcode-readable=no and -mcode-readable=pcrel respectively.
9520         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
9521         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
9522         (MULTILIB_DIRNAMES): Update accordingly.
9523
9524 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
9525
9526         * Makefile.in (version.o): Depend on $(REVISION) only if
9527         REVISION_s is defined.
9528
9529 2007-08-17  Sa Liu  <saliu@de.ibm.com>
9530             Ulrich Weigand  <uweigand@de.ibm.com>
9531
9532         PR middle-end/32970
9533         * tree.c (reconstruct_complex_type): For a pointer to a vector,
9534         use build_qualified_type to retain qualifiers of the base type.
9535
9536 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
9537
9538         * config/score/score.md : Update pattern tablejump.
9539         * config/score/score.c : Update score_initialize_trampoline 
9540         function.
9541         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
9542         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
9543         * doc/contrib.texi: Add my entry.
9544
9545 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
9546
9547         * Makefile.in (REVISION): New.
9548         (REVISION_c): New.
9549         (REVISION_s): New.
9550         (version.o): Also depend on $(REVISION). Add
9551         -DREVISION=$(REVISION_s).
9552
9553         * version.c (version_string): Add REVISION.
9554
9555 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
9556
9557         * tree-eh.c (lower_try_finally_onedest): Reset the locus
9558         of GOTO that's relocated to a different block.
9559
9560 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9561
9562         * c-common.c (const_strip_array_types): New.
9563         * c-common.h (lang_missing_noreturn_ok_p): Delete.
9564         (const_strip_array_types): New.
9565         * c-objc-common.c (c_disregard_inline_limits,
9566         c_warn_unused_global_decl): Constify.
9567         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
9568         c_vla_type_p, c_incomplete_type_error): Likewise.
9569         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
9570         * hooks.c (hook_bool_const_tree_false): New.
9571         * hooks.h (hook_bool_const_tree_false): Likewise.
9572         * langhooks-def.h (lhd_warn_unused_global_decl,
9573         lhd_incomplete_type_error, lhd_expr_size,
9574         lhd_tree_inlining_disregard_inline_limits,
9575         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9576         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
9577         * langhooks.c (lhd_warn_unused_global_decl,
9578         lhd_incomplete_type_error,
9579         lhd_tree_inlining_disregard_inline_limits,
9580         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9581         lhd_expr_size): Likewise.
9582         * langhooks.h (lang_hooks_for_tree_inlining,
9583         lang_hooks_for_tree_dump, lang_hooks_for_types,
9584         lang_hooks_for_decls, lang_hooks): Likewise.
9585         * pointer-set.c (pointer_set_t, pointer_set_create,
9586         pointer_set_contains, insert_aux, pointer_set_insert,
9587         pointer_set_traverse, pointer_map_t, pointer_map_create,
9588         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
9589         Likewise.
9590         * pointer-set.h (pointer_set_contains, pointer_set_insert,
9591         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
9592         pointer_map_traverse): Likewise.
9593         * predict.c (assert_is_empty): Likewise.
9594         * tree-affine.c (free_name_expansion): Likewise.
9595         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
9596         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
9597         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
9598
9599 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
9600
9601         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
9602         field.
9603         (destroy_loop_vec_info): Add call to VEC_free.
9604         * tree-vectorizer.h (may_alias_ddrs): Define.
9605         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
9606         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
9607         Change reporting to dump.
9608         (vect_is_duplicate_ddr): New.
9609         (vect_mark_for_runtime_alias_test): New.
9610         (vect_analyze_data_ref_dependences) Add call to
9611         vect_mark_for_runtime_alias_test.
9612         (vect_enhance_data_refs_alignment): Define local variable
9613         vect_versioning_for_alias_required, don't perform
9614         peeling for alignment if versioning for alias is
9615         required.
9616         (vect_enhance_data_refs_alignment): Use
9617         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
9618         PARAM_VECT_MAX_VERSION_CHECKS.
9619         * tree-vect-transform.c
9620         (vect_create_cond_for_alias_checks): New.
9621         (vect_transform_loop): Add call to
9622         vect_create_cond_for_alias_checks.
9623         (vect_vfa_segment_size): New.
9624         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
9625         Rename.
9626         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
9627         * doc/invoke.texi
9628         (vect-max-version-for-alignment-checks): Document.
9629         (vect-max-version-for-alias-checks): Document.
9630         (vect-max-version-checks): Remove.
9631
9632 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
9633
9634         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
9635         the same line as the instruction for all asm dialects.
9636         (*rep_movsi): Ditto.
9637         (*rep_movsi_rex64): Ditto.
9638         (*rep_movqi): Ditto.
9639         (*rep_movqi_rex64): Ditto.
9640         (*rep_stosdi_rex64): Ditto.
9641         (*rep_stossi): Ditto.
9642         (*rep_stossi_rex64): Ditto.
9643         (*rep_stosqi): Ditto.
9644         (*rep_stosqi_rex64): Ditto.
9645         (*cmpstrnqi_nz_1): Ditto.
9646         (*cmpstrnqi_nz_rex_1): Ditto.
9647         (*cmpstrnqi_1): Ditto.
9648         (*cmpstrnqi_rex_1): Ditto.
9649         (*strlenqi_1): Ditto.
9650         (*strlenqi_rex_1): Ditto.
9651         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
9652         prefix on the same line as the instruction for all asm dialects.
9653         (sync_double_compare_and_swap<mode>): Ditto.
9654         (*sync_double_compare_and_swapdi_pic): Ditto.
9655         (*sync_compare_and_swap_cc<mode>): Ditto.
9656         (sync_double_compare_and_swap_cc<mode>): Ditto.
9657         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
9658         (sync_old_add<mode>): Ditto.
9659         (sync_add<mode>): Ditto.
9660         (sync_sub<mode>): Ditto.
9661         (sync_ior<mode>): Ditto.
9662         (sync_and<mode>): Ditto.
9663         (sync_xor<mode>): Ditto.
9664
9665 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
9666
9667         PR middle-end/32897
9668         * reload.c (find_reloads): Check that the memory returned by
9669         find_reloads_toplev was not the result of forcing a constant
9670         to memory.
9671         (find_reloads_toplev): Always use simplify_gen_subreg to get
9672         the subreg of a constant.  If the result is also a constant,
9673         but not a legitimate one, force it into the constant pool
9674         and reload its address.
9675
9676 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
9677
9678         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
9679         POPCOUNT.
9680
9681 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
9682
9683         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
9684         directive for the current vector ABI.
9685
9686 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
9687
9688         PR target/32963
9689         * caller-save.c (reg_save_code): Set invalide status on restore code.
9690         
9691 2007-08-15  Diego Novillo  <dnovillo@google.com>
9692
9693         * tree-ssa-alias.c (compute_memory_partitions): Use
9694         alias_bitmap_obstack to allocate bitmaps.
9695         (reset_alias_info): Factor out of init_alias_info.
9696         Mark all name tags not associated to an SSA name for renaming.
9697         (init_alias_info): Call it.
9698         (create_name_tags): Tidy.  Add comments.
9699         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
9700
9701 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9702
9703         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
9704         scheduler dependencies.
9705
9706 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9707
9708         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
9709         "register_operand".
9710         (*iorsi_1_zext): Likewise.
9711         (*iorsi_1_zext_imm): Likewise.
9712         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
9713         with "rm"/"xm" constraint.
9714         (sse2_vmsqrtv2df2): Likewise.
9715
9716 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
9717
9718         PR middle-end/33074
9719         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
9720         REG_LIBCALL note.
9721
9722 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
9723
9724         * tree-pass.h (PROP_pta): Removed.
9725         (TODO_rebuild_alias): New.
9726         (pass_may_alias): Removed.
9727         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
9728         aliasing if we changed something.
9729         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
9730         SSA internally.
9731         (pass_may_alias): Removed.
9732         (create_structure_vars): Return TODO_rebuild_alias.
9733         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
9734         * tree-sra.c (tree_sra): Only rebuild aliasing if something
9735         changed.
9736         (tree_sra_early): We never affect aliasing right now.
9737         * tree-flow.h (compute_may_aliases): New prototype.
9738         * passes.c: Remove pass_may_alias from the passes.
9739         (execute_function_todo): Support TODO_rebuild_alias.    
9740
9741 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
9742
9743         * i386.c: (legitimize_address): Move dllimported variable check
9744         infront of legitimizing pic address of CONST symbols.
9745
9746 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
9747
9748         PR tree-optimization/32941
9749         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
9750         (goto_queue_cmp): Remove.
9751         (find_goto_replacement): Change search method.
9752         (maybe_record_in_goto_queue): Add assert.
9753         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
9754         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
9755
9756 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9757
9758         * alias.c (component_uses_parent_alias_set): Constify.
9759         * alias.h (component_uses_parent_alias_set): Likewise.
9760         * cfgrtl.c (print_rtl_with_bb): Likewise.
9761         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
9762         mpz_get_double_int): Likewise.
9763         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
9764         mpz_get_double_int): Likewise.
9765         * expr.c (is_aligning_offset, undefined_operand_subword_p,
9766         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
9767         Likewise.
9768         * expr.h (safe_from_p): Likewise.
9769         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
9770         Likewise.
9771         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
9772         zero_sized_type, goa_lhs_expr_p): Likewise.
9773         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
9774         * rtl.h (print_rtl_with_bb): Likewise.
9775         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
9776         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
9777         * tree-flow-inline.h (bb_stmt_list): Constify.
9778         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
9779         cbsi_stmt): New.
9780         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
9781         const_first_stmt, const_last_stmt): New.
9782         (block_may_fallthru, empty_block_p): Constify.
9783         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
9784         EXPR_ONLY_BODY): New.
9785         (expr_first, expr_last, expr_only): Use macro for body.
9786         (const_expr_first, const_expr_last, const_expr_only): New.
9787         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
9788         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
9789         ctsi_prev, ctsi_stmt): New.
9790         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
9791         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
9792         * tree-ssa-loop-niter.c (loop_only_exit_p,
9793         derive_constant_upper_bound): Likewise.
9794         * tree-ssa-phiopt.c (empty_block_p): Likewise.
9795         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
9796         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
9797         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
9798         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
9799         * tree.c (get_type_static_bounds): Likewise.
9800         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
9801         (get_type_static_bounds): Constify.
9802
9803 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9804
9805         PR target/30315
9806         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
9807         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
9808         (*<addsub><mode>3_cc_overflow): New.
9809         (*add<mode>3_cconly_overflow): New.
9810         (*sub<mode>3_cconly_overflow): New.
9811         (*<addsub>si3_zext_cc_overflow): New.
9812         * config/i386/predicates.md (fcmov_comparison_operator): Accept
9813         CCCmode for LTU, GTU, LEU and GEU.
9814         (ix86_comparison_operator): Likewise.
9815         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
9816         * config/i386/i386.c (put_condition_code): Support CCCmode.
9817         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
9818         or MINUS expressions.
9819
9820 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
9821
9822         PR c/30428
9823         * c-typeck.c (build_binary_op): Disallow vector float types with
9824         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
9825
9826 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
9827
9828         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
9829         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
9830         (dep_def): New typedef.
9831         (init_dep_1, sd_debug_dep): Declare functions.
9832         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
9833         (debug_dep_links): Remove.
9834         (struct _deps_list): New field 'n_links'.
9835         (DEPS_LIST_N_LINKS): New macro.
9836         (FOR_EACH_DEP_LINK): Remove.
9837         (create_deps_list, free_deps_list, delete_deps_list): Remove
9838         declaration.
9839         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
9840         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9841         (copy_deps_list_change_con, move_dep_link): Ditto.
9842         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
9843         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
9844         'dep_count'.
9845         (INSN_BACK_DEPS): Remove.
9846         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
9847         New macros.
9848         (INSN_DEP_COUNT): Remove.
9849         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
9850         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
9851         Declare global variables.
9852         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
9853         (add_forw_dep, compute_forward_dependences): Remove declarations.
9854         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
9855         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9856         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
9857         functions.
9858         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
9859         New constants.
9860         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
9861         (sd_list_types_def): New typedef.
9862         (sd_next_list): Declare function.
9863         (struct _sd_iterator): New type.
9864         (sd_iterator_def): New typedef.
9865         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
9866         functions.
9867         (FOR_EACH_DEP): New cycle wrapper.
9868         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
9869         Declare functions.
9870         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
9871         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
9872         Ditto.
9873
9874         * sched-deps.c (init_dep_1): Make global.
9875         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
9876         constants.
9877         (dump_dep): New static function.
9878         (dump_dep_flags): New static variable.
9879         (sd_debug_dep): New function.
9880         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
9881         the list.
9882         (move_dep_link): Use remove_from_deps_list (), instead of
9883         detach_dep_link ().
9884         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
9885         (dep_link_is_detached_p): New static function.
9886         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
9887         instead.
9888         (dn_pool, dl_pool): New alloc_pools.
9889         (dn_pool_diff, dl_pool_diff): New static variables.
9890         (create_dep_node, delete_dep_node): New static function.
9891         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
9892         (deps_list_empty_p): Make it static.  Use 'n_links' field.
9893         (deps_pools_are_empty_p): New static function.
9894         (alloc_deps_list, delete_deps_list): Remove.
9895         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
9896         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9897         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
9898         (forward_dependency_cache): Remove.
9899         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
9900         'back' from the names.  Change signature to use dep_t instead of
9901         equivalent quad.
9902         (add_back_dep): Ditto.  Make global.
9903         (check_dep_status): Rename to check_dep ().
9904         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
9905         New functions.
9906         (sd_finish_insn): Ditto.
9907         (sd_find_dep_between_no_cache): New static function.
9908         (sd_find_dep_between): New function.
9909         (ask_dependency_caches, set_dependency_caches): New static functions.
9910         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
9911         (add_or_update_dep_1): Separate pieces of functionality into
9912         ask_dependency_caches (), update_dependency_caches (),
9913         change_spec_dep_to_hard (), update_dep ().
9914         (get_back_and_forw_lists): New static function.
9915         (sd_add_dep): Separate setting of dependency caches into
9916         set_dependency_caches ().
9917         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
9918         New functions.
9919         (sd_delete_dep): Ditto.
9920         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
9921         (dump_lists): New static function.
9922         (sd_debug_lists): New debug function.
9923         (delete_all_dependences, fixup_sched_groups): Update to use
9924         sd_* infrastructure.
9925         (sched_analyze_2): Create data-speculative dependency only if
9926         data-speculation is enabled.
9927         (sched_analyze_insn): If insn cannot be speculative, make all its
9928         dependencies non-speculative.
9929         (sched_analyze): Use sd_init_insn ().
9930         (add_forw_dep, compute_forward_dependencies): Remove.
9931         (delete_dep_nodes_in_back_deps): New static function.
9932         (sched_free_deps): New function.
9933         (init_dependency_caches): Init alloc_pools.
9934         (extend_depedency_caches): Update after removing of
9935         forward_dependency_cache.
9936         (free_dependency_caches): Ditto.  Free alloc_pools.
9937         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
9938         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
9939         Ditto.
9940         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9941         (add_dependence): Use init_dep ().
9942         (get_dep_weak_1): New static function.
9943         (get_dep_weak): Move logic to get_dep_weak_1 ().
9944         (dump_ds): New static function moved from haifa-sched.c:
9945         debug_spec_status ().
9946         (debug_ds): New debug function.
9947         (check_dep_status): Rename to check_dep ().  Update to check whole
9948         dependencies.
9949
9950         * haifa-sched.c (spec_info): Make global.
9951         (added_recovery_block_p): Rename to
9952         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
9953         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
9954         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
9955         to use new interfaces.
9956         (ok_for_early_queue_removal): Ditto.
9957         (schedule_block): Initialize logical uids of insns emitted by the
9958         target.
9959         (sched_init): Initialize new variable.
9960         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
9961         interfaces.
9962         (extend_global): Initialize insn data.
9963         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
9964         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
9965         new interfaces.
9966         (add_to_speculative_block): Update to use new interfaces.
9967         (create_recovery_block): Set new variables.
9968         (create_check_block_twin, fix_recovery_deps): Update to use new
9969         interfaces.
9970         (sched_insn_is_legitimate_for_speculation_p): New function.
9971         (speculate_insn): Move checking logic to
9972         sched_insn_is_legitimate_for_speculation_p ().
9973         (sched_remove_insn): Finalize sched-deps information of instruction.
9974         (clear_priorities, add_jump_dependencies): Update to use new
9975         interfaces.
9976         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
9977         
9978         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
9979         to use new interfaces.
9980         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
9981         (new_ready): Try to use control speculation only if it is available.
9982         (add_branch_dependences): Update to use new interfaces.
9983         (compute_block_backward_dependences): Rename to
9984         compute_block_dependences ().  Call
9985         targetm.sched.dependencies_evaluation_hook ().
9986         (free_block_dependencies): New static function.
9987         (debug_dependencies): Update to use new interfaces.
9988         (schedule_region): Remove separate computation of forward dependencies.
9989         Move call of targetm.sched.dependencies_evaluation_hook () to
9990         compute_block_dependences ().  Free dependencies at the end of
9991         scheduling the region.
9992
9993         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
9994         new interfaces.
9995         (add_deps_for_risky_insns): Ditto.
9996         (schedule_ebb): Remove separate computation of forward dependencies.
9997         Free dependencies at the end of scheduling the ebb.
9998
9999         * ddg.c (create_ddg_dependence): Update to use new interfaces.
10000         (build_intra_loop_deps): Ditto.  Remove separate computation of
10001         forward dependencies.  Free sched-deps dependencies.
10002
10003         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
10004         to use new interfaces.
10005         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
10006
10007         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
10008         new interfaces.
10009         (is_costly_group): Ditto.
10010
10011 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10012
10013         * alias.c (rtx_equal_for_memref_p): Constify.
10014         * basic-block.h (const_edge, const_basic_block): New.
10015         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
10016         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
10017         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
10018         probably_never_executed_bb_p, edge_probability_reliable_p,
10019         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
10020         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
10021         Likewise.
10022         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
10023         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
10024         Likewise.
10025         * cfganal.c (flow_active_insn_p, forwarder_block_p,
10026         flow_nodes_print, dfs_enumerate_from): Likewise.
10027         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
10028         control_flow_insn_p, count_basic_blocks): Likewise.
10029         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
10030         get_loop_body_with_size, loop_exit_edge_p): Likewise.
10031         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
10032         average_num_loop_insns, loop_exit_edge_p,
10033         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
10034         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
10035         average_num_loop_insns, seq_cost): Likewise.
10036         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
10037         * dominance.c (dominated_by_p): Likewise.
10038         * emit-rtl.c (validate_subreg): Likewise.
10039         * except.c (can_throw_internal, can_throw_external): Likewise.
10040         * except.h (can_throw_internal, can_throw_external): Likewise.
10041         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
10042         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
10043         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
10044         simple_mem, store_ops_ok, load_kills_store, find_loads,
10045         store_killed_in_insn, store_killed_after, store_killed_before,
10046         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
10047         Likewise.
10048         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
10049         noce_mem_write_may_trap_or_fault_p): Likewise.
10050         * pointer-set.c (pointer_set_contains, pointer_map_contains):
10051         Likewise.
10052         * pointer-set.h (pointer_set_contains, pointer_map_contains):
10053         Likewise.
10054         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
10055         probably_cold_bb_p, probably_never_executed_bb_p,
10056         edge_probability_reliable_p, br_prob_note_reliable_p,
10057         can_predict_insn_p): Likewise.
10058         * regclass.c (reg_set_to_hard_reg_set): Likewise.
10059         * resource.c (return_insn_p): Likewise.
10060         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
10061         Likewise.
10062         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
10063         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
10064         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
10065         verify_gimple_modify_stmt): Likewise.
10066         * tree-chrec.c (is_not_constant_evolution,
10067         is_multivariate_chrec_rec, is_multivariate_chrec,
10068         chrec_contains_symbols, chrec_contains_undetermined,
10069         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
10070         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
10071         eq_evolutions_p, scev_direction): Likewise.
10072         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
10073         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
10074         chrec_contains_symbols_defined_in_loop,
10075         chrec_contains_undetermined, tree_contains_chrecs,
10076         evolution_function_is_affine_multivariate_p,
10077         evolution_function_is_univariate_p, chrec_zerop,
10078         evolution_function_is_constant_p, evolution_function_is_affine_p,
10079         evolution_function_is_affine_or_constant_p,
10080         tree_does_not_contain_chrecs, chrec_type): Likewise.
10081         * tree-data-ref.c (tree_fold_divides_p,
10082         object_address_invariant_in_loop_p, dr_may_alias_p,
10083         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
10084         same_access_functions, constant_access_functions,
10085         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
10086         Likewise.
10087         * tree-flow.h (scev_direction): Likewise.
10088         * tree-gimple.c (is_gimple_stmt): Likewise.
10089         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
10090         Likewise.
10091         * tree-pretty-print.c (op_prio): Likewise.
10092         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
10093         analyzable_condition, backedge_phi_arg_p): Likewise.
10094         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
10095         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
10096         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
10097         Likewise.
10098
10099 2007-08-13  Dan Hipschman  <dsh@google.com>
10100
10101         PR c/32953
10102         * c-format.c (check_format_arg): Move check for zero-length
10103         format strings below the check for unterminated strings.
10104
10105 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
10106
10107         PR C/30427
10108         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
10109         types.
10110
10111 2007-08-13  Nick Clifton  <nickc@redhat.com>
10112
10113         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
10114
10115 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10116
10117         PR fortran/32860
10118         * c-format.c (gcc_gfc_length_specs): New array.
10119         (gcc_gfc_char_table): Add unsigned specifier, and references to
10120         the l length modifier.
10121         (format_types_orig): Use the new gcc_gfc_length_specs.
10122
10123 2007-08-12  Sa Liu  <saliu@de.ibm.com>
10124
10125         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
10126         and with REG_RETVAL note after split.
10127
10128 2007-08-11  David Daney  <ddaney@avtrex.com>
10129
10130         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
10131         as ATTRIBUTE_UNUSED.
10132
10133 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
10134             Segher Boessenkool  <segher@kernel.crashing.org>
10135
10136         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
10137         HAVE_LOCAL_CPU_DETECT not defined.
10138
10139 2007-08-11  Jan Hubicka  <jh@suse.cz>
10140
10141         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
10142         (cgraph_process_new_functions): Honor previous value of
10143         disregard_inline_limits.
10144         * ipa-inline.c (compute_inline_parameters): Likewise.
10145
10146 2007-08-11  Ian Lance Taylor  <iant@google.com>
10147
10148         * alias.h (alias_set_type): Define new type.
10149         (ALIAS_SET_MEMORY_BARRIER): Use it.
10150         * rtl.h: Include alias.h.
10151         (struct mem_attrs): Use alias_set_type.
10152         * tree.h: Include alias.h
10153         (struct tree_type): Use alias_set_type.
10154         (struct tree_struct_field_tag): Likewise.
10155         (struct tree_decl_common): Likewise.
10156         * alias.c (struct alias_set_entry): Use alias_set_type.
10157         (get_alias_set_entry, alias_set_subset_of): Likewise.
10158         (alias_sets_conflict_p): Likewise.
10159         (alias_sets_must_conflict_p): Likewise.
10160         (objects_must_conflict_p): Likewise.
10161         (get_alias_set, new_alias_set): Likewise.
10162         (record_alias_subset, record_component_aliases): Likewise.
10163         (varargs_set, frame_set): Change to alias_set_type.
10164         (get_varargs_alias_set): Use alias_set_type.
10165         (get_frame_alias_set): Likewise.
10166         * builtins.c (setjmp_alias_set): Change to alias_set_type.
10167         * dse.c (struct store_info): Use alias_set_type.
10168         (struct read_info, struct clear_alias_mode_holder): Likewise.
10169         (clear_alias_set_lookup, canon_address): Likewise.
10170         (record_store, check_mem_read_rtx): Likewise.
10171         (dse_record_singleton_alias_set): Likewise.
10172         (dse_invalidate_singleton_alias_set): Likewise.
10173         * emit-rtl.c (get_mem_attrs): Likewise.
10174         (set_mem_attributes_minus_bitpos): Likewise.
10175         (set_mem_alias_set): Likewise.
10176         * expr.c (store_constructor_field, store_field): Likewise.
10177         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
10178         * langhooks.c (lhd_get_alias_set): Likewise.
10179         * langhooks-def.h (lhd_get_alias_set): Likewise.
10180         * reload1.c (alter_reg): Likewise.
10181         * tree-flow.h (struct fieldoff): Likewise.
10182         * tree-ssa-alias.c (struct alias_map_d): Likewise.
10183         (may_alias_p, get_smt_for, create_sft): Likewise.
10184         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
10185         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
10186         (merge_smts_into): Likewise.
10187         * varasm.c (const_alias_set): Likewise.
10188         * c-common.c (strict_aliasing_warning): Likewise.
10189         (c_common_get_alias_set): Likewise.
10190         * dse.h (dse_record_singleton_alias_set): Update declaration.
10191         (dse_invalidate_singleton_alias_set): Likewise.
10192         * emit-rtl.h (set_mem_alias_set): Likewise.
10193         * c-common.h (c_common_get_alias_set): Likewise.
10194         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
10195         * print-tree.c (print_node): Likewise.
10196         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
10197         alias_set_type.
10198         (alpha_setup_incoming_varargs): Use alias_set_type.
10199         * config/i386/i386.c (setup_incoming_varargs_64): Use
10200         alias_set_type.
10201         (setup_incoming_varargs_ms_64): Likewise.
10202         (ix86_GOT_alias_set): Likewise.
10203         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
10204         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
10205         (set): Change to alias_set_type.
10206         (get_TOC_alias_set): Use alias_set_type.
10207         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
10208         declaration.
10209         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
10210         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
10211         alias_set_type.
10212         (struct_value_alias_set): Likewise.
10213         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
10214
10215 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10216
10217         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
10218         * config/vxworks.h (TARGET_VXWORKS): Override.
10219         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
10220         "mips" if TARGET_VXWORKS.
10221
10222 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10223
10224         * calls.c (avoid_likely_spilled_reg): New function.
10225         (expand_call): Use it.
10226
10227 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10228
10229         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
10230
10231 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
10232
10233         * config/mips/predicates.md (const_call_insn_operand): Invoke
10234         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
10235
10236 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
10237
10238         PR target/33042
10239         * config/rs6000/driver-rs6000.c: Include link.h.
10240         Use ElfW instead of wordsize-specif typedef.
10241
10242 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10243
10244         * system.h (CONST_CAST): New.
10245         * c-decl.c (c_make_fname_decl): Use it.
10246         * c-lex.c (cb_ident, lex_string): Likewise.
10247         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10248         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
10249         give_switch, set_multilib_dir): Likewise.
10250         * gengtype-parse.c (string_seq, typedef_name): Likewise.
10251         * passes.c (execute_one_pass): Likewise.
10252         * prefix.c (update_path): Likewise.
10253         * pretty-print.c (pp_base_destroy_prefix): Likewise.
10254         * tree.c (build_string): Likewise.
10255
10256 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10257
10258         * tree-flow-inline.h (is_exec_stmt): Remove.
10259         (is_label_stmt): Remove.
10260         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
10261         is_label_stmt.
10262
10263 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
10264
10265         * lower-subreg.c (resolve_shift_zext): Don't adjust
10266         src_reg_num for wordmode operands.
10267
10268 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
10269             David Ung  <davidu@mips.com>
10270
10271         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
10272         (TARGET_SCHED_REORDER2): Define.
10273         (mips_maybe_swap_ready): New.
10274         (mips_last_74k_agen_insn): New.
10275         (mips_74k_agen_init): New.
10276         (mips_74k_agen_reorder): New function to group loads and stores
10277         in the ready queue.
10278         (mips_sched_init): New.  
10279         (mips_sched_reorder): Don't do initialization here.  Call
10280         mips_74k_agen_reorder.
10281         (mips_variable_issue): Call mips_74k_agen_init.
10282
10283 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10284
10285         * tree-flow-inline.h (get_filename): Remove.
10286
10287 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
10288
10289         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
10290         argument.
10291         (mips_fetch_insns): Delete in favor of...
10292         (mips_load_store_insns): ...this new function.
10293         * config/mips/mips.c (mips_address_insns): Add a boolean argument
10294         to say whether multiword moves _might_ be split.
10295         (mips_fetch_insns): Delete in favor of...
10296         (mips_load_store_insns): ...this new function.
10297         (mips_rtx_costs): Update the call to mips_address_insns.
10298         (mips_address_cost): Likewise.
10299         * config/mips/mips.md (length): Use mips_load_store_insns instead
10300         of mips_fetch_insns.
10301         * config/mips/constraints.md (R): Use mips_address_insns rather
10302         than mips_fetch_insns.  Assume that the move never needs to be split.
10303
10304 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10305
10306         * config/mips/mips.opt (mhard-float, msoft-float): Make these
10307         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
10308         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
10309         * config/mips/mips.h (mips16_hard_float): Delete.
10310         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
10311         definitions, and replace with....
10312         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
10313         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
10314         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
10315         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
10316         (override_options): Replace MASK_SOFT_FLOAT references with
10317         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
10318         and mips16_hard_float when TARGET_MIPS16.
10319         
10320 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10321
10322         PR c/32796
10323         * c-typeck.c (build_binary_op): Check for non pointer types before
10324         calling int_fits_type_p.
10325
10326 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10327
10328         PR middle-end/32813
10329         * fold-const.c (omit_one_operand): Return only the ommitted expression
10330         if the result is an empty statement.
10331         (pedantic_omit_one_operand): Likewise.
10332
10333 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
10334
10335         * c-typeck.c (readonly_error): Improve error for assignment.
10336         
10337         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
10338         expression. 
10339         (pp_c_expression): Ditto.
10340
10341 2007-08-09  Simon Baldwin  <simonb@google.com>
10342
10343         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
10344         break that was preventing simplify_associative_operation() for xor.
10345
10346 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10347             Nigel Stephens  <nigel@mips.com>
10348
10349         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
10350         Document change in interpretation of value from boolean to
10351         tri-state integer.
10352         * optabs.c (expand_ffs, expand_ctz): New functions to compute
10353         ffs and ctz using clz.
10354         (expand_unop): Call them.
10355         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
10356         result value.
10357         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
10358         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
10359         enable the new ffs expansion on this target.
10360
10361 2007-08-09  Jan Hubicka  <jh@suse.cz>
10362
10363         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
10364         (expand_ternary_op): Likewise.
10365         (expand_vec_shift_expr): Likewise.
10366         (expand_binop_directly): Likewise.
10367         (expand_binop): Likewise.
10368         (sign_expand_binop): Likewise.
10369         (expand_twoval_unop): Likewise.
10370         (expand_twoval_binop): Likewise.
10371         (expand_twoval_binop_libfunc): Likewise.
10372         (widen_clz): Likewise.
10373         (widen_bswap): Likewise.
10374         (expand_parity): Likewise.
10375         (expand_unop): Likewise.
10376         (expand_abs_nojump): Likewise.
10377         (expand_copysign): Likewise.
10378         (emit_no_conflict_block): Likewise.
10379         (emit_libcall_block): Likewise.
10380         (can_compare_p): Likewise.
10381         (prepare_cmp_insn): Likewise.
10382         (emit_cmp_and_jump_insn_1): Likewise.
10383         (prepare_float_lib_cmp): Likewise.
10384         (emit_conditional_add): Likewise.
10385         (gen_add2_insn): Likewise.
10386         (have_add2_insn): Likewise.
10387         (gen_sub2_insn): Likewise.
10388         (have_sub2_insn): Likewise.
10389         (can_extend_p): Likewise.
10390         (can_fix_p): Likewise.
10391         (can_float_p): Likewise.
10392         (expand_float): Likewise.
10393         (expand_fix): Likewise.
10394         (expand_sfix_optab): Likewise.
10395         (new_optab): Likewise.
10396         (new_convert_optab): Likewise.
10397         (init_libfuncs): Likewise.
10398         (init_interclass_conv_libfuncs): Likewise.
10399         (init_intraclass_conv_libfuncs): Likewise.
10400         (set_conv_libfunc): Likewise.
10401         (init_optabs): Likewise.
10402         (debug_optab_libfuncs): Likewise.
10403         (gen_cond_trap): Likewise.
10404         * optabs.h (optab_handler, convert_optab_hanlder): New.
10405         * genopinit.c: Update optabs generation table.
10406         * reload.c (find_reloads_address_1): Use optabs accestors.
10407         * builtins.c (expand_builtin_mathfn): Likewise.
10408         (expand_builtin_mathfn_2): Likewise.
10409         (expand_builtin_mathfn_3): Likewise.
10410         (expand_builtin_interclass_mathfn): Likewise.
10411         (expand_builtin_sincos): Likewise.
10412         (expand_builtin_cexpi): Likewise.
10413         (expand_builtin_powi): Likewise.
10414         (expand_builtin_strlen): Likewise.
10415         * dojump.c (do_jump): Likewise.
10416         * expr.c (convert_move): Likewise.
10417         (move_by_pieces): Likewise.
10418         (move_by_pieces_ninsns): Likewise.
10419         (can_store_by_pieces): Likewise.
10420         (store_by_pieces_1): Likewise.
10421         (emit_move_via_integer): Likewise.
10422         (emit_move_complex): Likewise.
10423         (emit_move_ccmode): Likewise.
10424         (emit_move_insn_1): Likewise.
10425         (emit_single_push_insn): Likewise.
10426         (store_constructor): Likewise.
10427         (expand_expr_real_1): Likewise.
10428         (do_store_flag): Likewise.
10429         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
10430         (enumerate_modes): Likewise.
10431         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10432         (supportable_widening_operation): Likewise.
10433         (supportable_narrowing_operation): Likewise.
10434         * expmed.c (store_bit_field_1): Likewise.
10435         (extract_bit_field_1): Likewise.
10436         (expand_mult_highpart_optab): Likewise.
10437         (expand_smod_pow2): Likewise.
10438         (expand_divmod): Likewise.
10439         (emit_store_flag): Likewise.
10440         * tree-vect-patterns.c
10441         (vect_pattern_recog_1): Likewise.
10442         * tree-ssa-loop-prefetch.c
10443         (nontemporal_store_p): Likewise.
10444         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
10445         (vect_create_epilog_for_reduction): Likewise.
10446         (vectorizable_reduction): Likewise.
10447         (vectorizable_operation): Likewise.
10448         (vect_strided_store_supported): Likewise.
10449         (vectorizable_store): Likewise.
10450         (vect_strided_load_supported): Likewise.
10451         (vectorizable_load): Likewise.
10452         * combine.c (simplify_comparison): Likewise.
10453         * tree-vect-generic.c
10454         (type_for_widest_vector_mode): Likewise.
10455         (expand_vector_operations_1): Likewise.
10456         * config/spu/spu.c (spu_expand_mov): Likewise.
10457         (spu_emit_vector_compare): Likewise.
10458         * config/rs6000/rs6000.c
10459         (rs6000_emit_vector_compare): Likewise.
10460         * stmt.c (add_case_node): Likewise.
10461         * reload1.c (gen_reload):
10462
10463 2007-08-09  Michael Matz  <matz@suse.de>
10464
10465         * tree.h (fixed_zerop): Declare as taking a const_tree.
10466         * tree.c (fixed_zerop): Take a const_tree.
10467
10468 2007-08-09  Ira Rosen  <irar@il.ibm.com>
10469
10470         * tree-vect-transform.c (vectorizable_store): Remove call to
10471         copy_virtual_operands() and call mark_symbols_for_renaming() for
10472         the created vector store.
10473         (vect_setup_realignment): Don't call copy_virtual_operands() and
10474         update_vuses_to_preheader(). 
10475         (vectorizable_load): Don't call copy_virtual_operands(). 
10476         (update_vuses_to_preheader): Remove.
10477
10478 2007-08-08  Chao-ying Fu  <fu@mips.com>
10479
10480         * tree.def (FIXED_POINT_TYPE): New type.
10481         (FIXED_CST): New constant.
10482         (FIXED_CONVERT_EXPR): New expr.
10483         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
10484         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
10485         * tree.h (struct tree_base): Add saturating_flag.
10486         Remove one bit of spare for saturating_flag.
10487         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
10488         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
10489         FIXED_POINT_TYPE_P): Define.
10490         (TYPE_SATURATING): Define.
10491         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
10492         (struct tree_fixed_cst): New.
10493         (TYPE_IBIT, TYPE_FBIT): Define.
10494         (tree_node): Add fixed_cst.
10495         (enum tree_index): Add new enumeration values of
10496         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
10497         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
10498         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
10499         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
10500         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
10501         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
10502         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
10503         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
10504         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
10505         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
10506         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
10507         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
10508         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
10509         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
10510         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
10511         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
10512         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
10513         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
10514         (sat_short_fract_type_node, sat_fract_type_node,
10515         sat_long_fract_type_node, sat_long_long_fract_type_node,
10516         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
10517         sat_unsigned_long_fract_type_node,
10518         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
10519         fract_type_node, long_fract_type_node, long_long_fract_type_node,
10520         unsigned_short_fract_type_node, unsigned_fract_type_node,
10521         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
10522         sat_short_accum_type_node, sat_accum_type_node,
10523         sat_long_accum_type_node, sat_long_long_accum_type_node,
10524         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
10525         sat_unsigned_long_accum_type_node,
10526         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
10527         accum_type_node, long_accum_type_node, long_long_accum_type_node,
10528         unsigned_short_accum_type_node, unsigned_accum_type_node,
10529         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
10530         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
10531         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
10532         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
10533         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
10534         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
10535         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
10536         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
10537         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
10538         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
10539         sat_uda_type_node, sat_uta_type_node): New macro.
10540         (make_fract_type, make_accum_type): Declare.
10541         (make_signed_fract_type, make_unsigned_fract_type,
10542         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
10543         make_signed_accum_type, make_unsigned_accum_type,
10544         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
10545         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
10546         make_or_reuse_sat_signed_fract_type,
10547         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
10548         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
10549         make_or_reuse_sat_unsigned_accum_type): New macro.
10550         (fixed_zerop): Declare.
10551         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
10552         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10553         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10554         LONG_LONG_ACCUM_TYPE_SIZE): Define.
10555         * treestruct.def: Add TS_FIXED_CST.
10556         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
10557         (tree.o): Likewise.
10558         (tree-dump.o): Likewise.
10559         (print-tree.o): Likewise.
10560         (tree-pretty-print.o): Likewise.
10561         (fold-const.o): Likewise.
10562         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
10563         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
10564         (is_gimple_min_invariant): Handle FIXED_CST.
10565         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
10566         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
10567         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10568         (layout_type): Handle FIXED_POINT_TYPE.
10569         (make_fract_type, make_accum_type): New functions.
10570         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
10571         * tree-dump.c (fixed-value.h): New include.
10572         (dump_fixed): New function.
10573         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
10574         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
10575         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
10576         * tree-pretty-print.c (fixed-value.h): New include.
10577         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
10578         FIXED_CONVERT_EXPR.
10579         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
10580         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
10581         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
10582         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
10583         for non-saturating fixed-point types.
10584         (reassociate_bb): Likewise.
10585         * emit-rtl.c (fixed-value.h): New include.
10586         (fconst0, fconst1): New array.
10587         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
10588         * tree-vect-generic.c expand_vector_operation): Support
10589         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
10590         MODE_VECTOR_UACCUM.
10591         (type_for_widest_vector_mode): Add one parameter for the 
10592         saturating flag.
10593         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
10594         vector mode.
10595         Pass the satp parameter to type_for_mode for fixed-point types.
10596         (expand_vector_operations_1): Pass the saturating flag to
10597         type_for_widest_vector_mode.
10598         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
10599         and MODE_VECTOR_UACCUM.
10600         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
10601         (vectorizable_condition): Likewise.
10602         * tree.c (fixed-value.h): New include.
10603         (tree_code_size): Support FIXED_CST.
10604         (build_fixed): New function.
10605         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
10606         (fixed_zerop): New function.
10607         (tree_node_structure): Support FIXED_CST.
10608         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
10609         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
10610         (type_hash_eq): Handle FIXED_POINT_TYPE.
10611         (simple_cst_equal): Support FIXED_CST.
10612         (iterative_hash_expr): Handle FIXED_CST.
10613         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
10614         (get_narrower): Likewise.
10615         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
10616         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
10617         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
10618         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
10619         nodes.
10620         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
10621         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10622         (initializer_zerop): Support FIXED_CST.
10623         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
10624         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
10625         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
10626         (is_base_type): Handle FIXED_POINT_TYPE.
10627         (add_type_attribute): Handle FIXED_POINT_TYPE.
10628         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
10629         * print-tree.c (fixed-value.h): New include.
10630         (print_node_brief): Support FIXED_CST.
10631         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
10632         * c-pretty-print.c (fixed-value.h): New include.
10633         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
10634         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
10635         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
10636         Support fixed-point types for inner items in VECTOR_TYPE.
10637         (pp_c_direct_declarator): Likewise.
10638         (pp_c_declarator): Likewise.
10639         (pp_c_fixed_constant): New function.
10640         (pp_c_constant): Handle FIXED_CST.
10641         (pp_c_primary_expression): Likewise.
10642         (pp_c_expression): Likewise.
10643         * fold-const.c (fixed-value.h): New include.
10644         (negate_expr_p): Return true for FIXED_CST.
10645         (fold_negate_expr): Support FIXED_CST.
10646         (split_tree): Support FIXED_CST.
10647         (const_binop): Support FIXED_CST.
10648         (fold_convert_const_int_from_fixed): New function to convert from
10649         fixed to int.
10650         (fold_convert_const_real_from_fixed): New function to convert from
10651         fixed to real.
10652         (fold_convert_const_fixed_from_fixed): New function to convert from
10653         fixed to another fixed.
10654         (fold_convert_const_fixed_from_int): New function to convert from
10655         int to fixed.
10656         (fold_convert_const_fixed_from_real): New function to convert from
10657         real to fixed.
10658         (fold_convert_const): Support conversions from fixed to int, from
10659         fixed to real, from fixed to fixed, from int to fixed, and from real
10660         to fixed.
10661         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
10662         (operand_equal_p): Support FIXED_CST.
10663         (make_range): For fixed-point modes, we need to pass the
10664         saturating flag as the 2nd parameter.
10665         (tree_swap_operands_p): Handle FIXED_CST.
10666         (fold_plusminus_mult_expr): For fract modes, we cannot generate
10667         constant 1.
10668         (fold_unary): Support FIXED_CONVERT_EXPR.
10669         (fold_binary): Handle FIXED_CST.
10670         Make sure the type is not saturating, before associating operations.
10671         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
10672         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
10673         (fold_negate_const): Support FIXED_CST.
10674         (fold_relational_const): Support FIXED_CST.
10675         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
10676         (gimplify_expr): Handle FIXED_CST.
10677         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
10678         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
10679         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
10680         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
10681         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10682         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10683         LONG_LONG_ACCUM_TYPE_SIZE.
10684         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
10685         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
10686         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
10687         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
10688         MODE_ACCUM, and MODE_UACCUM.
10689         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
10690         fixed-point types to disable reduction.
10691         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
10692
10693 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
10694
10695         * config/rs6000/x-rs6000: New file.
10696         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
10697         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
10698         (EXTRA_SPEC_FUNCTIONS): Define.
10699         (HAVE_LOCAL_CPU_DETECT): Define.
10700         (CC1_CPU_SPEC): Define.
10701         * config/rs6000/driver-rs6000.c: New file.
10702         * config/rs6000/aix.h (CC1_SPEC): Define.
10703         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
10704         * config.host: Add x-rs6000 to host_xmake_file if host and target
10705         are rs6000 or powerpc.
10706
10707 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
10708
10709         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
10710
10711 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10712             Sandra Loosemore  <sandra@codesourcery.com>
10713             Chao-ying Fu  <fu@mips.com>
10714             Nigel Stephens  <nigel@mips.com>
10715             David Ung  <davidu@mips.com>
10716
10717         * doc/invoke.texi (-mcode-readable): Document.
10718         * config/mips/mips.opt (mcode-readable): New option.
10719         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
10720         * config/mips/mips.h (mips_code_readable_setting): New enum.
10721         (mips_code_readable): Declare.
10722         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
10723         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
10724         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
10725         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
10726         boiler-plate comments.
10727         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10728         * config/mips/mips.c (mips_code_readable): New variable.
10729         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
10730         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
10731         context and -mcode-readable setting to restrict the use of
10732         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
10733         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
10734         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
10735         (mips_blocks_for_constant_p): Only return false for
10736         TARGET_MIPS16_PCREL_LOADS.
10737         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
10738         for MIPS16.  Handle SYMBOL_32_HIGH.
10739         (mips_const_insns): Allow HIGHs for MIPS16 too.
10740         (mips_unspec_address_offset): New function, split out from...
10741         (mips_unspec_address): ...here.
10742         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
10743         16-bit symbolic constants.  Assert approropiate conditions for
10744         using the "la" and "dla" macros.
10745         (mips_handle_option): Handle -mcode-readable=.
10746         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
10747         Set up mips_lo_relocs[SYMBOL_32_HIGH].
10748         (mips_strip_unspec_address): New function, split out from...
10749         (print_operand_reloc): ...here.
10750         (print_operand): Pass constants through mips_strip_unspec_address.
10751         (print_operand_address): Likewise.
10752         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
10753         (mips_select_rtx_section): Remove MIPS16 handling.
10754         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
10755         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
10756         (mips16_lay_out_constants): Do nothing unless
10757         TARGET_MIPS16_PCREL_LOADS.
10758         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
10759         * config/mips/mips.md: Split HIGHs for MIPS16.
10760         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10761
10762 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10763
10764         * config/mips/mips-protos.h (mips_emit_move): Declare.
10765         * config/mips/mips.c (mips_emit_move): New function.
10766         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
10767         (mips_legitimize_const_move): Likewise.
10768         (mips_legitimize_move): Likewise.
10769         (mips_split_64bit_move): Likewise.
10770         (mips_restore_gp): Likewise.
10771         (mips_load_call_address): Likewise.
10772         (mips_emit_fcc_reload): Likewise.
10773         (mips_set_return_address): Likewise.
10774         (mips_block_move_straight): Likewise.
10775         (mips_block_move_loop): Likewise.
10776         (mips_setup_incoming_varargs): Likewise.
10777         (mips_save_reg): Likewise.
10778         (mips_expand_prologue): Likewise.
10779         (mips_restore_reg): Likewise.
10780         (mips_expand_epilogue): Likewise.
10781         (mips_output_mi_thunk): Likewise.
10782         (build_mips16_call_stub): Likewise.
10783         (mips_builtin_branch_and_move): Likewise.
10784         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
10785         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
10786         (fixuns_truncdfdi2): Likewise.
10787         (fixuns_truncsfsi2): Likewise.
10788         (fixuns_truncsfdi2): Likewise.
10789         (loadgp_absolute): Likewise.
10790         (builtin_setjmp_setup): Likewise.
10791         (builtin_longjmp): Likewise.
10792         (untyped_call): Likewise.
10793
10794 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10795
10796         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
10797         an "rtx *" argument.  Return a bool.
10798         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
10799         values and return true if they can be split.  Take the same kind of
10800         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
10801         and store the lo_sum there if nonnull.  Use the symbol type to
10802         determine whether a $gp or HIGH is needed.
10803         (mips_legitimize_address): Update call to mips_split_symbol and
10804         simplify accordingly.
10805         (mips_legitimize_const_move): Likewise.
10806         * config/mips/mips.md: In the combine define_split,
10807         check mips_split_symbol instead of splittable_symbolic_operand.
10808         Update use of mips_split_symbol in the generator code.
10809         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
10810
10811 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10812
10813         * config/mips/mips.c (mips_symbolic_address_p): Delete.
10814         (mips_symbol_insns_1): New function, split out from...
10815         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
10816         and stores separately from load addresses.
10817         (mips_classify_address): Replace uses of mips_symbolic_address_p
10818         with uses of mips_symbol_insns.
10819         (mips_address_insns): Update calls to mips_symbol_insns.
10820         (mips_const_insns): Likewise.
10821         (mips_legitimize_address): Likewise.
10822
10823 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10824
10825         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
10826         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
10827         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
10828         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
10829         non-call contexts if TARGET_MIPS16.
10830         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
10831         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
10832         code for SYMBOL_ABSOLUTE.
10833         (mips_symbol_insns): Likewise.
10834
10835 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10836
10837         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
10838         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
10839         (mips_symbolic_constant_p): Likewise.  Update the call to
10840         mips_classify_symbol.
10841         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
10842         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
10843         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
10844         (print_operand_reloc): Add a context argument.  Update the call to
10845         mips_symbolic_constant_p.
10846         (print_operand): Update the calls to print_operand_reloc.
10847         (print_operand_address): Use print_operand_reloc rather than
10848         print_operand.
10849         (mips_rewrite_small_data_p): Add a context argument.  Update the call
10850         to mips_symbolic_constant_p.
10851         (mips_small_data_pattern_1): Make DATA the containing mem.
10852         Update the call to mips_rewrite_small_data_p.
10853         (mips_rewrite_small_data_1): Likewise.
10854         (mips_use_anchors_for_symbol_p): Update the call to
10855         mips_symbolic_constant_p.
10856         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10857         (splittable_symbolic_operand): Likewise.
10858         (move_operand): Likewise.
10859         (absolute_symbolic_operand): Likewise.
10860         (got_disp_operand): Likewise.
10861         (got_page_ofst_operand): Likewise.
10862
10863 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10864
10865         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
10866         (SYMBOL_ABSOLUTE): ...this.
10867         (SYMBOL_SMALL_DATA): Rename to...
10868         (SYMBOL_GP_RELATIVE): ...this.
10869         (SYMBOL_CONSTANT_POOL): Rename to...
10870         (SYMBOL_PC_RELATIVE): ...this.
10871         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
10872         (mips_symbolic_address_p, mips_symbol_insns, override_options)
10873         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
10874         after above changes.
10875         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10876         (general_symbolic_operand): Rename to...
10877         (absolute_symbolic_operand): ...this.
10878         * config/mips/mips.md: Update after above changes.
10879
10880 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
10881             Revital Eres  <eres@il.ibm.com>
10882
10883         * ddg.c (print_ddg): Add dump information.
10884         * modulo-sched.c (print_node_sched_params): Add parameter and
10885         verbosity.
10886         (calculate_maxii): Remove function.
10887         (undo_generate_reg_moves): Likewise.
10888         (undo_permute_partial_schedule): Likewise.
10889         (kernel_number_of_cycles): Likewise.
10890         (MAXII_FACTOR): New definition to calculate the upper bound of II.
10891         (sms_schedule): Use it.  Remove profitability checks.
10892         (sms_schedule_by_order): Fix order of nodes within the cycle.
10893
10894 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10895
10896         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
10897         -profile option, add pie support.
10898         (ENDFILE_SPEC): New spec.
10899         * config/gnu.h (LIB_SPEC): Add -profile option.
10900
10901 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10902
10903         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
10904         * config/gnu.h (LIB_SPEC): Likewise.
10905
10906 2007-08-07  Yaz Saito  <saito@google.com>
10907             Ian Lance Taylor  <iant@google.com>
10908
10909         * common.opt (finstrument-functions-exclude-function-list): New
10910         option.
10911         (finstrument-functions-exclude-file-list): New option.
10912         * opts.c (char_p): Define and DEF_VEC.
10913         (flag_instrument_functions_exclude_functions): New static
10914         variable.
10915         (flag_instrument_functions_exclude_files): New static variable.
10916         (add_instrument_functions_exclude_list): New static function.
10917         (flag_instrument_functions_exclude_p): New function.
10918         (common_handle_option): Handle new options.
10919         * flags.h (flag_instrument_functions_exclude_p): Declare.
10920         * gimplify.c (gimplify_function_tree): Call
10921         flag_instrument_functions_exclude_p.
10922         * doc/invoke.texi (Option Summary): Mention new options.
10923         (Code Gen Options): Document new options.
10924
10925 2007-08-07  Ian Lance Taylor  <iant@google.com>
10926
10927         PR rtl-optimization/32776
10928         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
10929         (resolve_use): Likewise.
10930         (decompose_multiword_subregs): Remove "changed" local variable.
10931
10932 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
10933
10934         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
10935         * configure: Regenerate.
10936         * config.in: Regenerate.
10937         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
10938         spec string.
10939
10940 2007-08-07  Ian Lance Taylor  <iant@google.com>
10941
10942         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
10943         note, just delete the insn.
10944
10945 2007-08-07  Andreas Schwab  <schwab@suse.de>
10946
10947         PR bootstrap/32973
10948         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
10949         struct definition.
10950
10951 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10952
10953         * lower-subreg.c (resolve_subreg_use): Remove assertion.
10954         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
10955         (decompose_multiword_subregs): Use the functions above to decompose
10956         multiword shifts and zero-extends.
10957
10958 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10959
10960         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
10961         "assemble" descriptions which were swapped.
10962
10963 2007-08-06  Chao-ying Fu  <fu@mips.com>
10964
10965         * fixed-value.h: New file.
10966         * fixed-value.c: New file.
10967         * Makefile.in (OBJS-common): Add fixed-value.o.
10968         (fixed-value.o): New rule.
10969         (GTFILES): Add fixed-value.h.
10970         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
10971         to compare a.low and b.low.
10972         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
10973
10974 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10975             Daniel Jacobowitz  <dan@codesourcery.com>
10976
10977         PR target/31868
10978         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
10979         tmake_file.
10980         (x86_64-*-netbsd*): Likewise.
10981         (x86_64-*-linux*): Likewise.
10982         (x86_64-*-kfreebsd*-gnu): Likewise.
10983         (x86_64-*-knetbsd*-gnu): Likewise.
10984         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
10985
10986         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
10987
10988         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
10989         Add -fno-asynchronous-unwind-tables.
10990
10991         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
10992         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
10993         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
10994         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
10995         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
10996
10997 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10998
10999         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
11000         (TARGET_C_MODE_FOR_SUFFIX): New.
11001
11002 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11003
11004         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
11005
11006 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11007
11008         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
11009
11010 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11011
11012         * config/i386/i386.md: Check TARGET_ macros and optimize_size
11013         before checking function returns in conditional expressions.
11014
11015 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
11016
11017         PR pch/13676
11018         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
11019
11020 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11021
11022         PR middle-end/32988
11023         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
11024         for INTEGRAL_TYPE_P.
11025
11026 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
11027
11028         * configure.ac: Remove --enable-checking=df from default settings.
11029         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
11030         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
11031         if the parameter is true.
11032         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
11033         DF_VERIFY_SCHEDULED flag is true.
11034         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
11035         (df_finish_pass): Adjust prototype.
11036         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
11037         true.
11038
11039         * see.c (pass_see): Add TODO_df_verify.
11040         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
11041         * global.c (rest_of_handle_global_alloc): Schedule verification
11042         after the pass.
11043         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
11044         before the pass.
11045         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
11046         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
11047         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
11048
11049         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
11050         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
11051         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
11052
11053 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
11054             Revital Eres <eres@il.ibm.com>
11055
11056         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
11057         flag.
11058         * ddg.c (create_ddg_dependence): Rename to...
11059         (create_ddg_dep_from_intra_loop_link): This.  Do not check
11060         for interloop edges.  Do not create anti dependence edge when
11061         a true dependence edge exists in the opposite direction and
11062         -fmodulo-sched-allow-regmoves is set.
11063         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
11064         (add_cross_iteration_register_deps): Create anti dependence edge
11065         when -fno-modulo-sched-allow-regmoves is set.
11066         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
11067
11068 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
11069
11070         * config/arm/arm.md (movsi): Add braces.
11071
11072 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11073
11074         PR middle-end/32780
11075         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
11076         operands for the folding of "A - (A & B)" into "~B & A"; cast them
11077         to type.
11078
11079 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
11080
11081         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
11082         state accessor functions.
11083         * cfgloopmanip.c (remove_path, create_preheaders,
11084         force_single_succ_latches, fix_loop_structure): Ditto.
11085         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11086         tree_duplicate_loop_to_header_edge): Ditto.
11087         * cfgloopanal.c (mark_irreducible_loops): Ditto.
11088         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
11089         Ditto.
11090         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
11091         cleanup_tree_cfg): Ditto.
11092         * tree-cfg.c (tree_merge_blocks): Ditto.
11093         * cfgloop.c (rescan_loop_exit, record_loop_exits,
11094         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
11095         loop_preheader_edge, single_exit): Ditto.
11096         (flow_loops_find): Do not clear loops->state.
11097         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
11098         loops_state_clear): New functions.
11099
11100 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11101
11102         PR middle-end/32399
11103         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
11104         when adding to the base and convert ELT to sizetype instead of type.
11105
11106 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11107
11108         PR middle-end/32304
11109         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
11110         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
11111
11112 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11113
11114         PR middle-end/32935
11115         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
11116          correct type the negate expression.
11117
11118 2007-08-03  Jan Hubicka  <jh@suse.cz>
11119
11120         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
11121         stack boundary.
11122
11123 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
11124
11125         * config/rs6000/rs6000.c (struct processor_cost): Change
11126         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
11127         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
11128         information.
11129         (rios1_costs, rios2_cost): Correct cache line size.
11130         (rs6000_override_options): Set l2-cache-size parameter.
11131
11132 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11133             Diego Novillo  <dnovillo@google.com>
11134
11135         PR 31521
11136         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
11137         if the range includes 0.
11138
11139 2007-08-03  Ben Elliston  <bje@au.ibm.com>
11140
11141         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
11142         mode to unspec expressions to silence a warning from the generator
11143         programs.
11144         
11145 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
11146
11147         * config/ia64/constraints.md ("U"): Make constraint vector only.
11148
11149 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11150
11151         PR middle-end/25446
11152         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
11153         always_inline attribute on the function decl.
11154
11155 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11156
11157         PR middle-end/25445
11158         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
11159         if we are compiling with -fPIC.
11160
11161 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
11162             Nigel Stephens  <nigel@mips.com>
11163
11164         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
11165         Define for MIPS32 and MIPS64.
11166
11167 2007-08-02  Nick Clifton  <nickc@redhat.com>
11168
11169         * config/host-hpux.c: Change copyright header to refer to version
11170         3 of the GNU General Public License and to point readers at the
11171         COPYING3 file and the FSF's license web page.
11172         * config/alpha/predicates.md, config/alpha/vms-ld.c,
11173         config/alpha/linux.h, config/alpha/alpha.opt,
11174         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
11175         config/alpha/vms-unwind.h, config/alpha/ev4.md,
11176         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
11177         config/alpha/alpha.h, config/alpha/sync.md,
11178         config/alpha/openbsd.h, config/alpha/alpha.md,
11179         config/alpha/alpha-modes.def, config/alpha/ev5.md,
11180         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
11181         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
11182         config/alpha/constraints.md, config/alpha/osf.h,
11183         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
11184         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
11185         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
11186         config/frv/frv-asm.h, config/frv/frv-protos.h,
11187         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
11188         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
11189         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
11190         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
11191         config/s390/s390.opt, config/s390/s390-modes.def,
11192         config/s390/fixdfdi.h, config/s390/constraints.md,
11193         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
11194         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
11195         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
11196         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
11197         config/m32c/prologue.md, config/m32c/m32c.abi,
11198         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
11199         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
11200         config/m32c/t-m32c, config/m32c/m32c-modes.def,
11201         config/m32c/jump.md, config/m32c/shift.md,
11202         config/m32c/m32c-protos.h, config/libgloss.h,
11203         config/spu/spu-protos.h, config/spu/predicates.md,
11204         config/spu/spu-builtins.h, config/spu/spu.c,
11205         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
11206         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
11207         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
11208         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
11209         config/sparc/hypersparc.md, config/sparc/predicates.md,
11210         config/sparc/linux.h, config/sparc/sp64-elf.h,
11211         config/sparc/supersparc.md, config/sparc/cypress.md,
11212         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
11213         config/sparc/niagara.md, config/sparc/sparc.md,
11214         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
11215         config/sparc/sparc.opt, config/sparc/sync.md,
11216         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
11217         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
11218         config/sparc/sparc.c, config/sparc/little-endian.opt,
11219         config/sparc/sysv4-only.h, config/sparc/sparc.h,
11220         config/sparc/linux64.h, config/sparc/freebsd.h,
11221         config/sparc/sol2.h, config/sparc/rtemself.h,
11222         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
11223         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
11224         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
11225         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
11226         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
11227         config/m32r/linux.h, config/m32r/constraints.md,
11228         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
11229         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
11230         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
11231         config/i386/i386.md, config/i386/netware-crt0.c,
11232         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
11233         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
11234         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
11235         config/i386/sol2.h, config/i386/constraints.md,
11236         config/i386/netware-libgcc.c, config/i386/sysv5.h,
11237         config/i386/predicates.md, config/i386/geode.md,
11238         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
11239         config/i386/freebsd64.h, config/i386/vxworksae.h,
11240         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
11241         config/i386/rtemself.h, config/i386/netbsd-elf.h,
11242         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
11243         config/i386/netware.h, config/i386/i386-modes.def,
11244         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
11245         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
11246         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
11247         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
11248         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
11249         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
11250         config/i386/xm-mingw32.h, config/i386/linux64.h,
11251         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
11252         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
11253         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
11254         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
11255         config/i386/cygwin2.c, config/i386/i386-protos.h,
11256         config/i386/sync.md, config/i386/openbsd.h,
11257         config/i386/host-mingw32.c, config/i386/i386-aout.h,
11258         config/i386/nto.h, config/i386/biarch64.h,
11259         config/i386/i386-coff.h, config/i386/freebsd.h,
11260         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
11261         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
11262         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
11263         config/darwin-protos.h, config/linux.opt, config/sol2.c,
11264         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
11265         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
11266         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
11267         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
11268         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
11269         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
11270         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
11271         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
11272         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
11273         config/sh/superh64.h, config/sh/rtemself.h,
11274         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
11275         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
11276         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
11277         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
11278         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
11279         config/avr/predicates.md, config/avr/constraints.md,
11280         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
11281         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
11282         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
11283         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
11284         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
11285         config/c4x/c4x-modes.def, config/c4x/rtems.h,
11286         config/c4x/predicates.md, config/c4x/c4x.h,
11287         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
11288         config/xtensa/predicates.md, config/xtensa/xtensa.c,
11289         config/xtensa/linux.h, config/xtensa/xtensa.h,
11290         config/xtensa/elf.h, config/xtensa/xtensa.md,
11291         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
11292         config/xtensa/xtensa-protos.h, config/dbx.h,
11293         config/stormy16/predicates.md, config/stormy16/stormy16.md,
11294         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
11295         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
11296         config/host-solaris.c, config/fr30/fr30.h,
11297         config/fr30/predicates.md, config/fr30/fr30-protos.h,
11298         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
11299         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
11300         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
11301         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
11302         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
11303         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
11304         config/host-linux.c, config/interix3.h, config/cris/cris.c,
11305         config/cris/predicates.md, config/cris/linux.h,
11306         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
11307         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
11308         config/cris/aout.opt, config/cris/cris-protos.h,
11309         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
11310         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11311         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
11312         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
11313         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
11314         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
11315         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
11316         config/chorus.h, config/mn10300/mn10300.c,
11317         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
11318         config/mn10300/mn10300.h, config/mn10300/linux.h,
11319         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
11320         config/mn10300/mn10300.md, config/ia64/predicates.md,
11321         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
11322         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
11323         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
11324         config/ia64/freebsd.h, config/ia64/ia64.md,
11325         config/ia64/ia64-modes.def, config/ia64/constraints.md,
11326         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
11327         config/gofast.h, config/rtems.h, config/sol2-10.h,
11328         config/m68k/predicates.md, config/m68k/m68k.md,
11329         config/m68k/linux.h, config/m68k/m68k-modes.def,
11330         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
11331         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
11332         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
11333         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
11334         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
11335         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
11336         config/m68k/constraints.md, config/m68k/rtemself.h,
11337         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
11338         config/m68k/uclinux.h, config/rs6000/power4.md,
11339         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
11340         config/rs6000/linux.h, config/rs6000/eabi.h,
11341         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
11342         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
11343         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
11344         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
11345         config/rs6000/windiss.h, config/rs6000/603.md,
11346         config/rs6000/aix41.h, config/rs6000/cell.md,
11347         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
11348         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
11349         config/rs6000/darwin.md, config/rs6000/darwin64.h,
11350         config/rs6000/default64.h, config/rs6000/7xx.md,
11351         config/rs6000/darwin.opt, config/rs6000/spe.md,
11352         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
11353         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
11354         config/rs6000/7450.md, config/rs6000/linux64.h,
11355         config/rs6000/constraints.md, config/rs6000/440.md,
11356         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
11357         config/rs6000/rs6000.c, config/rs6000/aix52.h,
11358         config/rs6000/rs6000.h, config/rs6000/power6.md,
11359         config/rs6000/predicates.md, config/rs6000/altivec.md,
11360         config/rs6000/aix64.opt, config/rs6000/rios1.md,
11361         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
11362         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
11363         config/rs6000/darwin7.h, config/rs6000/dfp.md,
11364         config/rs6000/linux64.opt, config/rs6000/sync.md,
11365         config/rs6000/vxworksae.h, config/rs6000/power5.md,
11366         config/rs6000/lynx.h, config/rs6000/biarch64.h,
11367         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
11368         config/rs6000/eabispe.h, config/rs6000/e500.h,
11369         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
11370         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
11371         config/rs6000/aix.h, config/rs6000/vxworks.h,
11372         config/rs6000/40x.md, config/rs6000/aix51.h,
11373         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
11374         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
11375         config/arc/arc.h, config/mcore/mcore-elf.h,
11376         config/mcore/mcore-protos.h, config/mcore/predicates.md,
11377         config/mcore/mcore.md, config/mcore/mcore.c,
11378         config/mcore/mcore.opt, config/mcore/mcore.h,
11379         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
11380         config/score/predicates.md, config/score/score-version.h,
11381         config/score/score-protos.h, config/score/misc.md,
11382         config/score/elf.h, config/score/score.c, config/score/mac.md,
11383         config/score/score7.md, config/score/score.h,
11384         config/score/score-conv.h, config/score/score-mdaux.c,
11385         config/score/score.md, config/score/score.opt,
11386         config/score/score-modes.def, config/score/score-mdaux.h,
11387         config/score/mul-div.S, config/arm/uclinux-elf.h,
11388         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
11389         config/arm/symbian.h, config/arm/linux-elf.h,
11390         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
11391         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
11392         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
11393         config/arm/strongarm-pe.h, config/arm/arm.h,
11394         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
11395         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
11396         config/arm/arm-modes.def, config/arm/linux-eabi.h,
11397         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
11398         config/arm/arm-cores.def, config/arm/arm-protos.h,
11399         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
11400         config/arm/wince-pe.h, config/arm/neon.md,
11401         config/arm/constraints.md, config/arm/neon.ml,
11402         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
11403         config/arm/arm.opt, config/arm/arm926ejs.md,
11404         config/arm/predicates.md, config/arm/iwmmxt.md,
11405         config/arm/arm_neon.h, config/arm/unknown-elf.h,
11406         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
11407         config/arm/neon-testgen.ml, config/arm/arm.md,
11408         config/arm/xscale-coff.h, config/arm/pe.c,
11409         config/arm/arm-generic.md, config/arm/pe.h,
11410         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
11411         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
11412         config/arm/strongarm-elf.h, config/arm/cirrus.md,
11413         config/arm/netbsd-elf.h, config/arm/vxworks.h,
11414         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
11415         config/pa/predicates.md, config/pa/pa64-hpux.h,
11416         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
11417         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
11418         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
11419         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
11420         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
11421         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
11422         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
11423         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
11424         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
11425         config/pa/pa64-regs.h, config/pa/pa-modes.def,
11426         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
11427         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
11428         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
11429         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
11430         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
11431         config/mips/linux64.h, config/mips/elforion.h,
11432         config/mips/constraints.md, config/mips/generic.md,
11433         config/mips/predicates.md, config/mips/4300.md,
11434         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
11435         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
11436         config/mips/5k.md, config/mips/vr4120-div.S,
11437         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
11438         config/mips/mips-protos.h, config/mips/6000.md,
11439         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
11440         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
11441         config/mips/mips-modes.def, config/mips/vr.h,
11442         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
11443         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
11444         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
11445         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
11446         config/vax/openbsd1.h, config/vax/netbsd.h,
11447         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
11448         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
11449         config/h8300/rtems.h, config/h8300/predicates.md,
11450         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
11451         config/h8300/h8300.md, config/h8300/h8300.opt,
11452         config/h8300/coff.h, config/h8300/h8300-protos.h,
11453         config/v850/v850.md, config/v850/predicates.md,
11454         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
11455         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
11456         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
11457         config/mmix/mmix.h, config/mmix/predicates.md,
11458         config/mmix/mmix-protos.h, config/mmix/mmix.md,
11459         config/mmix/mmix.c, config/mmix/mmix.opt,
11460         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
11461         config/bfin/rtems.h, config/bfin/bfin-modes.def,
11462         config/bfin/predicates.md, config/bfin/bfin-protos.h,
11463         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
11464         Likewise.
11465
11466 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
11467
11468         * emit-rtl.c (reset_used_decls): Rename to...
11469         (set_used_decls): ...this.  Set the used flag rather than clearing it.
11470         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
11471         DECL_RTLs rather than resetting them.
11472
11473 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
11474
11475         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
11476
11477 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11478
11479         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
11480         argument to find_reloads_address.
11481
11482 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
11483
11484         PR tree-optimization/32919
11485         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
11486         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
11487         (coalesce_ssa_name): Call it.
11488
11489 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11490             David Ung  <davidu@mips.com>
11491
11492         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
11493         (__mips16_unorddf2, __mips16_floatunsidf): New.
11494         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
11495         above functions.
11496         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
11497
11498 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11499
11500         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
11501         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
11502         * tree.h (OMP_SECTIONS_CONTROL): New macro.
11503         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
11504         * omp-low.c (get_ws_args_for, determine_parallel_type,
11505         expand_omp_for_generic, expand_omp_for_static_nochunk,
11506         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
11507         Work with more precise CFG.
11508         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
11509         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
11510         OMP_CONTINUE.
11511         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
11512         * gimple-low.c (lower_stmt): Ditto.
11513         * tree-inline.c (estimate_num_insns_1): Ditto.
11514         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
11515         (OMP_SECTIONS_SWITCH): New.
11516         * tree-cfgcleanup.c (cleanup_omp_return): New.
11517         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
11518         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
11519         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
11520         (tree_redirect_edge_and_branch): Handle omp constructs.
11521
11522         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
11523         with three arguments.
11524
11525 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11526
11527         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
11528         in loop closed ssa.
11529
11530 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11531
11532         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
11533         the loop structures may need fixing.
11534         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
11535         New functions.
11536         (cleanup_tree_cfg_loop): Removed.
11537         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
11538         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
11539         instead of running cleanup_tree_cfg_loop.
11540         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
11541         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
11542         (tree_predictive_commoning): Declaration changed.
11543         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
11544
11545 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11546
11547         * doc/invoke.texi (l1-cache-size): Update documentation.
11548         (l2-cache-size): Document.
11549         * params.h (L2_CACHE_SIZE): New macro.
11550         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
11551         that L1_CACHE_SIZE is in kB now.
11552         (L2_CACHE_SIZE_BYTES): New macro.
11553         (tree_ssa_prefetch_arrays): Show size in kB.
11554         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
11555         and l2_cache_size fields.
11556         * config/i386/driver-i386.c (describe_cache): Detect cache size
11557         in kB.
11558         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
11559         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
11560         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
11561         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
11562         (override_options): Set l1-cache-size and l2-cache-size to default
11563         values if not specified otherwise.
11564         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
11565         (PARAM_L2_CACHE_SIZE): New.
11566
11567 2007-08-01  Nigel Stephens  <nigel@mips.com>
11568             David Ung  <davidu@mips.com>
11569             Thiemo Seufer  <ths@mips.com>
11570             Chris Dearman  <chris@mips.com>
11571             Richard Sandiford  <richard@codesourcery.com>
11572
11573         * config.gcc (mips*-sde-elf*): New stanza.
11574         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
11575         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
11576         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
11577         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
11578         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
11579         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
11580         to tmake_file.
11581         * config/mips/sde.h: New file.
11582         * config/mips/t-libgcc-mips16: Likewise.
11583         * config/mips/t-sde: Likewise.
11584         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
11585         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
11586         _MIPS_FPSET and _MIPS_SZINT.
11587         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
11588         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
11589         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
11590         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
11591         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11592         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11593         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
11594         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
11595         _MIPS_SZPTR and _MIPS_FPSET.
11596         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
11597         architecture is specified.
11598         (MIPS_32BIT_OPTION_SPEC): New macro.
11599
11600 2007-07-31  Dan Hipschman  <dsh@google.com>
11601
11602         * gcc.c (end_going_arg): New function.
11603         (do_spec_2): Use it.
11604         (do_spec_1): Use it.
11605
11606 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11607
11608         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
11609         only if ENABLE_CHECKING is defined.
11610
11611 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
11612
11613         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
11614         df_ru_add_problem, df_ru_get_bb_info): Removed.
11615         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
11616         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
11617         df_ru_free_bb_info, df_ru_alloc,
11618         df_ru_bb_local_compute_process_def,
11619         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
11620         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
11621         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
11622         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
11623         df_ru_add_problem): Removed.
11624
11625 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11626
11627         PR target/32847
11628         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
11629         (casesi32p, casesi64p): Likewise.
11630         (casesi): Adjust for above.
11631
11632 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
11633
11634         * mode-switching.c (create_pre_exit): Don't search past calls.
11635
11636 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
11637
11638         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
11639
11640 2007-07-31  Revital Eres  <eres@il.ibm.com>
11641
11642         * ddg.c (add_deps_for_def): Rename to...
11643         (add_cross_iteration_register_deps): This.  Change implementation
11644         to use only reaching def and def-use chains to construct the
11645         inter loop dependencies.
11646         (add_deps_for_use): Remove function.
11647         (build_inter_loop_deps): Call add_cross_iteration_register_deps
11648         function to build the inter loop dependencies.
11649         * modulo-sched.c (sms_schedule): Build only
11650         reaching def and def-use chains for the propose of the ddg
11651         construction.
11652
11653 2007-07-31  Julian Brown  <julian@codesourcery.com>
11654
11655         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
11656         New define_insns. Use correct RTL.
11657         (vec_set<mode>): Write as expander.
11658
11659 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
11660
11661         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
11662         to an unallocated space.
11663
11664 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
11665
11666         * tree-data-ref.c
11667         (split_constant_offset): Enable split_constant_offset to extract
11668         constants from other statements.
11669         * tree-vect-transform.c
11670         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
11671         to a temp var. Force base_offset to be simple.
11672
11673 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
11674
11675         * df-scan.c (df_scan_verify): Remove artificial limit on
11676         the number of blocks for verification.
11677         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
11678         df_simulate_defs): Avoid unnecessary insn checking for defs.
11679
11680 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
11681
11682         * config/m68k/lb1sf68.asm (FUNC): New macro.
11683         (__mulsi3): Use it.
11684         (__udivsi3): Likewise.
11685         (__divsi3): Likewise.
11686         (__umodsi3): Likewise.
11687         (__modsi3): Likewise.
11688         (__subdf3): Likewise.
11689         (__adddf3): Likewise.
11690         (__muldf3): Likewise.
11691         (__divdf3): Likewise.
11692         (__negdf2): Likewise.
11693         (__cmpdf2): Likewise.
11694         (__subsf3): Likewise.
11695         (__addsf3): Likewise.
11696         (__mulsf3): Likewise.
11697         (__divsf3): Likewise.
11698         (__negsf2): Likewise.
11699         (__cmpsf2): Likewise.
11700         (__eqdf2): Likewise.
11701         (__nedf2): Likewise.
11702         (__gtdf2): Likewise.
11703         (__gedf2): Likewise.
11704         (__ltdf2): Likewise.
11705         (__ledf2): Likewise.
11706         (__eqsf2): Likewise.
11707         (__nesf2): Likewise.
11708         (__gtsf2): Likewise.
11709         (__gesf2): Likewise.
11710         (__ltsf2): Likewise.
11711         (__lesf2): Likewise.
11712
11713 2007-07-30  Ollie Wild  <aaw@google.com>
11714
11715         * c-ppoutput.c (print_lines_directives_only): New function.
11716         (scan_translation_unit_directives_only): New function.
11717         (preprocess_file): Add call to scan_translation_unit_directives_only.
11718         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
11719         (sanitize_cpp_opts): Add default flag_dump_macros setting for
11720         -fdirectives-only.  Add errors for -fdirectives-only conflict with
11721         -Wunused-macros and -traditional.
11722         (finish_options): Add builtin macro initialization for
11723         -fdirectives-only + -fpreprocessed.
11724         * c.opt (fdirectives-only): New.
11725         * doc/cppopts.texi (fdirectives-only): New.
11726
11727 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11728
11729         * alias.c (record_set, memory_modified_1): Constify.
11730         * bt-load.c (note_btr_set): Likewise.
11731         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
11732         * combine.c (set_nonzero_bits_and_sign_copies,
11733         expand_field_assignment, record_dead_and_set_regs_1,
11734         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
11735         likely_spilled_retval_1): Likewise.
11736         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
11737         frv_io_handle_set): Likewise.
11738         * config/mips/mips.c (mips_sim_record_set,
11739         vr4130_true_reg_dependence_p_1): Likewise.
11740         * config/mt/mt.c (insn_dependent_p_1): Likewise.
11741         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
11742         * config/sh/sh.c (flow_dependent_p_1): Likewise.
11743         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
11744         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
11745         * ddg.c (mark_mem_store): Likewise.
11746         * df-problems.c (df_urec_mark_reg_change): Likewise.
11747         * function.c (update_epilogue_consts): Likewise.
11748         * gcse.c (record_set_info, record_last_set_info,
11749         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
11750         reg_clear_last_set): Likewise.
11751         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
11752         Likewise.
11753         * jump.c (reversed_comparison_code_parts): Likewise.
11754         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
11755         reg_is_set): Likewise.
11756         * loop-iv.c (mark_altered): Likewise.
11757         * mode-switching.c (reg_becomes_live): Likewise.
11758         * optabs.c (no_conflict_move_test): Likewise.
11759         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
11760         Likewise.
11761         * postreload.c (reload_combine_note_store, move2add_note_store):
11762         Likewise.
11763         * regmove.c (flags_set_1): Likewise.
11764         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
11765         Likewise.
11766         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
11767         Likewise. 
11768         * resource.c (update_live_status): Likewise.
11769         * rtl.h (set_of, note_stores): Likewise.
11770         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
11771         note_stores, parms_set): Likewise.
11772         * sched-rgn.c (sets_likely_spilled_1): Likewise.
11773         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
11774         Likewise. 
11775         * var-tracking.c (count_stores, add_stores): Likewise.
11776
11777 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11778
11779         * alias.c (mems_in_disjoint_alias_sets_p,
11780         fixed_scalar_and_varying_struct_p, aliases_everything_p,
11781         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
11782         write_dependence_p, mems_in_disjoint_alias_sets_p,
11783         read_dependence, true_dependence, canon_true_dependence,
11784         anti_dependence, output_dependence): Constify.
11785         * combine.c (extended_count): Likewise.
11786         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
11787         * cselib.c (get_value_hash, references_value_p,
11788         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
11789         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
11790         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
11791         * function.c (contains, prologue_epilogue_contains,
11792         sibcall_epilogue_contains): Likewise. 
11793         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
11794         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
11795         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
11796         reg_or_subregno): Likewise.
11797         * recog.c (asm_noperands): Likewise.
11798         * reload1.c (function_invariant_p): Likewise.
11799         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
11800         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
11801         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
11802         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
11803         true_regnum, reg_or_subregno, condjump_in_parallel_p,
11804         extended_count, prologue_epilogue_contains,
11805         sibcall_epilogue_contains, function_invariant_p, true_dependence,
11806         canon_true_dependence, read_dependence, anti_dependence,
11807         output_dependence): Likewise.
11808         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
11809
11810 2007-07-30  Julian Brown  <julian@codesourcery.com>
11811
11812         * config/arm/neon.md (V_ext): New mode attribute.
11813         (neon_vget_lane<mode>): Replace with define_expand.
11814         (neon_vget_lane<mode>_sext_internal)
11815         (neon_vget_lane<mode>_zext_internal): New define_insns for double
11816         and quad precision vectors.
11817         (neon_vget_lanedi): Add bounds check. Remove dead comment.
11818         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
11819         have typeless 32-bit result.
11820
11821 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11822
11823         PR tree-opt/32527
11824         * tree-affine.h (aff_tree): The type of rest is sizetype for types
11825         of pointers.
11826         * tree-affine.c (aff_combination_scale): If type is a pointer type,
11827         use sizetype for rest.
11828         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
11829         (aff_combination_convert): Don't convert rest for pointer types.
11830
11831 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11832
11833         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
11834
11835         * tree-ssa-alias.c: Add alloc-pool.h.
11836         (init_alias_info): Free alias_bitmap_obstack.
11837         (delete_alias_info): Call delete_mem_ref_stats.
11838         (get_mem_sym_stats_for): Use alloc_pool.
11839         (init_mem_ref_stats): Do not delete mem_ref_stats here.
11840         (delete_mem_sym_stats): Removed.
11841         
11842 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
11843
11844         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
11845         functions cannot be represented as classical distance vectors.
11846
11847 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11848
11849         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
11850         * builtins.c (validate_arg, builtin_mathfn_code,
11851         validate_arglist): Likewise.
11852         * calls.c (call_expr_flags): Likewise.
11853         * combine.c (reg_nonzero_bits_for_combine,
11854         reg_num_sign_bit_copies_for_combine, get_last_value,
11855         reg_truncated_to_mode): Likewise.
11856         * emit-rtl.c (subreg_lowpart_p): Likewise.
11857         * expr.c (highest_pow2_factor_for_target,
11858         categorize_ctor_elements_1, categorize_ctor_elements,
11859         count_type_elements, contains_packed_reference,
11860         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
11861         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
11862         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
11863         native_encode_int, native_encode_real, native_encode_complex,
11864         native_encode_vector, native_encode_expr, native_interpret_int,
11865         native_interpret_real, native_interpret_complex,
11866         native_interpret_vector, native_interpret_expr): Likewise.
11867         * function.c (use_register_for_decl): Likewise.
11868         * gimplify.c (get_name): Likewise.
11869         * langhooks-def.h (lhd_return_null_const_tree): New.
11870         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
11871         * langhooks.c (lhd_return_null_const_tree): New.
11872         * langhooks.h (lang_get_callee_fndecl): Constify.
11873         * output.h (constructor_static_from_elts_p): Likewise.
11874         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
11875         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
11876         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
11877         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
11878         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
11879         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
11880         * rtlhooks-def.h (reg_nonzero_bits_general,
11881         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
11882         Likewise. 
11883         * rtlhooks.c (reg_num_sign_bit_copies_general,
11884         reg_nonzero_bits_general, reg_truncated_to_mode_general):
11885         Likewise. 
11886         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
11887         * stor-layout.c (mode_for_size_tree): Likewise.
11888         * tree-ssa-loop-im.c (memref_eq): Likewise.
11889         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
11890         * tree.c (contains_placeholder_p, type_list_equal,
11891         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
11892         Likewise. 
11893         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
11894         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
11895         contains_placeholder_p, contains_packed_reference,
11896         get_callee_fndecl, operand_equal_for_phi_arg_p,
11897         warn_if_unused_value, is_body_block, native_encode_expr,
11898         native_interpret_expr, fold_convertible_p, operand_equal_p,
11899         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
11900         validate_arglist, simple_cst_equal, type_list_equal,
11901         use_register_for_decl, call_expr_flags, get_name,
11902         highest_pow2_factor): Likewise.
11903         (const_call_expr_arg_iterator_d,
11904         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
11905         first_const_call_expr_arg, more_const_call_expr_args_p,
11906         FOR_EACH_CONST_CALL_EXPR_ARG): New.
11907         * varasm.c (constructor_static_from_elts_p): Constify.
11908
11909 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
11910
11911         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
11912         config/arm/neon-schedgen.ml, config/arm/neon.ml,
11913         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
11914         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
11915         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
11916         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
11917         spelling conventions.
11918         * doc/invoke.texi: Follow spelling conventions.
11919
11920 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
11921             Revital Eres  <eres@il.ibm.com>
11922
11923         * modulo-sched.c (sms_schedule): Avoid loops which includes
11924         auto-increment instructions.
11925
11926 2007-07-28  Richard Guenther  <rguenther@suse.de>
11927
11928         PR middle-end/32920
11929         * fold-const.c (fold_cond_expr_with_comparison): Convert
11930         operand zero of MIN/MAX_EXPR to correct type.
11931
11932 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11933
11934         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
11935         flags_from_decl_or_type): Constify.
11936         * gcc.c (do_spec_1): Likewise.
11937         * print-tree.c (dump_addr, print_node_brief): Likewise.
11938         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
11939         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
11940         tree_purge_all_dead_eh_edges): Likewise.
11941         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
11942         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
11943         Likewise. 
11944         * tree.c (expr_location, expr_has_location, expr_locus,
11945         expr_filename, expr_lineno, get_inner_array_type,
11946         fields_compatible_p): Likewise.
11947         * tree.h (get_inner_array_type, fields_compatible_p,
11948         expr_location, expr_has_location, expr_locus, expr_filename,
11949         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
11950         setjmp_call_p, alloca_call_p): Likewise.
11951
11952 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11953
11954         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
11955         TV_FLOW_INSENSITIVE.
11956
11957         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
11958         TV_CALL_CLOBBER.
11959         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
11960         (compute_flow_insensitive_aliasing): Ditto for
11961         TV_FLOW_INSENSITIVE.    
11962
11963 2007-07-27  Jan Hubicka  <jh@suse.cz>
11964
11965         * config/i386/i386.c (register_move_cost): Remove accidentally
11966         comitted #if 0 block.
11967
11968         * attribs.c: Include hashtab.h
11969         (attribute_hash): New.
11970         (substring): New structure.
11971         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
11972         New function.
11973         (init_attributes): Initialize attribute hash.
11974         (decl_attributes): Use attribute hash.
11975         * Makefile.in (attribs.c): Depend on hashtab.h.
11976
11977 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
11978
11979         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
11980
11981 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
11982
11983         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
11984         __mips_dspr2 and __mips_dsp_rev macros.
11985         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
11986
11987 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
11988         
11989         * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
11990
11991 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
11992
11993         PR middle-end/32749
11994         
11995         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
11996         and the updating of the live and do_not_gen sets.
11997         (df_note_bb_compute): Added updating of live and do_not_gen sets
11998         for regular defs so that the case of clobber inside conditional
11999         call is processed correctly.
12000         
12001 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
12002
12003         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
12004         operands with compatible type.
12005
12006 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
12007
12008         * expr.h (store_bit_field): Don't return a value.
12009         * expmed.c (check_predicate_volatile_ok): New function.
12010         (store_bit_field_1): New function, extracted from store_bit_field.
12011         Take a fallback_p argument and return true if the operation succeeded.
12012         Only use store_fixed_bit_field if fallback_p.  Don't recompute
12013         mode_for_extraction; use op_mode instead.  Try forcing memories
12014         into registers if the insv expander fails.
12015         (store_bit_field): Use store_bit_field_1 with fallback_p true.
12016         Don't return a value.
12017         (convert_extracted_bit_field): New function, extracted from
12018         store_bit_field.
12019         (extract_bit_field_1): Likewise.  Take a fallback_p argument
12020         and return NULL if the operation succeeded.  Only use
12021         extract_fixed_bit_field if fallback_p.  Only calculate one
12022         extraction mode.  Combine code for extv and extzv.  Try forcing
12023         memories into registers if the ext(z)v expander fails.
12024         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
12025
12026 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12027
12028         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
12029         into bitfields.
12030         (df_ref): Likewise.  Put regno with other integer fields.
12031
12032 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12033
12034         * df.h (df_mw_hardreg): Remove "loc" field.
12035         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
12036         local variable.
12037         * df-problems.c (df_whole_mw_reg_unused_p): New function,
12038         split out from df_set_unused_notes_for_mw.  Return false for
12039         partial references.  Assert that mw_reg is a REG when returning true.
12040         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12041         (df_whole_mw_reg_dead_p): New function, split out from
12042         df_set_dead_notes_for_mw.  Return false for partial references.
12043         Assert that mw_reg is a REG when returning true.
12044         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12045         Remove redundant bitmap check.
12046
12047 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
12048
12049         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
12050         ($(T)crtend.o): Likwise.
12051         ($(T)crtbeginS.o): Likwise.
12052         ($(T)crtendS.o): Likwise.
12053         ($(T)crtfastmath.o): Likwise.
12054
12055 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
12056
12057         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
12058         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
12059         * basic-block.h (struct control_flow_graph): Added x_dom_computed
12060         and x_n_bbs_in_dom_tree fields.
12061
12062 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
12063
12064         PR tree-optimization/32087
12065         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
12066         Do not call scale_bbs_frequencies_int with prob of zero.
12067
12068 2007-07-26  Julian Brown  <julian@codesourcery.com>
12069
12070         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
12071         (neon_element_bits): Add prototypes.
12072         * config/arm/arm.c (bounds_check, neon_lane_bounds)
12073         (neon_const_bounds, neon_element_bits): New functions.
12074         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
12075         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
12076         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
12077         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
12078         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
12079         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
12080         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
12081         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
12082         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
12083         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
12084         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
12085         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
12086         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
12087
12088 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
12089
12090         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
12091         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
12092
12093 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
12094             Julian Brown  <julian@codesourcery.com>
12095
12096         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
12097         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
12098         * config/arm/cortex-a8.md: New.
12099         * config/arm/cortex-a8-neon.md: New.
12100         * config/arm/neon-schedgen.ml: New.
12101         * config/arm/neon.md (vqh_mnem): New.
12102         (neon_type): New.
12103         (Is_float_mode): New.
12104         (Scalar_mul_8_16): New.
12105         (Is_d_reg): New.
12106         (V_mode_nunits): New.
12107         (All instruction patterns): Annotate with neon_type attribute
12108         values.
12109         * config/arm/arm.md: Include cortex-a8.md.
12110         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
12111         values.
12112         Annotate instruction patterns accordingly.
12113         (generic_sched): Do not use generic scheduling for Cortex-A8.
12114         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
12115
12116 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
12117
12118         * fold-const.c (fold_read_from_constant_string): Use
12119         build_int_cst_type.
12120         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
12121
12122 2007-07-26  Nick Clifton  <nickc@redhat.com>
12123
12124         * tree-ssa-operands.h: Change copyright header to refer to version
12125         3 of the GNU General Public License and to point readers at the
12126         COPYING3 file and the FSF's license web page.
12127         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
12128         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
12129         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
12130         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
12131         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
12132         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
12133         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
12134         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
12135         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
12136         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
12137         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
12138         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
12139         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
12140         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
12141         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
12142         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
12143         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
12144         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
12145         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
12146         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
12147         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
12148         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
12149         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
12150         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
12151         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
12152         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
12153         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
12154         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
12155         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
12156         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
12157         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
12158         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
12159         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
12160         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
12161         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
12162         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
12163         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
12164         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
12165         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
12166         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
12167         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
12168         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
12169         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
12170         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
12171         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
12172         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
12173         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
12174         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
12175         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
12176         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
12177         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
12178         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
12179         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
12180         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
12181         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
12182         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
12183         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
12184         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
12185         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
12186         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
12187         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
12188         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
12189         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
12190         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
12191         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
12192         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
12193         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
12194         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
12195         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
12196         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
12197         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
12198         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
12199         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
12200         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
12201         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
12202         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
12203         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
12204         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
12205         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
12206         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
12207         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
12208         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
12209         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
12210         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
12211         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
12212         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
12213         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
12214         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
12215         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
12216         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
12217         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
12218         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
12219         vecprim.h, basic-block.h, tree-ssa-structalias.c,
12220         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
12221         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
12222         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
12223         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
12224         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
12225         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
12226         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
12227         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
12228         convert.c, convert.h, langhooks-def.h, reload1.c,
12229         tree-ssa-operands.c: Likewise.
12230
12231 2007-07-26  Jan Hubicka  <jh@suse.cz>
12232
12233         * tree-ssa-live.c: Include debug.h and flags.h.
12234         (mark_scope_block_unused): New function.
12235         (remove_unused_scope_block_p): New function.
12236         (remove_unused_locals): Remove unused blocks too.
12237
12238 2007-07-25  Ian Lance Taylor  <iant@google.com>
12239
12240         * combine.c (combine_max_regno): Remove.  Remove all uses.
12241         (struct reg_stat_struct): Rename from struct reg_stat.
12242         (reg_stat_type): Define, and declare VECs.
12243         (reg_stat): Change from pointer to VEC.  Change all uses.
12244         (combine_split_insns): New static function.
12245         (try_combine, find_split_point): Call it instead of split_insns.
12246
12247 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12248
12249         * cfghooks.c (split_block): Fix the information about loop latch.
12250
12251 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12252
12253         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
12254
12255 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12256
12257         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12258         Scan the new edge for loop exit info.
12259
12260 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
12261
12262         * config/darwin.c: Include debug.h.
12263
12264 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12265
12266         PR target/32218
12267         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
12268
12269 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12270
12271         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
12272         (HARD_REGNO_MODE_OK): Ditto.
12273         (MODES_TIEABLE_P): Ditto.
12274         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
12275         (CLASS_MAX_NREGS): Ditto.
12276         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
12277         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
12278         (divdf3_internal_thr): Removed.
12279         * config/ia64/div.md: New file.
12280         * config/ia64/constraints.md: Add H constraint.
12281
12282 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12283
12284         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
12285         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
12286         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
12287         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
12288         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
12289         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
12290         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
12291         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
12292         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
12293         dump_sbitmap_file, debug_sbitmap, popcount_table,
12294         sbitmap_popcount): Constify.
12295         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
12296         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
12297         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
12298         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
12299         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
12300         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
12301         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
12302         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
12303         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
12304         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
12305         sbitmap_popcount, sbitmap_verify_popcount): Constify.
12306
12307 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12308
12309         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
12310         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
12311         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
12312         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
12313         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
12314         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
12315         bitmap_intersect_p, bitmap_intersect_compl_p,
12316         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12317         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
12318         Constify.
12319         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
12320         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
12321         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
12322         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
12323         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12324         debug_bitmap, debug_bitmap_file, bitmap_print,
12325         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
12326         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
12327
12328 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
12329
12330         * config/darwin.c (darwin_override_options): Additional fix for
12331         debug info formats that don't support var tracking.
12332
12333 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12334
12335         * cselib.c (entry_and_rtx_equal_p): Constify.
12336         * gengtype.c (output_mangled_typename, write_types, write_local):
12337         Likewise.
12338         * gengtype.h (const_type_p): New.
12339         * see.c (eq_descriptor_extension, hash_descriptor_extension):
12340         Constify.
12341         * tlink.c (scan_linker_output): De-constify.
12342         * tree-ssa-loop-im.c (memref_eq): Constify.
12343         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
12344         (shared_bitmap_hash, shared_bitmap_eq): Constify.
12345
12346 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12347
12348         * c-common.c (fname_as_string, c_type_hash): Constify.
12349         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12350         * cgraph.c (edge_hash, edge_eq): Likewise.
12351         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
12352         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
12353         reg_attrs_htab_eq): Likewise.
12354         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
12355         Likewise.
12356         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
12357         const_decl_t, const_state_t, const_automata_list_el_t): New.
12358         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
12359         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
12360         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
12361         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
12362         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
12363         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
12364         compare_max_occ_cycle_nums, out_state_arcs_num,
12365         compare_transition_els_num, units_cmp, state_reservs_cmp):
12366         Constify.
12367         * genmodes.c (cmp_modes): Likewise.
12368         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
12369         * gimplify.c (compare_case_labels): Likewise.
12370         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
12371         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
12372         * matrix-reorg.c (mtt_info_hash): Likewise.
12373         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
12374         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
12375         (htab_hash_bucket, htab_hash_elem): Constify.
12376         * tree-browser.c (TB_parent_eq): Likewise.
12377         * tree-scalar-evolution.c (hash_scev_info): Likewise.
12378         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
12379         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
12380         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
12381         Constify.
12382         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
12383         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
12384         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
12385         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
12386         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
12387         New.
12388         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
12389         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
12390         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
12391         * tree-ssa-threadupdate.c (redirection_data_hash,
12392         redirection_data_eq): Likewise. 
12393         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
12394         * tree-ssa.c (var_ann_eq): Likewise.
12395         * tree-vrp.c (compare_case_labels): Likewise.
12396         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
12397         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
12398         tree_not_check_failed, tree_class_check_failed,
12399         tree_range_check_failed, tree_not_class_check_failed,
12400         omp_clause_check_failed, omp_clause_range_check_failed,
12401         tree_contains_struct_check_failed, tree_operand_check_failed):
12402         Likewise. 
12403         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
12404         tree_not_check_failed, tree_class_check_failed,
12405         tree_range_check_failed, tree_not_class_check_failed,
12406         tree_operand_check_failed, omp_clause_operand_check_failed,
12407         tree_operand_length): Likewise. 
12408         * var-tracking.c (const_variable): New.
12409         (variable_htab_hash, variable_htab_eq): Constify.
12410         * varasm.c (const_desc_hash): Likewise.
12411
12412 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12413
12414         * expr.c (handled_component_p): Constify.
12415         * fold-const.c (fit_double_type): Likewise.
12416         * real.h (real_value_from_int_cst): Likewise.
12417         * tree-flow-inline.h (gimple_in_ssa_p,
12418         gimple_aliases_computed_p, gimple_addressable_vars,
12419         gimple_call_clobbered_vars, gimple_referenced_vars,
12420         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
12421         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
12422         may_aliases, end_readonly_imm_use_p, has_zero_uses,
12423         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
12424         is_label_stmt, is_global_var, phi_ssa_name_p,
12425         factoring_name_p, is_call_clobbered, tree_common_ann,
12426         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
12427         unmodifiable_var_p, array_ref_contains_indirect_ref,
12428         ref_contains_array_ref, lookup_subvars_for_var,
12429         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
12430         gimple_mem_ref_stats): Likewise.
12431         * tree-flow.h (tree_common_ann, var_ann, function_ann,
12432         may_aliases, is_exec_stmt, is_label_stmt,
12433         ref_contains_array_ref, array_ref_contains_indirect_ref,
12434         var_can_have_subvars, overlap_subvar, is_call_clobbered,
12435         unmodifiable_var_p): Likewise.
12436         * tree-gimple.c (is_gimple_min_invariant): Likewise.
12437         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
12438         * tree.c (type_hash_list, attribute_hash_list, tree_size,
12439         cst_and_fits_in_hwi, real_value_from_int_cst,
12440         build_real_from_int_cst, integer_zerop, integer_onep,
12441         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
12442         tree_floor_log2, real_zerop, real_onep, real_twop,
12443         real_minus_onep, really_constant_p, purpose_member, chain_member,
12444         list_length, fields_length, int_size_in_bytes, bit_position,
12445         int_bit_position, byte_position, int_byte_position, expr_align,
12446         array_type_nelts, tree_node_structure,
12447         type_contains_placeholder_1, iterative_hash_pointer,
12448         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
12449         tree_map_base_eq, type_hash_list, type_hash_eq,
12450         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
12451         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
12452         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12453         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
12454         int_fits_type_p, get_containing_scope, decl_function_context,
12455         decl_type_context, omp_clause_operand_check_failed,
12456         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
12457         * tree.h (omp_clause_operand_check_failed, tree_size,
12458         build_real_from_int_cst, array_type_nelts, purpose_member,
12459         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
12460         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12461         is_attribute_p, check_qualified_type, expr_align,
12462         int_size_in_bytes, bit_position, int_bit_position, byte_position,
12463         int_byte_position, list_length, fields_length, initializer_zerop,
12464         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
12465         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
12466         tree_node_structure, handled_component_p, get_containing_scope,
12467         decl_function_context, decl_type_context, real_zerop,
12468         type_num_arguments, fit_double_type, really_constant_p,
12469         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
12470         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
12471         real_twop, real_minus_onep, int_cst_value): Likewise.
12472
12473 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12474
12475         * cfglayout.c (insn_scope, insn_line): Constify.
12476         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
12477         const_double_htab_hash, const_double_htab_eq,
12478         mem_attrs_htab_hash): Likewise.
12479         * loop-iv.c (biv_eq): Likewise.
12480         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
12481         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
12482         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
12483         Likewise. 
12484         * rtl-error.c (location_for_asm, diagnostic_for_asm,
12485         error_for_asm, warning_for_asm, _fatal_insn,
12486         _fatal_insn_not_found): Likewise. 
12487         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
12488         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
12489         rtl_check_failed_type2, rtl_check_failed_code1,
12490         rtl_check_failed_code2, rtl_check_failed_code_mode,
12491         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
12492         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
12493         rtl_check_failed_type2, rtl_check_failed_code1,
12494         rtl_check_failed_code2, rtl_check_failed_code_mode,
12495         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
12496         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
12497         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
12498         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
12499         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
12500         rtx_unstable_p, get_integer_term, get_related_value,
12501         offset_within_block_p, reg_mentioned_p, count_occurrences,
12502         reg_referenced_p, reg_used_between_p, no_labels_between_p,
12503         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
12504         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
12505         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
12506         find_constant_src, find_reg_fusage, find_regno_fusage,
12507         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
12508         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
12509         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
12510         computed_jump_p, auto_inc_p, in_expr_list_p,
12511         remove_node_from_expr_list, loc_mentioned_in_p,
12512         label_is_jump_target_p, reversed_comparison_code_parts,
12513         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
12514         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
12515         print_inline_rtx): Likewise.
12516         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
12517         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
12518         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
12519         get_integer_term, get_related_value, offset_within_block_p,
12520         count_occurrences, reg_mentioned_p, no_labels_between_p,
12521         reg_used_between_p, reg_referenced_p, single_set_2,
12522         multiple_sets, set_noop_p, refers_to_regno_p,
12523         reg_overlap_mentioned_p, dead_or_set_p,
12524         covers_regno_no_parallel_p, covers_regno_p,
12525         dead_or_set_regno_p, find_reg_note, find_regno_note,
12526         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
12527         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
12528         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
12529         side_effects_p, may_trap_p_1, may_trap_p,
12530         may_trap_after_code_motion_p, may_trap_or_fault_p,
12531         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
12532         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
12533         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
12534         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
12535         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
12536         Likewise. 
12537         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
12538         warning_for_asm): Likewise.
12539         * tree.h (print_rtl): Likewise.
12540         * varasm.c (get_pool_mode): Likewise.
12541
12542 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12543
12544         * c-lex.c (c_lex_with_flags, lex_string): Constify.
12545         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
12546         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12547         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
12548         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
12549         * ddg.c (compare_sccs): Likewise.
12550         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
12551         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
12552         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
12553         decimal_do_fix_trunc, decimal_real_to_integer,
12554         decimal_real_to_integer2, decimal_real_maxval): Likewise.
12555         * dse.c (const_group_info_t): New.
12556         (invariant_group_base_eq, invariant_group_base_hash): Constify.
12557         * dwarf2out.c (const_dw_die_ref): New.
12558         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
12559         * tree-browser.c (TB_parent_eq): Likewise.
12560         * unwind-dw2-fde.c (__register_frame_info_bases,
12561         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
12562         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
12563         Likewise.
12564         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
12565         * unwind-dw2.c (uw_frame_state_for): Likewise.
12566         * value-prof.c (histogram_hash, histogram_eq): Likewise.
12567         * value-prof.h (const_histogram_value): New.
12568
12569 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
12570
12571         * config/mips/mips.c (machine_function): Add
12572         initialized_mips16_gp_pseudo_p.
12573         (mips16_gp_pseudo_reg): Do not emit the initialization of
12574         mips16_gp_pseudo_rtx when being called from the gimple cost-
12575         calculation routines; emit it on the first use outside those
12576         routines.
12577
12578 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12579
12580         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
12581         New.
12582         
12583         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
12584         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
12585         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
12586         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
12587         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
12588         Preserve const-ness of parameters through use of __typeof(),
12589         also constify and tidy.
12590         
12591         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
12592         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
12593         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
12594         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
12595         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
12596         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
12597         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
12598         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
12599         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
12600
12601 2007-07-25  Julian Brown  <julian@codesourcery.com>
12602             Mark Shinwell  <shinwell@codesourcery.com>
12603
12604         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
12605         (alpha_mangle_type): This.
12606         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12607         (TARGET_MANGLE_TYPE): Define this instead.
12608         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
12609         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
12610         (arm_init_neon_builtins): Fix comment.
12611         (arm_mangle_map_entry): New.
12612         (arm_mangle_map): New.
12613         (arm_mangle_type): New.
12614         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
12615         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
12616         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12617         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12618         (TARGET_MANGLE_TYPE): Define this instead.
12619         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
12620         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
12621         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12622         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12623         (TARGET_MANGLE_TYPE): Define this instead.
12624         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
12625         to...
12626         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
12627         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12628         (TARGET_MANGLE_TYPE): Define this instead.
12629         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
12630         (s390_mangle_type): This.
12631         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12632         (TARGET_MANGLE_TYPE): Define this instead.
12633         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
12634         (sparc_mangle_type): This.
12635         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12636         (TARGET_MANGLE_TYPE): Define this instead.
12637         * cp/mangle.c (write_type): Call mangle_type target hook on all
12638         types before mangling.  Use original type, not main variant, as
12639         argument.
12640         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
12641         (TARGET_MANGLE_TYPE): This.
12642         * target.h (gcc_target): Rename mangle_fundamental_type to
12643         mangle_type.
12644         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
12645         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
12646
12647 2007-07-25  Julian Brown  <julian@codesourcery.com>
12648             Paul Brook  <paul@codesourcery.com>
12649             Joseph Myers  <joseph@codesourcery.com>
12650             Mark Shinwell  <shinwell@codesourcery.com>
12651
12652         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
12653         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
12654         (with_fpu): Allow --with-fpu=neon.
12655         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12656         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12657         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
12658         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
12659         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
12660         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
12661         (neon_emit_pair_result_insn, neon_disambiguate_copy)
12662         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
12663         (output_move_neon): Add prototypes.
12664         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
12665         (all_fpus): Add FPUTYPE_NEON.
12666         (fp_model_for_fpu): Add NEON field.
12667         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
12668         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
12669         in registers.
12670         (arm_legitimate_address_p): Don't support fancy addressing for NEON
12671         structure moves.
12672         (thumb2_legitimate_address_p): Likewise.
12673         (neon_valid_immediate): Recognize and prepare constants suitable for
12674         NEON instructions.
12675         (neon_immediate_valid_for_move): New function. Recognize and prepare
12676         immediates for NEON move instructions.
12677         (neon_immediate_valid_for_logic): New function. Recognize and
12678         prepare immediates for NEON logic instructions.
12679         (neon_output_logic_immediate): New function. Create asm string
12680         suitable for outputting immediate logic instructions.
12681         (neon_pairwise_reduce): New function. Implement reduction using
12682         pairwise operations.
12683         (neon_expand_vector_init): New function. Expand a (possibly
12684         non-constant) vector initialization.
12685         (neon_vector_mem_operand): New function. Memory operands supported
12686         for quad-word loads/stores to/from ARM or NEON registers. Don't
12687         allow base+offset addressing for core regs.
12688         (neon_struct_mem_operand): New function. Valid mems for NEON
12689         structure moves.
12690         (coproc_secondary_reload_class): Enable NEON registers to be loaded
12691         from neon_vector_mem_operand addresses without a secondary register.
12692         (add_minipool_forward_ref): Handle >8-byte minipool entries.
12693         (add_minipool_backward_ref): Likewise.
12694         (dump_minipool): Likewise.
12695         (push_minipool_fix): Likewise.
12696         (output_move_quad): New function. Output quad-word moves, loads and
12697         stores using ARM registers.
12698         (output_move_vfp): Add support for vectors in VFP (NEON) D
12699         registers.
12700         (output_move_neon): Output a NEON load/store to/from a quadword
12701         register.
12702         (arm_print_operand): Implement new codes:
12703         - 'c' for unadorned integers (without a # sign).
12704         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
12705         mode.
12706         - 'e', 'f' for the low and high D parts of a NEON Q register.
12707         - 'q' outputs a NEON Q register.
12708         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
12709         - 'T' prints NEON opcode features from a coded bitmask.
12710         - 'F' is similar to T, but signed/unsigned codes both print as
12711         'i'.
12712         - 't' is similar to T, but 'u' is printed instead of 'p'.
12713         - 'O' prints 'r' if NEON instruction should perform rounding (as
12714         specified by bitmask), else prints nothing.
12715         - '#' is a punctuation character to stop operand numbers from
12716         running together with following digits in the assembler
12717         strings for instructions (when using mode attributes).
12718         (arm_assemble_integer): Handle extra NEON vector modes. Permute
12719         constant vectors in big-endian mode, where necessary.
12720         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
12721         Handle EI, OI, CI, XI modes.
12722         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
12723         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
12724         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
12725         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
12726         (neon_builtin_type_bits): Add enumeration, one bit for each vector
12727         type.
12728         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
12729         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
12730         to turn v8qi, etc. into bits defined above.
12731         (neon_itype): New enumeration. Classifications of NEON builtins.
12732         (neon_builtin_datum): Define struct. Contains information about
12733         a single builtin (with multiple modes).
12734         (CF): Define helper macro for...
12735         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
12736         modes.
12737         (neon_builtin_data): New array. Define information about builtins
12738         for use during initialization/expansion.
12739         (arm_init_neon_builtins): New function.
12740         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
12741         true.
12742         (neon_builtin_compare): New function.
12743         (locate_neon_builtin_icode): New function. Find an insn code for a
12744         builtin given a function code for that builtin. Also return type of
12745         builtin (NEON_BINOP, NEON_UNOP etc.).
12746         (builtin_arg): New enumeration. Types of arguments for builtins.
12747         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
12748         Takes a variable argument list of builtin_arg types, terminated by
12749         NEON_ARG_STOP.
12750         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
12751         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
12752         (neon_emit_pair_result_insn): New function. Support returning pairs
12753         of vectors via a pointer.
12754         (neon_disambiguate_copy): New function. Set up operands for a
12755         multi-word copy such that registers do not get clobbered.
12756         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
12757         ARM_BUILTIN_NEON_BASE.
12758         (arm_file_start): Set float-abi attribute for NEON.
12759         (arm_vector_mode_supported_p): Enable NEON vector modes.
12760         (arm_mangle_map_entry): New.
12761         (arm_mangle_map): New.
12762         (arm_mangle_vector_type): New.
12763         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
12764         when appropriate.
12765         (TARGET_NEON): New macro. Target supports NEON.
12766         (fputype): Add FPUTYPE_NEON.
12767         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
12768         for vectorization based on command-line arg.
12769         (NEON_REGNO_OK_FOR_NREGS): Define.
12770         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
12771         (VALID_NEON_STRUCT_MODE): Define.
12772         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
12773         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
12774         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
12775         (consttable_16): Add pattern for outputting 16-byte minipool
12776         entries.
12777         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
12778         vec-common.md).
12779         (vec-common.md, neon.md): Include md files.
12780         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
12781         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
12782         (memory_constraint "Ut", "Un", "Us"): Define.
12783         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
12784         (MMX_char): New mode attribute.
12785         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
12786         (*add<mode>3_iwmmxt): New insn pattern.
12787         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
12788         (*sub<mode>3_iwmmxt): New insn pattern.
12789         (mulv4hi3): Rename to...
12790         (*mulv4hi3_iwmmxt): This.
12791         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
12792         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
12793         (uminv4hi3, uminv2si3): Remove. Replace with...
12794         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
12795         (*umin<mode>3_iwmmxt): These.
12796         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
12797         (ashr<mode>3_iwmmxt): This new pattern.
12798         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
12799         (lshr<mode>3_iwmmxt): This new pattern.
12800         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
12801         (ashl<mode>3_iwmmxt): This new pattern.
12802         * config/arm/neon-docgen.ml: New file. Generate documentation for
12803         intrinsics.
12804         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
12805         * config/arm/arm_neon.h: New (autogenerated).
12806         * config/arm/neon-testgen.ml: New file. Generate NEON tests
12807         automatically.
12808         * config/arm/neon.md: New file. Define NEON instructions.
12809         * config/arm/neon.ml: New file. Abstract description of NEON
12810         instructions, used to generate arm_neon.h header, documentation and
12811         tests.
12812         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
12813         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
12814         support.
12815         * doc/extend.texi (ARM Built-in Functions): Rename and remove
12816         extraneous comma.
12817         (ARM NEON Intrinsics): New subsection.
12818         * doc/arm-neon-intrinsics.texi: New (autogenerated).
12819
12820 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
12821
12822         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
12823         prototype.
12824
12825 2007-07-24  Jan Hubicka  <jh@suse.cz>
12826
12827         * regclass.c (move_table): New type.
12828         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
12829         (init_move_cost): Break out from ...
12830         (init_reg_sets_1): ... here; simplify computation of
12831         have_regs-of_mode and contains_reg_of_mode.
12832         (record_reg_classes): Unswitch internal loops.
12833         (copy_cost): Trigger lazy initialization of move cost
12834         (record_address_regs): Likewise.
12835
12836 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
12837
12838         * config/darwin.c (darwin_override_options): Don't force on
12839         flag_var_tracking_uninit when no debug info is requested.
12840
12841 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12842
12843         * cfgloop.c (init_loops_structure): New function.
12844         (flow_loops_find): Create root of the loop tree unconditionally.
12845
12846 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
12847
12848         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
12849
12850 2007-07-24  Jan Hubicka  <jh@suse.cz>
12851
12852         * caller-save.c: Include ggc.h, gt-caller-save.h
12853         (reg_save_code, reg_restore_code): Rename to ...
12854         (cached_reg_save_code, cached_reg_restore_code): ... those.
12855         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
12856         (reg_save_code, reg_restore_code): New functions.
12857         (init_caller_save): Do not intialize
12858         reg_save_code/reg_restore_code tables.
12859         * Makefile.in: (gt-caller-save.h): New.
12860
12861 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12862
12863         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
12864         with the mode of the original operand instead of
12865         integer_one_node.
12866
12867 2007-07-23  Jan Hubicka  <jH@suse.cz>
12868
12869         * i386.c (ix86_secondary_memory_needed): Break out to...
12870         (inline_secondary_memory_needed): ... here.
12871         (ix86_memory_move_cost): Break out to ...
12872         (inline_memory_move_cost): ... here; add support for IN value of 2 for
12873         maximum of input and output; fix handling of Q_REGS on 64bit.
12874         (ix86_secondary_memory_needed): Microoptimize.
12875
12876 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
12877
12878         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
12879         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
12880         stmts_from_loop, known_dependences_p, build_rdg): New.
12881         * tree-data-ref.h: Depends on graphds.h.
12882         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
12883         (build_rdg): Declared.
12884         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
12885
12886 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
12887
12888         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
12889         ccp_min_invariant.
12890
12891 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
12892             Jakub Jelinek  <jakub@redhat.com>
12893
12894         PR middle-end/PR28690
12895         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
12896         EQ compares.
12897         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
12898         and MEM_POINTER operands over REG and MEM operands.
12899         (swap_commutative_operands_p): Change return value to bool.
12900         * rtl.h: Update the corresponding prototype.
12901         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
12902         instead of gen_rtx_PLUS.
12903         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
12904         value to bool.  Change function arguments to rtx's and update code
12905         to match.
12906         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
12907         calls to match the new declaration.
12908         * simplify-rtx.c (simplify_associative_operation): Don't
12909         reorder simplify_binary_operation arguments.
12910
12911 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12912
12913         * config/mips/mips.c (override_options): Use mips_costs to derive
12914         the default branch cost.
12915         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
12916         than mips_costs.
12917         * config/mips/mips.opt (mbranch-cost=): New option.
12918         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
12919
12920 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12921
12922         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
12923         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
12924         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
12925         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
12926
12927 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12928
12929         * config/mips/constraints.md (ks): New constraint.
12930         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
12931         (*add<mode>3_mips16): ...here.
12932
12933 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
12934
12935         * optabs.h (enum optab_index): Add new OTI_signbit.
12936         (signbit_optab): Define corresponding macro.
12937         (enum insn_code signbit_optab[]): Remove array.
12938         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
12939         (expand_copysign_absneg): If back end provides signbit insn, use it
12940         instead of bit operations on floating point argument.
12941         * builtins.c (enum insn_code signbit_optab[]): Remove array.
12942         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
12943         for availability of signbit insn.
12944
12945         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
12946         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
12947         SSE mode is not active.
12948         (isinf<mode>2): Disable for mfpmath=sse,387.
12949
12950 2007-07-22  Ben Elliston  <bje@au.ibm.com>
12951
12952         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
12953         `class' parameter.
12954         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
12955
12956 2007-07-20  Richard Guenther  <rguenther@suse.de>
12957
12958         * tree-cfg.c (verify_expr): COND_EXPRs can have any
12959         integral typed condition.
12960         * tree-ssa.c (useless_type_conversion_p): Do not preserve
12961         booleanness.  Only preserve conversions from a non-base
12962         type to a base type, not in general between types with
12963         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
12964         * tree.def (COND_EXPR): Document that the condition
12965         can be of any integral type.
12966
12967 2007-07-20  Nigel Stephens  <nigel@mips.com>
12968             Richard Sandiford  <richard@codesourcery.com>
12969
12970         * config/mips/mips.h (mips_dwarf_regno): Declare.
12971         (DBX_REGISTER_NUMBER): Remove redundant brackets.
12972         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
12973         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
12974         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
12975         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12976         (REG_CLASS_NAMES): Update accordingly.
12977         * config/mips/mips.c (mips_dwarf_regno): New array.
12978         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12979         (mips_subword): Remove special handling for accumulator registers.
12980         (override_options): Initiailize mips_dwarf_regno.  Remove use
12981         of ACC_HI_REG_P.
12982         (mips_swap_registers): New function.
12983         (mips_conditional_register_usage): Swap accumulator registers
12984         around if TARGET_LITTLE_ENDIAN.
12985         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
12986         * config/mips/constraints.md (h, l): Use the endianness to choose
12987         between MD0_REG and MD1_REG.
12988         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
12989         alternative-dependent template.
12990
12991 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
12992
12993         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
12994         no_new_pseudos.
12995
12996 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
12997
12998         * function.c (thread_prologue_and_epilogue_insns): Fix exit
12999         predecessor fallthru flags.
13000
13001 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
13002
13003         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
13004         of compare to the same type.
13005         * cfgloopmanip.c (add_loop): Update information about loop exits.
13006         (loop_version): Remove the innermost loop requirement.
13007         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
13008         to sizetype for pointers.
13009
13010 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13011
13012         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
13013         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
13014         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
13015
13016         * config/dfp-bit.c: Empty for TFmode conversions.
13017
13018 2007-07-18  Caroline Tice  <ctice@apple.com>
13019         
13020         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
13021         and handle them correctly; check that src is not NULL before
13022         trying to use it.
13023         (find_src_set_src): Likewise.
13024         
13025 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
13026         
13027         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
13028         (struct alignment_context, init_alignment_context): New.
13029         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
13030         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
13031         (XCHAL_HAVE_S32C1I): Likewise.
13032         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
13033         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
13034         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
13035         (ATOMIC, HQI): New macros.
13036         (memory_barrier, *memory_barrier): New.
13037         (sync_lock_releasesi): New.
13038         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
13039         (sync_lock_test_and_set<mode>): New.
13040         (sync_<atomic><mode>): New.
13041         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
13042         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
13043         (xtensa_expand_atomic): New.
13044         
13045 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13046
13047         PR target/30652
13048
13049         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
13050         transformation for builtin ISNORMAL.
13051         (expand_builtin): Handle BUILT_IN_ISNORMAL.
13052         * builtins.def (BUILT_IN_ISNORMAL): New.
13053         * doc/extend.texi: Document isnormal.
13054
13055 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13056
13057         PR target/30652
13058
13059         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
13060         optabs infrastructure.  Provide generic implementation for
13061         FINITE/ISFINITE.
13062         (expand_builtin): Handle FINITE/ISFINITE.
13063         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
13064         (fold_builtin_1): Likewise.
13065
13066         * builtins.def (BUILT_IN_ISFINITE): New.
13067
13068         * doc/extend.texi: Document isfinite.
13069
13070 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13071
13072         PR target/30652
13073         PR middle-end/20558
13074
13075         * builtins.c (expand_builtin_interclass_mathfn): Provide a
13076         generic fallback for isinf.
13077         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
13078         calculation code ...
13079         * real.c (get_max_float): ... to here.
13080         * real.h (get_max_float): New.
13081
13082 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13083
13084         PR middle-end/32668
13085
13086         * builtin-attrs.def (ATTR_TYPEGENERIC,
13087         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
13088
13089         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
13090         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
13091         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
13092         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
13093
13094         * c-common.c (handle_type_generic_attribute): New.
13095         (c_common_attribute_table): Add "type generic".
13096
13097         * c-typeck.c (convert_arguments): Handle "type generic" functions.
13098
13099 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
13100
13101         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
13102         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
13103         properly.
13104
13105 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13106
13107         PR target/32808
13108         * config/cris/cris.c (cris_print_index): Don't use XEXP before
13109         checking that the operand is an expression.
13110
13111 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
13112             Danny Smith  <dannysmith@users.sourceforge.net>
13113
13114         PR/other 30335
13115         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
13116         file mapping object in local namespace if Windows version later
13117         than NT4
13118
13119 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13120
13121         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
13122         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
13123         arm_cannot_force_const_mem.
13124         (arm_cannot_force_const_mem): New function.
13125         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
13126         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
13127         of arm_tls_referenced_p.
13128         * config/arm/arm.md (movsi): Split out-of-section constants when
13129         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
13130         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
13131
13132 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13133
13134         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
13135
13136 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13137
13138         * config/mips/mips.md (*extendqihi2): Convert the destination
13139         to SImode.
13140
13141 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13142
13143         * config/pa/fptr.c: Update license header.
13144         * config/pa/milli64.S: Likewise.
13145
13146 2007-07-17  Nick Clifton  <nickc@redhat.com>
13147
13148         * COPYING_v3: New file.  Contains version 3 of the GNU General
13149         Public License.
13150         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
13151         Lesser General Public License.
13152         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
13153         the GNU General Public License.
13154
13155 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
13156
13157         PR rtl-optimization/32773
13158         * cfglayout.c (force_one_exit_fallthru): New function.
13159         (cfg_layout_finalize): Use it.
13160
13161 2007-07-16  Richard Guenther  <rguenther@suse.de>
13162             Uros Bizjak  <ubizjak@gmail.com>
13163
13164         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
13165         before forcing it to gimple operand.
13166
13167 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13168             David Ung  <davidu@mips.com>
13169
13170         * config/mips/mips.h (TUNE_24K): Define.
13171         (TUNE_MACC_CHAINS): Add TUNE_24K.
13172         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
13173         imadd.
13174         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
13175         (r74k_int_madd): .. this new reservation.
13176         (define_bypass): Fixed bypasses for r74k_int_madd to use
13177         mips_linked_madd_p.
13178         * config/mips/24k.md (define_bypass): Define new
13179         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
13180
13181 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13182             Nigel Stephens  <nigel@mips.com>
13183
13184         * config/mips/mips.md: Include 20kc.md.
13185         * config/mips/20kc.md: New file.
13186         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
13187         (mips_adjust_cost): Tweak for 20Kc.
13188         (mips_issue_rate): Likewise.
13189         * config/mips/mips.h (TUNE_20KC): Define.
13190
13191 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
13192
13193         * config/rs6000/rs6000.c (struct processor_cost): Add
13194         cache_line_size, l1_cache_lines, and simultaneous_prefetches
13195         fields.
13196         (*_cost): Add cache information.
13197         (rs6000_override_options): Set cache parameters.
13198
13199 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13200
13201         PR bootstrap/3456
13202         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
13203         * doc/install.texi (mips-sgi-irix6): pthread support works now.
13204
13205 2007-07-16  Paul Brook  <paul@codesourcery.com>
13206
13207         PR target/32753
13208         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
13209         (cirrus_thumb2_movsi_insn): Ditto.
13210
13211 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
13212
13213         * config/rs6000/darwin-fallback.c (interpret_libc): Change
13214         CR2_REGNO to R_CR2.
13215
13216 2007-07-15  Andrew Haley  <aph@redhat.com>
13217
13218         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
13219         before looking in the context.
13220
13221 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13222
13223         PR middle-end/32398
13224         PR middle-end/32769
13225         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
13226         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
13227         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
13228         (pa_output_function_prologue): Use rp_saved and
13229         current_function_is_leaf to generate .CALLINFO statement.
13230         (hppa_expand_prologue): Set rp_saved.
13231         (hppa_expand_epilogue): Use rp_saved.
13232         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
13233         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
13234
13235 2007-07-14  Dirk Mueller  <dmueller@suse.de>
13236
13237         * omega.c (coalesce): Fix memory leak on early exit.
13238         * matrix-reorg.c (check_allocation_function): Likewise.
13239         * tree-vect-transform.c (vect_get_new_vect_var): free result
13240         of concat().
13241         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
13242         pass pointer to edge vector
13243         (partition_hot_cold_basic_blocks): Fix memory leak.
13244         * collect2.c (prefix_from_string): Free temporary storage.
13245         * reload1.c (fixup_abnormal_edges): Free sbitmap.
13246
13247 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
13248
13249         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
13250         (DO_GLOBAL_DTORS_BODY): Likewise.
13251
13252 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
13253             Nigel Stephens  <nigel@mips.com>
13254
13255         * config/mips/mips.c (mips_classify_symbol): Don't return
13256         SYMBOL_SMALL_DATA for constant pool addresses if
13257         TARGET_EMBEDDED_DATA is true.
13258
13259 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
13260
13261         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
13262         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
13263         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
13264         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
13265         __builtin_ia32_storehps, __builtin_ia32_storelps,
13266         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
13267         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
13268         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
13269         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
13270         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
13271         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
13272         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
13273         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
13274         using def_builtin_const.
13275
13276 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
13277
13278         PR tree-optimization/32705
13279         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
13280         (simplify_binary_expression): Use SSA_VAL consistently.
13281
13282 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
13283
13284         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
13285         (SPEFSCR_REGNO): Delete definition.
13286         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
13287         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13288         * config/rs6000/rs6000.h: Do not define *_REGNO.
13289         LINK_REGISTER_REGNUM -> LR_REGNO.
13290         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13291         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
13292         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13293         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
13294         R_VRSAVE, R_VSCR. Use them.
13295         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
13296         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
13297         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
13298         * config/rs6000/aix.h: Define R_LR.  Use it.
13299         
13300 2007-07-13  Caroline Tice  <ctice@apple.com>
13301         
13302         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
13303         flag_var_tracking is explicitly turned off (i.e. when variable
13304         tracking is not feasible); otherwise, turn flag_var_tracking on when
13305         flag_var_tracking_uninit is on.
13306         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
13307         note definitions, to allow recording of initialization status in the
13308         notes.
13309         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
13310         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
13311         determine if two note locations are equal.
13312         (output_loc_list): Don't output list entries whose start & end labels
13313         are the same.
13314         (reg_loc_descriptor): Add parameter for initialization status; pass it
13315         to other loc descriptor functions.
13316         (one_reg_loc_descriptor): Add parameter for initialization status;
13317         check its value and add DW_OP_GNU_uninit to returned loc descr if
13318         appropriate.
13319         (multiple_reg_loc_descriptor): Add parameter for initialization
13320         status;
13321         pass init status argument to other loc descriptor functions; check
13322         value of intialization parameter and add DW_OP_GNU_uninit to returned
13323         loc descr if appropriate.
13324         (based_loc_descr): Add parameter for initialization status; add new
13325         variable for return value; check value of initialization parameter and
13326         add DW_OP_GNU_uninit to returned loc descr if appropriate.
13327         (concatn_mem_loc_descriptor): Add parameter for initialization status;
13328         pass init status argument to other loc descriptor functions; check
13329         value of intialization parameter and add DW_OP_GNU_uninit to returned
13330         loc descr if appropriate.
13331         (mem_loc_descriptor): Likewise.
13332         (concat_loc_descriptor): Likewise.
13333         (concatn_loc_descriptor): Likewise.
13334         (loc_descriptor): Add parameter for initialization status; pass it as
13335         argument to other loc descriptor function calls.
13336         (loc_descriptor_from_tree_1): Add appropriate initialization status
13337         to loc descriptor function calls.
13338         (add_location_or_const_value_attribute): Get initialization status
13339         from VAR_LOCATION note; add initialization status to loc descriptor
13340         function calls.
13341         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
13342         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
13343         status is uninitialized, add "[uninint]" to output.
13344         * common.opt (fvar-tracking-uninit): New option, similar to
13345         fvar-tracking, to turn on tracking of uninitialized variables; creates
13346         a new global flag, flag_var_tracking_uninit.
13347         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
13348         (enum var_init_status): New type, for var initialization status field.
13349         * var-tracking.c (struct location_chain_def): Two new fields, init,
13350         for initialization status, and set_src for the assignment value expr.
13351         (unshare_variable): New parameter for initialization status;
13352         initialize new init and set_src fields.
13353         (var_reg_set): New parameters for initialization status and value;
13354         pass them to set_variable_part.
13355         (var_mem_set): Likewise.
13356         (get_init_value): New function.
13357         (var_reg_delete_and_set): New initialization status & value
13358         parameters; add call to get_init_value if status is unknown; pass new
13359         parameters to clobber_variable_part and var_reg_set.
13360         (var_mem_delete_and_set): Likewise.
13361         (var_reg_delete): Pass null set_src value to clobber_variable_part.
13362         (var_mem_delete): Likewise.
13363         (variable_union): Pass status to unshare_variable; initialize new init
13364         and set_src fields. If flag_var_tracking_uninit is not set, force
13365         status to initialized.
13366         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
13367         used later to get the set_src value.
13368         (find_src_status): New function.
13369         (find_src_set_src): New function.
13370         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
13371         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
13372         MO_SET, get set_src value and pass it to var_reg_delete_and_set
13373         and var_mem_delete_and_set.
13374         (dump_variable): Print out "[uninit]" if appropriate.
13375         (set_variable_part): Add new initialization and set_src parameters;
13376         pass status to unshare_variable; set node->init and node- >set_src
13377         fields and modify slot in hash table appropriately; save the init and
13378         set_src values if appropriate and assign to the new node.
13379         (clobber_variable_part): New set_src parameter; if two nodes have
13380         same variable and same location but different set_src (assignment)
13381         values, clobber old node.
13382         (delete_variable_part): Pass init status to unshare_variable.
13383         (emit_note_insn_var_location): Add initialized var; assign var's init
13384         status to new 'initialized'; pass new init status field to calls to
13385         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
13386         status to initialized.
13387         (emit_notes_in_bb): Pass initialization status to calls to
13388         var_reg_set, var_mem_set, var_reg_delete_and_set and
13389         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
13390         var_reg_delete_and_set and var_mem_delete_and_set; call
13391         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
13392         make up for change in add_stores.
13393         (vt_add_function_parameters): Add status to calls to
13394         set_variable_part.
13395         * config/darwin.c (darwin_override_options): Turn on uninitialized
13396         tracking automatically, if var_tracking is on and the system is
13397         10.5 or higher.
13398         
13399 2007-07-13  Sa Liu  <saliu@de.ibm.com>
13400
13401         * config.gcc: Add options for arch and tune on SPU.
13402         * config/spu/predicates.md: Add constant operands 0 and 1.
13403         * config/spu/spu-builtins.def: Add builtins for double precision 
13404         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
13405         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
13406         spu_testsv.
13407         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
13408         a CELLEDP target.
13409         * config/spu/spu-protos.h: Add new function prototypes. 
13410         * config/spu/spu.c (spu_override_options): Check options -march and
13411         -mtune.
13412         (spu_comp_icode): Add comparison code for DFmode and vector mode.
13413         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
13414         mode comparison.
13415         (spu_const_from_int): New.  Create a vector constant from 4 ints.
13416         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
13417         (spu_emit_vector_compare): New.  Emit vector compare.
13418         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
13419         * config/spu/spu.h: Add options -march and -mtune.  Define processor
13420         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
13421         CANONICALIZE_COMPARISON.
13422         * config/spu/spu.md: Add new insns for double precision compare
13423         and double precision vector compare.  Add vcond and smax/smin patterns
13424         to enable DFmode vector conditional expression.
13425         * config/spu/spu.opt: Add options -march and -mtune.
13426         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
13427         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
13428         both CELL and CELLEDP targets: spu_testsv.
13429         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
13430         values.
13431
13432 2007-07-13  Richard Guenther  <rguenther@suse.de>
13433
13434         PR tree-optimization/32721
13435         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
13436         TREE_THIS_VOLATILE on the folded reference.
13437         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
13438         if the array reference has TREE_THIS_VOLATILE set.
13439
13440 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
13441
13442         PR other/32188
13443         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
13444
13445 2007-07-13  Andreas Schwab  <schwab@suse.de>
13446
13447         * gengtype-lex.l: Allow declarations to be indented.
13448
13449 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13450
13451         * ginclude/tgmath.h: New.
13452         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
13453         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
13454         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
13455         * configure: Regenerate.
13456
13457 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13458
13459         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
13460         correct index when setting register save state for xd
13461         registers.
13462
13463 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13464
13465         * config/sh/sh.c (mark_use): Remove.
13466
13467 2007-07-12  Paul Brook  <paul@codesourcery.com>
13468
13469         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
13470         reg does not overlap return value.
13471
13472 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
13473
13474         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
13475         (set_expression_vuses): Ditto.
13476         (init_pre): Initialize expression_vuses.
13477
13478 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13479
13480         * config/i386/sse.md (storentdf, storentsf): New.
13481
13482 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13483
13484         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
13485         FUNCTION_DECL.
13486         * tree.c (build_decl_stat): Move code from here...
13487         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
13488         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
13489         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
13490         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
13491         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
13492         FUNCTION_BOUNDARY.
13493
13494 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13495             Devang Patel  <dpatel@apple.com>
13496
13497         PR tree-optimization/25413
13498         * targhooks.c (default_builtin_vector_alignment_reachable): New.
13499         * targhooks.h (default_builtin_vector_alignment_reachable): New.
13500         * tree.h (contains_packed_reference): New.
13501         * expr.c (contains_packed_reference): New.
13502         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
13503         (vect_enhance_data_refs_alignment): Call
13504         vector_alignment_reachable_p.
13505         * target.h (vector_alignment_reachable): New builtin.
13506         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
13507         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
13508         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
13509
13510 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13511
13512         * target.h (builtin_vectorization_cost): Add new target builtin.
13513         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
13514         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
13515         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
13516         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
13517         uninitialized variables.
13518         * tree-vect-transform.c (cost_for_stmt): New function.
13519         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
13520         using cost 1 for all scalar stmts. Be less conservative when
13521         estimating the number of prologue/epulogue iterations. Call
13522         targetm.vectorize.builtin_vectorization_cost. Return
13523         min_profitable_iters-1.
13524         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
13525         initialization cost instead of TARG_VEC_STMT_COST. Use
13526         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
13527         epilogue code. Fix epilogue cost computation.
13528         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
13529         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
13530         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
13531         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
13532         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
13533         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
13534
13535 2007-07-12  Richard Guenther  <rguenther@suse.de>
13536
13537         * gimplify.c (gimplify_conversion): Make sure that the result
13538         from maybe_fold_offset_to_reference is trivially convertible
13539         to the desired type before doing the simplification.
13540         (gimplify_expr): Likewise.
13541         * fold-const.c (fold_binary): Use the correct types for
13542         building the simplified expression.
13543
13544 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13545
13546         PR rtl-optimization/32729
13547         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
13548         that fallthru to exit.
13549
13550 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13551
13552         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
13553         (symDTPOFF2reg): Likewise.
13554
13555 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
13556
13557         PR tree-optimization/32663
13558         
13559         * tree.h (VALUE_HANDLE_VUSES): Remove.
13560         (struct tree_value_handle): Remove vuses.
13561
13562         * tree-vn.c (create_value_handle_for_expr): Don't set
13563         VALUE_HANDLE_VUSES. 
13564
13565         * tree-ssa-pre.c (expression_vuses): New.
13566         (alloc_expression_id): Set up expression_vuses.
13567         (get_expression_vuses): New.
13568         (set_expression_vuses): Ditto.
13569         (clear_expression_ids): Modify for expression_vuses.
13570         (phi_translate_1): Ditto.
13571         (phi_translate_set): Ditto.
13572         (value_dies_in_block_x): Ditto
13573         (valid_in_sets): Ditto.
13574         (add_to_sets): Ditto.
13575         (find_existing_value_expr): Ditto.
13576         (create_value_handle_for_expr): Ditto.
13577         (make_values_for_stmt): Ditto.
13578         (vuse_equiv): Remove.
13579
13580 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
13581
13582         * Makefile.in (mostlyclean): Remove object files.
13583
13584 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13585
13586         * toplev.c (no_new_pseudos): Deleted.
13587         * rtl.h (no_new_pseudos): Deleted.
13588         * tree-pass.h (pass_no_new_pseudos): Deleted. 
13589         * passes.c (pass_no_new_pseudos): Deleted.
13590         * final.c (rest_of_clean_state): Removed no_new_pseudos.
13591         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
13592         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
13593         reload_completed.
13594         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
13595         * rtlhooks.c (gen_lowpart_general): Ditto.
13596         * optabs.c (prepare_operand): Ditto.
13597         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
13598         no_new_pseudos.
13599         * modulo-sched.c (rest_of_handle_sms): Ditto.
13600         * see.c (rest_of_handle_see): Ditto.
13601         * ifcvt.c (if_convert): Ditto.
13602         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
13603         reload_completed.
13604         * init-regs.c (gate_initialize_regs): Deleted set of
13605         no_new_pseudos.
13606         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
13607         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
13608         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
13609         
13610 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13611
13612         PR target/32661
13613         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
13614         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
13615         (*vec_extractv2di_1_rex64): New insn pattern.
13616
13617 2007-07-11  David Daney  <ddaney@avtrex.com>
13618
13619         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
13620         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
13621         for SIGNAL_UNWIND_RETURN_COLUMN.
13622         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
13623         (DWARF_FRAME_REGNUM): Rewrite.
13624         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
13625
13626 2007-07-11  Nick Clifton  <nickc@redhat.com>
13627
13628         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
13629         delta and use gen_int_mode in place of GET_INT instead.
13630
13631 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13632
13633         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
13634         and letter field.
13635
13636 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
13637
13638         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
13639         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
13640         types or not.
13641         * params.h (VERIFY_CANONICAL_TYPES): Remove.
13642         (USE_CANONICAL_TYPES): New.
13643         * doc/invoke.texi (verify-canonical-types): Remove.
13644         (use-canonical-types): Add.
13645
13646 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
13647
13648         * config/spu/spu.c (spu_optimization_options): Remove setting of
13649         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
13650         (spu_override_options): Move it here.
13651
13652 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
13653
13654         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
13655         * config/mips/mips.c (mips_cpu_info_table): Mention
13656         MIPS_ISA_LEVEL_SPEC in the comment.
13657
13658 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13659
13660         PR tree-optimization/32713
13661         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
13662
13663 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
13664
13665         PR middle-end/30482
13666         * c-opts.c (c_common_post_options): Do not change flag_complex_method
13667         conditional to flag_isoc99.
13668         (c_common_init_options): Do it here, unconditionally.
13669
13670 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13671
13672         PR tree-optimization/32589
13673         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
13674         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
13675         * tree-ssa-propagate.c (valid_gimple_expression_p): New
13676         predicate, extracted from...
13677         (set_rhs): ...here.  Call it for the expression on entry.
13678         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
13679         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
13680         (simplify_binary_expression): Use valid_gimple_expression_p
13681         to validate the simplification.
13682         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
13683
13684 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
13685
13686         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
13687         DWARF2_DEBUG on 32 bit target too.
13688         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
13689
13690 2007-07-11  Nick Clifton  <nickc@redhat.com>
13691
13692         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
13693         version for 64-bit hosts.
13694
13695 2007-07-10  David Daney  <ddaney@avtrex.com>
13696
13697         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
13698         predicate.
13699         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
13700         call.
13701         * config/mips/mips.c (mips_expand_synci_loop): New function.
13702         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
13703         (UNSPEC_RDHWR): Same.
13704         (UNSPEC_SYNCI): Same.
13705         (UNSPEC_SYNC): Same.
13706         (clear_cache): New expand.
13707         (sync): New insn.
13708         (synci): Same.
13709         (rdhwr): Same.
13710         (clear_hazard): Same.
13711         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
13712         function.
13713         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
13714         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
13715
13716 2007-07-10  Ian Lance Taylor  <iant@google.com>
13717
13718         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
13719         no_new_pseudos.
13720
13721 2007-07-10  David Daney  <ddaney@avtrex.com>
13722
13723         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
13724         * builtins.c (expand_builtin___clear_cache): New function.
13725         (expand_builtin): Call expand_builtin___clear_cache for
13726         BUILT_IN_CLEAR_CACHE case.
13727         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
13728         * doc/md.texi (clear_cache): Document new instruction pattern.
13729         * testsuite/gcc.dg/builtins-64.c: New test.
13730
13731 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
13732
13733         * config/cris/cris.md ("movsi"): Fix typo in last change.
13734
13735 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
13736
13737         PR 32617
13738         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
13739         FUNCTION_DECLs.
13740         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
13741         * varasm.c (assemble_start_function): Honor DECL_ALIGN
13742         for FUNCTION_DECLs.  Don't use align_functions_log if
13743         DECL_USER_ALIGN.
13744         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
13745         even for FUNCTION_DECLs.
13746         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
13747         FUNCTION_DECLs.
13748         * tree.h (DECL_ALIGN): Update for new location of 'align'.
13749         (DECL_FUNCTION_CODE): Update for new location and name of
13750         'function_code'.
13751         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
13752         (struct tree_decl_common): Move 'align' and 'off_align' out
13753         of union, ensure they're still on a 32-bit boundary.  Remove
13754         other fields in union 'u1'.
13755         (struct tree_function_decl): Add field 'function_code' replacing
13756         'u1.f' in tree_decl_common.
13757         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
13758         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
13759         (Variable Attributes): Cross-reference 'aligned' attribute
13760         to Function Attributes.
13761         * flags.h (force_align_functions_log): Delete.
13762         * toplev.c (force_align_functions_log): Delete.
13763
13764 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
13765
13766         PR target/32708
13767         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
13768         (*vec_concatv2di_rex): New insn pattern.
13769
13770 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13771
13772         PR target/32538
13773         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
13774
13775 2007-07-10  Ian Lance Taylor  <iant@google.com>
13776
13777         Replace no_new_pseudos in backends.
13778         * rtl.h (can_create_pseudo_p): Define.
13779         * config/darwin.c (machopic_indirect_data_reference): Use
13780         can_create_pseudo_p () instead of no_new_pseudos.
13781         (machopic_indirect_data_reference): Likewise.
13782         (machopic_legitimize_pic_address): Likewise.
13783         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
13784         (alpha_emit_set_const_1): Likewise.
13785         (alpha_emit_set_const): Likewise.
13786         (alpha_emit_conditional_move): Likewise.
13787         (alpha_split_conditional_move): Likewise.
13788         * config/alpha/alpha.md (various splitters): Likewise.
13789         (movti): Likewise.
13790         * config/arm/arm.c (legitimize_pic_address): Likewise.
13791         (arm_load_pic_register): Likewise.
13792         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
13793         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
13794         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
13795         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
13796         * config/cris/cris.md (movsi): Likewise.
13797         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
13798         (symGOTOFF2reg_hilo): Likewise.
13799         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
13800         * config/h8300/h8300.md (insv, extzv): Likewise.
13801         * config/i386/i386.c (ix86_expand_move): Likewise.
13802         (ix86_expand_vector_move): Likewise.
13803         (ix86_prepare_fp_compare_args): Likewise.
13804         (ix86_expand_carry_flag_compare): Likewise.
13805         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
13806         (tls_dynamic_gnu2_combine_32): Likewise.
13807         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
13808         * config/ia64/ia64.c (ia64_expand_move): Likewise.
13809         (ia64_expand_movxf_movrf): Likewise.
13810         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
13811         (m32c_split_move): Likewise.
13812         (m32c_expand_insv): Likewise.
13813         * config/m68k/m68k.md (movsi): Likewise.
13814         * config/mips/mips.c (mips_force_temporary): Likewise.
13815         (mips_split_symbol): Likewise.
13816         (mips_move_integer): Likewise.
13817         (mips_legitimize_const_move): Likewise.
13818         * config/mn10300/mn10300.md (movsi): Likewise.
13819         * config/pa/pa.c (emit_move_sequence): Likewise.
13820         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
13821         (rs6000_got_register): Likewise.
13822         (create_TOC_reference): Likewise.
13823         (rs6000_machopic_legitimize_pic_address): Likewise.
13824         * config/rs6000/rs6000.md (add<mode>3): Likewise.
13825         (various splitters): Likewise.
13826         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
13827         (movsi_got): Likewise.
13828         * config/s390/s390.c (emit_symbolic_move): Likewise.
13829         * config/s390/s390.md (movhi, movqi): Likewise.
13830         (load_multiple, store_multiple): Likewise.
13831         * config/score/score.c (score_force_temporary): Likewise.
13832         * config/sh/sh.c (prepare_move_operands): Likewise.
13833         (prepare_cbranch_operands): Likewise.
13834         (emit_fpu_switch): Likewise.
13835         (fpscr_set_from_mem): Likewise.
13836         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
13837         (adddi3, subsi3): Likewise.
13838         (various splitters): Likewise.
13839         (divsi_inv_fp_combine): Likewise.
13840         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
13841         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
13842         (sne): Likewise.
13843         * config/sh/predicates.md (xor_operand): Likewise.
13844         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
13845         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
13846         (movdi_pic_label_ref): Likewise.
13847         * config/spu/spu.c (spu_split_immediate): Likewise.
13848         * config/alpha/alpha.md (various splitters): Remove test
13849         !no_new_pseudos || reload_completed.
13850         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
13851         no_new_pseudos.
13852         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
13853         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13854         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13855         * config/score/score.c (th_output_mi_thunk): Likewise.
13856         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
13857         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13858
13859 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13860
13861         PR rtl-optimization/32664
13862         * mode-switching.c (create_pre_exit): Skip barrier insns.
13863
13864 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13865
13866         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
13867         force_gimple_operand_bsi.
13868         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
13869         rewrite_use_compare): Ditto.
13870         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
13871         Ditto.
13872         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
13873         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
13874         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
13875         * tree-profile.c (prepare_instrumented_value,
13876         tree_gen_interval_profiler, tree_gen_pow2_profiler,
13877         tree_gen_one_value_profiler, tree_gen_ic_profiler,
13878         tree_gen_ic_func_profiler, tree_gen_average_profiler,
13879         tree_gen_ior_profiler): Ditto.
13880         * tree-ssa-reassoc.c (negate_value): Ditto.
13881         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
13882         Use force_gimple_operand_bsi.
13883         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
13884         * tree-if-conv.c (add_to_dst_predicate_list,
13885         find_phi_replacement_condition): Ditto.
13886         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
13887         Call mark_symbols_for_renaming for new statements.
13888         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
13889
13890 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13891
13892         * cfghooks.c (remove_edge): New function.
13893         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
13894         loop exit rescans.
13895         * cfghooks.h (remove_edge): Declare.
13896         * cfg.c (remove_edge): Renamed to remove_edge_raw.
13897         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
13898
13899 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
13900
13901         * optabs.h: Added declaration for signbit_optab.  
13902         * optabs.c: (init_optabs): Added initialization for signbit_optab.
13903         * genoptinit.c (optabs): Added entry for signbit insns.  
13904         * builtins.c (expand_builtin_signbit): Added code to use a signbit
13905         insn, if available.  
13906         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
13907         * config/s390/s390.md (signbit<mode>2): New expander.  
13908
13909 2007-07-09  Richard Guenther  <rguenther@suse.de>
13910
13911         PR middle-end/32698
13912         * fold-const.c (fold_plusminus_mult_expr): Move constant
13913         arguments second to allow decomposing.
13914
13915 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
13916
13917         Revert:
13918         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13919         PR debug/23551
13920         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13921         Disregard DECL_FROM_INLINE.
13922
13923 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13924
13925         PR target/27855
13926         * doc/invoke.texi: Add ftree-reassoc flag.
13927         * common.opt (ftree-reassoc): New flag.
13928         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
13929         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
13930
13931 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13932
13933         PR tree-optimization/32681
13934         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
13935         saved in second_edge->aux when first_bb is a loop header.
13936
13937 2007-07-09  Jan HUbicka  <jh@suse.cz>
13938
13939         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
13940
13941 2007-07-09  Richard Guenther  <rguenther@suse.de>
13942
13943         * c-decl.c (start_function): Do not promote return type.
13944
13945 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
13946
13947         * function.c (do_warn_unused_parameter): Do not warn if
13948         TREE_NO_WARNING is set.
13949
13950 2007-07-08  Andreas Schwab  <schwab@suse.de>
13951
13952         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
13953
13954 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
13955
13956         Revert this patch:
13957         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
13958
13959         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
13960         apply to assembly language, too.
13961         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
13962
13963 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
13964
13965         Revert (note the sccvn portions are *not* reverted)
13966         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
13967
13968         Fix PR tree-optimization/23488
13969
13970         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
13971         handles.
13972         * tree-flow-inline.h (get_value_handle): Ditto.
13973         * tree-ssa-pre.c (decl_vh_map): New.
13974         (decl_node_pool): New.
13975         (can_value_number_operation): Support DECL_P.
13976         (can_PRE_operation): Ditto.
13977         (create_expression_by_pieces): Ditto.
13978         (find_existing_value_expr): Modify to differnetiate between
13979         addressing and top level.
13980         (create_value_handle_for_expr): Handle DECL's.
13981         (poolify_tree): Ditto.
13982         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
13983         (make_values_for_stmt): Handle DECL's properly.
13984         (init_pre): Reorg to not init useless things during FRE.
13985         (fini_pre): Ditto.
13986         * tree-flow.h: Include pointer-set.h.
13987         (decl_vh_map): Declare.
13988         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
13989
13990 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
13991
13992         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
13993         the constraint description.
13994         * doc/md.texi: Update documentation of AVR constraints.
13995
13996 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
13997
13998         * auto-inc-dec.c, config/arm/arm.c,
13999         config/m32r/constraints.md, config/mips/mips.md,
14000         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
14001         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
14002         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
14003         typos.  Follow spelling conventions.
14004         * doc/invoke.texi, doc/rtl.texi: Fix typos.
14005
14006         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
14007         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
14008
14009         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
14010         realloc_vuse): Remove.
14011         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
14012         and realloc_vuse.
14013
14014 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
14015
14016         Fix PR tree-optimization/23488
14017
14018         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
14019         (try_to_simplify): Ditto.
14020         (visit_use): Ditto.
14021         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
14022         handles.
14023         * tree-flow-inline.h (get_value_handle): Ditto.
14024         * tree-ssa-pre.c (decl_vh_map): New.
14025         (decl_node_pool): New.
14026         (can_value_number_operation): Support DECL_P.
14027         (can_PRE_operation): Ditto.
14028         (create_expression_by_pieces): Ditto.
14029         (find_existing_value_expr): Modify to differnetiate between
14030         addressing and top level.
14031         (create_value_handle_for_expr): Handle DECL's.
14032         (poolify_tree): Ditto.
14033         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
14034         (make_values_for_stmt): Handle DECL's properly.
14035         (init_pre): Reorg to not init useless things during FRE.
14036         (fini_pre): Ditto.
14037         * tree-flow.h: Include pointer-set.h.
14038         (decl_vh_map): Declare.
14039         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
14040                 
14041 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
14042
14043         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
14044         apply to assembly language, too.
14045         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
14046
14047 2007-07-06  Ian Lance Taylor  <iant@google.com>
14048             Zack Weinberg  <zackw@panix.com>
14049
14050         PR middle-end/32441
14051         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
14052
14053 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14054
14055         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
14056         (prefetch): Likewise if "pref" would be used.
14057
14058 2007-07-06  Josh Conner  <jconner@apple.com>
14059
14060         PR middle-end/32602
14061         PR middle-end/32603
14062         * calls.c (store_one_arg): Handle arguments which are partially
14063         on the stack when detecting argument overlap.
14064
14065 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
14066
14067         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
14068         chosen during find_reloads.
14069
14070 2007-07-06  Richard Guenther  <rguenther@suse.de>
14071
14072         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
14073         TYPE_ARG_TYPES for verification of argument types.  Use
14074         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
14075         parameters as variable arguments.
14076
14077 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
14078
14079         * libgcc2.h (word_type): Type definition removed.
14080         (cmp_return_type, shift_count_type): Type definitions added.
14081         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14082         replaced with shift_count_type.
14083         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14084         cmp_return_type.
14085         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
14086         changed from word_type to Wtype.
14087         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14088         replaced with shift_count_type.
14089         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14090         cmp_return_type.
14091         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
14092         and libgcc_shift_count attribute added.
14093         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
14094         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
14095         (TARGET_INITIALIZER): New target hooks added.
14096         * targhooks.c (default_libgcc_cmp_return_mode,
14097         default_libgcc_shift_count_mode): Default implementations for the new
14098         target hooks added.
14099         * targhooks.h (default_libgcc_cmp_return_mode,
14100         default_libgcc_shift_count_mode): Function prototypes added.
14101         * target.h (struct gcc_target): Fields for the new target hooks added.
14102         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
14103         as library call.
14104         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
14105         library call.
14106
14107         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
14108         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
14109
14110         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
14111         s390_libgcc_shift_count_mode): Functions added.
14112         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
14113         Target hooks defined.
14114
14115 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14116
14117         * config/mips/mips.c (compute_frame_size): Restore the original
14118         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
14119         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
14120         Document why the difference is needed.
14121
14122 2007-07-06  Richard Guenther  <rguenther@suse.de>
14123
14124         * c-common.c (boolean_increment): Use correctly typed
14125         constant.
14126
14127 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14128
14129         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
14130         the topmost argument register is not also included in the save mask.
14131         (mips16e_collect_argument_save_p): Take a pointer to the argument
14132         register, rather than a pointer to the number of arguments.
14133         (mips16e_collect_argument_saves): Only include argument saves
14134         that aren't in the register mask.
14135
14136 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
14137
14138         PR rtl-optimization/32450
14139         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
14140         to ensure that instructions are not moved into the prologue when
14141         profiling is on.  Remove unused prologue_end variable.
14142         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
14143         as a scheduling barrier.
14144
14145 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
14146
14147         PR debug/23551
14148         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
14149         Disregard DECL_FROM_INLINE.
14150
14151 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
14152
14153         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
14154         IORing with a constant.
14155
14156 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
14157
14158         PR rtl-optimization/32475
14159         * df-scan.c (df_def_record_1): Add a use of the stack pointer
14160         for every definition of the stack pointer.
14161
14162 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
14163
14164         * arm.c (vfp3_const_double_index): Copy signed results of
14165         REAL_VALUE_TO_INT into unsigned vars.
14166
14167 2007-07-05  Richard Guenther  <rguenther@suse.de>
14168
14169         PR middle-end/32639
14170         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
14171         FUNCTION_TYPE.
14172         * tree-ssa.c (useless_type_conversion_p): Check canonical
14173         types early.
14174
14175 2007-07-05 Anatoly Sokolov <aesok@post.ru>
14176
14177         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
14178         zero_extendhisi2): Change to define_insn_and_split. 
14179         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
14180
14181 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
14182
14183         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
14184         pass_match_asm_constraints): New.
14185         * passes.c (init_optimization_passes): Add new pass.
14186         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
14187         * function.h (struct function): Add has_asm_statement bit.
14188         (current_function_has_asm_statement): New.
14189         * tree-pass.h (pass_match_asm_constraints): New.
14190
14191 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
14192
14193         * config/mips/mips.c (mips_file_start): Avoid declaration
14194         after code.
14195
14196 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14197
14198         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
14199
14200 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
14201
14202         * rtl.def (NOTE): Change print format string to print
14203         operand 5 as a note insn name.
14204
14205 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14206             David Ung  <davidu@mips.com>
14207
14208         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
14209         * doc/invoke.texi: (MIPS Options): Document them.
14210
14211 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14212             David Ung  <davidu@mips.com>
14213
14214         Add support for SmartMIPS ASE.
14215
14216         * optabs.c (expand_binop_directly): New, broken out from...
14217         (expand_binop): Here.  Make it try rotating in the other
14218         direction even when the second operand isn't constant.
14219         * config/mips/mips.md (*lwxs): New.
14220         * config/mips/mips.opt (msmartmips): New.
14221         * config/mips/mips.c (mips_lwxs_address_p): New.
14222         (mips_rtx_costs): Make it recognize scaled indexed addressing.
14223         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
14224         __mips_smartmips when compiling for TARGET_SMARTMIPS.
14225         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
14226         (ISA_HAS_LWXS): New.
14227         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
14228         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
14229         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
14230         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
14231         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
14232         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
14233         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
14234
14235 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14236
14237         * tree-vectorizer.c (new_loop_vec_info): Initialize
14238         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14239         * tree-vectorizer.h (_loop_vec_info): Added new filed
14240         min_profitable_iters.
14241         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
14242         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
14243         * tree-vect-analyze.c (vect_analyze_operations): Set
14244         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14245         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
14246         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
14247         Fix calculation of peel_iters_prologue. Move consideration of epilogue
14248         and prologue cost to after they are computed.
14249         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
14250         TARG_VEC_STMT_COST.
14251         (vect_model_simple_cost): Takes additional argument dt. Consider cost
14252         of creating vectors from scalars according to dt.
14253         (vect_model_store_cost): Likewise.
14254         (vectorizable_call): Use dt array instead of scalar dt. Call
14255         vect_model_simple_cost with additional argument dt.
14256         (vectorizable_assignment): Likewise.
14257         (vectorizable_operation): Likewise.
14258         (vectorizable_type_demotion): Likewise.
14259         (vectorizable_type_promotion): Likewise.
14260         (vectorizable_store): Use dt array instead of scalar dt. Call
14261         vect_model_store_cost with additional argument dt.
14262         (vect_do_peeling_for_loop_bound): Don't call
14263         vect_estimate_min_profitable_iters. Instead, lookup
14264         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
14265         "may not be profitable".
14266
14267 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14268
14269         PR testsuite/32014
14270         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
14271         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
14272         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
14273         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
14274
14275 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
14276
14277         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
14278         addressing modes cheaper.
14279
14280 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
14281
14282         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
14283         (dw_ranges_struct): Rename block_num to num.  Adjust.
14284         (dw_ranges_by_label_struct): New.
14285         (ranges_by_label, ranges_by_label_allocated,
14286         ranges_by_label_in_use): New variables.
14287         (add_ranges_num): Factored most of the code out of...
14288         (add_ranges): ... this one.  Rewrite in terms of the former.
14289         (add_ranges_by_labels): New.
14290         (output_ranges): Output by-label ranges.
14291         (dwarf2out_finish): Output range for multiple-section
14292         compile_unit.  Output standard DW_AT_low_pc in addition to
14293         unexpected DW_AT_entry_pc.
14294
14295 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
14296
14297         PR tree-optimization/32604
14298         PR tree-optimization/32606
14299
14300         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
14301         (compute_antic_safe): Removed.
14302         (ANTIC_SAFE_LOADS): Ditto.
14303         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
14304         (execute_pre): Don't call compute_antic_safe.
14305         (vuse_equiv): New function.
14306         (make_values_for_stmt): Use it
14307         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
14308         not always true.
14309
14310 2007-07-04 Anatoly Sokolov <aesok@post.ru>
14311
14312         PR target/31331
14313         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
14314         rather than a decl. 
14315         (avr_attribute_table): Make "naked" attribute apply to function types
14316         rather than to decls.
14317         (avr_handle_fntype_attribute): New function.
14318
14319 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
14320
14321         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
14322         after \.
14323
14324 2007-07-04  David Ung  <davidu@mips.com>
14325             Joseph Myers  <joseph@codesourcery.com>
14326
14327         * config/mips/mips.md (type): Add logical, signext and move.
14328         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
14329         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
14330         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
14331         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
14332         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
14333         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
14334         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
14335         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
14336         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
14337         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
14338         movv2sf_hardfloat_64bit): Use the new types.
14339         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
14340         *movdf_softfloat, *movdf_mips16): Use "multi".
14341         (extendqihi2): Replace with a define_expand.
14342         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
14343         Based on extend<SHORT:mode><GPR:mode>2 patterns.
14344         * config/mips/74k.md (r74k_int_logical): New reservation and
14345         bypasses.
14346         (r74k_int_arith): Remove "slt".
14347         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
14348         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
14349         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
14350         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
14351         reservations for "arith".
14352
14353 2007-07-04  Richard Guenther  <rguenther@suse.de>
14354
14355         * tree-ssa.c (useless_type_conversion_p): Add handling for
14356         scalar float and vector types.  Only call the types_compatible_p
14357         langhook for aggregate types as last resort.  Follow the
14358         rules.
14359
14360 2007-07-04  Richard Guenther  <rguenther@suse.de>
14361
14362         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
14363         the same as NOP_EXPR.
14364
14365 2007-07-04  Nick Clifton  <nickc@redhat.com>
14366
14367         * target.h (struct gcc_target): Add target_help field.
14368         * target-def.h (TARGET_HELP): New.
14369         (TARGET_INITIALIZER): Use TARGET_HELP.
14370         * opts.c (command_handle_option): Invoke target_help function, if
14371         defined, when the user has specified --target-help on the command
14372         line.
14373         * doc/invoke.texi: Mention that --target-help might print
14374         additional information.
14375         * doc/tm.texi: Document TARGET_HELP hook.
14376
14377         * arm.c (TARGET_HELP): Override default definition.
14378         (arm_target_help): New - display a wrapped list of cores and
14379         architectures supported.
14380
14381 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14382
14383         * config/v850/v850.c (expand_prologue): Make sure
14384         GEN_INT() argument is sign extended rather than zero extended.
14385         (expand_epilogue): Likewise.
14386         (output_move_double): Delete.
14387         * config/v850/v850-protos.h (output_move_double): Delete.
14388         * config/v850/v850.md (movdi): Delete.
14389         (*movdi_internal): Delete.
14390         (movdf): Delete.
14391         (*movdf_internal): Delete.
14392
14393 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14394
14395         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
14396         unless compiling RTP PIC.
14397
14398 2007-07-04  Richard Guenther  <rguenther@suse.de>
14399
14400         PR tree-optimization/32482
14401         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
14402         original ssa name if we didn't find a shift expression.
14403         Fix shift constant for bit zero test.
14404
14405 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14406
14407         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
14408
14409 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14410
14411         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
14412         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
14413         * config/arm/vxworks.h (ASM_SPEC): Delete.
14414         (SUBTARGET_EXTRA_ASM_SPEC): Define.
14415
14416 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14417
14418         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
14419         (DDR_REVERSED_P): New.
14420         * tree-data-ref.c (initialize_data_dependence_relation,
14421         build_classic_dist_vector): Set DDR_REVERSED_P.
14422
14423 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14424
14425         PR middle-end/32457
14426         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
14427         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14428         init_omega_for_ddr_1): Use non conservative number of iterations
14429         estimations.
14430         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
14431         (analyze_siv_subscript): Remove FIXME and reinitialization of 
14432         last_conflicts to chrec_dont_know.
14433         * testsuite/gfortran.dg/vect/pr32457.f90: New.
14434
14435 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14436
14437         * tree.c (maybe_canonicalize_argtypes): Improve description.
14438
14439 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14440
14441         * tree.c (maybe_canonicalize_argtypes): New.
14442         (build_function_type): Set canonical type.
14443         (build_method_type_directly): Ditto.
14444         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
14445         properly.
14446
14447 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14448
14449         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
14450         like PLUS_EXPR.
14451         (rewrite_use_nonlinear_expr): Likewise.
14452
14453 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
14454
14455         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
14456
14457 2007-07-04  Ben Elliston  <bje@au.ibm.com>
14458
14459         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
14460         of this file.
14461
14462         * c-objc-common.c (c_types_compatible_p): Fix indentation.
14463
14464         * doc/tm.texi (Run-time Target): Capitalise "CPU".
14465         (Exception Handling): Likewise.
14466
14467 2007-07-03  Jan Hubicka  <jh@suse.cz>
14468
14469         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
14470
14471 2007-07-03  Eric Christopher  <echristo@apple.com>
14472
14473         * doc/cppopts.texi: Add conflicting option note to -dM.
14474         * doc/invoke.texi: Add note about possible conflicts with
14475         -E for -dCHARS and note that -dM will not produce
14476         any results if there is no machine dependent reorg.
14477         
14478 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14479
14480         * tree.h (DECL_ALIGN): Back out previous change.
14481
14482 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
14483
14484         * configure.ac: Test for .dtprelword support on MIPS.
14485         * configure, config.in: Regenerate.
14486         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
14487         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14488
14489 2007-07-03  Julian Brown  <julian@codesourcery.com>
14490
14491         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
14492         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
14493         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
14494         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
14495         capability.
14496         (all_fpus): Add FPUTYPE_VFP3.
14497         (fp_model_for_fpu): Add VFPv3 field.
14498         (arm_rtx_costs_1): Give cost to VFPv3 constants.
14499         (vfp3_const_double_index): New function. Return integer index of
14500         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
14501         isn't suitable.
14502         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
14503         and argument represents a valid RTX for a VFPv3 constant.
14504         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
14505         two instructions.
14506         (vfp_emit_fstmd): Similar, for fstmd.
14507         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
14508         constants, represented as integer indices.
14509         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
14510         VFP_REGNO_OK_FOR_DOUBLE macros.
14511         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
14512         (arm_file_start): Set float-abi attribute for VFPv3, and output
14513         correct ".fpu" assembler directive.
14514         (arm_dbx_register_numbering): Add FIXME.
14515         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
14516         (fputype): Add FPUTYPE_VFP3.
14517         (FIXED_REGISTERS): Add 32 registers for D16-D31.
14518         (CALL_USED_REGISTERS): Likewise.
14519         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
14520         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
14521         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
14522         (D7_VFP_REGNUM): New.
14523         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
14524         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
14525         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
14526         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
14527         (REG_ALLOC_ORDER): Adjust for VFPv3.
14528         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
14529         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
14530         VFP_LO_REGS, VFP_HI_REGS.
14531         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
14532         (IS_VFP_CLASS): Define macro.
14533         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
14534         IS_VFP_CLASS.
14535         (REGISTER_MOVE_COST): Likewise.
14536         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
14537         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
14538         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
14539         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
14540         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
14541         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
14542         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
14543         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
14544         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
14545         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
14546         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
14547         where appropriate for single-word registers.
14548         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
14549         As above. Fix type attributes.
14550         * config/arm/constraints.md (register_contraint "t"): Define.
14551         (register_constraint "w"): Change to D0-D15, or D0-D31 for
14552         VFPv3/NEON.
14553         (register_constraint "x"): Define.
14554         (constraint "Dv"): Define.
14555
14556 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14557
14558         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
14559
14560 2007-07-03  Tom Tromey  <tromey@redhat.com>
14561
14562         * c-parser.c (objc_pq_context): Removed.
14563         (objc_need_raw_identifier): Likewise.
14564         (c_parser) <objc_pq_context>: New field.
14565         <objc_need_raw_identifier>: Likewise.
14566         (OBJC_NEED_RAW_IDENTIFIER): Removed.
14567         (c_lex_one_token): Update.
14568         (c_parser_objc_protocol_definition): Update.
14569         (c_parser_objc_method_definition): Update.
14570         (c_parser_objc_methodproto): Update.
14571         (c_parser_declspecs): Update.
14572
14573 2007-07-03  David Ung  <davidu@mips.com>
14574
14575         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
14576
14577 2007-07-03  David Ung  <davidu@mips.com>
14578             Richard Sandiford  <richard@codesourcery.com>
14579
14580         * doc/invoke.texi: Document -march=74kf3_2.
14581         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
14582         (TUNE_74K): Check for it.
14583         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
14584         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
14585         * config/mips/mips.md (cpu): Add 74kf3_2.
14586         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
14587         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
14588         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
14589         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
14590         74kf3_2 to the CPU list.
14591         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
14592         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
14593         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
14594         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
14595         (r74kf3_2_fxfer_from_c1): New insn reservations.
14596
14597 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
14598             David Ung  <davidu@mips.com>
14599
14600         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
14601         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
14602         and 74k[fx].  Document aliases for the new options.
14603         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
14604         (PROCESSOR_24KF2_1): ...this.
14605         (PROCESSOR_24KX): Rename to...
14606         (PROCESSOR_24KF1_1): ...this.
14607         (PROCESSOR_74KF): Rename to...
14608         (PROCESSOR_74KF2_1): ...this.
14609         (PROCESSOR_74KX): Rename to...
14610         (PROCESSOR_74KF1_1): ...this.
14611         (TUNE_74K): Update PROCESSOR_* names.
14612         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
14613         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
14614         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
14615         (mips_rtx_cost_data): Update processor names in comments.
14616         (mips_issue_rate): Update PROCESSOR_* names.
14617         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
14618         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
14619         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
14620         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
14621         Update cpu attribute names.
14622         (r24k_fpu_iss): Rename this reservation to...
14623         (r24kf2_1_fpu_iss): ...this and update all uses.
14624         (r24kx_fpu_iss): Rename this reservation to...
14625         (r24kf1_1_fpu_iss): ...this and update all uses.
14626         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
14627         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
14628         Update cpu attribute names.
14629
14630 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14631
14632         * config/m32r/constraints.md: New file.
14633         * config/m32r/m32r.c: Include tm-constrs.h.
14634         (small_data_operand): Use satisfies_constraint_* instead of macro.
14635         (addr24_operand, gen_compare): Likewise.
14636         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
14637         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
14638         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
14639         EXTRA_CONSTRAINT): Likewise.
14640         * config/m32r/m32r.md: Include constraints.md.
14641         (*movsi_insn): Use satisfies_constraint_* instead of macro.
14642         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
14643         * config/m32r/predicates.md (conditional_move_operand): Likewise.
14644         (two_insn_const_operand, int8_operand, uint16_operand,
14645         reg_or_int16_operand, reg_or_uint16_operand,
14646         reg_or_cmp_int16_operand, cmp_int16_operand,
14647         seth_add3_operand): Likewise.
14648
14649 2007-07-03  Eric Christopher  <echristo@gmail.com>
14650
14651         * libgcc2.h: Conditionally declare __bswapsi2 and
14652         __bswapdi2.
14653         
14654 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14655
14656         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
14657         defined.
14658
14659 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14660
14661         PR target/28307
14662         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
14663         (__gthrw_pragma): Provide default definition.
14664         (__gthrw2): Use it.
14665         * gthr-posix.c (__gthrw_pragma): Define.
14666
14667 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
14668
14669         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
14670         before declaring inequality.
14671
14672 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14673
14674         * combine.c (recog_for_combine): Log the success or failure of
14675           matching new insn patterns against the machine description in
14676           detailed dumps.
14677
14678 2007-07-03  Revital Eres  <eres@il.ibm.com>
14679
14680         * ddg.c (print_sccs): New function.
14681         (check_sccs): New function.
14682         (create_ddg_all_sccs): Use it.
14683         * ddg.h (print_sccs): Declare.
14684         * modulo-sched.c (sms_order_nodes): Call print_sccs.
14685
14686 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
14687
14688         * targhooks.h (default_mode_for_suffix): New function declaration.
14689         * targhooks.c (default_mode_for_suffix): New default target hook.
14690         * target.h (struct c): New structure in the targetm struct.
14691         (mode_for_suffix): New target hook as part of struct c.
14692         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
14693         default_mode_for_suffix.
14694         (TARGET_C): New define.
14695         * c-lex.c: Include "target.h".
14696         (interpret_float): Use targetm.c.mode_for_suffix to determine
14697         the mode for a given non-standard suffix.
14698         Makefile.in (c-lex.o): Depend on $(TARGET_H).
14699
14700         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
14701         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
14702
14703         * doc/extend.texi (Floating Types): New node.  Document __float80 and
14704         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
14705
14706 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14707
14708         PR target/32506
14709         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
14710         predicate instead of target_operand.
14711         (divsi3_i1_media, divsi3_media_2): Likewise.
14712
14713 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
14714
14715         * tree.h (alias_sets_might_conflict_p): Rename into
14716         alias_sets_must_conflict_p.
14717         * alias.c (alias_sets_might_conflict_p): Likewise.
14718         (alias_sets_conflict_p): Use it.
14719         (objects_must_conflict_p): Likewise.
14720         * c-common.c (strict_aliasing_warning): Adjust.
14721
14722 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14723
14724         * rtlhooks.c (gen_lowpart_if_possible): Check for
14725         invalid subreg before calling gen_lowpart_SUBREG.
14726
14727 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
14728
14729         * config/darwin9.h: Add copyright notice.
14730         (LINK_COMMAND_SPEC): Add comment.
14731         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
14732         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
14733         DARWIN_LIBSYSTEM_HAS_UNWIND.
14734
14735 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14736
14737         PR libgomp/32468
14738         * omp-low.c (check_combined_parallel): New function.
14739         (lower_omp_parallel): Call it via walk_stmts, set
14740         OMP_PARALLEL_COMBINED if appropriate.
14741         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
14742         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
14743         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
14744         don't consider it as combined parallel.
14745
14746 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14747
14748         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
14749         (gcc_tooldir): Likewise.
14750         * configure: Regenerate.
14751         * Makefile.in (libsubdir_to_prefix): New variable, based on the
14752         old configure.ac gcc_tooldir setting.
14753         (prefix_to_exec_prefix): New variable.
14754         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
14755         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
14756
14757 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
14758
14759         Fix PR tree-optimization/32583
14760         Fix PR tree-optimization/32584
14761         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
14762         (phi_translate_set): Use phi_translate directly now.
14763         (make_values_for_stmt): Don't value number RHS if we already know
14764         it is constant.
14765
14766 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
14767             Jim Wilson <wilson@specifix.com>
14768
14769         PR target/31684
14770         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
14771         copy_insn.
14772
14773 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
14774             Richard Sandiford  <richard@codesourcery.com>
14775             Nigel Stephens  <nigel@mips.com>
14776
14777         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
14778         (mips16e_output_save_restore): Declare.
14779         (mips16e_save_restore_pattern_p): Likewise.
14780         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
14781         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
14782         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
14783         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
14784         (BITSET_P): New global macro, extracted from...
14785         (mips_for_each_saved_reg): ...here.
14786         (mips16e_save_restore_info): New struct.
14787         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
14788         (mips16e_save_restore_regs): New variable.
14789         (mips_split_plus, mips16e_find_first_register): New functions.
14790         (mips16e_mask_registers): New function.
14791         (compute_frame_size): Expand the commentary before the function.
14792         Enforce the MIPS16e save and restore register range restrictions.
14793         Pad the general register save area at the low end.
14794         (mips16e_save_restore_reg, mips16e_build_save_restore)
14795         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
14796         (mips16e_output_save_restore, mips16e_collect_propagate_value)
14797         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
14798         New functions.
14799         (mips_expand_prologue, mips_expand_epilogue): Handle
14800         GENERATE_MIPS16E_SAVE_RESTORE.
14801         * config/mips/mips.md (*mips16e_save_restore): New pattern.
14802
14803 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
14804
14805         PR tree-optimization/31966
14806         PR tree-optimization/32533
14807         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
14808         "basic_block" description as its third argument.  Update function
14809         calls to get destination bb from "edge" argument.  Save "cond" into
14810         aux field of the edge.  Update prototype for changed arguments.
14811         (if_convertible_loop_p): Clear aux field of incoming edges if bb
14812         contains phi node.
14813         (find_phi_replacement_condition): Operate on incoming edges, not
14814         on predecessor blocks.  If there is a condition saved in the
14815         incoming edge aux field, AND it with incoming bb predicate.
14816         Return source bb of the first edge.
14817         (clean_predicate_lists): Clean aux field of outgoing node edges.
14818         (tree_if_conversion): Do not initialize cond variable. Move
14819         variable declaration into the loop.
14820         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
14821         initializations of new_stmt, arg0 and arg1 variables.
14822
14823 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14824
14825         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
14826         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
14827
14828 2007-07-02  Richard Guenther  <rguenther@suse.de>
14829
14830         * tree-ssa.c (useless_type_conversion_p): Document
14831         future intent as defining the middle-end type system.
14832         Re-structure to call langhook last, group by type class,
14833         mark questionable parts.
14834
14835 2007-07-02  Richard Guenther  <rguenther@suse.de>
14836
14837         * tree-flow.h (types_compatible_p): Declare.
14838         * tree-ssa.c (types_compatible_p): New function.
14839         * ipa-type-escape.c (discover_unique_type): Use
14840         types_compatible_p instead of lang_hooks.types_compatible_p.
14841         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
14842         * tree-vn.c (expressions_equal_p): Likewise.
14843         * tree.c (fields_compatible_p): Likewise.
14844         * tree-ssa-dom.c (avail_expr_eq): Likewise.
14845         (cprop_operand): Use useless_type_conversion_p instead of
14846         lang_hooks.types_compatible_p.
14847         * tree-inline.c (setup_one_parameter): Likewise.
14848         (declare_return_variable): Likewise.
14849         * tree-nrv.c (tree_nrv): Likewise.
14850         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14851         (maybe_fold_offset_to_component_ref): Likewise.
14852         (maybe_fold_offset_to_reference): Likewise.
14853         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14854         (merge_alias_info): Likewise.
14855         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14856         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14857         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
14858         * tree-tailcall.c (find_tail_calls): Likewise.
14859         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
14860         * gimplify.c (canonicalize_addr_expr): Likewise.
14861         (fold_indirect_ref_rhs): Likewise.
14862         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
14863         (cpt_same_type): Likewise.
14864         (check_pointer_types_r): Swap parameters to cpt_same_type
14865         where appropriate.
14866         * fold-const.c (fold_convert): Revert fix for PR15988.
14867         * tree-inline.c (setup_one_parameter): Instead fix it here by
14868         using fold_build1 instead of fold_convert and checking for
14869         error_mark_node.  Convert only if the conversion is necessary.
14870
14871 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
14872
14873         * configure.ac: Check for .gnu_attribute on Power.
14874         * configure: Regenerate.
14875         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
14876         attribute for floating-point ABI.
14877
14878 2007-07-02  Ira Rosen  <irar@il.ibm.com>
14879
14880         PR tree-optimization/32230
14881         PR tree-optimization/32477
14882         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
14883         address is a constant.
14884
14885 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14886
14887         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
14888         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
14889         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
14890         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
14891         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
14892         64-bit targets.  Add support for *-elfoabi*.
14893         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
14894         different settings if $(tm_defines) does not select the EABI.
14895         (MULTILIB_EXCLUSIONS): Define in those circumstances.
14896         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
14897         (MIPS_ARCH_OPTION_SPEC): Likewise.
14898         (MIPS_ISA_LEVEL_SPEC): Likewise.
14899         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
14900         * config/mips/elfoabi.h: New file.
14901
14902 2007-07-02  Richard Guenther  <rguenther@suse.de>
14903
14904         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
14905         (useless_type_conversion_p): ... this.
14906         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
14907         (useless_type_conversion_p): ... this.
14908         * builtins.c (fold_builtin_memory_op): Rename
14909         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
14910         * tree-cfg.c (verify_expr): Likewise.
14911         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
14912         * tree-ssa-ccp.c (ccp_fold): Likewise.
14913         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14914         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
14915         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14916         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
14917         * tree-ssa-pre.c (eliminate): Likewise.
14918         * tree-ssa.c (delete_tree_ssa): Likewise.
14919         (tree_ssa_useless_type_conversion): Likewise.
14920         * tree.c (build2_stat): Likewise.
14921
14922 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14923
14924         Fix PR tree-optimization/32571
14925         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
14926         simplifying them.
14927
14928 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14929
14930         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
14931         and other expected operations explicitly, change default to
14932         gcc_unreachable. 
14933
14934 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14935
14936         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
14937         PARALLEL.
14938         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
14939         (tls_load_dot_plus_eight): Move the label number into the unspec.
14940         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
14941
14942 2007-07-01  Andreas Schwab  <schwab@suse.de>
14943
14944         * dwarf2out.c (initial_return_save): Define only if used.
14945
14946 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
14947
14948         Unreverting Richard's Revert of:
14949
14950         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14951
14952         * dce.c (deletable_insn_p_1): New function, split out from...
14953         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14954         specially, not those inside PARALLELs.  Remove BODY argument
14955         and adjust recursive call accordingly.
14956         (prescan_insns_for_dce): Update call to delete_insn_p.
14957
14958 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
14959             Revital Eres  <eres@il.ibm.com>
14960
14961         * ddg.c (create_ddg_all_sccs): Fix missed
14962         initialization of scc_nodes.
14963
14964 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
14965
14966         PR middle-end/32559
14967         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
14968         X + ~X to 1 only for INTEGRAL_TYPE_P type.
14969
14970 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
14971
14972         * configure.ac: Check for .gnu_attribute on MIPS.
14973         * configure, config.in: Regenerate.
14974         * config/mips/mips.c (mips_file_start): If supported, output
14975         attribute for floating-point ABI.
14976
14977 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
14978
14979         PR target/32433
14980         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
14981         (ffs_cmove): New expander to expand using ctz pattern.
14982         (*ffs_cmove): Remove pattern.
14983         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
14984         (ffsdi2): Expand using ctz pattern.
14985         (*ffs_rex64): Remove pattern.
14986
14987 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14988
14989         PR rtl-optimization/32296
14990         * pa.md (return): Delete pattern.
14991         (return_internal): Remove "(const_int 1)" from pattern.
14992         (epilogue): Use return_internal pattern for trivial returns.
14993         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
14994         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
14995
14996 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
14997
14998         * tree-ssa-pre.c (is_exception_related): New function
14999         (can_value_number_operation): Use it.
15000
15001 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
15002         
15003         Fix PR tree-optimization/32540
15004         Fix PR tree-optimization/31651
15005
15006         * tree-ssa-sccvn.c: New file.
15007
15008         * tree-ssa-sccvn.h: Ditto.
15009         
15010         * tree-vn.c: Include tree-ssa-sccvn.h
15011         (val_expr_paid_d): Removed.
15012         (value_table): Ditto.
15013         (vn_compute): Ditto.
15014         (val_expr_pair_hash): Ditto.
15015         (val_expr_pair_expr_eq): Ditto.
15016         (copy_vuses_from_stmt): Ditto.
15017         (vn_delete): Ditto.
15018         (vn_init): Ditto.
15019         (shared_vuses_from_stmt): Ditto.
15020         (print_creation_to_file): Moved up.
15021         (sort_vuses): Ditto.
15022         (sort_vuses_heap): Ditto.
15023         (set_value_handle): Make non-static.
15024         (make_value_handle): Ditto.
15025         (vn_add): Rewritten to use sccvn lookups.
15026         (vn_add_with_vuses): Ditto.
15027         (vn_lookup): Ditto (and second argument removed).
15028         (vn_lookup_with_vuses): Ditto.
15029         (vn_lookup_or_add): Ditto (and second argument removed);
15030         (vn_lookup_or_add_with_vuses): Ditto.
15031         (vn_lookup_with_stmt): New.
15032         (vn_lookup_or_add_with_stmt): Ditto.
15033         (create_value_handle_for_expr): Ditto.
15034
15035         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
15036         (seen_during_translate): New function.
15037         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
15038         (phi_trans_add): Ditto.
15039         (constant_expr_p): FIELD_DECL is always constant.
15040         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
15041         Use constant_expr_p.
15042         Avoid infinite recursion on mutually valued expressions.
15043         Change callers of vn_lookup_or_add.
15044         (phi_translate): New function.
15045         (compute_antic_safe): Allow phi nodes.
15046         (create_component_ref_by_pieces): Update for FIELD_DECL change.
15047         (find_or_generate_expression): Rewrite slightly.
15048         (create_expression_by_pieces): Updated for vn_lookup_or_add
15049         change.
15050         Update VN_INFO for new names.
15051         (insert_into_preds_of_block): Update for new names.
15052         (add_to_exp_gen): New function.
15053         (add_to_sets): Use vn_lookup_or_add_with_stmt.
15054         (find_existing_value_expr): Rewrite to changed vn_lookup.
15055         (create_value_expr_from): Ditto, and use add_to_exp_gen.
15056         (try_look_through_load): Removed.
15057         (try_combine_conversion): Ditto.
15058         (get_sccvn_value): New function.
15059         (make_values_for_phi): Ditto.
15060         (make_values_for_stmt): Ditto.
15061         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
15062         SCCVN.
15063         (init_pre): Update for SCCVN changes.
15064         (fini_pre): Ditto.
15065         (execute_pre): Ditto.
15066
15067         * tree-flow.h (make_value_handle): Declare.
15068         (set_value_handle): Ditto.
15069         (sort_vuses_heap): Ditto.
15070         (vn_lookup_or_add_with_stmt): Ditto.
15071         (vn_lookup_with_stmt): Ditto.
15072         (vn_compute): Remove.
15073         (vn_init): Ditto.
15074         (vn_delete): Ditto.
15075         (vn_lookup): Update arguments.
15076
15077         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
15078         (tree-vn.o): Ditto.
15079         (tree-ssa-sccvn.o): New.
15080         (OBJS-common): Add tree-ssa-sccvn.o
15081         
15082 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15083
15084         PR c/4076
15085         * c-typeck.c (build_external_ref): Don't mark as used if called
15086         from itself.
15087         * calls.c (rtx_for_function_call): Likewise.
15088         
15089 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
15090
15091         Revert:
15092
15093         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15094
15095         * dce.c (deletable_insn_p_1): New function, split out from...
15096         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15097         specially, not those inside PARALLELs.  Remove BODY argument
15098         and adjust recursive call accordingly.
15099         (prescan_insns_for_dce): Update call to delete_insn_p.
15100
15101 2007-06-30  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15102
15103         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
15104         (try_combine): Move potential calls to undo_all() so they happen
15105         before we commit to using the combined insns.
15106
15107 2007-06-30  Jan Hubicka  <jh@suse.cz>
15108
15109         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
15110         code.
15111
15112 2007-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
15113
15114         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
15115         (cgraph_remove_unreachable_nodes): Likewise.
15116         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
15117         * ipa-inline.c (update_caller_keys): Cast according to the coding
15118         conventions.
15119         (cgraph_decide_recursive_inlining): Likewise.
15120         (cgraph_decide_inlining_of_small_function): Likewise.
15121         (try_inline): Likewise.
15122         (cgraph_decide_inlining_incrementally): Likewise.
15123         * ipa-pure-const.c (get_function_state): Likewise.
15124         (scan_function): Likewise.
15125         (analyze_function): Likewise.
15126         (static_execute): Likewise.
15127         * ipa-reference.c (scan_for_static_refs): Likewise.
15128         (merge_callee_local_info): Likewise.
15129         (analyze_function): Use type safe memory macros.
15130         (static_execute): Likewise. Cast according to the coding conventions.
15131         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
15132         conventions.
15133         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
15134         names.
15135         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
15136         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
15137         variable names.
15138
15139 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15140
15141         PR middle-end/30024
15142         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
15143         for complex modes (both int and real).
15144
15145 2007-06-29  Jan Hubicka  <jh@suse.cz>
15146
15147         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
15148
15149 2007-06-29  Jan Hubicka  <jh@suse.cz>
15150
15151         PR middle-end/32372
15152         * cse.c (cse_insn): Avoid invalid sharing in between register note and
15153         the insn pattern.
15154
15155 2007-06-29  Anatoly Sokolov <aesok@post.ru>
15156
15157         PR target/32335
15158         * config/avr/avr.c: Include dataflow header file.
15159         (expand_prologue): Adjust for prologue insn change.
15160         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
15161         inside a insn.
15162
15163 2007-06-29  Richard Guenther  <rguenther@suse.de>
15164
15165         PR middle-end/32493
15166         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
15167         during type verification.
15168
15169 2007-06-29  Jan Hubicka  <jh@suse.cz>
15170
15171         * recog.c (validate_change_rtx_1): Unshare TO argument.
15172
15173 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
15174
15175         PR tree-optimization/24659
15176         * tree-vect-transform.c (vectorizable_call): Handle
15177         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
15178
15179         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
15180         * config/i386/i386.c (enum ix86_builtins)
15181         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
15182         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
15183         description.
15184         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
15185         const using def_builtin_const.
15186         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
15187         input operands in the same modes as the result.
15188         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
15189
15190 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
15191
15192         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
15193         (df_set_dead_notes_for_mw): Likewise.
15194
15195 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15196
15197         * c-common.c (pointer_int_sum): Do the negation in sizetype.
15198
15199 2007-06-28  DJ Delorie  <dj@redhat.com>
15200
15201         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
15202
15203 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
15204
15205         * doc/invoke.texi (C++ Dialect Options): Document
15206         fvisibility-ms-compat.
15207         * c.opt (fvisibility-ms-compat): New.
15208
15209 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15210
15211         PR tree-opt/32417
15212         * tree-affine.c (aff_combination_add_elt): Handle
15213         pointer addition specially.
15214
15215 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
15216
15217         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
15218         decl is non-external for AIX ABI.
15219
15220 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
15221
15222         * config/rs6000/predicates.md (current_file_function_operand):
15223         Ensure the symbol is non-external for AIX ABI.
15224
15225 2007-06-28  Nick Clifton  <nickc@redhat.com>
15226
15227         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
15228         (fdce, fdse, fpredictive-commoning): Likewise.
15229
15230 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
15231
15232         PR other/31400
15233         * gcc.c (process_command): Recognize the new -static-libgfortran
15234         option.
15235
15236 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15237
15238         PR target/32418
15239         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
15240         Use a call clobbered hard reg instead of a pseudo reg.
15241
15242 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15243
15244         * config/sh/sh.md (load_gbr): Use correct operand constraint.
15245
15246 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15247
15248         PR target/32479
15249         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
15250         REG_LIBCALL and REG_RETVAL notes.
15251         (divsi3, mulsi3): Likewise.
15252         (mulhisi3): Likewise.  Use emit_libcall_block.
15253         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
15254
15255 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
15256
15257         PR rtl-optimization/32481
15258         * combine.c (adjust_for_new_dest): Rescan the changed insn.
15259
15260 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15261
15262         * dce.c (deletable_insn_p_1): New function, split out from...
15263         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15264         specially, not those inside PARALLELs.  Remove BODY argument
15265         and adjust recursive call accordingly.
15266         (prescan_insns_for_dce): Update call to delete_insn_p.
15267
15268 2007-06-27  Richard Guenther  <rguenther@suse.de>
15269
15270         PR middle-end/32492
15271         * tree.h (fold_convertible_p): Declare.
15272         * fold-const.c (fold_convertible_p): New function.
15273         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
15274         instead of lang_hooks.types_compatible_p.
15275
15276 2007-06-26  Jan Hubicka  <jh@suse.cz>
15277
15278         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
15279         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
15280         early use validate_unshare_change.
15281         (reload_combine): Likewise.
15282         * recog.c (change_t): New field unshare.
15283         (validate_change_1): Rename from validate_change; add argument unshare.
15284         (validate_change): Turn into wrapper of validate_change_1; update
15285         prototype for bools.
15286         (validate_unshare_change): New.
15287         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
15288         calls of df_insn_rescan.
15289         * recog.h (validate_change): Replace ints by bools.
15290         (validate_unshare_change): Declare.
15291
15292 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
15293
15294         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
15295         
15296 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
15297
15298         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
15299
15300 2007-06-25  Jan Hubicka  <jh@suse.cz>
15301
15302         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
15303         uninlinable call.
15304         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
15305         cgraph_decide_inlining_incrementally): Move uninlinability checks to
15306         places other call site specific checks are performed.
15307
15308 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15309
15310         PR tree-opt/32421
15311         * tree-vect-transform.c (vectorizable_operation): Convert
15312         POINTER_PLUS_EXPR over to PLUS_EXPR.
15313
15314 2007-06-25  Chao-ying Fu  <fu@mips.com>
15315
15316         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
15317         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
15318         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
15319         Document GET_MODE_IBIT, and GET_MODE_FBIT.
15320
15321         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
15322         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15323         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
15324         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
15325         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
15326         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
15327         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
15328         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
15329         ALL_FIXED_POINT_MODE_P): New define.
15330         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15331         MODE_UACCUM.
15332         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
15333
15334         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
15335         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15336         MODE_VECTOR_UACCUM): New mode classes.
15337
15338         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
15339         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
15340         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
15341         USA, UDA, and UTA.
15342
15343         * genmodes.c (struct mode_data): Add ibit and fbit fields.
15344         (blank_mode): Initialize ibit and fbit.
15345         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
15346         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15347         MODE_UACCUM.
15348         (new_adjust): Change required_class to required_class_from and
15349         required_class_to for testing within a range.
15350         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15351         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15352         MODE_VECTOR_UACCUM.
15353         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
15354         (make_fixed_point_mode): New.
15355         (_ADD_ADJUST): Change C to C1 and C2.
15356         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
15357         use a range for machine classes.
15358         (ADJUST_IBIT, ADJUST_FBIT): New.
15359         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
15360         CONST_MODE_FBIT.
15361         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
15362         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15363         Emit adjustment for ibit and fbit.
15364         (emit_mode_ibit, emit_mode_fbit): New.
15365         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
15366
15367 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
15368
15369         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
15370         as the source of the set.
15371
15372 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
15373
15374         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
15375         FP_REGNO_P): Use IN_RANGE.
15376         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
15377         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
15378         (DATA_REG_P): Use DATA_REGNO_P.
15379         (FP_REG_P): Use FP_REGNO_P.
15380         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
15381         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
15382         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
15383
15384 2007-06-24  Jan Hubicka  <jh@suse.cz>
15385
15386         PR middle-end/30563
15387         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
15388
15389 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
15390
15391         PR middle-end/32461
15392         * fold-const.c (fold_binary): Strip nops of operand 0
15393         of BIT_NOT_EXPR before calling operand_equal_p.
15394         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
15395         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
15396
15397 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
15398
15399         * doc/extend.texi: Document that dllimport and dllexport imply
15400         default visibility.
15401         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
15402         imported or exported declaration, including type declarations.
15403         * c-common.c (handle_visibility_attribute): Check for conflicts
15404         with dllimport/dllexport.
15405         (c_determine_visibility): Handle dllimport/dllexport as an
15406         explicit visibility atttribute.
15407
15408 2007-06-23  Richard Guenther  <rguenther@suse.de>
15409
15410         PR tree-optimization/16876
15411         PR middle-end/29478
15412         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
15413         for CALL_EXPRs.
15414         * tree-inline.c (initialize_inlined_parameters): Do not call
15415         lang_hooks.tree_inlining.convert_parm_for_inlining.
15416         * cgraphbuild.c (initialize_inline_failed): Set inline failed
15417         reason for mismatched types.
15418         * gimplify.c (gimplify_call_expr): Verify the call expression
15419         arguments match the called function type signature.  Otherwise
15420         mark the call expression to be not considered for inlining
15421         using CALL_CANNOT_INLINE_P flag.
15422         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
15423         edges call expression.
15424         (cgraph_decide_inlining_of_small_function): Likewise.
15425         (cgraph_decide_inlining): Likewise.
15426         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
15427         Remove define.
15428         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
15429         * c-typeck.c (c_convert_parm_for_inlining): Remove.
15430         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
15431         Remove declaration.
15432         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
15433         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
15434         Remove.
15435         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
15436         convert_parm_for_inlining member.
15437
15438 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
15439
15440         PR target/31152
15441         * arm.md (negscc): Match the correct operand for optimized LT0 test.
15442         Remove optimization for GT.
15443
15444 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
15445
15446         PR middle-end/32437
15447         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
15448         is a PARALLEL.
15449         (prescan_insns_for_dce): Add extra parameter.
15450         
15451 2007-06-23  Jan Hubicka  <jh@suse.cz>
15452
15453         PR middle-end/31541
15454         * gimplify.c (mark_addressable): New function.
15455         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
15456
15457 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15458
15459         PR middle-end/32374
15460         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
15461
15462 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15463
15464         PR target/32413
15465         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
15466         moves between MMX/SSE registers to at least 8 units to prevent
15467         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
15468
15469 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15470
15471         * config/i386/i386.c (override_options): Correct x86_sahf
15472         setting condition.
15473
15474 2007-06-21  David Daney  <ddaney@avtrex.com>
15475
15476         PR target/32406
15477         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
15478         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
15479         (exception_receiver): Renamed to ...
15480         (nonlocal_goto_receiver): ... this.
15481
15482 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
15483
15484         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
15485         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
15486         partial register accesses.
15487
15488 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
15489
15490         * fold-const.c (debug_fold_checksum): Move it under
15491         ENABLE_FOLD_CHECKING.
15492
15493 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15494
15495         PR middle-end/20623
15496         * tree.h (debug_fold_checksum): Declared.
15497         * fold-const.c (build_fold_addr_expr_with_type_1): New.
15498         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
15499         build_fold_addr_expr_with_type_1.
15500         (fold_addr_expr, debug_fold_checksum): New.
15501         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
15502         (fold_unary, fold_comparison, split_address_to_core_and_offset):
15503         Use fold_addr_expr.
15504         
15505 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15506
15507         PR tree-optimization/19590
15508         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
15509         of scev is a constant.
15510
15511 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
15512
15513         * df-problems.c (df_note_bb_compute): Made computation of live
15514         info consistent with df_lr.
15515
15516 2007-06-21  Richard Guenther  <rguenther@suse.de>
15517
15518         PR tree-optimization/32453
15519         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
15520         for pointer anti-range.
15521
15522 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
15523
15524         * config/i386/i386.c (processor_target_table): Increase maximum
15525         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
15526         default 64bit.
15527
15528         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
15529         byte alignment if > 8 byte alignment is preferred.
15530         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
15531
15532 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
15533
15534         PR tree-optimization/31866
15535         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
15536         if ASM_EXPR's input is not a SSA_NAME.
15537
15538         PR middle-end/32362
15539         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
15540         but decl is a global var, instead return decl.
15541         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
15542         even for is_global_var decls, if they are private in some outer
15543         context.
15544
15545 2007-06-21  Richard Guenther  <rguenther@suse.de>
15546
15547         PR tree-optimization/32451
15548         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
15549
15550 2007-06-21  Christian Bruel  <christian.bruel@st.com>
15551
15552         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
15553         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
15554         (push_regs): Changed saving order or banked registers.
15555         (sh_expand_epilogue): Likewise.
15556         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
15557         (FIRST_BANKED_REG): Likewise.
15558         (LAST_BANKED_REG): Likewise.
15559         * config/sh/sh.md (banked) New attribute.
15560         (in_delay_slot): Check banked attribute.
15561         
15562 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
15563
15564         PR tree-optimization/32075
15565         * tree-data-ref.c (subscript_dependence_tester_1, 
15566         analyze_miv_subscript, analyze_overlapping_iterations,
15567         add_distance_for_zero_overlaps, build_classic_dist_vector,
15568         subscript_dependence_tester_1, analyze_overlapping_iterations,
15569         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
15570         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
15571         to evolution_function_is_affine_multivariate_p.
15572
15573 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
15574
15575         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
15576
15577 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15578
15579         PR target/32335
15580         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
15581         for TARGET_A16.
15582         * config/m32c/prologue.md (epilogue_exitd_16): New.
15583         (epilogue_reit_16): New.
15584         (epilogue_exitd): Rename to epilogue_exitd_24.
15585         (epilogue_reit): Rename to epilogue_reit_24.
15586
15587 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
15588             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15589
15590         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
15591         New counters.
15592         * haifa-sched.c (queue_to_ready): Don't requeue next insn
15593         if dbg_cnt (sched_insn) reaches the limit.
15594         (choose_ready): New parameter INSN_PTR and new return value.
15595         (schedule_block): Handle dbg_cnt (sched_insn). Handle
15596         the new return value from choose_ready.
15597         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
15598         (rest_of_handle_global_alloc): New global_alloc_at_func.
15599
15600 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
15601
15602         PR tree-optimization/25737
15603         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
15604         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
15605         * tree-flow.h (struct fieldoff): Add new field alias_set.
15606         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
15607         argument addressable_type.  Set alias_set of fieldoff.
15608         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
15609         (create_overlap_variables_for): Pass alias_set from fieldoff to
15610         create_sft.
15611         * alias.c (get_alias_set): Use alias_set from SFT if set.
15612
15613 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
15614
15615         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
15616         of a variable as an unsigned HOST_WIDE_INT integer.
15617
15618 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
15619
15620         PR rtl-optimization/32405
15621         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
15622
15623 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
15624
15625         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
15626
15627         PR middle-end/31959
15628         * builtins.c: Include diagnostic.h.
15629         (expand_builtin_expect): Make gcc_assert more permissive.
15630         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
15631
15632         PR inline-asm/32109
15633         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
15634         and !allows_mem.
15635
15636         PR middle-end/32285
15637         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
15638         if ACCUMULATE_OUTGOING_ARGS.
15639
15640 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15641
15642         * config/m68hc11/m68hc11.c: Include dataflow header file.
15643         (m68hc11_reorg): Port to dataflow.
15644
15645 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15646
15647         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
15648         (struct df_problem.free_blocks_on_set_blocks): New field.
15649         (struct dataflow.optional_p): New field.
15650         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15651         (df_live_set_all_dirty): New function.
15652         * df-scan.c (df_scan_alloc): Initialize optional_p.
15653         (problem_SCAN): Initialize free_blocks_on_set_blocks.
15654         * df-core.c (df_set_blocks): Removed use of
15655         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
15656         df_problem.free_blocks_on_set_blocks to determine which blocks are
15657         recycled.
15658         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
15659         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
15660         uses dataflow.optional_p to determine if problem should be
15661         deleted.
15662         (rest_of_handle_df_initialize): Only start live problem if 
15663         -02 or above.
15664         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15665         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
15666         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
15667         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
15668         problem_NOTE): Initialize free_blocks_on_set_blocks.
15669         (df_lr_bb_local_compute): Recompute luids if df_live problem is
15670         not active.
15671         (df_live_set_all_dirty, df_note_alloc): New function.
15672         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
15673         df_get_live_*.
15674         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
15675         * postreload.c (reload_combine): Ditto.
15676         * cse.c (cse_extended_basic_block): Ditto.
15677         * regmove.c (mark_flags_life_zones): Ditto.
15678         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
15679         erase_matching_seqs): Ditto.
15680         * bt-load.c (compute_defs_uses_and_gen): Ditto.
15681         * integrate (allocate_initial_values): Ditto.
15682         * combine.c (reg_dead_at_p): Ditto.
15683         * resource.c (mark_target_live_regs): Ditto.
15684         * sched-rgn.c (check_live_1, update_live_1): Ditto.
15685         * config/sh/sh.c (find_r0_life_regions): Ditto.
15686         * global.c (rest_of_handle_global_alloc): Only add back df_live
15687         for -O > 1.
15688         * local-alloc.c (rest_of_handle_local_alloc): Only remove
15689         df_live for -O > 1.
15690         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
15691         df_get_live_*.
15692         (if_convert): Make sure df_live is there at -O == 1.
15693         (pass_if_after_combine): Cleanup flags.
15694         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
15695         is there at -O == 1.
15696         
15697 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
15698
15699         * config/arm/arm.c (arm_get_frame_offsets): Set
15700         offsets->locals_base to avoid negative stack size.
15701         (thumb1_expand_prologue): Assert on negative stack size.
15702
15703 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
15704
15705         PR tree-optimization/32367
15706         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
15707         of the chrec has no evolution in that loop.
15708         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
15709
15710 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
15711
15712         * config/xtensa/xtensa.c: Include "df.h".
15713         (xtensa_builtin_saveregs): Use adjust_address instead of
15714         change_address.
15715         (xtensa_va_start): Invoke make_tree with sizetype for
15716         expand_builtin_saveregs and then convert the result to a pointer.
15717         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
15718         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
15719         Subtract argument size from index value as integers and then use
15720         POINTER_PLUS_EXPR to add the result to the array address.
15721         
15722 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15723
15724         PR target/32335
15725         * config/m32c/m32c.c: Include dataflow header file.
15726         (m32c_emit_prologue): Adjust for prologue insn change.
15727         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
15728         once inside a PARALLEL. Assume frame size passed in operand 0
15729         includes space to save the fb register.
15730         (prologue_enter_24): Likewise.
15731         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
15732
15733 2007-06-19  David Daney  <ddaney@avtrex.com
15734
15735         PR target/32313
15736         * config/mips/mips.md (cprestore): Mark $gp as used.
15737
15738 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15739
15740         PR target/32369
15741         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
15742         (frv_ifcvt_modify_insn): Likewise.
15743
15744 2007-06-19  Richard Guenther  <rguenther@suse.de>
15745
15746         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
15747         only handle positive offsets that fit in a HOST_WIDE_INT.
15748
15749 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
15750
15751         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
15752         result of rsqrt insn for zero input argument to avoid NaN.
15753
15754 2007-06-19  Richard Guenther  <rguenther@suse.de>
15755
15756         PR middle-end/31950
15757         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
15758
15759 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
15760
15761         PR tree-optimization/32353
15762         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
15763
15764 2007-06-19  Nick Clifton  <nickc@redhat.com>
15765
15766         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
15767
15768 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15769
15770         PR target/32389
15771         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
15772         * config/i386/i386.c (assign_386_stack_local): Assert that
15773         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
15774         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
15775         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
15776         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
15777
15778 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
15779
15780         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
15781
15782 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
15783
15784         PR rtl-optimization/32321
15785         * gcse.c (replace_store_insn): Update the note before
15786         calling emit_insn_after.
15787
15788 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
15789
15790         PR middle-end/32355
15791         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
15792         cse_main.
15793         * df-problems.c (df_note_bb_compute): Fix dumping info.
15794         
15795 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
15796
15797         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
15798         insn with emit_jump_insn.
15799
15800 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15801
15802         PR tree-optimization/32383
15803         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
15804         * targhooks.h (default_builtin_reciprocal): Update prototype.
15805         * target.h (struct gcc_target): Update builtin_reciprocal.
15806         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
15807         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
15808         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
15809         when fndecl is in BUILT_IN_MD class.
15810         (execute_convert_to_rsqrt): Ditto.
15811
15812         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
15813         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
15814         Convert BUILT_IN_SQRTF code only  when md_fn is false.
15815
15816 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15817
15818         * bt-load.c (move_btr_def): Fix the order of arguments
15819         to validate_replace_rtx.
15820
15821 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
15822
15823         * config/m68k/m68k-devices.def: Add 54450..54455.
15824
15825 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
15826
15827         PR rtl-optimization/32366
15828         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
15829         FLOAT_EXTEND]: Prevent non-scalar modes from entering
15830         significand_size.
15831
15832 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15833
15834         PR middle-end/32349
15835         * modulo-sched (generate_reg_moves): Added rescan parameter and if
15836         this is true, rescan insn being modified.
15837         (sms_schedule): Added rescan parameter.
15838         (rest_of_handle_sms): Moved freeing of dominance info to before
15839         getting out of cfg_layout.
15840         
15841 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
15842
15843         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
15844         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
15845         appropriate.
15846
15847         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
15848         FL_CF_EMAC from the entry for isac.
15849
15850         * config/m68k/predicates.md (const_call_operand): Adjust comment.
15851         (const_sibcall_operand): New.
15852         (sibcall_operand): Use it.
15853         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
15854         (m68k_isas): ISAC does not imply FPU or EMAC.
15855         (override_options): Add ISA_C logic for symbolic jump & call.
15856
15857 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
15858
15859         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
15860         return mode from the builtin itself.
15861         (sparc_fold_builtin): Fix cast of zero constant.
15862
15863 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15864
15865         * targhooks.c (default_builtin_reciprocal): New default target hook.
15866         * targhooks.h (default_builtin_reciprocal): Add prototype.
15867         * hooks.c (hook_tree_tree_bool_null): Remove hook.
15868         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
15869         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
15870         default_builtin_reciprocal.
15871
15872 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15873
15874         PR middle-end/31723
15875         * hooks.c (hook_tree_tree_bool_null): New hook.
15876         * hooks.h (hook_tree_tree_bool_null): Add prototype.
15877         * tree-pass.h (pass_convert_to_rsqrt): Declare.
15878         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
15879         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
15880         and convert it to reciprocal a*rfunc(b).
15881         (execute_convert_to_rsqrt): New function.
15882         (gate_convert_to_rsqrt): New function.
15883         (pass_convert_to_rsqrt): New pass definition.
15884         * target.h (struct gcc_target): Add builtin_reciprocal.
15885         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
15886         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
15887         TARGET_BUILTIN_RECIPROCAL.
15888         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
15889
15890         * config/i386/i386.h (TARGET_RECIP): New define.
15891         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
15892         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15893         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15894         and not optimizing for size.
15895         (*rcpsf2_sse): New insn pattern.
15896         (*rsqrtsf2_sse): Ditto.
15897         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15898         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15899         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15900         and not optimizing for size.
15901         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
15902         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15903         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15904         and not optimizing for size.
15905         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
15906         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15907         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15908         and not optimizing for size.
15909         (*sse_rsqrtv4sf2): Do not export.
15910         (sqrtv4sf2): Ditto.
15911         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15912         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15913         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15914         and not optimizing for size.
15915         (sqrtv4sf2): Ditto.
15916         * config/i386/i386.opt (mrecip): New option.
15917         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
15918         (ix86_emit_swsqrtsf): Ditto.
15919         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
15920         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
15921         builtin definition.
15922         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
15923         ix86_expand_unop1_builtin.
15924         (ix86_emit_swdivsf): New function.
15925         (ix86_emit_swsqrtsf): Ditto.
15926         (ix86_builtin_reciprocal): New function.
15927         (TARGET_BUILTIN_RECIPROCAL): Use it.
15928         (ix86_vectorize_builtin_conversion): Rename from
15929         ix86_builtin_conversion.
15930         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
15931         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
15932         "i386 and x86_64 Options" section.
15933         (Intel 386 and AMD x86_64 Options): Document -mrecip.
15934
15935 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
15936             Zdenek Dvorak <dvorakz@suse.cz>
15937             Richard Guenther  <rguenther@suse.de>
15938             Kaz Kojima  <kkojima@gcc.gnu.org>
15939
15940         * tree-vrp.c (compare_values_warnv): Convert val2 to
15941         the type of val1.
15942         (extract_range_from_assert): Create
15943         POINTER_PLUS_EXPR for pointer types.
15944         (extract_range_from_binary_expr): Handle
15945         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
15946         for pointer types.
15947         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
15948         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
15949         POINTER_PLUS_EXPR as PLUS_EXPR.
15950         (number_of_iterations_lt_to_ne):
15951         For pointer types, use sizetype when
15952         creating MINUS_EXPR/PLUS_EXPRs.
15953         (assert_loop_rolls_lt): For pointer types, use sizetype when
15954         creating MINUS_EXPR/PLUS_EXPRs.
15955         (number_of_iterations_le): Likewise.
15956         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
15957         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
15958         like PLUS_EXPR and MINUS_EXPR.
15959         * tree-pretty-print.c (dump_generic_node): Handle
15960         POINTER_PLUS_EXPR.
15961         (op_prio): Likewise.
15962         (op_symbol_1): Likewise.
15963         * optabs.c (optab_for_tree_code): Likewise.
15964         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
15965         specially.
15966         * tree-tailcall.c (process_assignment): Mention
15967         POINTER_PLUS_EXPR in a TODO comment.
15968         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
15969         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
15970         not used with a pointer and an integer type.
15971         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
15972         increment using chrec_convert_rhs instead of chrec_convert.
15973         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
15974         PLUS_EXPR except for the right hand side's type will be
15975         sizetype.
15976         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
15977         (fold_used_pointer_cast): Kill.
15978         (pointer_offset_p): Kill.
15979         (fold_used_pointer): Kill.
15980         (pointer_used_p): Kill.
15981         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
15982         call fold_used_pointer.
15983         (instantiate_parameters_1): Convert the increment
15984         using chrec_convert_rhs instead of chrec_convert.
15985         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
15986         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
15987         instead of PLUS_EXPR.
15988         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
15989         PLUS_EXPR for pointers.
15990         (std_gimplify_va_arg_expr): Likewise.
15991         (fold_builtin_memory_op): Likewise.
15992         (fold_builtin_strstr): Likewise.
15993         (fold_builtin_strchr): Likewise.
15994         (fold_builtin_strrchr): Likewise.
15995         (fold_builtin_strpbrk): Likewise.
15996         (expand_builtin_memory_chk): Likewise.
15997         (fold_builtin_memory_chk): Likewise.
15998         (std_expand_builtin_va_start): Use
15999         sizetype for the call to make_tree and then convert
16000         to the pointer type.
16001         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
16002         instead of PLUS_EXPR for adding to a pointer.
16003         (std_gimplify_va_arg_expr): Use fold_build2 for
16004         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
16005         the operands to sizetype first and then cast the BIT_AND_EXPR
16006         back to the pointer type.
16007         * fold-const.c (build_range_check): Handle pointer types
16008         specially.
16009         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
16010         of PLUS_EXPR's. Make sure the offset is converted to
16011         sizetype.
16012         (try_move_mult_to_index): Strip the NOPs from the offset.
16013         Remove code argument and replace all uses with PLUS_EXPR.
16014         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
16015         specially. Don't use a pointer type for MINUS_EXPR.
16016         (fold_unary): Handle for (T1)(X op Y),
16017         only p+ as that is the only as that can be handled for
16018         binary operators now.
16019         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
16020         POINTER_PLUS_EXPR.
16021         <case PLUS_EXPR>: Add folding of PTR+INT into
16022         PTR p+ INT.
16023         Don't call try_move_mult_to_index.
16024         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
16025         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
16026         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
16027         Don't call try_move_mult_to_index.
16028         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
16029         (tree_expr_nonzero_p): Likewise.
16030         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
16031         of PLUS_EXPR for the complex expression folding.
16032         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
16033         first chrec is a pointer type, then the second should
16034         be sizetype and not the first's type.
16035         For POINTER_PLUS_EXPR, use a different right hand side type.
16036         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16037         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
16038         different right hand side type.
16039         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16040         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
16041         instead of PLUS_EXPR.
16042         When either operand is zero, convert the other operand.
16043         (chrec_apply): Use chrec_convert_rhs
16044         on the argument x instead of chrec_convert.
16045         (reset_evolution_in_loop): For pointer types, the new_evol
16046         should be sizetype.
16047         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
16048         different right hand side type.
16049         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16050         (chrec_convert_rhs): New function.
16051         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
16052         different right hand side type.
16053         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16054         * tree-chrec.h (chrec_convert_rhs): New prototype.
16055         (build_polynomial_chrec): For pointer types, the right hand
16056         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
16057         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
16058         Remove subtraction case as it is always addition now.
16059         Make sure the offset is converted to sizetype.
16060         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
16061         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
16062         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
16063         PLUS_EXPR in pointer type.
16064         Handle POINTER_PLUS_EXPR.
16065         (tree_to_aff_combination): Likewise.
16066         (force_expr_to_var_cost): Likewise.
16067         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
16068         instead of PLUS_EXPR for pointers.
16069         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
16070         instead of PLUS_EXPR of pointer types.
16071         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
16072         as PLUS_EXPR.
16073         (check_va_list_escapes): Likewise.
16074         (check_all_va_list_escapes): Likewise.
16075         * dwarf2out.c (loc_descriptor_from_tree_1):
16076         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
16077         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
16078         (string_constant): Likewise.
16079         * tree-ssa-address.c (tree_mem_ref_addr): When adding
16080         the offset to the base, use POINTER_PLUS_EXPR.
16081         (add_to_parts): Convert the index to sizetype.
16082         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
16083         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
16084         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
16085         Offset only holds something for PLUS_EXPR.
16086         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
16087         a PLUS_EXPR.
16088         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
16089         and not PLUS_EXPR.
16090         (analyze_accesses_for_modify_stmt): Likewise.
16091         Remove comment about the type being integral type as it is
16092         wrong now.
16093         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
16094         PLUS_EXPR.
16095         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
16096         and not PLUS_EXPR.
16097         Correct the type which the artimentic is done in (is now
16098         sizetype).
16099         Reindent one loop.
16100         * tree-data-ref.c (split_constant_offset): Handle
16101         POINTER_PLUS_EXPR
16102         * tree-affine.c (tree_to_aff_combination): Likewise.
16103         * c-typeck.c (build_unary_op): For pointers create the increment
16104         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
16105         for pointers.
16106         * gimplify.c (gimplify_self_mod_expr): Create a
16107         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16108         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
16109         * tree.def (POINTER_PLUS_EXPR): New tree code.
16110         * tree-predcom.c (ref_at_iteration): If we have a pointer
16111         type do the multiplication in sizetype.
16112         * tree-mudflap.c (mf_xform_derefs_1): Create a
16113         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16114         * tree-ssa-forwprop.c 
16115         (forward_propagate_addr_into_variable_array_index):
16116         Don't expect there to be a cast for the index as that
16117         does not exist anymore.
16118         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
16119         instead of PLUS_EXPR.
16120         Don't check for the first operand of the POINTER_PLUS_EXPR
16121         was the index as it cannot be.
16122         Call forward_propagate_addr_into_variable_array_index with
16123         the SSA_NAME instead of the statement.
16124         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
16125         (compare_constant): Likewise.
16126         (copy_constant): Likewise.
16127         (compute_reloc_for_constant): Likewise.
16128         (output_addressed_constants): Likewise.
16129         (initializer_constant_valid_p): Likewise.
16130         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
16131         Convert the MIN/MAX of the inner type to the outer
16132         type before comparing them.
16133         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
16134         POINTER_PLUS_EXPR instead of PLUS_EXPR.
16135         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
16136         of PLUS_EXPR for pointers.
16137         * tree-inline.c (estimate_num_insns_1): Handle
16138         POINTER_PLUS_EXPR.
16139         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
16140         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16141         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
16142         instead of PLUS_EXPR for the pointer increment statement.
16143         (vect_update_ivs_after_vectorizer): For pointer types, create
16144         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
16145         MULT_EXPR in sizetype.
16146         (vect_gen_niters_for_prolog_loop): Add a cast when creating
16147         byte_misalign.
16148         * tree-object-size.c (plus_expr_object_size): Handle
16149         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
16150         code which is trying to figure out which side is a pointer and 
16151         is the index.
16152         (check_for_plus_in_loops_1): Likewise.
16153         (check_for_plus_in_loops): Likewise.
16154         * c-common.c (pointer_int_sum): Create a
16155         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16156         * tree-ssa-structalias.c (handle_ptr_arith): Handle
16157         only POINTER_PLUS_EXPR.  Removing all the extra
16158         code which is trying to figure out which side is a pointer and 
16159         is the index.
16160         * tree-cfg.c (verify_expr): Add extra checking for pointers and
16161         PLUS_EXPR and MINUS_EXPR.
16162         Also add checking to make sure the operands of POINTER_PLUS_EXPR
16163         are correct.
16164         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
16165         with make_tree, instead of a pointer type.
16166         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
16167         for pointers instead of PLUS_EXPR.
16168         (s390_gimplify_va_arg): Likewise.
16169         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
16170         instead of PLUS_EXPR when doing addition on pointer
16171         types.  Use sizetype for the second operand.
16172         (spu_gimplify_va_arg_expr): Likewise.
16173         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
16174         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
16175         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
16176         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
16177         for the pointer addition and also use size_int/sizetype
16178         for the offset.
16179         (ix86_gimplify_va_arg): Likewise.
16180         Perform BIT_AND_EXPR on sizetype arguments.
16181         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
16182         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
16183         for the pointer additions and also use size_int for the offsets.
16184         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
16185         additions and also use size_int for the offsets.  Perform
16186         BIT_AND_EXPR on sizetype arguments.
16187         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
16188         POINTER_PLUS_EXPR for pointers and create the
16189         BIT_AND_EXPR in sizetype.
16190         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
16191         instead of PLUS_EXPR for pointer addition.
16192         (rs6000_va_start): Likewise.
16193         Also use sizetype for the offset.
16194         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
16195         as PLUS_EXPR/MINUS_EXPR.
16196         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
16197         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
16198         Don't use BIT_AND_EXPR on a pointer type, convert the
16199         expression to sizetype first.
16200         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
16201         for pointers.
16202         (mips_gimplify_va_arg_expr): Likewise.
16203         Don't create BIT_AND_EXPR in a pointer type.
16204
16205 2007-06-15  Eric Christopher  <echristo@apple.com>
16206
16207         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
16208         (x86_64-*-darwin*): Ditto.
16209         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
16210         for above.
16211
16212 2007-06-15  Matthew Wilcox <matthew@wil.cx>
16213
16214         * doc/extend.texi: Document behavior of __attribute__((aligned))
16215         on typedefs.
16216
16217 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
16218
16219         * rtlanal.c (note_stores): Improve documentation.
16220
16221 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16222
16223         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
16224         LOCAL_LABEL_PREFIX): Delete.
16225         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
16226         (bfin_internal_label): Delete.
16227
16228 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
16229
16230         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
16231         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
16232         otherwise define to LIBGCC2_TF_CEXT.
16233         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
16234         (LIBGCC_TF_CEXT): Ditto.
16235         (TF_SIZE): Ditto.
16236
16237 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
16238
16239         PR rtl-optimization/32339
16240         * df-scan.c (df_uses_record): Don't modify flags but just add to
16241         it for df_ref_record.
16242
16243 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16244
16245         * tree-mudflap.c: Fix whitespace issues.
16246
16247 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
16248
16249         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
16250
16251 2007-06-14  Eric Christopher  <echristo@apple.com>
16252
16253         * config/i386/sse.md (movdi_to_sse): Rewrite body.
16254         (movv4sf): Use gcc_unreachable instead of abort.
16255
16256 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16257
16258         PR target/32268
16259         * config/i386/sfp-machine.h (CMPtype): New define.
16260         (mach stubs): Use CMPtype instead of int as a return type.
16261
16262 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16263
16264         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
16265         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
16266         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
16267         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
16268         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
16269         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
16270         config/soft-fp/soft-fp.h: Update from glibc CVS.
16271
16272 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
16273
16274         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
16275
16276 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16277
16278         PR target/32341
16279         * config/v850/v850.c: Include dataflow header file.
16280         (substitute_ep_register): Fix typo.
16281
16282 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16283
16284         * configure.ac: Fix earlier checkin.
16285         * configure: Regenerated.
16286
16287 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16288
16289         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
16290         * aclocal.m4: Regenerate.
16291         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
16292         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
16293         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
16294         * configure: Regenerate.
16295         * Makefile.in (LOOSE_WARN): Subst loose_warn.
16296
16297         * Makefile.in (quickstrap): Build libgcc too.
16298
16299 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16300
16301         * configure.ac: Add --enable-checking=df.  Explicitly mention that
16302         the variables are initialized as for "release".
16303         * df-core.c: Use it.
16304         * configure: Regenerate.
16305         * config.in: Regenerate.
16306
16307 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
16308
16309         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
16310         validate_replace_rtx instead of replace_rtx.
16311         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
16312
16313 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
16314
16315         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
16316         (DWARF2_UNWIND_INFO): Override default if configured with
16317         SJLJ EH disabled.
16318         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
16319         (ENDFILE_SPEC): Add crtend.o.
16320         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
16321         (ENDFILE_SPEC): Add crtend.o.
16322         (TARGET_USE_JCR_SECTION): Define.
16323         (MD_UNWIND_SUPPORT): Define for 32-bit target.
16324
16325         * config/i386/cygming-crtbegin.c: New file.
16326         * config/i386/cygming-crtend.c: New file.
16327
16328 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
16329
16330         * config/i386/w32-unwind.h: New file.
16331
16332 2007-06-13  Eric Christopher  <echristo@apple.com>
16333
16334         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
16335         the user set a value below STACK_BOUNDARY.
16336
16337 2007-06-13  Thiemo Seufer  <ths@networkno.de>
16338
16339         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
16340         imply -lpthread for -pthread.
16341
16342 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16343
16344         * basic-block.h: Remove the prototype for
16345         free_basic_block_vars.
16346         * cfglayout.h: Remove the prototype for
16347         insn_locators_initialize.
16348         * tree.h: Remove the prototype for emit_line_note.
16349
16350         * tree-ssa-pre.c (mergephitemp): Remove.
16351         (init_pre): Don't use mergephitemp.
16352
16353 2007-06-13  Eric Christopher  <echristo@apple.com>
16354
16355         * config/i386/i386.c (override_options): If we've specified
16356         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
16357
16358 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
16359
16360         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
16361         is defined.
16362
16363 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16364
16365         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
16366         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
16367         (eh_store_handler): New pattern.
16368         (eh_return): Emit it instead of a plain move.
16369
16370 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
16371
16372         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
16373         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
16374         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
16375         def_builtin_const.
16376
16377 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16378
16379         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
16380         (find_next_insn_start, find_load): New functions.
16381         (bfin_reorg): Use them to deal with the fact that parallel insns are
16382         no longer represented as a SEQUENCE.
16383
16384 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
16385
16386         * config/sparc/sparc.c (sparc_override_options): Initialize
16387         fpu mask correctly.
16388
16389 2007-06-13  Dave Korn  <dave.korn@artimi.com>
16390
16391         * config/i386/i386.c (ix86_eax_live_at_start_p): Use df_get_live_out.
16392
16393 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16394
16395         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
16396         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
16397         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
16398         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
16399         tree-vect-transform.c: Fix comment typos.  Follow spelling
16400         conventions.
16401
16402 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16403
16404         * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
16405         to the exit block use set.
16406         (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
16407         * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
16408         * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
16409
16410 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16411
16412         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
16413         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
16414         to indicate an error.
16415         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
16416         New functions.
16417         (dbg_cnt_process_opt): Print an error on a bad argument.
16418         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
16419         * common.opt (-fdbg-cnt-list): New.
16420         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
16421
16422 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16423
16424         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
16425         flag on ref-all pointers.
16426
16427 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16428
16429         PR middle-end/31579
16430         * expr.c (expand_expr_addr_expr_1): Call expand_expr
16431         for the offset with the modifier as EXPAND_INITIALIZER
16432         if the modifier is EXPAND_INITIALIZER.
16433         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
16434         a register if we had an overflow.
16435
16436 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16437
16438         * real.c (real_isfinite): New.
16439         (real_sqrt): Use it.
16440         * real.h (real_isfinite): New.
16441         * builtins.c: Use it.
16442
16443 2007-06-12  Ian Lance Taylor  <iant@google.com>
16444             Daniel Berlin  <dberlin@dberlin.org>
16445
16446         PR libstdc++/29286
16447         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
16448         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
16449         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
16450         (DECL_NO_TBAA_P): Define.
16451         (struct tree_decl_common): Add no_tbaa_flag field.
16452         * tree-ssa-structalias.c (struct variable_info): Add
16453         no_tbaa_pruning field.
16454         (new_var_info): Initialize no_tbaa_pruning field.
16455         (unify_nodes): Copy no_tbaa_pruning field.
16456         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16457         (dump_solution_for_var): Print no_tbaa_pruning flag.
16458         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
16459         callers.
16460         (compute_tbaa_pruning): New static function.
16461         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
16462         Call compute_tbaa_pruning.
16463         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
16464         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16465         * gimple-low.c (lower_stmt): Likewise.
16466         * tree-gimple.c (is_gimple_stmt): Likewise.
16467         * tree-ssa-operands.c (get_expr_operands): Likewise.
16468         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16469         * tree-inline.c (estimate_num_insns_1): Likewise.
16470         (copy_result_decl_to_var): Likewise.
16471         * expr.c (expand_expr_real_1): Likewise.
16472         * tree-pretty-print.c (dump_generic_node): Likewise.
16473         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
16474         * omp-low.c (omp_copy_decl_2): Likewise.
16475         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
16476         * doc/c-tree.texi (Expression trees): Document
16477         CHANGE_DYNAMIC_TYPE_EXPR.
16478
16479 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16480
16481         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
16482         with !HONOR_NANS and !HONOR_INFINITIES.
16483         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
16484
16485 2007-06-12  Tristan Gingold  <gingold@adacore.com>
16486
16487         * gcov.c: Comments updated.
16488         (source_info): Add file_time field.
16489         (source_index): New variable.
16490         (mutiple_files): New variable.
16491         (generate_results): New function extracted from process_file.
16492         (process_file): Save and restore chain of functions, generate
16493         results and free structures only if not merging results.
16494         (release_structures): File names are now freed in create_file_names
16495         (create_file_names): Free previous file names.
16496         (find_source): File date is now read here and modifications in
16497         source files is checked here.
16498         (read_graph_file): Only reverse order of functions for the current
16499         object file.
16500         (make_gcov_file_name): Do not generate long names if input_name is
16501         NULL.
16502         (output_lines): If merging results do not display graph, data and
16503         runs informations.
16504         Checking source file modification is done in find_source.
16505
16506         * doc/gcov.texi: Append an s to sourcefile.
16507
16508 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
16509
16510         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
16511         (forced_nop): New pattern.
16512         * config/bfin/bfin.c: Include "df.h".
16513         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
16514         (bfin_discover_loop): Use df_get_live_in instead of
16515         global_live_at_start.
16516         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
16517         df_analyze when done.
16518         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
16519         the insns.  Use QImode for the final insn in a bundle.  Call
16520         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
16521         gen_nop.
16522         (reorder_var_tracking_notes): New function.
16523         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
16524         update_life_info.  Call df_analyze after scheduling and bundle
16525         generation.  Call reorder_var_tracking_notes if generating these
16526         notes.  Call df_finish_pass at the end.
16527
16528 2007-06-12  Dirk Mueller  <dmueller@suse.de>
16529
16530         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
16531         a comparison, not an assignment.
16532
16533 2007-06-12  Olivier Hainque  <hainque@adacore.com>
16534
16535         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
16536         Request walking the subtrees only, leaving the current is_lhs/val_only
16537         untouched.
16538         (convert_non_local_reference): Likewise.
16539
16540 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
16541
16542         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
16543
16544 2007-06-12  Richard Guenther  <rguenther@suse.de>
16545
16546         PR tree-optimization/15353
16547         PR tree-optimization/31657
16548         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
16549         * timevar.def: Add TV_TREE_IFCOMBINE.
16550         * tree-pass.h (pass_tree_ifcombine): Declare.
16551         * tree-ssa-ifcombine.c: New file.
16552         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
16553         * tree-flow.h (blocks_in_phiopt_order): Declare.
16554         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
16555         (tree-ssa-ifcombine.o): New dependencies.
16556
16557 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16558
16559         PR rtl-optimization/32293
16560         * combine.c (simplify_if_then_else): Truncate return from
16561         nonzero_bits() to correct mode.
16562
16563 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16564
16565         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
16566         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
16567
16568 2007-06-11  Diego Novillo  <dnovillo@google.com>
16569
16570         * Makefile.in (reload1.o-warn): Remove.
16571
16572 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
16573
16574         * combine.c (subst): Use reg_overlap_mentioned_p
16575         instead of comparing register numbers directly.
16576
16577 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16578
16579         * reload1.c (mark_home_live_1): Use the mode parameter.
16580
16581 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16582
16583         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
16584         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
16585         word "deferred".
16586         * df-core.c: Ditto.
16587
16588 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
16589
16590         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
16591
16592 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16593
16594         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
16595         from integer registers.
16596         (FP mode splitters): Handle TFmode.
16597
16598 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16599
16600         * tree-ssa-structalias.c (find_what_p_points_to): Return false
16601         for ref-all pointers that point-to anything.
16602
16603 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
16604
16605         * config/arm/arm.c (arm_output_dwarf_dtprel,
16606         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
16607
16608 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
16609
16610         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
16611         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
16612         to memory moves.
16613
16614 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
16615
16616         * tree.c (signed_or_unsigned_type_for): New.
16617         (unsigned_type_for): Use signed_or_unsigned_type_for.
16618         (signed_type_for): Use signed_or_unsigned_type_for.
16619         * tree.h (signed_or_unsigned_type_for): New.
16620         (get_signed_or_unsigned_type): Remove.
16621         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
16622         lang_hooks.types.signed_type
16623         (size_diffop): Likewise.
16624         (all_ones_mask_p): Likewise.
16625         (build_range_check): Likewise.
16626         (fold_cond_expr_with_comparison): Likewise.
16627         (fold_cond_expr_with_comparison): Likewise.
16628         (unextend): Likewise.
16629         (extract_muldiv_1): Likewise.
16630         (fold_single_bit_test_into_sign_test): Likewise.
16631         (fold_binary): Likewise.
16632         (fold_ternary): Likewise.
16633         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
16634         instead of get_signed_or_unsigned_type.
16635         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
16636         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16637         * expr.c (signed_or_unsigned_type_for): Use
16638         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
16639         * langhooks.c (get_signed_or_unsigned_type): Remove.
16640         (lhd_signed_or_unsigned_type): Remove.
16641         * langhooks.h (lang_hooks_for_types): Remove signed_type and
16642         signed_or_unsigned_type.
16643         (lhd_signed_or_unsigned_type): Remove.
16644         * expmed.c (make_tree): Use signed_type_for instead of
16645         lang_hooks.types.signed_type.
16646         * c-common.c (same_scalar_type_ignoring_signedness): Use
16647         c_common_signed_type instead of lang_hooks.types.signed_type.
16648         (c_common_unsigned_type): New.
16649         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
16650         (shorten_compare): Use c_common_unsigned_type instead of
16651         c_common_signed_or_unsigned_type.
16652         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
16653         unsigned_type_for.
16654         * convert.c (convert_to_integer): Use signed_type_for instead of
16655         lang_hooks.types.signed_type.
16656         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16657         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
16658         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
16659         * c-format.c (check_format_types): Use c_common_unsigned_type
16660         instead of unsigned_type_for.
16661         * c-decl.c (groakdeclarator): Likewise.
16662         * c-typeck.c (convert_for_assignment): Likewise.
16663         * c-common.h (c_common_unsigned_type): New.
16664
16665 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16666
16667         PR target/32280
16668         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
16669         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
16670
16671 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16672
16673         PR middle-end/32279
16674         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
16675         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
16676
16677 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
16678             Sebastian Pop  <sebpop@gmail.com>
16679
16680         * lambda-code.c (remove_iv): New.
16681         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
16682
16683 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
16684
16685         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
16686         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
16687         * tree-ssa-loop-prefetch.c: Include optabs.h.
16688         (FENCE_FOLLOWING_MOVNT): New macro.
16689         (struct mem_ref): Add independent_p and storent_p fields.
16690         (record_ref): Initalize the new fields.
16691         (gather_memory_references_ref): Return true if the reference
16692         could be analysed.
16693         (gather_memory_references): Check whether all memory accesses
16694         in loop were recorded.
16695         (should_issue_prefetch_p): Return false for nontemporal stores.
16696         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
16697         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
16698         (determine_loop_nest_reuse): Detect independent memory references.
16699         (loop_prefetch_arrays): Call mark_nontemporal_stores.
16700         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
16701         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
16702         * config/i386/i386.h (x86_mfence): Declare.
16703         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
16704         * config/i386/i386.c (x86_mfence): New variable.
16705         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
16706
16707         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
16708         * optabs.c (init_optabs): Initialize storent_optab.
16709         * optabs.h (enum optab_index): Add OTI_storent.
16710         (storent_optab): Declare.
16711         * genopinit.c (optabs): Add initialization for storent_optab.
16712         * tree.h (MOVE_NONTEMPORAL): New macro.
16713         * expr.c (expand_assignment, store_expr, store_constructor_field,
16714         store_constructor, store_field, expand_expr_real_1): Propagate
16715         nontemporality of the expanded store.
16716         (emit_storent_insn): New function.
16717         * expr.h (expand_assignment, store_expr): Declaration changed.
16718         * function.c (assign_parm_setup_reg): Pass false as nontemporality
16719         to expand_assignment.
16720         * stmt.c (expand_asm_expr): Ditto.
16721         * calls.c (initialize_argument_information): Pass false as
16722         nontemporality to store_expr.
16723         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
16724         storentsi): New.
16725
16726 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16727
16728         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
16729         parameter, use it.
16730         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
16731
16732 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16733
16734         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
16735         and allow DECL_P here.
16736
16737 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
16738
16739         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
16740         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
16741         track of the size of the expression.
16742         * cfghooks.c (merge_blocks): Remove block from loops structure only
16743         after call of the merge_blocks hook.
16744
16745 2007-06-09  Tom Tromey  <tromey@redhat.com>
16746
16747         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
16748         (deprecated_state): Removed.
16749         (start_decl): Update.
16750         (enum deprecated_states): Moved earlier.
16751         (groktypename): Update.
16752         (push_parm_decl): Likewise.
16753         (grokfield): Likewise.
16754         (start_function): Likewise.
16755
16756 2007-06-09  Ian Lance Taylor  <iant@google.com>
16757
16758         PR tree-optimization/32169
16759         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
16760         CONVERT_EXPR, check whether min and max both converted to an
16761         overflow infinity representation.
16762
16763 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
16764
16765         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
16766         not inserted on the edge.
16767
16768 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
16769
16770         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
16771         instructions if they are supported.
16772         (__divsi3, __umodsi3, __modsi3): Likewise.
16773         (__ashldi3, __ashrdi3, __lshrdi3): New.
16774         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
16775
16776 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
16777             Tony Linthicum <tony.linthicum@amd.com>
16778
16779         * doc/invoke.texi: Add fvect-cost-model flag.
16780         * common.opt (fvect-cost-model): New flag.
16781         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
16782         cost fields in stmt_vec_info struct for STMT.
16783         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
16784         fields in stmt_vec_info struct and access functions for the same.
16785         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
16786         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
16787         load, store and vector to scalar operation.
16788         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
16789         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
16790         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
16791         (TARG_VEC_STORE_COST): Define cost of vector store.
16792         (vect_estimate_min_profitable_iters): Define new function.
16793         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
16794         check to evaluate if loop iterations are less than minimum profitable
16795         iterations determined by cost model or minimum vect loop bound defined
16796         by user, whichever is more conservative.
16797         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
16798         run-time check to evaluate if loop iterations are less than minimum
16799         profitable iterations determined by cost model or minimum vect loop
16800         bound defined by user, whichever is more conservative.
16801         (vect_estimate_min_profitable_iterations): New function to estimate
16802         mimimimum iterartions required for vector version of loop to be
16803         profitable over scalar version.
16804         (vect_model_reduction_cost): New function.
16805         (vect_model_induction_cost): New function.
16806         (vect_model_simple_cost): New function.
16807         (vect_cost_strided_group_size): New function.
16808         (vect_model_store_cost): New function.
16809         (vect_model_load_cost): New function.
16810         (vectorizable_reduction): Call vect_model_reduction_cost during
16811         analysis phase.
16812         (vectorizable_induction): Call vect_model_induction_cost during
16813         analysis phase.
16814         (vectorizable_load): Call vect_model_load_cost during analysis phase.
16815         (vectorizable_store): Call vect_model_store_cost during analysis phase.
16816         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
16817         vectorizable_promotion, vectorizable_demotion): Call
16818         vect_model_simple_cost during analysis phase.
16819
16820 2007-06-08  Simon Baldwin  <simonb@google.com>
16821
16822         * reg-stack.c (get_true_reg): Readability change.  Moved default case
16823         label into direct switch statement scope.
16824
16825 2007-06-08  Simon Baldwin  <simonb@google.com>
16826
16827         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
16828         in gcc_assert() with '==' comparison.
16829
16830 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16831
16832         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
16833         TARGET_ABM handling of x86_popcnt variable.
16834
16835 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16836
16837         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
16838         __builtin_copysignq and __builtin_infq built-in functions.
16839
16840 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16841
16842         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
16843         SSE4.2 section.  Correct built-in function names in SSE4A section.
16844
16845 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16846
16847         PR tree-optimization/32243
16848         * tree-vect-transform.c (vectorizable_type_promotion): Move check
16849         for ncopies after ratio check between nunits_out and nunits_in.
16850         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
16851
16852 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
16853
16854         PR tree-optimization/32224
16855         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
16856         vectorization upon a non GIMPLE_MODIFY_STMT.
16857
16858 2007-06-08  Christian Bruel  <christian.bruel@st.com>
16859
16860         PR target/29953
16861         * config/sh/sh.md (doloop_end): New pattern and splitter.
16862         * loop-iv.c (simple_rhs_p): Check for hardware registers.
16863
16864 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
16865
16866         PR middle-end/32209
16867         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
16868         functions.
16869         (verify_dominators): Do not change dominance tree.
16870
16871 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16872
16873         * config/sh/constraints.md: New file.
16874         * config/sh/sh.c: Include tm-constrs.h.
16875         (reg_class_from_letter): Remove.
16876         (prepare_cbranch_operands): Use satisfies_constraint_*
16877         function instead of macro.
16878         (andcosts, broken_move, sh_secondary_reload): Likewise.
16879         * config/sh/predicates.md (trapping_target_operand): Likewise.
16880         (and_operand, arith_operand, arith_reg_or_0_operand,
16881         cmp_operand, logical_operand, target_operand,
16882         ua_address_operand, ua_offset, xor_operand): Likewise.
16883         * config/sh/sh.md: Include constraints.md.
16884         (*movsicc_t_false): Use satisfies_constraint_* function
16885         instead of macro.
16886         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
16887         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
16888         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
16889         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
16890         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
16891         (REG_CLASS_FROM_CONSTRAINT): Remove.
16892         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
16893         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
16894         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
16895         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
16896         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
16897         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
16898         function instead of macro.
16899         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
16900         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
16901         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
16902         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
16903         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
16904         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
16905         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
16906         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
16907         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
16908         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
16909         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
16910         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
16911         EXTRA_CONSTRAINT_STR): Likewise.
16912         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
16913
16914 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16915
16916         * config/i386/darwin.h (STACK_BOUNDARY): Define.
16917
16918 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
16919
16920         PR c++/30759
16921         * c-common.h (flag_cpp0x): Replaced by...
16922         (cxx_dialect): ... this new variable specifying the C++ dialect that
16923         is used.
16924         * c-common.c (flag_cpp0x): Removed.
16925         (cxx_dialect): Defined.
16926         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
16927         cxx_dialect.
16928         * c-opts.c (c_common_post_options): Likewise.
16929         (set_std_cxx98): Set cxx_dialect to cxx98.
16930         (set_std_cxx0x): Set cxx_dialect to cxx0x.
16931
16932 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16933             Hui-May Chang <hm.chang@apple.com>
16934
16935         * doc/invoke.texi (Darwin Options): Update documentation for
16936         -mmacosx-version-min.
16937         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
16938         * config/darwin-driver.c: New file.
16939         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
16940         * config/t-darwin (darwin-driver.o): New rule.
16941
16942         * config/darwin-c.c (version_as_macro): Ignore low digit.
16943
16944 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
16945
16946         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
16947         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
16948         (CSGNMODE): New mode macro.
16949         (CSGNVMODE): New mode attribute.
16950         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
16951         expander using CSGNMODE mode macro.  Handle TFmode.
16952         (copysign<mode>3_const): Rename from copysignsf3_const and
16953         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
16954         Handle TFmode.
16955         (copysign<mode>3_var): Rename from copysignsf3_var and
16956         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
16957         Handle TFmode.
16958         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
16959         mode macro.  Handle TFmode.
16960         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
16961         (iortf3, *iortf3): Ditto.
16962         (xortf3, *xortf3): Ditto.
16963         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
16964         TFmode and TImode masks.
16965         (ix86_expand_copysign): Expand TFmode copysign insn.
16966         (IX86_BUILTIN_INFQ): New.
16967         (IX86_BUILTIN_FABSQ): Ditto.
16968         (IX86_BUILTIN_COPYSIGNQ): Ditto.
16969         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
16970         [__builtin_fabsq]: Ditto.
16971         [__builtin_copysignq]: Ditto.
16972         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
16973         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
16974         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
16975         ix86_expand_binop_builtin().
16976
16977 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
16978
16979         * config/xtensa/lib1funcs.asm: Clean up whitespace.
16980
16981 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
16982
16983         PR target/31850
16984         * rtl.h (push_to_sequence2): New.
16985         * emit-rtl.c (push_to_sequence2): New.
16986         * function.c (assign_parm_data_all): Add new fields.
16987         (assign_parm_setup_block): Call push_to_sequence2 instead of
16988         push_to_sequence.
16989         (assign_parm_setup_reg): Ditto.
16990         (assign_parm_setup_stack): Ditto.
16991         (assign_parms_unsplit_complex): Ditto.
16992         (assign_parms): Change field name.
16993
16994 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
16995
16996         PR tree-optimization/32220
16997         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
16998         phi node is reached before defining statement.
16999
17000 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17001
17002         PR tree-opt/32231
17003         * tree-vect-transform.c (vectorizable_call): Call update_stmt
17004         after changing the right hand side of the assignment.
17005
17006 2007-06-06  Eric Christopher  <echristo@apple.com>
17007
17008         * config.gcc (i?86-*-darwin*): Remove arch parameter.
17009         (x86_64-*-darwin*): Ditto.
17010         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
17011         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17012
17013 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17014
17015         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
17016         coding conventions.
17017         (add_key): Likewise.
17018         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
17019         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
17020         variable names.
17021         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
17022         macros.
17023         (add_cost_one_coalesce): Likewise.
17024         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
17025         variable names. Rename orig to orig_name for consistency.
17026         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
17027         coding conventions.
17028         (cprop_into_successor_phis): Avoid using C++ keywords as variable
17029         names.
17030         (record_equivalences_from_stmt): Likewise.
17031         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
17032         the coding conventions.
17033         (memory_ssa_name_same): Likewise.
17034         (dse_optimize_stmt): Likewise.
17035         (dse_record_phis): Likewise.
17036         (dse_finalize_block): Likewise.
17037         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
17038         keywords as variable names.
17039         (may_move_till): Cast according to the coding conventions.
17040         (force_move_till_expr): Avoid using C++ keywords as variable names.
17041         (force_move_till): Cast according to the coding conventions.
17042         (memref_hash): Likewise.
17043         (memref_eq): Likewise.
17044         (gather_mem_refs_stmt): Likewise.
17045         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
17046         using C++ keywords as variable names.
17047         (idx_find_step): Cast according to the coding conventions.
17048         (idx_record_use): Likewise.
17049         (find_depends): Likewise.
17050         (prepare_decl_rtl): Likewise.
17051         (mbc_entry_hash): Likewise.
17052         (mbc_entry_eq): Likewise.
17053         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
17054         (simplify_replace_tree): Avoid using C++ keywords as variable names.
17055         (idx_infer_loop_bounds): Cast according to the coding conventions.
17056         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
17057         * tree-ssa-math-opts.c (occ_new ): Likwise.
17058         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
17059         macros.
17060         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
17061         variable names.
17062         (add_use_op): Likewise.
17063         (add_vop): Likewise.
17064         (add_vuse_op): Likewise.
17065         (add_vdef_op): Likewise.
17066         (get_expr_operands): Likewise.
17067         (push_stmt_changes): Use type safe memory macros.
17068         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
17069         keywords as variable names.
17070         (conditional_replacement): Likewise.
17071         (minmax_replacement): Likewise.
17072         (abs_replacement): Likewise.
17073         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
17074         coding conventions.
17075         (insert_fake_stores): Avoid using C++ keywords as variable names.
17076         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
17077         conventions.
17078         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
17079         (heapvar_insert): Use type safe memory macros.
17080         (new_var_info): Cast according to the coding conventions.
17081         (new_constraint): Likewise.
17082         (remove_preds_and_fake_succs): Use type safe memory macros.
17083         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
17084         conventions.
17085         (thread_single_edge): Likewise.
17086         (thread_through_loop_header): Likewise.
17087
17088 2007-06-06  Eric Christopher  <echristo@apple.com>
17089
17090         * config/i386/i386.c (override_options): Move handling
17091         of TARGET_SUBTARGET* earlier.
17092
17093 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
17094
17095         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
17096         use %n on printf.
17097
17098 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
17099
17100         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
17101         emited outside of basic block.
17102         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
17103         the created blocks.
17104         * rtl.h (delete_insn_chain): Declaration changed.
17105         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
17106         non-removed insns.
17107         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
17108         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
17109         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
17110         to delete_insn_chain.
17111         (rtl_verify_flow_info_1): Verify that the insns in header and footer
17112         do not have bb field set.
17113         (rtl_verify_flow_info): Verify that insns between basic blocks do not
17114         have bb field set.
17115         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
17116         * cfgcleanup.c (try_optimize_cfg): Ditto.
17117
17118 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17119
17120         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
17121         (lambda_body_vector_new): Use type safe memory macros.
17122         (lambda_linear_expression_new): Likewise.
17123         (lambda_loopnest_new): Likewise.
17124         (lambda_lattice_new): Likewise.
17125         (replace_uses_equiv_to_x_with_y): Cast according to the coding
17126         conventions. Use type safe memory macros.
17127         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
17128         (lambda_body_vector_s): Likewise.
17129         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
17130         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
17131
17132 2007-06-06  Richard Guenther  <rguenther@suse.de>
17133
17134         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
17135         if we need to schedule cfg_cleanup.
17136         (tree_ssa_forward_propagate_single_use_vars): Do so.
17137
17138 2007-06-06  Ian Lance Taylor  <iant@google.com>
17139
17140         * fold-const.c (merge_ranges): If range_successor or
17141         range_predecessor fail, just return 0.
17142
17143 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17144
17145         PR tree-optimization/32216
17146         * tree-vectorizer.c (supportable_widening_operation): Determine
17147         signedness of FIX_TRUNC_EXPR from output operand.
17148         (supportable_narrowing_operation): Ditto.
17149         * tree-vect-generic.c (expand_vector_operations_1): Determine
17150         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
17151         from input operand.
17152
17153 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17154
17155         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
17156         (struct pta): ...from here. Change flags to unsigned to avoid
17157         excessive casting (as it is used as a bit mask).
17158         (override_options): Add casts according to the coding convenventions.
17159         (x86_64_elf_unique_section): Likewise.
17160         (examine_argument): Avoid using C++ keywords as variable names.
17161         (construct_container): Likewise.
17162         (legitimize_pic_address): Likewise.
17163         (get_dllimport_decl): Cast according to the coding conventions. Use
17164         type safe memory macros.
17165         (legitimize_address): Cast according to the coding conventions.
17166         (emit_i387_cw_initialization): Corrected the type of slot to enum
17167         ix86_stack_slot.
17168         (ix86_init_machine_status): Use type safe memory macros.
17169         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
17170         (bdesc_pcmpistr): Likewise.
17171         (bdesc_crc32): Likewise.
17172         (bdesc_sse_3arg): Likewise.
17173         (bdesc_2arg): Likewise.
17174         (bdesc_1arg): Likewise.
17175         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
17176         (ix86_expand_sse_pcmpistr): Likewise.
17177         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
17178         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
17179         int to match the langhook definition.
17180         (ix86_builtin_conversion): Change the type of code to unsigned init to
17181         match the langhook definition.
17182         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
17183         names.
17184         (ix86_preferred_output_reload_class): Likewise.
17185         (ix86_cannot_change_mode_class): Likewise.
17186         (ix86_memory_move_cost): Likewise.
17187         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
17188         avoid excessive casting later on.
17189         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
17190
17191 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17192
17193         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
17194         as flags setting insn.
17195         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
17196
17197 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17198
17199         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
17200         (UNSPEC_ROUND): New.
17201         ("sse4_1_round<mode>2"): New insn pattern.
17202         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
17203         SSE4.1 targets.
17204         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
17205         expander using SSEMODEF mode macro.  Expand using
17206         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17207         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
17208         expander using SSEMODEF mode macro.  Expand using
17209         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17210         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
17211         expander using SSEMODEF mode macro.  Expand using
17212         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17213         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
17214         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
17215         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
17216         UNSPEC_ROUNDS.
17217
17218 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
17219             Sebastian Pop  <sebpop@gmail.com>
17220
17221         * lambda.h (build_linear_expr): New.
17222         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
17223         Use build_linear_expr, call fold and force_gimple_operand.
17224         (lambda_loopnest_to_gcc_loopnest): Check that there is
17225         something to insert.
17226         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
17227
17228 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
17229
17230         PR preprocessor/23479
17231         * doc/extend.texi: Document the 0b-prefixed binary integer
17232         constant extension.
17233
17234 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17235
17236         PR tree-optimization/32215
17237         * tree-vectorizer.c (supportable_widening_operation): Return false
17238         for unsupported FIX_TRUNC_EXPR tree code.
17239         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
17240
17241 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
17242
17243         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
17244         register on SPE targets.  Change documentation to reflect
17245         reality.
17246         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
17247         Change FIXED_SCRATCH to 14 and document why we're keeping r14
17248         out of the register allocation pool.
17249         (rs6000_reg_live_or_pic_offset_p): New function.
17250         (rs6000_emit_prologue): Move the actual saving of LR up to free
17251         r0 for holding r11.  Split saving of SPE 64-bit registers into
17252         its own case.  Ensure that offsets will always be in-range for
17253         'evstdd' by using r11 as a scratch register to point at the start
17254         of the SPE save area.  Save r11 if necessary, as it is the static
17255         chain register.
17256         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
17257         into its own case.  Ensure that offsets will always be in-range
17258         for 'evldd' by using r11 as a scratch register to point at the
17259         start of the SPE save area.  Also adjust r11 when restoring
17260         the stack pointer to compensate for pre-loading r11.
17261
17262 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
17263
17264         * cfg.c (init_flow): Use type safe memory macros.
17265         (alloc_block): Likewise.
17266         (unchecked_make_edge): Likewise.
17267         (dump_flow_info): Avoid using C++ keywords as variable names.
17268         (copy_original_table_clear): Cast according to the coding conventions.
17269         (copy_original_table_set): Likewise.
17270         * cfgexpand (label_rtx_for_bb): Likewise.
17271         (expand_gimple_basic_block): Likewise.
17272         * cfghooks.c (dump_bb): Likewise.
17273         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
17274         variable names.
17275         (lv_add_condition_to_bb): Likewise.
17276         * cfglayout (relink_block_chain): Cast according to the coding
17277         conventions.
17278         (fixup_reorder_chain): Likewise.
17279         (fixup_fallthru_exit_predecessor): Likewise.
17280         * cfgloop.c (glb_enum_p): Likewise.
17281         (get_exit_description): Likewise.
17282         (dump_recorded_exit): Likewise.
17283         * cfgloop.h (enum loop_estimation): Move out of struct scope...
17284         (struct loop): ... from here.
17285         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
17286         conventions.
17287         * cfgrtl.c (rtl_create_basic_block): Likewise.
17288         (rtl_split_block): Likewise.
17289         (rtl_dump_bb): Likewise.
17290         (cfg_layout_split_block): Likewise.
17291         (init_rtl_bb_info): Use typesafe memory macros.
17292
17293         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
17294         * graphds.h: Updated all usages of edge to graph_edge.
17295         * graphds.c: Likewise.
17296         * cfgloopanal.c: Likewise.
17297
17298 2007-06-05  Ian Lance Taylor  <iant@google.com>
17299
17300         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
17301         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
17302         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
17303         expression.
17304         (test_for_singularity): Likewise.
17305
17306 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17307
17308         * config/i386/constraints.md ("Y2"): Replaced by ...
17309         ("Yt"): This.
17310         * config/i386/i386.md: Likewise.
17311         * config/i386/mmx.md: Likewise.
17312         * config/i386/sse.md: Likewise.
17313
17314 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17315
17316         * config/i386/constraints.md ("z"): Replaced by ...
17317         ("Y0"): This.
17318         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
17319         (sse4_1_blendvps): Likewise.
17320         (sse4_1_pblendvb): Likewise.
17321         (sse4_2_pcmpestr): Likewise.
17322         (sse4_2_pcmpestrm): Likewise.
17323         (sse4_2_pcmpestr_cconly): Likewise.
17324         (sse4_2_pcmpistr): Likewise.
17325         (sse4_2_pcmpistrm): Likewise.
17326         (sse4_2_pcmpistr_cconly): Likewise.
17327
17328 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
17329
17330         * matrix-reorg.c (transform_access_sites): Fix computation.
17331         (transform_allocation_sites): Same.
17332
17333 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17334
17335         * config/i386/i386.c (override_options): Use
17336         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
17337
17338 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17339
17340         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
17341         (nonimm_not_xmm0_operand): Ditto.
17342         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
17343         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
17344         as operand[2] predicate.  Require "z" class XMM register for
17345         operand[3].  Adjust asm template.
17346         ("sse4_1_blendvpd"): Ditto.
17347         ("sse4_1_pblendvb"): Ditto.
17348         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
17349         force op2 into xmm0 register for variable blend instructions.
17350
17351 2007-06-04  Tom Tromey  <tromey@redhat.com>
17352
17353         * c-tree.h (start_enum): Update.
17354         (build_enumerator): Likewise.
17355         * c-decl.c (enum_next_value): Removed.
17356         (enum_overflow): Likewise.
17357         (start_enum): Add c_enum_contents argument.  Don't use globals.
17358         (build_enumerator): Likewise.
17359         * c-tree.h (struct c_enum_contents): New struct.
17360
17361 2007-06-04  Tom Tromey  <tromey@redhat.com>
17362
17363         * c-common.c (c_common_get_alias_set): Fix indentation.
17364
17365 2007-06-04  Ian Lance Taylor  <iant@google.com>
17366
17367         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
17368         to overflow, reduce overflow infinity to regular infinity.
17369         (vrp_var_may_overflow): New static function.
17370         (vrp_visit_phi_node): Check vrp_var_may_overflow.
17371
17372 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
17373
17374         * stor-layout.c (layout_type): Remove duplicate code.
17375
17376 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
17377
17378         PR c/32191
17379         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
17380         before build_common_builtin_nodes ().
17381
17382 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
17383
17384         PR target/31733
17385         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
17386
17387 2007-06-04  Jan Hubicka  <jh@suse.cz>
17388
17389         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
17390         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
17391         instead of _stat version.
17392
17393 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17394
17395         PR tree-optimization/32194
17396         * tree-predcom.c (determine_offset): Check that both references have
17397         the same type.
17398
17399 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17400
17401         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
17402         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
17403         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
17404         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
17405         Add argument to iterate_fix_dominators call.
17406         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
17407         * gcse.c (hoist_code): Change domby to vector.
17408         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
17409         Add argument to iterate_fix_dominators call.
17410         * loop-doloop.c (doloop_modify): Changed recount_dominator to
17411         recompute_dominator.
17412         * lambda-code.c (perfect_nestify): Ditto.
17413         * cfgloopanal.c: Include graphds.h.
17414         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
17415         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
17416         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
17417         add_edge call.
17418         * graphds.c: New file.
17419         * graphds.h: New file.
17420         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
17421         (get_dominated_by, get_dominated_by_region): Change return type to
17422         vector.
17423         (verify_dominators): Recompute all dominators and compare the results.
17424         (recount_dominator): Renamed to ...
17425         (recompute_dominator): ... this.  Do not check that the block is
17426         dominated by entry.
17427         (iterate_fix_dominators): Reimplemented.
17428         (prune_bbs_to_update_dominators, root_of_dom_tree,
17429         determine_dominators_for_sons): New functions.
17430         * et-forest.c (et_root): New function.
17431         * et-forest.h (et_root): Declare.
17432         * Makefile.in (graphds.o): Add.
17433         (cfgloopanal.o): Add graphds.h dependency.
17434         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
17435         * basic-block.h (get_dominated_by, get_dominated_by_region,
17436         iterate_fix_dominators): Declaration changed.
17437         (recount_dominator): Renamed to ...
17438         (recompute_dominator): ... this.
17439         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
17440         (thread_through_all_blocks): Do not free dominance info.
17441
17442 2007-06-03  Andreas Schwab  <schwab@suse.de>
17443
17444         * config/m68k/m68k.c (override_options): Don't override
17445         REAL_MODE_FORMAT.
17446         * config/m68k/m68k-modes.def (SF, DF): Define to use
17447         motorola_single_format and motorola_double_format, resp.
17448         * real.c (motorola_single_format): Renamed from
17449         coldfire_single_format.
17450         (motorola_double_format): Renamed from coldfire_double_format.
17451         (encode_ieee_extended): Generate a proper canonical NaN image
17452         respecting canonical_nan_lsbs_set.
17453         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
17454         true.
17455         * real.h: Adjust declarations.
17456
17457 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
17458
17459         PR target/32163
17460         * config/sh/sh.md (symGOT_load): Don't schedule insns when
17461         the symbol is generated with the stack protector.
17462
17463 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
17464
17465         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
17466         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
17467         "interrupt".
17468         * doc/extend.texi (interrupt): Mention m68k.
17469
17470 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
17471
17472         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
17473         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
17474         (ix86_expand_sse_pcmpestr): Do not check operands for
17475         "register_operand", when insn operand predicate is "register_operand".
17476         (ix86_expand_sse_pcmpistr): Ditto.
17477
17478 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
17479             Uros Bizjak  <ubizjak@gmail.com>
17480
17481         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
17482         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
17483         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
17484         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
17485         * config/i386/constraints.md ("z"): New register constraint
17486         for members of SSE_FIRST_REG class.
17487         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
17488         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
17489         SSE_FIRST_REG class.
17490         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
17491         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
17492         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
17493         (IX86_BUILTIN_PCMPESTRM128): Likewise.
17494         (IX86_BUILTIN_PCMPESTRA128): Likewise.
17495         (IX86_BUILTIN_PCMPESTRC128): Likewise.
17496         (IX86_BUILTIN_PCMPESTRO128): Likewise.
17497         (IX86_BUILTIN_PCMPESTRS128): Likewise.
17498         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
17499         (IX86_BUILTIN_PCMPISTRI128): Likewise.
17500         (IX86_BUILTIN_PCMPISTRM128): Likewise.
17501         (IX86_BUILTIN_PCMPISTRA128): Likewise.
17502         (IX86_BUILTIN_PCMPISTRC128): Likewise.
17503         (IX86_BUILTIN_PCMPISTRO128): Likewise.
17504         (IX86_BUILTIN_PCMPISTRS128): Likewise.
17505         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
17506         (struct builtin_description): Change "flag" field to unsigned.
17507         (bdesc_pcmpestr): New builtin description table.
17508         (bdesc_pcmpistr): Likewise.
17509         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
17510         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
17511         Initialize pcmp[ei]str[im] insns for SSE4.2.
17512         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
17513         (ix86_expand_sse_pcmpistr): Likewise.
17514         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
17515         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
17516         (UNSPEC_PCMPISTR): Likewise.
17517         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
17518         (sse4_2_pcmpestri):New isns pattern.
17519         (sse4_2_pcmpestrm): Likewise.
17520         (sse4_2_pcmpestr_cconly): Likewise.
17521         (sse4_2_pcmpistr): New insn patern and splitter.
17522         (sse4_2_pcmpistri):New isns pattern.
17523         (sse4_2_pcmpistrm): Likewise.
17524         (sse4_2_pcmpistr_cconly): Likewise.
17525         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
17526         in SSE4.2.
17527
17528 2007-06-01  David Daney  <ddaney@avtrex.com>
17529
17530         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
17531         LOADGP_ABSOLUTE and not binds_local_p.
17532
17533 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
17534
17535         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
17536
17537 2007-06-01  Ian Lance Taylor  <iant@google.com>
17538
17539         * tree-vrp.c (compare_name_with_value): Always set
17540         used_strict_overflow if we get a result from the variable itself.
17541
17542 2007-06-01  Ian Lance Taylor  <iant@google.com>
17543
17544         PR rtl-optimization/31455
17545         * lower-subreg.c (find_decomposable_subregs): Don't decompose
17546         subregs which have a cast between modes which are not tieable.
17547
17548 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
17549
17550         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
17551         breaks after return statements.
17552
17553 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
17554
17555         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
17556         only after no_new_pseudos.
17557
17558 2007-05-31  Eric Christopher  <echristo@apple.com>
17559
17560         * expr.c (convert_move): Assert that we don't have a BLKmode
17561         operand.
17562         (store_expr): Handle BLKmode moves by calling emit_block_move.
17563
17564 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
17565
17566         * c-typeck.c (build_indirect_ref): Include type in error message.
17567         (build_binary_op): Pass types to binary_op_error.
17568         * c-common.c (binary_op_error): Take two type arguments, print out
17569         types with error.
17570         * c-common.h (binary_op_error): Update prototype.
17571
17572 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17573
17574         * config/i386/i386.c: Correct coments on -mno-sse4.
17575
17576 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17577
17578         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
17579         (x86_64-*-*): Likewise.
17580         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
17581         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
17582         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
17583         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
17584         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
17585         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
17586         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
17587         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
17588         (OPTION_MASK_ISA_SSE4): Likewise.
17589         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
17590         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
17591         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
17592         (override_options): Support SSE4.2.
17593         (ix86_build_const_vector): Support SImode and DImode.
17594         (ix86_build_signbit_mask): Likewise.
17595         (ix86_expand_int_vcond): Support V2DImode.
17596         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
17597         (IX86_BUILTIN_CRC32HI): Likewise.
17598         (IX86_BUILTIN_CRC32SI): Likewise.
17599         (IX86_BUILTIN_CRC32DI): Likewise.
17600         (IX86_BUILTIN_PCMPGTQ): Likewise.
17601         (bdesc_crc32): Likewise.
17602         (bdesc_sse_3arg): Likewise.
17603         (ix86_expand_crc32): Likewise.
17604         (ix86_init_mmx_sse_builtins): Support SSE4.2.
17605         (ix86_expand_builtin): Likewise.
17606         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17607         __SSE4_2__ for -msse4.2.
17608         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
17609         (CRC32MODE): Likewise.
17610         (crc32modesuffix): Likewise.
17611         (crc32modeconstraint): Likewise.
17612         (sse4_2_crc32<mode>): Likewise.
17613         (sse4_2_crc32di): Likewise.
17614         * config/i386/i386.opt (msse4.2): New for SSE4.2.
17615         (msse4): Likewise.
17616         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
17617         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
17618         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
17619         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
17620         (vcondu<mode>): Likewise.
17621         * doc/extend.texi: Document SSE4.2 built-in functions.
17622         * doc/invoke.texi: Document -msse4.2/-msse4.
17623
17624 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
17625
17626         PR tree-optimization/32160
17627         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
17628         variable as gimple reg.
17629         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
17630
17631 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
17632
17633         * gcc.c (main): Don't consider linker options when issuing the
17634         warning about a linker input file not being used.
17635
17636 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17637
17638         * tree-vrp.c (compare_names): Initialize sop.
17639
17640 2007-05-30  Dirk Mueller  <dmueller@suse.de>
17641
17642         * cgraphunit.c (cgraph_analyze_function): Remove
17643         computation of inline parameters.
17644
17645 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
17646
17647         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
17648
17649 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
17650
17651         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
17652         Add vx-common.h.  Include vxworks.h between vx-common.h and
17653         arm/vxworks.h.
17654         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
17655         redefining.
17656         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
17657         (TARGET_ASM_DESTRUCTOR): Likewise.
17658         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
17659         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
17660         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
17661         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
17662         (VXWORKS_ENDIAN_SPEC): Define.
17663         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
17664         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
17665         VXWORKS_* equivalents.
17666         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
17667         (ASM_FILE_START): Delete.
17668         (TARGET_VERSION): Reformat.
17669         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
17670         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
17671         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
17672         (FPBIT, DPBIT): Define.
17673         (fp-bit.c, dp-bit.c): New rules.
17674         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
17675         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
17676         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
17677         * config/arm/arm.h: Include vxworks-dummy.h.
17678         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
17679         Mark with ATTRIBUTE_UNUSED.
17680         (arm_override_options): Do not allow VxWorks RTP PIC to be used
17681         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
17682         make it incompatible with -msingle-pic-base.
17683         (arm_function_ok_for_sibcall): Return false for calls that might
17684         go through a VxWorks PIC PLT entry.
17685         (require_pic_register): New function, split out from...
17686         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
17687         for VxWorks RTPs.
17688         (arm_load_pic_register): Handle the VxWorks RTP initialization
17689         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
17690         (arm_emit_call_insn): New function.
17691         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
17692         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
17693         (pic_offset_arm): New pattern.
17694         (call, call_value): Use arm_emit_call_insn.
17695         (call_internal, call_value_internal): New expanders.
17696         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
17697         VxWorks unless __PIC__.
17698
17699 2007-05-30  Eric Christopher  <echristo@gmail.com>
17700
17701         * genrecog.c: Include regs.h in generated file.
17702         * genemit.c: Ditto. Fix up formatting.
17703         * config/mn10300/constraints.md: New.
17704         * config/mn10300/mn10300.md: Include.
17705         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
17706         Fix up for removed macro.
17707         * config/mn10300/predicates.md (call_address_operand): Ditto.
17708         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
17709         (CONST_OK_FOR_I): Ditto.
17710         (CONST_OK_FOR_J): Ditto.
17711         (CONST_OK_FOR_K): Ditto.
17712         (CONST_OK_FOR_L): Ditto.
17713         (CONST_OK_FOR_M): Ditto.
17714         (CONST_OK_FOR_N): Ditto.
17715         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
17716         (OK_FOR_Q): Ditto.
17717         (OK_FOR_R): Ditto.
17718         (OK_FOR_T): Ditto.
17719         (EXTRA_CONSTRAINT): Ditto.
17720
17721 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17722
17723         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
17724         Remove defines.
17725         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
17726         OPTION_MASK_ISA_64BIT.
17727         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
17728
17729 2007-05-30  Richard Guenther  <rguenther@suse.de>
17730
17731         PR middle-end/32152
17732         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
17733         types for comparison.
17734         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
17735         with original typed arguments.
17736         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
17737
17738 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
17739
17740         PR tree-optimization/31769
17741         * except.c (duplicate_eh_regions): Clear prev_try if
17742         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
17743
17744 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
17745
17746         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
17747         * tree-ssa-sink.c (statement_sink_location): Return basic block and
17748         bsi of the location where statements should be inserted.
17749         (sink_code_in_bb): Take bsi from statement_sink_location.
17750         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
17751         instead of bsi_start.
17752         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
17753         bsi_insert_after.
17754         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
17755         (bsi_move_before): Document inconsistency with bsi_move_after.
17756         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
17757
17758 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17759
17760         * config/i386/i386.h (TARGET_ABM): New define.
17761         (TARGET_POPCNT): Ditto.
17762         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
17763         New temporary defines to redefine from OPTION_ISA_* defines.
17764         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
17765         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
17766         (ix86_isa_flags): New extern int declaration.
17767         (TARGET_SUBTARGET_DEFAULT): New define.
17768         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
17769         (TARGET_SUBTARGET32_DEFAULT): Ditto.
17770         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
17771         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17772         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
17773         * config/i386/darwin.h: Change TARGET_64BIT define to
17774         OPTION_ISA_64BIT.
17775
17776         * config/i386/i386.opt (m3dnowa): Define as undocumented option
17777         using existing "ix86_isa_flags" varible.
17778         (m32, m64): Use existing "ix86_isa_flags" variable.
17779         (mmmx, m3dnow): Ditto.
17780         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
17781         (mabm): Define as non-negative option using "x86_abm" variable.
17782         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
17783
17784         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
17785         Rewrite feature test bitmap.
17786         (ix86_isa_flags): New initialized global int varible.
17787         (ix86_isa_flags_explicit): New static int variable.
17788         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
17789         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
17790         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
17791         target_flags_explicit.
17792         (override_options): Remove "target_enable" and "target_disable" fields
17793         from "struct ptt". Update processor_target_table accordingly. Remove
17794         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
17795         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
17796         "target_flags" and "ix86_isa_flags_explicit" instead of
17797         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
17798         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
17799         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
17800         to true when either of PTA_POPCNT or PTA_ABM is set in
17801         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
17802         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
17803         processor_alias_table flags entry.  Remove handling of
17804         "target_enable" and "target_disable" fields of processor_target_table.
17805         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
17806         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
17807         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
17808         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
17809         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
17810         "target_flags".
17811         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
17812
17813 2007-05-29  David Daney  <ddaney@avtrex.com>
17814
17815         PR gcc/31975
17816         * config/mips/mips.c (mips_output_mi_thunk): Emit
17817         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
17818
17819 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
17820         * config/i386/i386.c (ix86_function_regparm): Added checking of
17821         ix86_force_align_arg_pointer to determine the number of
17822         register parameters.
17823
17824 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
17825
17826         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
17827         (SET_DR_MISALIGNMENT): New.
17828         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
17829         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
17830         Use SET_DR_MISALIGNMENT.
17831         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
17832         pointer.
17833         * tree-data-ref.c (create_data_ref, compute_all_dependences,
17834         find_loop_nest): Export.
17835         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
17836         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
17837         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
17838         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
17839         New macros.
17840         (struct mem_ref): Add field reuse_distance.
17841         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
17842         Initialize reuse_distance field.
17843         (issue_prefetch_ref): Select temporality of prefetch according to
17844         reuse_distance.
17845         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
17846         self_reuse_distance, determine_loop_nest_reuse): New functions.
17847         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
17848         (tree_ssa_prefetch_arrays): Dump L2 cache size.
17849         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
17850         dependency.
17851
17852 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
17853
17854         * tree-ssa-alias.c: Add aliasing overview.
17855
17856 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
17857             Danny Smith  <dannysmith@users.sourceforge.net>
17858
17859         PR target/29498
17860         * config/i386/t-crtfm: Compile crtfastmath.o with
17861         -minline-all-stringops.
17862         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
17863         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
17864
17865 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17866
17867         * doc/md.texi: Document constraints on HP PA-RISC.
17868
17869         * pa/constraints.md: New file.
17870         * pa.md: Include constraints.md.
17871         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
17872         (integer_store_memory_operand, ldil_cint_p): New functions.
17873         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
17874         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17875         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
17876         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
17877         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
17878
17879 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
17880
17881         PR c/31339
17882         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
17883         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
17884         case POSTDECREMENT_EXPR>): Return the error_mark_node
17885         if either the real or imaginary parts would an
17886         error_mark_node.
17887
17888 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
17889
17890         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
17891         name when we remove it from a call.
17892
17893 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
17894
17895         * targhooks.c (default_narrow_bitfield): Remove.
17896         * targhooks.h: Remove the prototype for
17897         default_narrow_bitfield.
17898
17899         * langhooks-def.h: Remove the prototype for
17900         hook_get_alias_set_0.
17901         * langhooks.c (hook_get_alias_set_0): Remove.
17902
17903         * global.c (EXECUTE_IF_CONFLICT): Remove.
17904
17905 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17906
17907         PR tree-opt/32100
17908         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
17909         return true when truth_value_p is true and the type
17910         is of signed:1.
17911
17912 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
17913
17914         * doc/install.texi (Prerequisites): We no longer require Autoconf
17915         2.13 for the top-level.
17916
17917 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
17918
17919         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
17920         memory access via x86_expand_vector_move_misalign() only for
17921         TImode values on 32-bit targets.
17922
17923 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
17924
17925         * matrix-reorg.c: New file. Implement matrix flattening and
17926         transposing optimization.
17927         * tree-pass.h: Add matrix reorg pass.
17928         * common.opt: Add fipa-mreorg flag.
17929         * Makefile.in: Add matrix-reorg.c.
17930         * passes.c: Add matrix reorg pass.
17931         * varpool.c (add_new_static_var): New function.
17932         * cgraph.h (add_new_static_var): Declare.
17933
17934 2007-05-27  Eric Christopher  <echristo@apple.com>
17935
17936         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
17937         sp_offset depending on stack size. Save r12 depending
17938         on registers we're saving later.
17939         (rs6000_emit_epilogue): Update sp_offset depending only
17940         on stack size.
17941
17942 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
17943
17944         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
17945         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17946         * ifcvt.c (if_convert): Ditto.
17947         * tree-ssa-threadupdate.c (thread_block): Ditto.
17948         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
17949         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
17950         verify_loop_closed_ssa): Check number_of_loops instead of
17951         current_loops.
17952         * predict.c (tree_estimate_probability): Ditto.
17953         * tree-if-conv.c (main_tree_if_conversion): Ditto.
17954         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
17955         * modulo-sched.c (sms_schedule): Ditto.
17956         * tree-scalar-evolution.c (scev_const_prop): Ditto.
17957         (scev_finalize): Do not do anything if scev analysis was not
17958         initialized.
17959         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
17960         current_loops == NULL.
17961         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
17962         * loop-init.c (loop_optimizer_init): Do not free current_loops when
17963         there are no loops.
17964         (loop_optimizer_finalize): Assert that loops were analyzed.
17965         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
17966         rtl_doloop): Check number_of_loops instead of current_loops.
17967         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
17968         current_loops == NULL.
17969         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
17970         gate_tree_vectorize tree_linear_transform, check_data_deps,
17971         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
17972         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
17973         Check number_of_loops instead of current_loops.
17974         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
17975         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
17976         free loops if available.
17977         (execute_pre): Do not pass do_fre to fini_pre.
17978
17979 2007-05-27  Tobias Burnus  <burnus@net-b.de>
17980
17981         PR middle-end/32083
17982         * real.c (mpfr_from_real): Fix sign of -Inf.
17983
17984 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17985
17986         * tree-vect-transform.c (vectorizable_conversion): Initialize
17987         tree_code variables to ERROR_MARK.
17988         (vectorizable_type_demotion): Likewise.
17989         (vectorizable_type_promotion): Likewise.
17990
17991 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
17992
17993         PR target/32065
17994         * config/i386/i386.md (movti): Handle push operands via
17995         ix86_expand_push().
17996
17997 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
17998
17999         * basic-block.h: Remove the prototype for merge_seq_blocks.
18000         * cfgcleanup.c (merge_seq_blocks): Remove.
18001
18002         * tree-flow.h: Remove the prototype for is_aliased_with.
18003         * tree-ssa-alias.c (is_aliased_with): Remove.
18004
18005 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
18006
18007         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
18008
18009         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
18010
18011         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
18012         ix86_expand_sse4_unpack if SSE4.1 is enabled.
18013         (vec_unpacks_hi_v16qi): Likewise.
18014         (vec_unpacku_lo_v16qi): Likewise.
18015         (vec_unpacks_lo_v16qi): Likewise.
18016         (vec_unpacku_hi_v8hi): Likewise.
18017         (vec_unpacks_hi_v8hi): Likewise.
18018         (vec_unpacku_lo_v8hi): Likewise.
18019         (vec_unpacks_lo_v8hi): Likewise.
18020         (vec_unpacku_hi_v4si): Likewise.
18021         (vec_unpacks_hi_v4si): Likewise.
18022         (vec_unpacku_lo_v4si): Likewise.
18023         (vec_unpacks_lo_v4si): Likewise.
18024
18025 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
18026
18027         * c-typeck.c, config/arm/arm.c, config/darwin.c,
18028         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
18029         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
18030         follow spelling conventions in various
18031         warning/error/diagnostic messages.
18032
18033         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
18034         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
18035         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
18036         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
18037         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
18038         * doc/tm.texi: Follow spelling conventions.
18039
18040 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18041
18042         PR tree-opt/32090
18043         * tree-ssa-forwprop.c
18044         (forward_propagate_addr_into_variable_array_index): Remove
18045         the lhs argument.  Use the type of def_rhs instead of lhs.
18046         (forward_propagate_addr_expr_1): Update use of
18047         forward_propagate_addr_into_variable_array_index.
18048
18049 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
18050             Nigel Stephens  <nigel@mips.com>
18051
18052         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
18053         function attributes, "far" being an alias for "long_call".
18054         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
18055         (mips_near_type_p, mips_far_type_p): New.
18056         (mips_comp_type_attributes): New function to check that attributes
18057         attached to a function type are compatible.
18058         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
18059         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
18060         to the target function of the thunk.
18061         (mips_encode_section_info): Check for "near" and "far" function
18062         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
18063
18064         * config/mips/predicates.md (const_call_insn_operand): Test only
18065         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
18066
18067         * doc/extend.texi (Function Attributes): Document MIPS "near" and
18068         "far" attributes.
18069
18070         * testsuite/gcc.target/mips/near-far-1.c: New test case.
18071         * testsuite/gcc.target/mips/near-far-2.c: New test case.
18072         * testsuite/gcc.target/mips/near-far-3.c: New test case.
18073         * testsuite/gcc.target/mips/near-far-4.c: New test case.
18074
18075 2007-05-25  Eric Christopher  <echristo@apple.com>
18076
18077         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
18078         to x86-darwin configurations.
18079         * config/i386/t-darwin: Add softfp support.
18080         * config/i386/t-darwin64: Ditto.
18081         * config/i386/sfp-machine.h: If mach then don't use
18082         aliasing, emit a stub to call.
18083
18084 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
18085
18086         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
18087         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
18088         tree-predcom.c, tree-ssa-alias-warnings.c,
18089         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
18090         comment typos.  Follow spelling conventions.
18091         * doc/cpp.texi, doc/invoke.texi: Fix typos.
18092
18093 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18094
18095         PR target/32065
18096         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
18097         constants into memory.  Expand unaligned memory references for
18098         SSE modes via x86_expand_vector_move_misalign() function.
18099
18100 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
18101
18102         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
18103         "memory" attribute for "sseishft" type insn without operands[2].
18104
18105 2007-05-25  Dirk Mueller  <dmueller@suse.de>
18106             Marcus Meissner <meissner@suse.de>
18107
18108         * doc/extend.texi (alloc_size): New attribute.
18109         * c-common.c (handle_alloc_size_attribute): New.
18110         * tree-object-size.c (alloc_object_size): Use alloc_size
18111         attribute, if available.
18112
18113 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18114
18115         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
18116         with MASK_SSE2.
18117         (__builtin_ia32_vec_ext_v2di): Likewise.
18118         (__builtin_ia32_vec_ext_v4si): Likewise.
18119         (__builtin_ia32_vec_ext_v8hi): Likewise.
18120         (__builtin_ia32_vec_ext_v16qi): Likewise.
18121         (__builtin_ia32_vec_set_v8hi): Likewise.
18122
18123 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18124
18125         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
18126
18127 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
18128
18129         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
18130         (arm_is_longcall_p): Rename to...
18131         (arm_is_long_call_p): ...this.  Take a single tree argument and
18132         return a bool.
18133         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
18134         (CUMULATIVE_ARGS): Remove call_cookie.
18135         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
18136         (ENCODED_LONG_CALL_ATTR_P): Delete.
18137         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
18138         LONG_CALL_FLAG_CHAR cases.
18139         (ARM_DECLARE_FUNCTION_SIZE): Delete.
18140         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
18141         ARM_DECLARE_FUNCTION_SIZE.
18142         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
18143         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
18144         (arm_encode_call_attribute, current_file_function_operand): Delete.
18145         (arm_function_in_section_p): New function.
18146         (arm_is_longcall_p): Rename to...
18147         (arm_is_long_call_p): ...this.  Take the target function as a single
18148         argument and return a bool.  Do not rely on call cookies.  Check
18149         whether the target symbol is in the same section as the current
18150         function, not just the same compilation unit.
18151         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
18152         (arm_encode_section_info): Don't encode a call type.
18153         * config/arm/arm.md (call, call_value): Update calls to
18154         arm_is_long(_)call_p.  Simplify logic.
18155         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
18156         Update calls to arm_is_long(_)call_p.
18157
18158 2007-05-25  Richard Guenther  <rguenther@suse.de>
18159
18160         PR tree-optimization/31982
18161         * tree-ssa-forwprop.c
18162         (forward_propagate_addr_into_variable_array_index): Handle arrays
18163         with element size one.
18164
18165 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18166
18167         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
18168         (umulsi3_highpart): Likewise.
18169
18170 2007-05-24  Ian Lance Taylor  <iant@google.com>
18171
18172         PR rtl-optimization/32069
18173         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
18174         is NULL.
18175
18176 2007-05-24  Ollie Wild  <aaw@google.com>
18177
18178         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
18179         description.
18180
18181 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
18182
18183         * postreload-gcse.c (reg_changed_after_insn_p): New function.
18184         (oprs_unchanged_p): Use it to check all registers in a REG.
18185         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
18186         (reg_set_between_after_reload_p): Delete.
18187         (reg_used_between_after_reload_p): Likewise.
18188         (reg_set_or_used_since_bb_start): Likewise.
18189         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
18190         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
18191         Use reg_set_between_p instead of reg_set_between_after_reload_p.
18192         * rtlanal.c (reg_set_p): Check whether REG overlaps
18193         regs_invalidated_by_call, rather than just checking the
18194         membership of REGNO (REG).
18195
18196 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18197
18198         * doc/passes.texi: Document predictive commoning.
18199         * doc/invoke.texi (-fpredictive-commoning): Document.
18200         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
18201         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
18202         adding indices to the generated name.
18203         (schedule_sm): Pass 0 to get_lsm_tmp_name.
18204         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
18205         * tree-pretty-print.c (op_symbol_1): Renamed to ...
18206         (op_symbol_code): ... and exported.
18207         (dump_omp_clause, op_symbol): Use op_symbol_code
18208         instead of op_symbol_1.
18209         * tree-pass.h (pass_predcom): Declare.
18210         * timevar.def (TV_PREDCOM): New timevar.
18211         * tree-ssa-loop.c (run_tree_predictive_commoning,
18212         gate_tree_predictive_commoning, pass_predcom): New.
18213         * tree-data-ref.c (find_data_references_in_loop): Find the
18214         references in dominance order.
18215         (canonicalize_base_object_address): Ensure that the result has
18216         pointer type.
18217         (dr_analyze_innermost): Export.
18218         (create_data_ref): Code to fail for references with invariant
18219         address moved ...
18220         (find_data_references_in_stmt): ... here.
18221         * tree-data-ref.h (dr_analyze_innermost): Declare.
18222         * tree-affine.c: Include tree-gimple.h and hashtab.h.
18223         (aff_combination_find_elt, name_expansion_hash,
18224         name_expansion_eq, tree_to_aff_combination_expand,
18225         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
18226         New functions.
18227         * tree-affine.h (aff_combination_constant_multiple_p,
18228         tree_to_aff_combination_expand): Declare.
18229         * tree-predcom.c: New file.
18230         * common.opt (fpredictive-commoning): New option.
18231         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
18232         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
18233         * Makefile.in (tree-predcom.o): Add.
18234         (tree-affine.o): Add TREE_GIMPLE_H dependency.
18235         * passes.c (init_optimization_passes): Add dceloop after
18236         copy propagation in loop optimizer.  Add predictive commoning
18237         to loop optimizer passes.
18238
18239 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18240
18241         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
18242         default hook.
18243
18244 2007-05-24  Jan Hubicka  <jh@suse.cz>
18245
18246         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
18247         statistics.
18248         (genheader): Include statistics.h.
18249
18250         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
18251         notes are gone.
18252         * print-rtl.c (flag_dump_unnumbered): Update comments.
18253         (print_rtl): Fix my previous change.
18254         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
18255         specific data.
18256
18257 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18258
18259         PR middle-end/32018
18260         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
18261         set_loop_copy.
18262         (thread_through_all_blocks): Call initialize_original_copy_tables
18263         and free_original_copy_tables.
18264         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
18265         Use set_loop_copy.
18266         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
18267         * cfghooks.c (duplicate_block): Use get_loop_copy.
18268         * cfg.c: Include cfgloop.h.
18269         (loop_copy): New hash table.
18270         (initialize_original_copy_tables): Initialize loop_copy table.
18271         (free_original_copy_tables): Free loop_copy table.
18272         (copy_original_table_clear, copy_original_table_set,
18273         set_loop_copy, get_loop_copy): New functions.
18274         (set_bb_original, set_bb_copy): Use copy_original_table_set.
18275         * cfgloop.h (struct loop): Remove copy field.
18276         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
18277         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
18278
18279 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18280
18281         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
18282         -msse/-msse2/-msse3.
18283
18284 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18285
18286         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
18287         __builtin_ia32_vec_set_v2di with MASK_64BIT.
18288
18289 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
18290
18291         PR target/27067
18292         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
18293         * targhooks.h (default_mangle_decl_assembler_name): Declare
18294         default hook.
18295         * targhooks.c (default_mangle_decl_assembler_name): Define
18296         default hook.
18297         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
18298         default hook.
18299         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
18300         * langhooks.c (lhd_set_decl_assembler_name): Call
18301         targetm.mangle_decl_assembler_name for names with global scope.
18302
18303         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
18304         default.
18305         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
18306         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
18307         Declare.
18308         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
18309         New. Factored out of i386_pe_encode_section_info.
18310         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
18311         Move check for prior decoration of stdcall
18312         symbols to i386_pe_encode_section_info.
18313         (i386_pe_encode_section_info): Adjust call to
18314         gen_stdcall_or_fastcall_suffix.  Use
18315         i386_pe_maybe_mangle_decl_assembler_name, if needed.
18316         (i386_pe_mangle_decl_assembler_name): New. Wrap
18317         i386_pe_maybe_mangle_decl_assembler_name.
18318
18319 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18320
18321         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
18322         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
18323         * langhooks.c (get_signed_or_unsigned_type): Don't check for
18324         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
18325         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
18326         TYPE_UNSIGNED.
18327
18328 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
18329             Nigel Stephens  <nigel@mips.com>
18330             Richard Sandiford  <richard@codesourcery.com>
18331
18332         Fix up MIPS16 hard float and add support for complex.
18333
18334         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
18335         (TARGET_SOFT_FLOAT_ABI): New.
18336         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
18337         __mips_soft_float to reflect the ABI in use, not whether the
18338         FPU is directly accessible (e.g., in MIPS16 mode).
18339         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
18340         (UNITS_PER_FPVALUE): Likewise.
18341
18342         * config/mips/mips.c (mips_expand_call): Remove redundant
18343         TARGET_MIPS16 check.
18344         (mips_arg_regno): New.
18345         (function_arg_advance): When setting bits in cum->fp_code for
18346         MIPS16, don't subtract 1 from cum->arg_number, since it is now
18347         zero-based.
18348         (function_arg): Use mips_arg_regno.
18349         (mips_return_mode_in_fpr_p): New.
18350         (mips16_call_stub_mode_suffix): New.
18351         (mips16_cfun_returns_in_fpr_p): New.
18352         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
18353         (mips_output_function_prologue): Test mips16_hard_float, not
18354         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
18355         (mips_expand_epilogue): Call MIPS16 helper routines to copy
18356         return value into a floating-point register.
18357         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
18358         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
18359         (mips16_fp_args): Handle MIPS32r2 ISA which supports
18360         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
18361         word of double arguments from or to the high bits of 64-bit
18362         floating point registers.
18363         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
18364         (mips16_fpret_double): New helper function.
18365         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
18366         support for complex modes.  Fill in DECL_RESULT for stubdecl.
18367         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
18368
18369         * config/mips/mips16.S
18370         (RET, ARG1, ARG2): New.
18371         (MERGE_GPRf, MERGE_GPRt): New.
18372         (DELAYt, DELAYf): New.
18373         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
18374         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
18375         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
18376         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
18377         (SFOP): Renamed to...
18378         (OPSF3): This, and macro-ified.  Updated all uses.
18379         (SFOP2): Renamed to...
18380         (OPSF2): This, and macro-ified.  Updated all uses.
18381         (SFCMP): Renamed to...
18382         (CMPSF): This, and macro-ified.  Updated all uses.
18383         (SFREVCMP): Renamed to...
18384         (REVCMPSF): This, and macro-ified.  Updated all uses.
18385         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
18386         (LDDBL1, LDDBL2, RETDBL): Deleted.
18387         (DFOP): Renamed to...
18388         (OPDF3): This, and macro-ified.  Updated all uses.
18389         (DFOP2): Renamed to...
18390         (OPDF2): This, and macro-ified.  Updated all uses.
18391         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
18392         (DFCMP): Renamed to...
18393         (CMPDF): This, and macro-ified.  Updated all uses.
18394         (DFREVCMP): Renamed to...
18395         (REVCMPDF): This, and macro-ified.  Updated all uses.
18396         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
18397         (RET_FUNCTION): New.
18398         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
18399         (__mips16_ret_sc, __mips16_ret_dc): New.
18400         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
18401         STUB_ARGS_6, STUB_ARGS_10): New.
18402         (CALL_STUB_NO_RET): New.
18403         (__mips16_call_stub_1): Macro-ified.
18404         (__mips16_call_stub_5): Macro-ified.
18405         (__mips16_call_stub_2): Macro-ified.
18406         (__mips16_call_stub_6): Macro-ified.
18407         (__mips16_call_stub_9): Macro-ified.
18408         (__mips16_call_stub_10): Macro-ified.
18409         (CALL_STUB_RET): New.
18410         (__mips16_call_stub_sf_0): Macro-ified.
18411         (__mips16_call_stub_sf_1): Macro-ified.
18412         (__mips16_call_stub_sf_5): Macro-ified.
18413         (__mips16_call_stub_sf_2): Macro-ified.
18414         (__mips16_call_stub_sf_6): Macro-ified.
18415         (__mips16_call_stub_sf_9): Macro-ified.
18416         (__mips16_call_stub_sf_10): Macro-ified.
18417         (__mips16_call_stub_df_0): Macro-ified.
18418         (__mips16_call_stub_df_1): Macro-ified.
18419         (__mips16_call_stub_df_5): Macro-ified.
18420         (__mips16_call_stub_df_2): Macro-ified.
18421         (__mips16_call_stub_df_6): Macro-ified.
18422         (__mips16_call_stub_df_9): Macro-ified.
18423         (__mips16_call_stub_df_10): Macro-ified.
18424         (__mips16_call_stub_sc_0): New.
18425         (__mips16_call_stub_sc_1): New.
18426         (__mips16_call_stub_sc_5): New.
18427         (__mips16_call_stub_sc_2): New.
18428         (__mips16_call_stub_sc_6): New.
18429         (__mips16_call_stub_sc_9): New.
18430         (__mips16_call_stub_sc_10): New.
18431         (__mips16_call_stub_dc_0): New.
18432         (__mips16_call_stub_dc_1): New.
18433         (__mips16_call_stub_dc_5): New.
18434         (__mips16_call_stub_dc_2): New.
18435         (__mips16_call_stub_dc_6): New.
18436         (__mips16_call_stub_dc_9): New.
18437         (__mips16_call_stub_dc_10): New.
18438
18439         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
18440         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
18441         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
18442
18443 2007-05-23  Ian Lance Taylor  <iant@google.com>
18444
18445         * doc/invoke.texi (Invoking GCC): Document that the order of the
18446         -l option matters.
18447
18448 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
18449
18450         PR target/30987
18451         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
18452         * config/score/predicate.md (const_pow2, const_npow2): Remove.
18453         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
18454         undef.
18455
18456         PR target/30474
18457         * config/score/score.c (score_print_operand): Make sure that only
18458         lower bits are used.
18459
18460 2007-05-22  Ian Lance Taylor  <iant@google.com>
18461
18462         * tree-vrp.c (avoid_overflow_infinity): New static function,
18463         broken out of set_value_range_to_value.
18464         (set_value_range_to_value): Call avoid_overflow_infinity.
18465         (extract_range_from_assert): Likewise.
18466
18467 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18468
18469         PR middle-end/31095
18470          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
18471         change the type before looking for a COMPOUND_EXPR.
18472
18473 2007-05-22  Ian Lance Taylor  <iant@google.com>
18474
18475         * lower-subreg.c (decompose_multiword_subregs): If we change an
18476         insn, call remove_retval_note on it.
18477
18478 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18479
18480         * regs.h (end_hard_regno): New function.
18481         (END_HARD_REGNO, END_REGNO): New macros.
18482         (add_to_hard_reg_set): New function.
18483         (remove_from_hard_reg_set): Likewise.
18484         (in_hard_reg_set_p): Likewise.
18485         (overlaps_hard_reg_set_p): Likewise.
18486         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
18487         (note_btr_set): Use END_HARD_REGNO.
18488         * caller-save.c (setup_save_areas): Use end_hard_regno.
18489         (mark_set_regs): Use END_HARD_REGNO.
18490         (add_stored_regs): Use end_hard_regno.
18491         (mark_referenced_regs): Use add_to_hard_reg_set.
18492         * combine.c (update_table_tick): Use END_REGNO.
18493         (record_value_for_reg): Likewise.
18494         (record_dead_and_set_regs): Likewise.
18495         (get_last_value_validate): Likewise.
18496         (use_crosses_set_p): Likewise.
18497         (reg_dead_at_p_1): Likewise.
18498         (reg_dead_at_p): Likewise.
18499         (mark_used_regs_combine): Use add_to_hard_reg_set.
18500         (move_deaths): Use END_HARD_REGNO.
18501         (reg_bitfield_target_p): Use end_hard_regno.
18502         (distribute_notes): Use END_HARD_REGNO.
18503         * cse.c (mention_regs): Use END_REGNO.
18504         (insert): Use add_to_hard_reg_set.
18505         (invalidate): Use END_HARD_REGNO.
18506         (invalidate_for_call): Likewise.
18507         (exp_equiv_p): Use END_REGNO.
18508         (cse_insn): Likewise.
18509         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
18510         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
18511         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
18512         * function.c (keep_stack_depressed): Use end_hard_regno.
18513         * global.c (global_alloc): Use end_hard_regno.
18514         (global_conflicts): Use add_to_hard_reg_set instead of
18515         mark_reg_live_nc.
18516         (find_reg): Likewise.
18517         (mark_reg_store): Likewise.
18518         (mark_reg_conflicts): Likewise.
18519         (mark_reg_death): Use remove_from_hard_reg_set.
18520         (mark_reg_live_nc): Delete.
18521         (set_preference): Use end_hard_regno.
18522         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
18523         remove_from_hard_reg_set.
18524         (post_mark_life): Use add_to_hard_reg_set.
18525         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
18526         (reg_becomes_live): Use add_to_hard_reg_set.
18527         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
18528         (peep2_find_free_register): Use add_to_hard_reg_set.
18529         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
18530         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
18531         * regrename.c (note_sets): Use add_to_hard_reg_set.
18532         (clear_dead_regs): Use remove_from_hard_reg_set.
18533         (regrename_optimize): Use add_to_hard_reg_set.
18534         (find_oldest_value_reg): Use in_hard_reg_set_p.
18535         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
18536         (hard_reg_set_here_p): Use end_hard_regno.
18537         (decompose): Likewise.
18538         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
18539         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
18540         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
18541         (mark_home_live): Use end_hard_regno.
18542         (spill_hard_reg): Likewise.
18543         (clear_reload_reg_in_use): Likewise.
18544         * reorg.c (delete_prior_computation): Use END_REGNO.
18545         * resource.c (update_live_status): Use END_HARD_REGNO.
18546         (mark_referenced_resources): Use add_to_hard_reg_set.
18547         (mark_set_resources): Likewise.
18548         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
18549         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
18550         (reg_overlap_mentioned_p): Likewise.
18551         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
18552         (covers_regno_no_parallel_p): Use END_REGNO.
18553         (find_regno_note): Likewise.
18554         (find_reg_fusage): Use END_HARD_REGNO.
18555         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
18556         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
18557
18558 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18559
18560         * mode-switching.c (reg_dies): Change type of second argument to
18561         "HARD_REG_SET *".
18562         (optimize_mode_switching): Update accordingly.
18563
18564 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
18565
18566         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
18567         in favor of...
18568         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
18569         (hard_reg_set_empty_p): ...these new functions.
18570         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
18571         GO_IF_HARD_REG_SUBSET.
18572         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
18573         instead of GO_IF_HARD_REG_EQUAL.
18574         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
18575         instead of GO_IF_HARD_REG_EQUAL.
18576         * global.c (find_reg): Use hard_reg_set_empty_p instead of
18577         GO_IF_HARD_REG_SUBSET.
18578         (modify_reg_pav): Use hard_reg_set_empty_p instead of
18579         GO_IF_HARD_REG_EQUAL.
18580         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
18581         of GO_IF_HARD_REG_SUBSET.
18582         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
18583         instead of GO_IF_HARD_REG_EQUAL.
18584         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
18585         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
18586         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
18587         of GO_IF_HARD_REG_SUBSET,
18588         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
18589         GO_IF_HARD_REG_SUBSET.
18590         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
18591         instead of GO_IF_HARD_REG_EQUAL.
18592         * config/sh/sh.c (push_regs, calc_live_regs): Use
18593         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
18594         (hard_regs_intersect_p): Delete.
18595
18596 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
18597
18598         * doc/sourcebuild.texi (Test Directives) Add dg-message.
18599
18600 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18601             Richard Henderson  <rth@redhat.com>
18602
18603         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
18604         extra_headers.
18605         (x86_64-*-*): Likewise.
18606
18607         * i386/i386-modes.def (V2QI): New.
18608
18609         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
18610         SSE4A.
18611         (override_options): Support SSE4.1.
18612         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
18613         (IX86_BUILTIN_BLENDPS): Likewise.
18614         (IX86_BUILTIN_BLENDVPD): Likewise.
18615         (IX86_BUILTIN_BLENDVPS): Likewise.
18616         (IX86_BUILTIN_PBLENDVB128): Likewise.
18617         (IX86_BUILTIN_PBLENDW128): Likewise.
18618         (IX86_BUILTIN_DPPD): Likewise.
18619         (IX86_BUILTIN_DPPS): Likewise.
18620         (IX86_BUILTIN_INSERTPS128): Likewise.
18621         (IX86_BUILTIN_MOVNTDQA): Likewise.
18622         (IX86_BUILTIN_MPSADBW128): Likewise.
18623         (IX86_BUILTIN_PACKUSDW128): Likewise.
18624         (IX86_BUILTIN_PCMPEQQ): Likewise.
18625         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
18626         (IX86_BUILTIN_PMAXSB128): Likewise.
18627         (IX86_BUILTIN_PMAXSD128): Likewise.
18628         (IX86_BUILTIN_PMAXUD128): Likewise.
18629         (IX86_BUILTIN_PMAXUW128): Likewise.
18630         (IX86_BUILTIN_PMINSB128): Likewise.
18631         (IX86_BUILTIN_PMINSD128): Likewise.
18632         (IX86_BUILTIN_PMINUD128): Likewise.
18633         (IX86_BUILTIN_PMINUW128): Likewise.
18634         (IX86_BUILTIN_PMOVSXBW128): Likewise.
18635         (IX86_BUILTIN_PMOVSXBD128): Likewise.
18636         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
18637         (IX86_BUILTIN_PMOVSXWD128): Likewise.
18638         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
18639         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
18640         (IX86_BUILTIN_PMOVZXBW128): Likewise.
18641         (IX86_BUILTIN_PMOVZXBD128): Likewise.
18642         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
18643         (IX86_BUILTIN_PMOVZXWD128): Likewise.
18644         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
18645         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
18646         (IX86_BUILTIN_PMULDQ128): Likewise.
18647         (IX86_BUILTIN_PMULLD128): Likewise.
18648         (IX86_BUILTIN_ROUNDPD): Likewise.
18649         (IX86_BUILTIN_ROUNDPS): Likewise.
18650         (IX86_BUILTIN_ROUNDSD): Likewise.
18651         (IX86_BUILTIN_ROUNDSS): Likewise.
18652         (IX86_BUILTIN_PTESTZ): Likewise.
18653         (IX86_BUILTIN_PTESTC): Likewise.
18654         (IX86_BUILTIN_PTESTNZC): Likewise.
18655         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
18656         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
18657         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
18658         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
18659         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
18660         (bdesc_ptest): New.
18661         (bdesc_sse_3arg): Likewise.
18662         (bdesc_2arg): Likewise.
18663         (bdesc_1arg): Likewise.
18664         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
18665         with 3 args.
18666         (ix86_expand_sse_4_operands_builtin): New.
18667         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
18668         smaller than 8 bits as the 2nd arg.
18669         (ix86_expand_sse_ptest): New.
18670         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
18671         (ix86_expand_vector_set): Support SSE4.1.
18672         (ix86_expand_vector_extract): Likewise.
18673
18674         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
18675         __SSE4_1__ for -msse4.1.
18676
18677         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
18678         (UNSPEC_INSERTPS): Likewise.
18679         (UNSPEC_DP): Likewise.
18680         (UNSPEC_MOVNTDQA): Likewise.
18681         (UNSPEC_MPSADBW): Likewise.
18682         (UNSPEC_PHMINPOSUW): Likewise.
18683         (UNSPEC_PTEST): Likewise.
18684         (UNSPEC_ROUNDP): Likewise.
18685         (UNSPEC_ROUNDS): Likewise.
18686
18687         * config/i386/i386.opt (msse4.1): New for SSE4.1.
18688
18689         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
18690         (const_pow2_1_to_32768_operand): Likewise.
18691
18692         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
18693         file.
18694
18695         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
18696         SSE4.1.
18697         (sse4_1_insertps): Likewise.
18698         (*sse4_1_extractps): Likewise.
18699         (sse4_1_ptest): Likewise.
18700         (sse4_1_mulv2siv2di3): Likewise.
18701         (*sse4_1_mulv4si3): Likewise.
18702         (*sse4_1_smax<mode>3): Likewise.
18703         (*sse4_1_umax<mode>3): Likewise.
18704         (*sse4_1_smin<mode>3): Likewise.
18705         (*sse4_1_umin<mode>3): Likewise.
18706         (sse4_1_eqv2di3): Likewise.
18707         (*sse4_1_pinsrb): Likewise.
18708         (*sse4_1_pinsrd): Likewise.
18709         (*sse4_1_pinsrq): Likewise.
18710         (*sse4_1_pextrb): Likewise.
18711         (*sse4_1_pextrb_memory): Likewise.
18712         (*sse4_1_pextrw_memory): Likewise.
18713         (*sse4_1_pextrq): Likewise.
18714         (sse4_1_blendpd): Likewise.
18715         (sse4_1_blendps): Likewise.
18716         (sse4_1_blendvpd): Likewise.
18717         (sse4_1_blendvps): Likewise.
18718         (sse4_1_dppd): Likewise.
18719         (sse4_1_dpps): Likewise.
18720         (sse4_1_movntdqa): Likewise.
18721         (sse4_1_mpsadbw): Likewise.
18722         (sse4_1_packusdw): Likewise.
18723         (sse4_1_pblendvb): Likewise.
18724         (sse4_1_pblendw): Likewise.
18725         (sse4_1_phminposuw): Likewise.
18726         (sse4_1_extendv8qiv8hi2): Likewise.
18727         (*sse4_1_extendv8qiv8hi2): Likewise.
18728         (sse4_1_extendv4qiv4si2): Likewise.
18729         (*sse4_1_extendv4qiv4si2): Likewise.
18730         (sse4_1_extendv2qiv2di2): Likewise.
18731         (*sse4_1_extendv2qiv2di2): Likewise.
18732         (sse4_1_extendv4hiv4si2): Likewise.
18733         (*sse4_1_extendv4hiv4si2): Likewise.
18734         (sse4_1_extendv2hiv2di2): Likewise.
18735         (*sse4_1_extendv2hiv2di2): Likewise.
18736         (sse4_1_extendv2siv2di2): Likewise.
18737         (*sse4_1_extendv2siv2di2): Likewise.
18738         (sse4_1_zero_extendv8qiv8hi2): Likewise.
18739         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
18740         (sse4_1_zero_extendv4qiv4si2): Likewise.
18741         (*sse4_1_zero_extendv4qiv4si2): Likewise.
18742         (sse4_1_zero_extendv2qiv2di2): Likewise.
18743         (*sse4_1_zero_extendv2qiv2di2): Likewise.
18744         (sse4_1_zero_extendv4hiv4si2): Likewise.
18745         (*sse4_1_zero_extendv4hiv4si2): Likewise.
18746         (sse4_1_zero_extendv2hiv2di2): Likewise.
18747         (*sse4_1_zero_extendv2hiv2di2): Likewise.
18748         (sse4_1_zero_extendv2siv2di2): Likewise.
18749         (*sse4_1_zero_extendv2siv2di2): Likewise.
18750         (sse4_1_roundpd): Likewise.
18751         (sse4_1_roundps): Likewise.
18752         (sse4_1_roundsd): Likewise.
18753         (sse4_1_roundss): Likewise.
18754         (mulv4si3): Don't expand for SSE4.1.
18755         (smax<mode>3): Likewise.
18756         (umaxv4si3): Likewise.
18757         (uminv16qi3): Likewise.
18758         (umin<mode>3): Likewise.
18759         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
18760
18761         * doc/extend.texi: Document SSE4.1 built-in functions.
18762
18763         * doc/invoke.texi: Document -msse4.1.
18764
18765 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
18766
18767         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
18768         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
18769         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
18770         (ASM_SPEC): Add asm_pcrel_spec.
18771         (EXTRA_SPECS): Add asm_pcrel_spec.
18772
18773 2007-05-21  David Daney  <ddaney@avtrex.com>
18774
18775         * doc/install.texi (Building a cross compiler): Add requirements
18776         for Java cross compiler.
18777
18778 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18779
18780         PR middle-end/31995
18781         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
18782         Add loopno argument.  Use evolution_function_is_invariant_rec_p
18783         instead of evolution_function_is_constant_p.
18784         Update calls to evolution_function_is_affine_multivariate_p.
18785         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
18786         Add loopno argument.
18787         * tree-scalar-evolution.c (gather_chrec_stats): Call
18788         evolution_function_is_affine_multivariate_p with a loop
18789         number of 0.
18790         * tree-data-ref.c (analyze_miv_subscript): Likewise.
18791         (analyze_overlapping_iterations): Likewise.
18792         (access_functions_are_affine_or_constant_p): Likewise.
18793         (build_classic_dist_vector_1): If the access functions
18794         are equal, don't do anything.
18795
18796 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
18797             Paolo Carlini  <pcarlini@suse.de>
18798             Uros Bizjak  <ubizjak@gmail.com>
18799
18800         * c-cppbuiltin.c (c_cpp_builtins): Define
18801         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
18802         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
18803         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
18804         * doc/cpp.texi ([Standard Predefined Macros]): Document.
18805
18806 2007-05-21  Mike Stump  <mrs@apple.com>
18807
18808         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
18809         handling as well.
18810         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18811
18812 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
18813
18814         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
18815         implementation if __OPTIMIZE__ is not defined.
18816         (_mm_alignr_pi8): Ditto.
18817         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18818         (_mm_inserti_si64): Ditto.
18819         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18820         (_mm_slli_epi16): Ditto.
18821         (_mm_slli_epi32): Ditto.
18822         (_mm_slli_epi64): Ditto.
18823         (_mm_srai_epi16): Ditto.
18824         (_mm_srai_epi32): Ditto.
18825         (_mm_srli_si128): Ditto.
18826         (_mm_slli_si128): Ditto.
18827         (_mm_srli_epi16): Ditto.
18828         (_mm_srli_epi32): Ditto.
18829         (_mm_srli_epi64): Ditto.
18830         (_mm_extract_epi16): Ditto.
18831         (_mm_insert_epi16): Ditto.
18832         (_mm_shufflehi_epi16): Ditto.
18833         (_mm_shufflelo_epi16): Ditto.
18834         (_mm_shuffle_epi32): Ditto.
18835         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
18836         (_m_pextrw): Ditto.
18837         (_mm_insert_pi16): Ditto.
18838         (_m_pinsrw): Ditto.
18839         (_mm_shuffle_pi16): Ditto.
18840         (_m_pshufw): Ditto.
18841         (_mm_shufle_ps): Ditto.
18842         (_mm_prefetch): Ditto.
18843
18844 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
18845
18846         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
18847         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
18848         * real.c (encode_i370_single, decode_i370_single,
18849         encode_i370_double, decode_i370_double): Functions removed.
18850         (i370_single_format, i370_double_format): Initializations removed.
18851         (real_maxval, round_for_format, exact_real_truncate, significand_size):
18852         Consider the log2_b field to always be one.
18853         (ieee_single_format, mips_single_format, coldfire_single_format,
18854         ieee_double_format, mips_double_format, coldfire_double_format,
18855         ieee_extended_motorola_format, ieee_extended_intel_96_format,
18856         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
18857         ibm_extended_format, mips_extended_format, ieee_quad_format,
18858         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
18859         decimal_single_format, decimal_double_format, decimal_quad_format,
18860         c4x_single_format, c4x_extended_format, real_internal_format): Remove
18861         initialization of log2_b.
18862         * real.h (i370_single_format, i370_double_format): Declarations
18863         removed.
18864         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
18865         field to always be one.
18866
18867 2007-05-21  Andreas Schwab  <schwab@suse.de>
18868
18869         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
18870         NOTE_INSN_BASIC_BLOCK_P.
18871         (process_for_unwind_directive): Likewise.
18872
18873 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
18874
18875         * builtins.c (expand_builtin_setjmp_setup): Update comment.
18876         * function.h (struct function): Move va_list_gpr_size,
18877         va_list_fpr_size, function_frequency to front of bitfields.  Add
18878         calls_unwind_init.
18879         (current_function_calls_unwind_init): New.
18880         * except.c (expand_builtin_unwind_init): Set
18881         current_function_calls_unwind_init not
18882         current_function_has_nonlocal_label.
18883         * reload1.c (has_nonexceptional_receiver): New.
18884         (reload): Use it and current_function_calls_unwind_init to
18885         determine whether call-saved regs must be saved.
18886
18887 2007-05-20  Jan Hubicka  <jh@suse.cz>
18888
18889         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
18890         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18891         * ddg.c (create_ddg): LIkewise.
18892         * final.c (final): Remove hunk moving line number notes around since
18893         they are no longer present at this stage.
18894         (final_scan_insn): Use NOTE_KIND instead of
18895         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18896         (output_asm_label): Likewise.
18897         * reorg.c (dbr_schedule): Likewise.
18898         * haifa-sched.c (unlink_other_notes): Likewise.
18899         * mode-switching.c (optimize_mode_switching): Likewise.
18900         * graph.c (start_bb): Likewise.
18901         * rtl.def (NOTE): Update description.
18902         * jump.c (squeeze_notes): Delete.
18903         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
18904         NOTE_INSN_BASIC_BLOCK_P when possible.
18905         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
18906         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
18907         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18908         (dwarf2out_var_location): Likewise.
18909         * cfgbuild.c (make_edges): Likewise.
18910         (find_basic_blocks_1): Likewise.
18911         * function.c (reorder_blocks_1): Likewise.
18912         (epilogue_done): Likewise.
18913         (reposition_prologue_and_epilogue_notes): Likewise.
18914         * print-rtl.c (print_rtx): Likewise; drop code for printing
18915         line number notes.
18916         (print_rtl): Likewise.
18917         (print_rtl_single): Likewise.
18918         * gcse.c (insert_insn_start_bb): Likewise.
18919         * alias.c (init_alias_analysis): Likewise.
18920         * calls.c (fixup_tail_calls): Likewise.
18921         * except.c (sjlj_emit_function_enter): Likewise.
18922         * emit-rtl.c (add_insn_after): Likeiwse.
18923         (emit_label_before): Likewise.
18924         (emit_label_after): Likewise.
18925         (emit_note_before, emit_note_after, emit_note): Update
18926         parameter to be enum insn_note; do not deal with source
18927         files.
18928         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
18929         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
18930         when possible.
18931         (merge_blocks_move_successor_nojumps): Simplify now when
18932         we don't have BLOCK notes.
18933         (try_optimize_cfg): Likewise.
18934         * cfglayout.c (skip_insns_after_block): Likewise.
18935         (record_effective_endpoints): Likewise.
18936         (duplicate_insn_chain): Likewise.
18937         * varasm.c (output_constant_pool_1): Likewise.
18938         * sched-deps.c (sched_analyze): Likewise.
18939         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
18940         Exterminate.
18941         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
18942         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
18943         (SET_INSN_DELETED): Simplify.
18944         (NOTE_LINE_NUMBER): Exterminate.
18945         (NOTE_LINE_KIND): New.
18946         (NOTE_INSN_BASIC_BLOCK_P): Update.
18947         (enum insn_note): Simplify.
18948         (GET_NOTE_INSN_NAME) Simplify.
18949         (emit_note_before, emit_note_after, emit_note): Update prototype.
18950         (squeeze_notes): Remove.
18951         * sched-int.h (NOTE_NOT_BB_P): Update.
18952         * resource.c (mark_target_live_regs): Update.
18953         * sched-rgn.c (debug_dependencies): Update.
18954         * sched-vis.c (print_insn): Update.
18955         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
18956         * config/i386/i386.c (ix86_output_function_epilogue): Update.
18957         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
18958         (TARGET_ADJUST_UNROLL_MAX): Likewise.
18959         (split_branches): Update.
18960         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
18961         4.0.0.
18962         (sh_adjust_unroll_max): Exterminate.
18963         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
18964         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
18965         (m68hc11_reorg): Likewise.
18966         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
18967         (emit_predicate_relation_info): Update.
18968         (process_for_unwind_directive): Update.
18969         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
18970         (output_call): Update.
18971         * config/pa/pa.c (output_lbranch): Update.
18972         (output_millicode_call): Update.
18973         (output_call): Update.
18974         (pa_combine_instructions): Update.
18975         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
18976         * config/bfin/bfin.c (gen_one_bundle): Update.
18977         * cfgrtl.c (can_delete_note_p): Update.
18978         (delete_insn): Update.
18979         (rtl_merge_blocks): Update.
18980         (commit_one_edge_insertion): Update.
18981         (rtl_verify_flow_info): Update.
18982         * stmt.c (expand_case): Do not call squeeze_notes.
18983
18984 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18985
18986         PR middle-end/7651
18987         PR c++/11856
18988         PR c/12963
18989         PR c/23587
18990         PR other/29694
18991         * c.opt (Wtype-limits): New.
18992         * doc/invoke.texi (Wtype-limits): Document it.
18993         (Wextra): Enabled by -Wextra.
18994         * c-opts.c (c_common_post_options): Enabled by -Wextra.
18995         * c-common.c (shorten_compare): Warn with Wtype-limits.
18996
18997 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
18998
18999         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
19000         inlined function, not as a macro.
19001         (_mm_alignr_pi8): Ditto.
19002         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
19003         (_mm_inserti_si64): Ditto.
19004         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
19005         (_mm_extract_epi16): Ditto.
19006         (_mm_insert_epi16): Ditto.
19007         (_mm_shufflehi_epi16): Ditto.
19008         (_mm_shufflelo_epi16): Ditto.
19009         (_mm_shuffle_epi32): Ditto.
19010         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
19011         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
19012         all functions.
19013         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
19014         float constant.
19015         (_m_to_float): Use C89 compatible assignment.
19016
19017 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
19018
19019         PR target/32007
19020         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
19021
19022 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19023
19024         PR middle-end/7651
19025         * doc/invoke.texi (Wreturn-type): Complete description.
19026         (Wextra): Delete item about return-type warning.
19027         * c-decl.c: Delete redundant Wextra warning.
19028
19029 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
19030
19031         PR target/31585
19032         * config/i386/pmmintrin.h: Do not include xmmintrin.h
19033         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
19034         inlined function, not as a macro.
19035         (_mm_prefetch): Ditto.
19036         (_m_pextrw): Ditto.
19037         (_mm_insert_pi16): Ditto.
19038         (_m_pinsrw): Ditto.
19039         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
19040         (_m_pshufw): Ditto. Add const to __N argument.
19041         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
19042         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
19043         (_mm_slli_epi32): Ditto.
19044         (_mm_srli_si128): Implement as always inlined function, not as a
19045         macro.  Add __inline to function declaration.
19046         (_mm_slli_si128): Ditto.
19047
19048 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
19049
19050         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
19051         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
19052         New constants.
19053         (struct fenv): New structure.
19054         (FP_HANDLE_EXCEPTIONS): New define.
19055         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
19056         (_FP_DECL_EXP): New define.
19057         (FP_INIT_ROUNDMODE): New define.
19058         (FP_ROUNDMODE): New define.
19059
19060 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19061
19062         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
19063         (Wconversion): Update description.
19064         (Wconversion-sign): New.
19065         * c.opt (Wconversion-sign): New.
19066         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
19067         means disabled for C++. Otherwise, take the status of Wconversion.
19068         * c-common.c (conversion_warning): Warn with either Wconversion or
19069         Wconversion-sign.
19070         (warnings_for_convert_and_check): Conditions are already checked by
19071         conversion_warning.
19072         (convert_and_check): Don't check warnings if the conversion failed.
19073
19074 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
19075            Anatoly Sokolov <aesok@dol.ru>
19076
19077         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
19078         avr_epilogue_uses) : Add declaration.
19079         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
19080         * config/avr/constraints.md (R): New constraint.
19081         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
19082         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
19083         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
19084         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
19085         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
19086         call_prologue_saves, epilogue_restores, return_from_epilogue,
19087         return_from_main_epilogue, return_from_interrupt_epilogue,
19088         return_from_naked_epilogue, prologue, epilogue): New patterns.
19089         (jump): Handle symbol reference.
19090         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
19091         avr_output_function_prologue, avr_output_function_epilogue): Remove
19092         functions.
19093         (avr_init_machine_status, expand_prologue, expand_epilogue,
19094         avr_asm_function_end_prologue, avr_epilogue_uses,
19095         avr_asm_function_begin_epilogue): New functions.
19096         (prologue_size, epilogue_size, jump_tables_size): Remove global
19097         variables.
19098         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
19099         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
19100         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
19101         (avr_override_options): Initialise init_machine_status.
19102         (output_movhi): Handle all stack pointer loads.
19103         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
19104         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
19105         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
19106         (EPILOGUE_USES) Redefine.
19107         (machine_function) Declare.
19108
19109 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
19110
19111         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
19112         Use a single return statement.
19113
19114 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19115
19116         PR middle-end/30250
19117         * builtins.c (do_mpfr_lgamma_r): New.
19118         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
19119         * tree.h (CASE_FLT_FN_REENT): New.
19120
19121 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
19122
19123         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
19124         (output_die): Use 'unsigned long' with %x.
19125         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
19126         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
19127         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
19128
19129         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
19130
19131 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19132
19133         PR target/31989
19134         PR target/31681
19135         PR target/31666
19136         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
19137         true if function has no argument.
19138
19139 2007-05-18  DJ Delorie  <dj@redhat.com>
19140
19141         * config/mips/mips.c (mips_offset_within_alignment_p): New.
19142         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
19143
19144 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19145
19146         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
19147         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
19148         count_trailing_zeros.
19149         (__i386__): Implement count_leading_zeros using __builtin_clz().
19150         Implement count_trailing_zeros usign __builtin_ctz().
19151
19152 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
19153
19154         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
19155
19156 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19157
19158         PR middle-end/31344
19159         * expr.c (emit_move_change_mode): Change mode of push operands here.
19160
19161 2007-05-17  Ian Lance Taylor  <iant@google.com>
19162
19163         PR tree-optimization/31953
19164         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
19165         Change all callers.
19166         (set_value_range_to_null): Call set_value_range_to_value.
19167         (extract_range_from_comparison): Likewise.
19168
19169 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19170
19171         * toplev.c (print_version): Output GMP/MPFR version info.
19172
19173         * builtins.c (CASE_MATHFN_REENT): New macro.
19174         (mathfn_built_in): Use it.
19175         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
19176         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
19177         BUILT_IN_LGAMMAL_R): New.
19178         * doc/extend.texi: Document new builtins.
19179
19180         PR middle-end/31796
19181         * builtins.c (do_mpfr_remquo): New.
19182         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
19183         (fold_builtin_3): Handle BUILT_IN_REMQUO.
19184
19185         PR middle-end/30251
19186         * builtins.c (fold_builtin_1): Handle y0, y1.
19187         (fold_builtin_2): Handle yn.
19188
19189         PR middle-end/30251
19190         * builtins.c (do_mpfr_bessel_n): New.
19191         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
19192         (fold_builtin_2): Handle BUILT_IN_JN.
19193
19194 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
19195
19196         PR target/31965
19197         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
19198         TYPE_PRECISION (intmax_type_node).
19199
19200 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
19201
19202         PR target/31850
19203         * reload.c (subst_reloads): Remove checking.
19204
19205 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
19206
19207         PR rtl-optimization/31691
19208         * combine.c (simplify_set): Build a new src pattern instead of
19209         substituting its operands in the COMPARE case.
19210
19211 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
19212
19213         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
19214         (execute_vrp): Preserve loops through jump threading.
19215         * tree-ssa-threadupdate.c (thread_single_edge,
19216         dbds_continue_enumeration_p, determine_bb_domination_status,
19217         thread_through_loop_header): New functions.
19218         (create_edge_and_update_destination_phis,
19219         create_edge_and_update_destination_phis): Set loops for the new blocks.
19220         (prune_undesirable_thread_requests): Removed.
19221         (redirect_edges): Do not pretend that redirect_edge_and_branch can
19222         create new blocks.
19223         (thread_block): Do not call prune_undesirable_thread_requests.
19224         Update loops.
19225         (mark_threaded_blocks): Select edges to thread here.
19226         (thread_through_all_blocks): Take may_peel_loop_headers argument.
19227         Thread edges through loop headers independently.
19228         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
19229         * tree-pass.h (TODO_mark_first_instance): New.
19230         (first_pass_instance): Declare.
19231         * cfghooks.c (duplicate_block): Put the block to the original loop
19232         if copy is not specified.
19233         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
19234         jump threading.  Pass may_peel_loop_headers to
19235         thread_through_all_blocks according to first_pass_instance.
19236         * cfgloop.h (create_preheader): Declare.
19237         * tree-flow.h (thread_through_all_blocks): Declaration changed.
19238         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
19239         * passes.c (first_pass_instance): New variable.
19240         (next_pass_1): Set TODO_mark_first_instance.
19241         (execute_todo): Set first_pass_instance.
19242
19243 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
19244
19245         PR tree-optimization/24659
19246         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
19247         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
19248         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
19249         OTI_vec_pack_ufix_trunc.
19250         (vec_unpacks_float_hi_optab): Define new macro.
19251         (vec_unpacks_float_lo_optab): Ditto.
19252         (vec_unpacku_float_hi_optab): Ditto.
19253         (vec_unpacku_float_lo_optab): Ditto.
19254         (vec_pack_sfix_trunc_optab): Ditto.
19255         (vec_pack_ufix_trunc_optab): Ditto.
19256         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
19257         and vec_pack_[s|u]fix_trunc_optab using
19258         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
19259         * tree-vectorizer.c (supportable_widening_operation): Handle
19260         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
19261         (supportable_narrowing_operation): New function.
19262         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
19263         * tree-vect-transform.c (vectorizable_conversion): Handle
19264         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
19265         (vect_gen_widened_results_half): Move before vectorizable_conversion.
19266         (vectorizable_type_demotion): Call supportable_narrowing_operation()
19267         to check for target support.
19268         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
19269         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
19270         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
19271         for VEC_PACK_FIX_TRUNC_EXPR.
19272         (expand_binop): Special case mode of the result for
19273         vec_pack_[u|s]fix_trunc_optab.
19274         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
19275         vec_pack_[u|s]fix_trunc_optab.
19276
19277         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
19278         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
19279         * tree-pretty-print.c (dump_generic_node): Handle
19280         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
19281         VEC_PACK_FIX_TRUNC_EXPR.
19282         (op_prio): Ditto.
19283         * expr.c (expand_expr_real_1): Ditto.
19284         * tree-inline.c (estimate_num_insns_1): Ditto.
19285         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19286
19287         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
19288         (vec_unpacks_float_lo_v8hi): Ditto.
19289         (vec_unpacku_float_hi_v8hi): Ditto.
19290         (vec_unpacku_float_lo_v8hi): Ditto.
19291         (vec_unpacks_float_hi_v4si): Ditto.
19292         (vec_unpacks_float_lo_v4si): Ditto.
19293         (vec_pack_sfix_trunc_v2df): Ditto.
19294
19295         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
19296         Document.
19297         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
19298         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
19299         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
19300         [vec_pack_ufix_trunc]: Ditto.
19301         [vec_unpacks_float_hi]: Ditto.
19302         [vec_unpacks_float_lo]: Ditto.
19303         [vec_unpacku_float_hi]: Ditto.
19304         [vec_unpacku_float_lo]: Ditto.
19305
19306 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
19307
19308         * soft-fp/README: Update for new files.
19309         * soft-fp/floattisf.c: New file.
19310         * soft-fp/floattidf.c: New file.
19311         * soft-fp/floattitf.c: New file.
19312         * soft-fp/floatuntisf.c: New file.
19313         * soft-fp/floatuntidf.c: New file.
19314         * soft-fp/floatuntitf.c: New file.
19315         * soft-fp/fixsfti.c: New file.
19316         * soft-fp/fixdfti.c: New file.
19317         * soft-fp/fixtfti.c: New file.
19318         * soft-fp/fixunssfti.c: New file.
19319         * soft-fp/fixunsdfti.c: New file.
19320         * soft-fp/fixunstfti.c: New file.
19321         * soft-fp/extendxftf.c: New file.
19322         * soft-fp/trunctfxf.c: New file.
19323
19324         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
19325         (__trunctfxf2): Ditto.
19326
19327         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
19328         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
19329         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
19330         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
19331         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
19332         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
19333
19334         * config/i386/t-fprules-softfp64: New file.
19335         * config/i386/sfp-machine.h: New file.
19336         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
19337         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
19338         and soft-fp/t-softfp to tmake_file.
19339         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
19340         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
19341
19342         * config/i386/t-linux64 (softfp_wrap_start): New.
19343         (softfp_wrap_end): New.
19344         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
19345         supported for TARGET_64BIT.
19346
19347 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
19348
19349         * c-common.c (c_common_signed_or_unsigned_type): Emulate
19350         c_common_unsigned_type behavior.
19351
19352 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
19353
19354         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
19355         calls as pure.
19356
19357 2007-05-16  Eric Christopher  <echristo@apple.com>
19358
19359         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
19360         saving after stack push. Set sp_offset whenever we push.
19361         (rs6000_emit_epilogue): Move altivec register restore before
19362         stack push.
19363
19364 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19365
19366         * configure.ac: Allow sysroots to be relocated under $prefix as
19367         well as $exec_prefix.
19368         * configure: Regenerate.
19369
19370 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19371
19372         Revert:
19373
19374         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19375
19376         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19377         (gcc_tooldir): Likewise.
19378         * configure: Regenerate.
19379         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19380         old configure.ac gcc_tooldir setting.
19381         (prefix_to_exec_prefix): New variable.
19382         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19383         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19384
19385 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
19386
19387         * c-typeck.c (build_binary_op): Return early for error.
19388
19389 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
19390
19391         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
19392         struct nb_iter_bound.
19393         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
19394         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
19395         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
19396         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
19397         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
19398         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
19399         (del_scev_info): Use ggc_free.
19400         (scev_initialize): Allocate scalar_evolution_info in gc memory.
19401         * loop-init.c: Include ggc.h.
19402         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
19403         (loop_optimizer_finalize): Use ggc_free.
19404         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
19405         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
19406         pass_iv_optimize): Add TODO_ggc_collect.
19407         * function.h (struct function): Remove skip marker from
19408         x_current_loops.
19409         * cfgloop.c: Include ggc.h.
19410         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
19411         memory.
19412         (establish_preds): Vector superloops is gc allocated.
19413         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
19414         loop->exits list.
19415         (flow_loops_find): Vector larray is gc allocated.
19416         (loop_exit_free): Use ggc_free.
19417         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
19418         that head of exits list is now not a part of struct loop.
19419         (record_loop_exits): Allocate exits table in gc memory.
19420         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
19421         that head of exits list is now not a part of struct loop.
19422         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
19423         struct loop_exit): Add GTY marker.
19424         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
19425         Add skip marker to aux field.  Make head of exits list a separate
19426         object.
19427         (struct loops): Add GTY marker.  Make larray vector gc allocated.
19428         Add param marker to exits table.
19429         (get_loops): Type changed.
19430         * Makefile.in (tree-scalar-evolution.o): Add
19431         gt-tree-scalar-evolution.h dependency.
19432         (cfgloop.o, loop-init.o): Add ggc.h dependency.
19433         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
19434         * basic-block.h (struct basic_block_def): Remove skip marker from
19435         loop_father field.
19436
19437 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
19438
19439         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
19440         of 0 in the call to expand_expr().
19441         (expand_builtin_mathfn_3): Ditto.
19442         (expand_builtin_interclass_mathfn): Ditto.
19443         (expand_builtin_cexpi): Ditto.
19444         (expand_builtin_int_roundingfn): Ditto.
19445         (expand_builtin_int_roundingfn_2): Ditto.
19446         (expand_builtin_pow): Ditto.
19447         (expand_builtin_powi): Ditto.
19448         (expand_builtin_bswap): Ditto.
19449         (expand_builtin_unop): Ditto.
19450         (expand_builtin_fabs): Ditto.
19451         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
19452         the call to expand_expr().
19453         (expand_builtin_sync_operation): Ditto.
19454         (expand_builtin_compare_and_swap): Ditto.
19455         (expand_builtin_lock_test_and_set): Ditto.
19456         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
19457         instead of 0 in the call to expand_expr().
19458         (expand_builtin_extract_return_addr): Ditto.
19459         (expand_builtin_eh_return): Ditto.
19460         (expand_eh_return): Ditto.
19461         * explow.c (expr_size): Ditto.
19462         * expr.c (optimize_bitfield_assignment_op): Ditto.
19463         (expand_assignement): Ditto.
19464         (store_expr): Ditto.
19465         (store_field): Ditto.
19466         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
19467         the call to expand_expr().
19468         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
19469         in the call to expand_expr().
19470         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
19471         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
19472         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
19473         of expand_expr().
19474         * optabs.c (expand_vec_shift_expr): Ditto.
19475         (expand_vec_cond_expr): Ditto.
19476         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
19477         call to expand_expr().
19478         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
19479         in the call to expand_expr().
19480
19481 2007-05-14  Dave Korn  <dave.korn@artimi.com>
19482
19483         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
19484
19485 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
19486
19487         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
19488         instead of c_common_unsigned_type.
19489         (c_common_unsigned_type): Remove.
19490         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
19491         c_common_unsigned_type.
19492         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
19493         c_common_unsigned_type.
19494         * c-common.h (c_common_unsigned_type): Remove.
19495         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
19496         c_common_unsigned_type.
19497         * c-format.c (check_format_types): Use unsigned_type_for instead of
19498         c_common_unsigned_type.
19499         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19500         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
19501         of c_common_unsigned_type.
19502         * convert.c (convert_to_integer): Use unsigned_type_for instead of
19503         lang_hooks.types.unsigned_type.
19504         * expmed.c (make_tree): Use unsigned_type_for instead of
19505         lang_hooks.types.unsigned_type.
19506         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
19507         lang_hooks.types.unsigned_type.
19508         (build_range_check): Likewise.
19509         (fold_unary): Likewise.
19510         (fold_binary): Likewise.
19511         (fold_ternary): Likewise.
19512         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19513         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
19514         * tree.c (get_unsigned_type): New.
19515         (unsigned_type_for): Use get_unsigned_type instead of
19516         lang_hooks.types.unsigned_type.
19517
19518 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
19519
19520         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
19521         to m68k_get_function_kind.  Update its prototype.
19522         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
19523         interrupt_thread.
19524         (m68k_interrupt_function_p): Return enum m68k_function_type
19525         instead of bool.  Rename to m68k_get_function_kind.
19526         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
19527         target is not fido.
19528         (m68k_compute_frame_layout): Don't mark any register for save
19529         if an interrupt_thread attribute is specified.
19530         (m68k_hard_regno_rename_ok): Update a use of
19531         m68k_interrupt_function_p.
19532         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
19533         m68k_interrupt_function_p.
19534         (m68k_function_type): New.
19535         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
19536         for a function with an interrupt_thread attribute.
19537         * doc/extend.texi: Document the interrupt_thread attribute.
19538
19539 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
19540
19541         Fix PR tree-optimization/31911
19542         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
19543         if they didn't change the expression.
19544
19545 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
19546
19547         * tree-scalar-evolution.c (resolve_mixers): Exported.
19548         * tree-scalar-evolution.h (resolve_mixers): Declare.
19549         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
19550         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
19551         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
19552         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
19553         init_array_ref, init_pointer_ref, analyze_indirect_ref,
19554         strip_conversion, analyze_offset_expr, address_analysis,
19555         object_analysis, analyze_offset): Removed.
19556         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
19557         split_constant_offset, canonicalize_base_object_address,
19558         object_address_invariant_in_loop_p, disjoint_objects_p,
19559         dr_may_alias_p, dr_address_invariant_p): New functions.
19560         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
19561         and dr_analyze_alias.
19562         (initialize_data_dependence_relation): Use dr_may_alias_p
19563         and object_address_invariant_in_loop_p.
19564         (compute_self_dependence): Handle the case when
19565         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
19566         (find_data_references_in_stmt): Restrict the analysis of data
19567         references to the given loop nest.
19568         (find_data_references_in_loop): Made static.  Pass loop nest to
19569         find_data_references_in_stmt.
19570         (compute_data_dependences_for_loop): Use DR_VOPS.
19571         (free_data_ref): Free DR_VOPS.
19572         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
19573         (struct innermost_loop_behavior): ... new.
19574         (struct base_object_info): Replaced by ...
19575         (struct indices): ... new.
19576         (struct dr_alias): New.
19577         (enum data_ref_type): Removed.
19578         (struct data_reference): Consist of struct innermost_loop_behavior,
19579         struct indices and struct dr_alias.
19580         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
19581         (DR_MEMTAG): Renamed to ...
19582         (DR_SYMBOL_TAG): ... this.
19583         (find_data_references_in_loop): Declaration removed.
19584         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
19585         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
19586         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
19587         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
19588
19589 2007-05-13  Revital Eres  <eres@il.ibm.com>
19590
19591         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
19592         which walks virtual def-use chains to find redundant stores.
19593         (dse_optimize_stmt): Call it.
19594
19595 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19596
19597         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
19598         * passes.c (init_optimization_passes): Move pass_jump_bypass
19599         after loop2.
19600
19601         * basic-block.h (bb_has_eh_pred): Fix style issue.
19602
19603 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19604
19605         PR rtl-optimization/31848
19606         * loop-invariant.c (move_invariant_reg): If we move an insn
19607         with a REG_EQUAL note, and that insn is not always executed,
19608         remove the REG_EQUAL note.
19609
19610 2007-05-12  Richard Guenther  <rguenther@suse.de>
19611
19612         PR tree-optimization/31797
19613         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
19614         propagate into a stmt that has volatile ops.
19615
19616 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19617
19618         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19619         (gcc_tooldir): Likewise.
19620         * configure: Regenerate.
19621         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19622         old configure.ac gcc_tooldir setting.
19623         (prefix_to_exec_prefix): New variable.
19624         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19625         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19626
19627 2007-05-11  Silvius Rus  <rus@google.com>
19628
19629         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
19630         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
19631         * c-common.h (strict_aliasing_warning): Change return type.
19632         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
19633         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
19634         (build_c_cast): Condition call to strict_aliasing_warning.
19635         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
19636         * flags.h (set_Wstrict_aliasing): Declare.
19637         * opts.c (set_Wstrict_alising): Define, add call to.
19638         * tree-flow.h (strict_aliasing_warning_backend): Declare.
19639         * tree-ssa-alias-warnings.c: New file.
19640         * tree-ssa-alias.c (compute_may_aliases): Add call to
19641         strict_aliasing_warning_backend.
19642
19643 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
19644
19645         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
19646         Use loop_depth and loop_outer accessor functions.
19647         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
19648         determine_invariantness_stmt, move_computations_stmt): Ditto.
19649         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
19650         add_loop, loopify, unloop, fix_loop_structure): Ditto.
19651         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
19652         * tree-scalar-evolution.c (interpret_loop_phi,
19653         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
19654         instantiate_parameters_1, scev_const_prop): Ditto.
19655         * cfghooks.c (make_forwarder_block): Ditto.
19656         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
19657         * modulo-sched.c (loop_canon_p): Ditto.
19658         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
19659         slpeel_can_duplicate_loop_p): Ditto.
19660         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
19661         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
19662         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
19663         cancel_loop, verify_loop_structure): Ditto.
19664         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
19665         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
19666         superloops vector instead of "pred" array.
19667         (establish_preds): Take father loop as an argument.  Initialize the
19668         superloops vector.
19669         (flow_loop_tree_node_add): Pass father loop to establish_preds.
19670         Do not initialize loop->outer.
19671         (flow_loop_tree_node_remove): Truncate the superloops vector.
19672         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
19673         "pred" merged to "superloops" vector.
19674         (loop_depth, loop_outer): New.
19675         (fel_init): Use loop_outer.
19676
19677 2007-05-11  Jan Hubicka  <jh@suse.cz>
19678
19679         * cgraphunit.c: Include gt-cgraphunit.h
19680         (static_ctors, static_dtors): New static vars.
19681         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
19682         based on implementation in c-common.c
19683         (cgraph_finalize_function): Call record_cdtor_fn.
19684         (cgraph_optimize): Call cgraph_build_cdtor_fns.
19685         * decl.c (finish_function): Do not call c_record_cdtor_fn.
19686         (c_write_global_declarations): Do not call c_build_cdtor_fns.
19687         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
19688         build_cdtor, c_build_cdtor_fns): Remove.
19689         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
19690         c_build_cdtor_fns): Remove prototype.
19691
19692 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
19693
19694         PR other/31852
19695         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
19696         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
19697         * builtins.c (fold_builtin_memchr): New.
19698         (expand_builtin_memchr): Call the latter.
19699         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
19700         * doc/extend.texi ([Other built-in functions provided by GCC]):
19701         Document memchr.
19702
19703 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
19704
19705         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
19706         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
19707         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
19708         PFPO_OP1_TYPE_SHIFT): Constants added.
19709         (DFP_ALL): Mode macro defined.
19710         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
19711         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
19712         Insn definitions added.
19713         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
19714         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
19715         Expanders added.
19716
19717 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
19718
19719         PR tree-optimization/31885
19720         * tree-chrec.c (chrec_contains_undetermined): Do not consider
19721         NULL_TREE to be undetermined.
19722         (automatically_generated_chrec_p): Return false for NULL.
19723
19724 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19725
19726         * config/bfin/bfin.h (MOVE_RATIO): Define.
19727
19728 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
19729
19730         * config.gcc (sparc-wrs-vxworks): New target.
19731         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
19732         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
19733         * config/sparc/sparc.h: Include vxworks-dummy.h.
19734         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
19735         include LABEL_REFs too.
19736         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
19737         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
19738         VxWorks.
19739         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
19740         on VxWorks.
19741         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
19742         (sparc_emit_call_insn): New function.
19743         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
19744         functions when generating VxWorks PIC.
19745         * config/sparc/sparc.md (vxworks_load_got): New pattern.
19746         (call, call_value): Use sparc_emit_call_insn instead of
19747         emit_call_insn.
19748
19749 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19750
19751         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
19752
19753 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19754
19755         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
19756         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
19757         split_double instead of operand_subword.
19758
19759 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19760
19761         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
19762         * config/bfin/bfin.c (bfin_local_alignment): New function.
19763         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
19764
19765 2007-05-08  Chao-ying Fu  <fu@mips.com>
19766
19767         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
19768         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
19769         (smsub_widen_optab, umsub_widen_optab): Define.
19770         * optabs.c (init_optabs): Initialize smsub_widen_optab and
19771         umsub_widen_optab.
19772         * genopinit.c (optabs): Fill in smsub_widen_optab and
19773         umsub_widen_optab.
19774         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
19775         and umsub_widen_optab to implement multiply-subtract sequences.
19776         * config/mips/mips.md (*msac<u>_di): Rename to...
19777         (<u>msubsidi4): ...this.  Extend condition to include
19778         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19779         of operand 0 to "ka" and use the three-operand form of msub<u>
19780         for TARGET_DSPR2.
19781         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
19782         to define_expands.
19783
19784 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19785
19786         PR rtl-optimization/28011
19787         * reload.c (push_reload): Set dont_share if IN appears in OUT
19788         also when IN is a PLUS rtx.
19789         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
19790         are same PLUS rtx.
19791
19792 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
19793
19794         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
19795         call unshare_all_decls.
19796         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
19797         (unshare_all_decls): Remove.
19798
19799 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
19800
19801         PR 31847
19802         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
19803         dumps.
19804
19805 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
19806             Nigel Stephens  <nigel@mips.com>
19807
19808         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
19809         Update comments and all uses.
19810         (MIN_FPRS_PER_FMT): Define.
19811         * config/mips/mips.c (function_arg): Fix to correctly handle
19812         the -mips32r2 -mfp64 -mabi=32 case.
19813         (override_options): Enable use of odd-numbered registers for
19814         SFmode values on MIPS32.
19815         (mips_save_reg_p): Save whole floating-point register pair if
19816         either half is used.
19817         (compute_frame_size): Fix comment.
19818
19819 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
19820
19821         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
19822         argument of type bool.
19823         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
19824         argument. Safely select temporary P register according to it.
19825         (do_link): Change call site of add_to_reg accordingly.
19826         (do_unlink): Add epilogue_p as a fourth argument and pass it
19827         to add_to_reg.
19828         (expand_interrupt_handler_epilogue): Change call of do_unlink
19829         accordingly.
19830         (bfin_expand_prologue): Add a third argument sibcall_p.
19831         * config/bfin/bfin.md (epilogue): Change call of
19832         bfin_expand_epilogue accordingly.
19833         (sibcall_epilogue): Likewise.
19834         (eh_return_internal): Likewise.
19835
19836         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
19837         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
19838         * config/bfin/bfin.c (bfin_handle_option): Handle
19839         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
19840         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
19841         Support bf534, bf536 and bf561.
19842         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
19843
19844 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
19845
19846         PR target/31854
19847         * config/i386/i386.c (ix86_function_regparm): Process local
19848         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
19849
19850 2007-05-07  Mike Stump  <mrs@apple.com>
19851
19852         * doc/invoke.texi (Warning Options): Document that -Wempty-body
19853         also checks for and while statements in C++.
19854
19855 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
19856
19857         * gcc.c (at_file_supplied): New variable.
19858         (main): Set it if we expanded argv.
19859         (do_spec_1): Pass an @-file to the linker if we were called with
19860         an @-file argument and HAVE_GNU_LD.
19861         * collect2.c (at_file_supplied): New variable.
19862         (response_file): New variable.
19863         (collect_exit): Unlink response_file if necessary.
19864         (handler): Likewise.
19865         (do_wait): Likewise.
19866         (main): Set at_file_supplied if we expanded argv.
19867         (collect_execute): Pass an @-file to subprocesses if we were called
19868         with an @-file argument.
19869         * configure.ac: Add define for HAVE_GNU_LD.
19870         * configure: Regenerate.
19871         * config.in: Regenerate.
19872
19873 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
19874
19875         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
19876         operand to HI mode.
19877         (mulsi3): New.
19878         (divsi3): New.
19879         (udivsi3): New.
19880
19881 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
19882
19883         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19884         (TARGET_ENCODE_SECTION_INFO): Re-define.
19885         (m32c_encode_section_info): New
19886         (function_vector_handler): New
19887         (current_function_special_page_vector): New
19888         (m32c_special_page_vector_p): New.
19889         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
19890         Prototype.
19891         * config/m32c/jump.md: Added instruction JSRS for functions
19892         with attribute "function_vector".
19893         * doc/extend.texi (function_vector): Added description
19894         for M16C, M32C targets.
19895
19896 2007-05-07  DJ Delorie  <dj@redhat.com>
19897
19898         PR 31794
19899         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
19900         ashrpsi3, lshrpsi3): Update shift count constraint.
19901
19902 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
19903             Nathan Froyd  <froydnj@codesourcery.com>
19904
19905         PR 22133
19906         * c-incpath.c (add_path): Strip trailing path separators.
19907
19908 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
19909
19910         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
19911         Free dominance info before purging EH edges.
19912         (eliminate_degenerate_phis): Likewise.
19913         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
19914
19915 2007-05-07  Jan Hubicka  <jh@suse.cz>
19916
19917         * gimplify.c (gimplify_expr): Do not crash when folding
19918         (void *)(int)&a + 4.
19919
19920 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19921
19922         PR driver/31694
19923         * c-opts.c (lang_fortran): Make it non static.
19924         * c-common.h (lang_fortran): New prototype.
19925         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
19926         -lang-fortran option was passed by the driver.
19927
19928 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
19929
19930         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
19931         of ASSERT_CHECKING.  Tweak message.
19932
19933 2007-05-06  Revital Eres  <eres@il.ibm.com>
19934
19935         PR 30957
19936         * loop-unroll.c (insert_var_expansion_initialization):
19937         Initialize the expansions with -zero instead of +zero.
19938
19939 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
19940
19941         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
19942         into pic and non-pic versions. Mark r19 as used for
19943         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
19944         for tgd_load, tld_load and tie_load .
19945         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
19946         version of tgd_load, tld_load and tie_load depending on the
19947         value of flag_pic.
19948
19949 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
19950             Jakub Jelinek  <jakub@redhat.com>
19951
19952         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
19953         (__do_global_dtors_aux): Use more paranoid loop to run
19954         destructors if HIDDEN_DTOR_LIST_END.
19955         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
19956
19957 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
19958
19959         * varasm.c (align_variable): Don't increase alignment for
19960         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
19961         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
19962
19963 2007-05-04  Josh Conner  <jconner@apple.com>
19964
19965         * basic-block.h (cdi_direction): Assign values to all enumeration
19966         constants.
19967         (dom_computed): Remove.
19968         (dom_info_state): New.
19969         (set_dom_info_availability): New.
19970         * tree-ssa-loop-im.c (determine_invariantness): Initialize
19971         walk_data.dom_direction.
19972         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
19973         instead of dom_computed[].
19974         (split_edge): Likewise.
19975         (create_basic_block): Likewise.
19976         (merge_blocks): Likewise.
19977         * ifcvt.c (find_if_header): Likewise.
19978         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
19979         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
19980         * tree-ssa.c (verify_ssa): Likewise.
19981         * tree-cfg.c (tree_verify_flow_info): Likewise.
19982         (remove_edge_and_dominated_blocks): Likewise.
19983         * dominance.c (dom_computed): Make static.
19984         (calc_dfs_tree_nonrec): Change third param to a bool.
19985         (calc_dfs_tree): Change second param to a bool.
19986         (calc_idioms): Change second param to a bool.  Use
19987         dom_convert_dir_to_idx.
19988         (init_dom_info): Validate dir before using.
19989         (dom_convert_dir_to_idx): New.
19990         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
19991         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
19992         (free_dominance_info): Use dom_convert_dir_to_idx.
19993         (get_immediate_dominator): Likewise.
19994         (set_immediate_dominator): Likewise.
19995         (get_dominated_by): Likewise.
19996         (redirect_immediate_dominators): Likewise.
19997         (nearest_common_denominator): Likewise.
19998         (dominated_by_p): Likewise.
19999         (bb_dom_dfs_in): Likewise.
20000         (bb_dom_dfs_out): Likewise.
20001         (recount_dominator): Likewise.
20002         (iterate_fix_dominators): Likewise.
20003         (add_to_dominance_info): Likewise.
20004         (delete_from_dominance_info): Likewise.
20005         (first_dom_son): Likewise.
20006         (next_dom_son): Likewise.
20007         (dom_info_available_p): Likewise.
20008         (dom_info_state): New.
20009         (set_dom_info_availability): New.
20010
20011 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20012
20013         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
20014         Expander removed.
20015         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
20016
20017 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
20018
20019         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
20020         (subdi3, subdi_carry): Delete.
20021
20022 2007-05-04  Jan Hubicka  <jh@suse.cz>
20023             Richard Guenther  <rguenther@suse.de>
20024
20025         * opts.c (decode_options): Do not fiddle with inlining
20026         parameters in case of optimizing for size.
20027         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
20028         for size do nothing.
20029         (cgraph_decide_inlining_of_small_function): When optimizing for
20030         size never inline functions increasing caller size.
20031         (cgraph_early_inlining): Inline for size when optimizing for size.
20032
20033 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
20034
20035         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
20036         logical operations piecewise.
20037         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
20038         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
20039         subdi_sesidi_di): Delete.
20040         (add_with_carry): Produce carry in CC instead of a DREG to shorten
20041         the generated sequence.  Allow three-reg add in constraints.  Rewrite
20042         the rtl expression for carry to avoid zero_extend of a constant.
20043         (sub_with_carry): New pattern.
20044         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
20045         different sequence not involving jumps.
20046         (notbi): Now a named pattern.
20047
20048 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
20049
20050         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
20051         Add the note about a significant loss of accuracy of some
20052         mathematical routines when these options are used.
20053
20054 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20055
20056         * haifa-sched.c (rtx_vec_t): New typedef.
20057         (contributes_to_priority_p): Extract piece of priority () into new
20058         static function.
20059         (priority): Use the function.  Add assertion.
20060         (rank_for_schedule, set_priorities): Add assertion to check that
20061         insn's priority is initialized.
20062         (clear_priorities, calc_priorities): Change signature.  Make it update
20063         all relevant insns.  Update all callers ('add_to_speculative_block ()'
20064         and 'create_block_check_twin ()').
20065         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
20066         Add new field 'priority_status'.
20067         (INSN_PRIORITY_STATUS): New macro.
20068         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
20069
20070 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20071
20072         * sched-ebb.c (debug_ebb_dependencies): New static function.
20073         (init_ready_list): Use it.
20074
20075         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
20076         with changed signature and 'debug_rgn_dependencies ()'.
20077         (debug_rgn_dependencies): New static function.
20078         (init_ready_list): Use it.
20079
20080         * sched-int.h (debug_dependencies): Declare.
20081
20082 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20083
20084         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
20085
20086 2007-05-04  Dirk Mueller  <dmueller@suse.de>
20087
20088         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
20089
20090 2007-05-03  Jan Hubicka  <jh@suse.cz>
20091
20092         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
20093         ((T1)X op (T1)Y), for pointer type in more cases than before.
20094
20095         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
20096
20097         * tree-object-size.c (plus_expr_object_size): When operand size is
20098         unknown, return unknown.
20099
20100 2007-05-03  Dirk Mueller  <dmueller@suse.de>
20101
20102         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
20103
20104         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
20105         options.
20106
20107         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
20108
20109 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
20110
20111         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
20112
20113 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
20114
20115         * config/soft-fp/double.h, config/soft-fp/extended.h,
20116         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
20117         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
20118         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
20119         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
20120         glibc CVS.
20121
20122 2007-05-03  Ian Lance Taylor  <iant@google.com>
20123
20124         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
20125         MASK_PPC_GFXOPT for 8540 or 8548.
20126
20127 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20128
20129         * tree-vect-transform.c (vect_update_inits_of_drs): Use
20130         vect_print_dump_info() to output debug information.
20131
20132 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20133
20134         PR target/31768
20135         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
20136         operands of size 2 when operand is not MEM_P.
20137
20138 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20139
20140         PR tree-optimization/30565
20141         * lambda-code.c (perfect_nestify): Fix updating of dominators.
20142
20143 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
20144
20145         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
20146         (umulsi3_highpart): Use them.
20147         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
20148         for final accumulator to D regisster tranfser.
20149
20150 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
20151
20152         PR tree-optimization/31699
20153         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
20154         wrong code.
20155         (vect_enhance_data_refs_alignment): Compute peel amount using
20156         TYPE_VECTOR_SUBPARTS instead of vf.
20157         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
20158
20159 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
20160
20161         PR bootstrap/31776
20162         * system.h: Remove inclusion of double-int.h
20163         * tree.h: Include double-int.h
20164         * gengtype.c: Likewise
20165         * cfgloop.h: Likewise
20166         * Makefile.in: Adjust dependencies on double-int.h
20167
20168 2007-05-02  Eric Christopher  <echristo@apple.com>
20169
20170         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
20171         -shared to -Zdynamiclib.
20172
20173 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
20174
20175         PR c++/31663
20176         * c-common.c (strip_pointer_or_array_types): New function.
20177         * c-common.h (strip_pointer_or_array_types): New function declaration.
20178
20179 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20180
20181         PR tree-optimization/31771
20182         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
20183
20184 2007-05-02  Paul Brook  <paul@codesourcery.com>
20185
20186         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
20187
20188 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20189
20190         PR middle-end/29715
20191         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
20192         transformation.
20193
20194 2007-05-02  Nick Clifton  <nickc@redhat.com>
20195
20196         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
20197
20198 2007-05-02  Richard Guenther  <rguenther@suse.de>
20199
20200         PR tree-optimization/31146
20201         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
20202         argument, single_use_p.  If we have a single use that is
20203         a conversion to the definition rhs type, propagate that rhs.
20204         (forward_propagate_addr_expr): Pass single_use_p argument
20205         to forward_propagate_addr_expr_1.
20206
20207 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20208
20209         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
20210         variable.
20211
20212 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20213
20214         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
20215         'AMD Family 10 core'.
20216
20217 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20218
20219         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
20220         and athlon64-sse3 as improved versions of k8, opteron and athlon64
20221         with SSE3 instruction set support.
20222         * doc/invoke.texi: Likewise.
20223
20224 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20225
20226         * config/i386/i386.c (override_options): Tuning 32-byte loop
20227         alignment for amdfam10 architecture. Increasing the max loop
20228         alignment to 24 bytes.
20229
20230 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
20231
20232         * config/m68k/constraints.md: New.
20233         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
20234         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
20235         EXTRA_CONSTRAINT): Remove.
20236         * config/m68k/m68k.md: Include constraints.md.
20237         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
20238
20239 2007-05-01  Ian Lance Taylor  <iant@google.com>
20240
20241         PR tree-optimization/31739
20242         * tree-vrp.c (vrp_val_is_max): New static function.
20243         (vrp_val_is_min): New static function.
20244         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
20245         copying the node.
20246         (set_value_range): Use vrp_val_is_{max,min}.
20247         (extract_range_from_assert): Likewise.
20248         (extract_range_from_binary_expr): Likewise.
20249         (extract_range_from_unary_expr): Likewise.
20250         (dump_value_range, vrp_meet): Likewise.
20251         (vrp_visit_phi_node): Likewise.
20252         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
20253
20254 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
20255
20256         * config/i386/gmon-sol2.c (size_t): New type.
20257         (intptr_t): Likewise.
20258         (s_textsize): Declare as size_t.
20259         (sbrk): Declare.
20260         (monstartup): Use size_t for sizes.
20261         (_mcount): Save and restore registers.
20262         (internal_mcount): Pass 0 as the first argument to monstartup
20263         in 64-bit mode.
20264         (moncontrol): Convert pointer to appropriately sized integer
20265         before passing to profil.
20266
20267 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20268
20269         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
20270         __NO_FPRS__, not just if _SOFT_DOUBLE.
20271         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
20272         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
20273         also for E500 double.
20274         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
20275         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
20276         && !TARGET_FPRS).
20277
20278 2007-05-01  Richard Guenther  <rguenther@suse.de>
20279
20280         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
20281         is NULL.
20282
20283 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20284
20285         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
20286
20287 2007-05-01  Jan Hubicka  <jh@suse.cz>
20288
20289         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
20290         invariant.
20291
20292 2007-05-01  Jan Hubicka  <jh@suse.cz>
20293
20294         * tree.h (maybe_fold_offset_to_component_ref): Remove.
20295         (maybe_fold_offset_to_reference): Declare.
20296         * fold-const.c (fold_unary): Do not fold
20297         (type *)&A into &A->field_of_type_and_offset_0
20298         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
20299         size is unknown, give up.
20300         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
20301         offsets.
20302         (maybe_fold_offset_to_reference): New.
20303         (maybe_fold_stmt_indirect): Use it.
20304         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
20305         * gimplify.c (gimplify_conversion): Canonicalize conversions to
20306         field references.
20307         (gimplify_expr): Likewise for plus_expr.
20308
20309 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
20310
20311         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
20312         bsi_after_labels.  Always insert statements before bsi.
20313         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
20314         * predict.c (apply_return_prediction): Check for empty blocks.
20315         * cfgexpand.c (lab_rtx_for_bb): New variable.
20316         (label_rtx_for_bb): Do not create new tree labels.
20317         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
20318         (tree_expand_cfg): Initialize lab_rtx_for_bb.
20319         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
20320         creating edges.
20321         (label_for_bb): Add field used.
20322         (update_eh_label, main_block_label): Mark the label used.
20323         (cleanup_dead_labels): Remove unused labels.
20324
20325 2007-05-01  Richard Guenther  <rguenther@suse.de>
20326
20327         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
20328         if it is not about to be set.
20329         (get_value_range): Do not pre-allocate equiv bitmap.
20330         (update_value_range): No need to clear equiv field.
20331         (add_equivalence): Change prototype to get bitmap pointer.
20332         Allocate bitmap here if it is not already.
20333         (extract_range_from_assert): Do not allocate bitmap here.
20334         Update callers to add_equivalence.
20335         (extract_range_from_ssa_name): Likewise.
20336         (get_vr_for_comparison): New static helper.
20337         (compare_name_with_value): Handle NULL equiv bitmap by
20338         peeling the first iteration of the comparison loop.
20339         Use get_vr_for_comparison.
20340         (compare_names): Handle NULL equiv bitmaps by using fake
20341         ones.  Use get_vr_for_comparison.
20342
20343 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
20344
20345         * double-int.c (mpz_set_double_int): Moved from
20346         tree-ssa-loop-niter.c.
20347         (mpz_get_double_int): Likewise; also, add option to wrap
20348         out-of-range integers.
20349         * double-int.h: New prototypes for above.
20350         * tree.c (get_static_type_bounds): Moved from
20351         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
20352         TYPE_MAX_VALUE if they exist..
20353         * tree.h: New prototype for above.
20354         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
20355         get_type_bounds calls.
20356         (mpz_set_double_int): Move to double-int.c.
20357         (get_type_bounds): Move to tree.c, rename to
20358         get_static_type_bounds.
20359         (mpz_to_double_int): Move to double-int.c, rename to
20360         mpz_get_double_int.
20361
20362 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
20363
20364         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
20365         DIV0 exception can fall through to a normal return.
20366
20367 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
20368
20369         PR middle-end/22156
20370         Temporarily revert:
20371         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
20372         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
20373         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20374         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
20375         initialize align to silence bogus warning.
20376         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20377         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
20378         all_no_warning.
20379         (struct sra_walk_fns): Remove use_all parameter from use.
20380         (sra_hash_tree): Handle BIT_FIELD_REFs.
20381         (sra_elt_hash): Don't hash bitfld blocks.
20382         (sra_elt_eq): Skip them in parent compares as well.  Handle
20383         BIT_FIELD_REFs.
20384         (sra_walk_expr): Don't maintain or pass down use_all_p.
20385         (scan_use): Remove use_all parameter.
20386         (scalarize_use): Likewise.  Re-expand assignment to
20387         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
20388         output, and re-scalarize after output.  Don't mark anything
20389         for no warning.
20390         (scalarize_ldst): Adjust.
20391         (scalarize_walk_gimple_modify_statement): Likewise.
20392         (build_element_name_1): Handle BIT_FIELD_REFs.
20393         (instantiate_element): Don't warn for any element whose parent
20394         is used as a whole.
20395         (instantiate_missing_elements_1): Return the sra_elt.
20396         (canon_type_for_field): New.
20397         (try_instantiate_multiple_fields): New.
20398         (instantiate_missing_elemnts): Use them.
20399         (mark_no_warning): Removed.
20400         (generate_one_element_ref): Handle BIT_FIELD_REFs.
20401         (REPLDUP, sra_build_elt_assignment): New.
20402         (generate_copy_inout): Use them.
20403         (generate_element_copy): Likewise.  Handle bitfld differences.
20404         (generate_element_zero): Don't recurse for blocks.  Use
20405         sra_build_elt_assignment.
20406         (generate_one_element_int): Take elt instead of var.  Use
20407         sra_build_elt_assignment.
20408         (generate_element_init_1): Adjust.
20409         (scalarize_use, scalarize_copy): Use REPLDUP.
20410         (scalarize_ldst): Move assert before dereference.
20411         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20412
20413 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20414
20415         PR C++/31721
20416         * tree.c (reconstruct_complex_type): Reconstruct a reference
20417         correctly.
20418         Also use the same mode for the pointer as the old pointer type.
20419
20420 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20421
20422         * doc/trouble.texi (Interoperation): Remove note about Ultrix
20423         Fortran compiler.
20424
20425 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
20426
20427         PR rtl-optimization/31676
20428         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
20429         (df_refs_record): Call it.
20430
20431 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
20432
20433         * rtl.def (SS_ABS): New code.
20434         * config/bfin/bfin.c (print_operand): New modifier 'v'.
20435         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
20436         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
20437         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
20438         (bfin_init_builtins): Define them.
20439         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
20440         (bfin_expand_builtin): ... and handle the others here.
20441         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
20442         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
20443         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
20444         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
20445         operand is only HImode.
20446
20447 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
20448
20449         * regclass.c (scan_one_insn): Remove splitting of
20450         two address insns.
20451
20452 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
20453             Nigel Stephens  <nigel@mips.com>
20454
20455         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
20456
20457 2007-04-28  Jan Hubicka  <jh@suse.cz>
20458
20459         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
20460         insn_locators_alloc instead of insn_locators_initialize;
20461         call reset_block_changes.
20462         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20463         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
20464         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
20465         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
20466         * config/score/score.c (th_output_mi_thunk): Likewise.
20467         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
20468         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
20469         tolerate uninitialized locator info.
20470
20471         Re-apply:
20472         * function.c (init_function_start): Don't init line number info.
20473         (expand_function_end): Update.
20474         (reset_block_changes, record_block_change, finalize_block_changes,
20475         check_block_change, free_block_changes): Kill.
20476         * function.h (reset_block_changes, record_block_change,
20477         finalize_block_changes, check_block_change, free_block_changes):
20478         Remove prototypes.
20479         (struct function): Remove ib_boundaries_block.
20480         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20481         Use curr_insn_locator to initialize locator.
20482         (emit_line_note): Remove.
20483         * cfgexpand.c (expand_gimple_cond_expr): Update.
20484         (construct_exit_block): Likewise.
20485         (tree_expand_cfg): Initialize/finalize locators.
20486         * expr.c (expand_expr_real): Update.
20487         * cfglayout.c (line_locators_locs, line_locators_lines,
20488         file_locators_locs, file_locators_files): Remove.
20489         (set_block_levels): Move to cfgexpand.c.
20490         (insn_locators_initialize): Remove.
20491         (pass_insn_locators_initialize): Remove.
20492         (locations_locators_locs, locations_locators_vals): New static vars.
20493         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20494         Likewise.
20495         (insn_locators_alloc, insn_locators_finalize,
20496         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20497         New functions.
20498         (locator_location): New.
20499         (locator_line, locator_file): Rewrite.
20500         * rtl.h (emit_line_note): Kill.
20501         (insn_locators_alloc, insn_locators_finalize,
20502         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20503         Declare.
20504         * tree-inline.c (initialize_cfun): Do not initialize
20505         ib_boundaries_block.
20506         * passes.c (pass_insn_locators_initialize): Remove.
20507
20508 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
20509
20510         * tree-cfg.c (move_block_to_fn): Release bb from dominance
20511         info.  Update last_basic_block correctly.
20512
20513 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
20514
20515         PR target/31701
20516         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
20517         register itself to hold the offset constant.  Tell flow the use
20518         of r4 and r5 when they are used.
20519
20520 2007-04-27  Richard Guenther  <rguenther@suse.de>
20521
20522         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
20523         if we simplified anything.
20524         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
20525         warnings until we did a simplification and the stmt was not
20526         marked as TREE_NO_WARNING.
20527
20528 2007-04-27  Mike Stump  <mrs@apple.com>
20529
20530         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
20531
20532 2007-04-27  Ian Lance Taylor  <iant@google.com>
20533
20534         PR middle-end/31710
20535         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
20536         TYPE_MAX_VALUE exist, convert them to the new type.
20537
20538 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20539
20540         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
20541         if it claims to be available.
20542         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
20543         edge is redirected.
20544         (perform_tree_ssa_dce): Always free postdominators.
20545
20546 2007-04-27  Richard Henderson  <rth@redhat.com>
20547
20548         * config/alpha/predicates.md (aligned_memory_operand): Mark
20549         as define_special_predicate.
20550         (unaligned_memory_operand, normal_memory_operand): Likewise.
20551         (reg_or_unaligned_mem_operand): Remove.
20552         (any_memory_operand): Match the documentation and check for
20553         non-renumbered pseudos during reload.
20554         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
20555         alpha_secondary_reload_class, update to new interface, make static.
20556         Handle CQImode like HImode.  Remove FP subreg check.
20557         (alpha_expand_mov): Use replace_equiv_address.
20558         (alpha_expand_mov_nobwx): Use any_memory_operand.
20559         (TARGET_SECONDARY_RELOAD): New.
20560         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
20561         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
20562         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
20563         * config/alpha/alpha.md: ... here.
20564         (RELOAD12, reloadmode): New.
20565         (movcqi): New.
20566         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
20567         Don't handle the aligned case here.
20568         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
20569         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
20570         reload_inhi_help.  Don't expect a scratch register.
20571         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
20572         reload_outhi_help.
20573         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
20574
20575 2007-04-27  Richard Guenther  <rguenther@suse.de>
20576
20577         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
20578
20579 2007-04-27  Richard Guenther  <rguenther@suse.de>
20580
20581         PR tree-optimization/30965
20582         PR tree-optimization/30978
20583         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
20584         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
20585         (find_equivalent_equality_comparison): Likewise.
20586         (simplify_cond): Likewise.
20587         (get_prop_source_stmt): New helper.
20588         (get_prop_dest_stmt): Likewise.
20589         (can_propagate_from): Likewise.
20590         (remove_prop_source_from_use): Likewise.
20591         (combine_cond_expr_cond): Likewise.
20592         (forward_propagate_comparison): New function.
20593         (forward_propagate_into_cond): Rewrite to use fold for
20594         tree combining.
20595         (tree_ssa_forward_propagate_single_use_vars): Call
20596         forward_propagate_comparison to propagate comparisons.
20597
20598 2007-04-27  Richard Guenther  <rguenther@suse.de>
20599
20600         PR tree-optimization/31715
20601         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
20602         sure to do computation on the offset in an appropriate
20603         signed type.
20604
20605 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
20606
20607         * reload.h (elimination_target_reg_p): Declare.
20608         * reload.c (find_reloads): Don't apply the reg_rtx move
20609         optimization if the SET_DEST satisfies elimination_target_reg_p.
20610         * reload1.c (elimination_target_reg_p): New function.
20611         (gen_reload): In the move/add2 fallback, make sure that op0
20612         does not overlap the destination register.
20613
20614 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20615
20616         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
20617         transform only GIMPLE_MODIFY_STMTs.
20618         * tree-complex.c (expand_complex_operations_1): Ditto.
20619         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
20620         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
20621         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
20622         branches.
20623         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
20624         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
20625         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
20626         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
20627         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
20628         slpeel_add_loop_guard): Ditto.
20629         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
20630         * lambda-code.c (perfect_nestify): Ditto.
20631         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
20632         before the first statement.
20633         * tree-optimize.c (execute_free_datastructures): Fix comments.
20634         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
20635         * tree-flow.h (disband_implicit_edges): Declaration removed.
20636         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
20637         branches.
20638         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
20639         COND_EXPRs without gotos.
20640         (disband_implicit_edges, has_label_p): Removed.
20641         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
20642         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
20643         branches.
20644         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
20645         side effects.
20646         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
20647         also for COND_EXPRs.
20648         * cfgexpand.c (label_rtx_for_bb): New function.
20649         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
20650         Use label_rtx_for_bb to find the labels.
20651         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
20652         last block.  Detect fallthru edges.
20653
20654 2007-04-26  Ian Lance Taylor  <iant@google.com>
20655
20656         PR target/28675
20657         * reload.c (find_reloads_subreg_address): If the address was valid
20658         in the original mode but not in the new mode, reload the whole
20659         address.
20660
20661 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20662
20663         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
20664         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
20665         (cleanup_control_expr_graph): Do not invalidate dominance info.
20666         Record altered blocks.
20667         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
20668         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
20669         cleanup_tree_cfg_bb): New functions.
20670         (remove_forwarder_block): Do not maintain the worklist of blocks.
20671         Record altered blocks.
20672         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
20673         not over whole cfg.
20674         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
20675         delete_unreachable_blocks if dominators are not available.
20676         * tree-inline.c (optimize_inline_calls): Free dominance information
20677         earlier.
20678         * tree-flow.h (remove_edge_and_dominated_blocks,
20679         cfgcleanup_altered_bbs): Altered.
20680         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
20681         blocks.
20682         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
20683         functions.
20684         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
20685         do not invalidate dominators.
20686
20687 2007-04-26  Anatoly Sokolov <aesok@post.ru>
20688
20689         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
20690         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
20691         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
20692         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
20693
20694 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
20695
20696         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
20697
20698 2007-04-26  Richard Guenther  <rguenther@suse.de>
20699
20700         PR tree-optimization/31703
20701         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
20702         the right type for the target of the bittest.
20703
20704 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20705
20706         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
20707         ix86_sol10_return_in_memory.
20708
20709 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20710
20711         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
20712         variables.
20713
20714 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
20715
20716         PR c++/31598
20717         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
20718
20719         PR tree-optimization/30558
20720         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
20721         clear this_state.prev_try.
20722
20723 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20724             Mark Mitchell  <mark@codesourcery.com>
20725
20726         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
20727         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
20728         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
20729
20730 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20731
20732         PR driver/31107
20733         * doc/invoke.texi (%:print-asm-header): Document.
20734         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
20735         and -ftarget-help.
20736         (static_spec_functions): Add print-asm-header.
20737         (main): Print a banner before the --target-help linker options.
20738         (print_asm_header_spec_function): New function.
20739
20740 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
20741
20742         PR target/31403
20743         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
20744         (movsf_ie): Likewise.
20745
20746 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
20747
20748         * doc/extend.texi ([Type Traits]): Adjust per N2255.
20749
20750 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
20751
20752         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
20753         exception for divide-by-zero.
20754         (__umodsi3, __modsi3): Likewise.
20755
20756 2007-04-25  Dirk Mueller  <dmueller@suse.de>
20757
20758         * c-typeck.c (build_compound_expr): Annotate warning()
20759         call with OPT_Wunused_value.
20760         * tree-ssa.c (warn_uninit): Annotate warning with
20761         OPT_Wunintialized.
20762         * c-common.c (handle_sentinel_attribute): Annotate warning
20763         call with OPT_Wattributes.
20764
20765 2007-04-25  Thiemo Seufer  <ths@mips.com>
20766
20767         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
20768         (mips16): Fix typo.
20769         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
20770         on to the assembler.  Improve handling of -mno-mips16.  Add handling
20771         of -mno-mips3d, -mno-dsp, -mno-dspr2.
20772         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
20773         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
20774         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
20775
20776 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
20777
20778         PR target/31680
20779         * config/i386/winnt.c (i386_pe_file_end): Strip only
20780         USER_LABEL_PREFIX when writing export name.
20781
20782 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
20783
20784         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
20785         sh/elf.h, vx-common.h and vxworks.h.
20786         * config/sh/sh.h: Include config/vxworks-dummy.h.
20787         (SUBTARGET_OVERRIDE_OPTIONS): Define.
20788         (OVERRIDE_OPTIONS): Use it.
20789         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
20790         (vxworks_picreg): New pattern.
20791         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
20792         VXWORKS_OS_CPP_BUILTINS.
20793         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
20794         to their VXWORKS_* equivalents.
20795         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
20796         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
20797         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
20798         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
20799         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
20800         -mrtp/-fPIC multilibs.
20801         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
20802         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
20803         (MULTILIB_OSDIRNAMES): Delete.
20804
20805 2007-04-25  Anatoly Sokolov <aesok@post.ru>
20806
20807         PR target/18989
20808         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
20809
20810 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
20811
20812         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
20813         rounding mode to be specified by the caller.
20814         (real_to_mpfr) Likewise.
20815         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
20816         include new arguments.
20817         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
20818
20819 2007-04-24  Ian Lance Taylor  <iant@google.com>
20820
20821         PR tree-optimization/31605
20822         * tree-vrp.c (set_value_range): Check that min and max are not
20823         both overflow infinities.
20824         (set_value_range_to_value): New static function.
20825         (extract_range_from_binary_expr): Call set_value_range_to_value.
20826         (extract_range_from_cond_expr): Likewise.
20827         (extract_range_from_expr): Likewise.
20828         (extract_range_from_unary_expr): Likewise.  Don't create a range
20829         which overflows on both sides.
20830         (vrp_meet): Check for a useless range.
20831         (vrp_visit_phi_node): If we see a constant which looks like an
20832         overflow infinity, turn off the TREE_OVERFLOW flag.
20833
20834 2007-04-24  Ian Lance Taylor  <iant@google.com>
20835
20836         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
20837
20838 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
20839
20840         PR diagnostic/25923
20841         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
20842         diagnostic message is being built.
20843         * tree-pretty-print.c (dump_generic_node): Only write the
20844         formatted text into BUFFER's stream if we are not building a
20845         diagnostic message.
20846         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
20847         dump_generic_node.
20848         * Makefile.in (toplev.o): Depend on tree-pass.h.
20849
20850 2007-04-24  Ian Lance Taylor  <iant@google.com>
20851
20852         PR tree-optimization/31602
20853         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
20854         conditionals in the copied loop header.
20855         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
20856         warnings if TREE_NO_WARNING is set.
20857         * doc/invoke.texi (Warning Options): Clarify that
20858         -Wstrict-overflow does not warn about loops.
20859
20860 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
20861
20862         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
20863         expand on the comment about _Decimal128 arguments and check the
20864         integer result of the modulus operation; for 64-bit ELF ABI, ensure
20865         that _Decimal128 argument uses even/odd register pair.
20866         (function_arg): Ditto.
20867
20868 2007-04-24  Hui-May Chang <hm.chang@apple.com>
20869
20870         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
20871         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
20872
20873 2007-04-24  Richard Guenther  <rguenther@suse.de>
20874             Olga Golovanevsky  <olga@il.ibm.com>
20875
20876         * fold-const.c (multiple_of_p): Check for bottom
20877         to be zero.
20878
20879 2007-04-24  Richard Henderson  <rth@redhat.com>
20880
20881         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
20882         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
20883         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
20884         looking for non-zero bits shifted out.  Avoid a recursive call
20885         when constructing the scalar.
20886         (__floatundisf): Likewise.
20887
20888 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20889
20890         * dwarf2out.c (field_byte_offset): Move the existing logic
20891         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
20892         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
20893
20894 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20895
20896         PR target/31641
20897         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
20898         length argument of 0 for memset.
20899         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
20900         unsigned shift instead of the signed variant.
20901
20902 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20903
20904         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
20905         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
20906         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
20907         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
20908         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
20909         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
20910         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
20911         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
20912         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
20913         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
20914         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
20915         "mul<mode>3", "div<mode>3"): Insn definitions added.
20916         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
20917         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
20918         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
20919         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
20920         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
20921         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
20922         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
20923         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
20924         TARGET_FLOAT_FORMAT): Macro definitions removed.
20925         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
20926         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
20927         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
20928         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
20929         (s390_gen_rtx_const_DI): Function removed.
20930         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
20931
20932 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
20933
20934         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
20935         over an external ffs function.
20936
20937 2007-04-24  Chao-ying Fu  <fu@mips.com>
20938             Richard Sandiford  <richard@nildram.co.uk>
20939
20940         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
20941         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
20942         (smadd_widen_optab, umadd_widen_optab): Define.
20943         * optabs.c (init_optabs): Initialize smadd_widen_optab and
20944         umadd_widen_optab.
20945         * genopinit.c (optabs): Fill in smadd_widen_optab and
20946         umadd_widen_optab.
20947         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
20948         and umadd_widen_optab to implement multiply-add sequences.
20949         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
20950         (<u>maddsidi4): ...this.  Extend condition to include
20951         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
20952         of operand 0 to "ka" and use the three-operand form of madd<u>
20953         for TARGET_DSPR2.
20954         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
20955         to define_expands.
20956         * config/mips/constraints.md (ka): New register constraint.
20957
20958 2007-04-24  Jan Hubicka  <j@suse.cz>
20959
20960         Revert:
20961
20962         2007-04-23  Jan Hubicka  <jh@suse.cz>
20963         * function.c (init_function_start): Don't init line number info.
20964         (expand_function_end): Update.
20965         (reset_block_changes, record_block_change, finalize_block_changes,
20966         check_block_change, free_block_changes): Kill.
20967         * function.h (reset_block_changes, record_block_change,
20968         finalize_block_changes, check_block_change, free_block_changes):
20969         Remove prototypes.
20970         (struct function): Remove ib_boundaries_block.
20971         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20972         Use curr_insn_locator to initialize locator.
20973         (emit_line_note): Remove.
20974         * cfgexpand.c (expand_gimple_cond_expr): Update.
20975         (construct_exit_block): Likewise.
20976         (tree_expand_cfg): Initialize/finalize locators.
20977         * expr.c (expand_expr_real): Update.
20978         * cfglayout.c (line_locators_locs, line_locators_lines,
20979         file_locators_locs, file_locators_files): Remove.
20980         (set_block_levels): Move to cfgexpand.c.
20981         (insn_locators_initialize): Remove.
20982         (pass_insn_locators_initialize): Remove.
20983         (locations_locators_locs, locations_locators_vals): New static vars.
20984         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20985         Likewise.
20986         (insn_locators_alloc, insn_locators_finalize,
20987         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20988         New functions.
20989         (locator_location): New.
20990         (locator_line, locator_file): Rewrite.
20991         * rtl.h (emit_line_note): Kill.
20992         (insn_locators_alloc, insn_locators_finalize,
20993         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20994         Declare.
20995         * tree-inline.c (initialize_cfun): Do not initialize
20996         ib_boundaries_block.
20997         * passes.c (pass_insn_locators_initialize): Remove.
20998
20999 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
21000
21001         * doc/invoke.texi: Removed leading '-' from option index entries.
21002
21003 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
21004
21005         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
21006         Use phi_nodes_ptr.
21007         (create_phi_node): Use set_phi_nodes.
21008         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
21009         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
21010         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
21011         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
21012         (bsi_start, bsi_last): Use bb_stmt_list.
21013         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
21014         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
21015         Traverse the statements using tsi iterator.
21016         * basic-block.h (struct basic_block_def): Fields stmt_list
21017         and phi_nodes moved to ...
21018         (struct tree_bb_info): ... new structure.
21019         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
21020         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
21021         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
21022         (tree_verify_flow_info): Verify that il.tree is not set for
21023         entry and exit block.
21024         (tree_split_block): Use set_bb_stmt_list.
21025
21026 2007-04-23  Mike Stump  <mrs@apple.com>
21027
21028         * config/i386/i386.c (ix86_tune_features
21029         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
21030         nocona and core2.
21031
21032 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21033
21034         * config/i386/i386.md (prefix_extra): New attribute.
21035         (length): Add prefix_extra.
21036
21037         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
21038         (sse2_movntv2di): Likewise.
21039         (sse2_cvtps2dq): Likewise.
21040         (sse2_cvtpd2pi): Likewise.
21041         (sse2_cvttpd2pi): Likewise.
21042         (*sse2_cvtpd2ps): Likewise.
21043         (*add<mode>3): Likewise.
21044         (sse2_ssadd<mode>3): Likewise.
21045         (sse2_usadd<mode>3): Likewise.
21046         (*sub<mode>3): Likewise.
21047         (sse2_sssub<mode>3): Likewise.
21048         (sse2_ussub<mode>3): Likewise.
21049         (*mulv8hi3): Likewise.
21050         (*smulv8hi3_highpart): Likewise.
21051         (*umulv8hi3_highpart): Likewise.
21052         (sse2_umulv2siv2di3): Likewise.
21053         (sse2_pmaddwd): Likewise.
21054         (ashr<mode>3): Likewise.
21055         (lshr<mode>3): Likewise.
21056         (ashl<mode>3): Likewise.
21057         (sse2_ashlti3): Likewise.
21058         (sse2_lshrti3): Likewise.
21059         (*umaxv16qi3): Likewise.
21060         (*smaxv8hi3): Likewise.
21061         (*uminv16qi3): Likewise.
21062         (*sminv8hi3): Likewise.
21063         (sse2_eq<mode>3): Likewise.
21064         (sse2_gt<mode>3): Likewise.
21065         (*and<mode>3): Likewise.
21066         (sse2_nand<mode>3): Likewise.
21067         (*ior<mode>3): Likewise.
21068         (*xor<mode>3): Likewise.
21069         (sse2_packsswb): Likewise.
21070         (sse2_packssdw): Likewise.
21071         (sse2_packuswb): Likewise.
21072         (sse2_punpckhbw): Likewise.
21073         (sse2_punpcklbw): Likewise.
21074         (sse2_punpckhwd): Likewise.
21075         (sse2_punpcklwd): Likewise.
21076         (sse2_punpckhdq): Likewise.
21077         (sse2_punpckldq): Likewise.
21078         (sse2_punpckhqdq): Likewise.
21079         (sse2_punpcklqdq): Likewise.
21080         (*sse2_pinsrw): Likewise.
21081         (*sse2_pextrw): Likewise.
21082         (sse2_pshufd_1): Likewise.
21083         (sse2_uavgv16qi3): Likewise.
21084         (sse2_uavgv8hi3): Likewise.
21085         (sse2_psadbw): Likewise.
21086         (sse2_pmovmskb): Likewise.
21087         (*sse2_maskmovdqu): Likewise.
21088         (*sse2_maskmovdqu_rex64): Likewise.
21089         (sse4a_extrqi): Likewise.
21090         (sse4a_extrq): Likewise.
21091         (sse3_lddqu): Set prefix_rep.
21092         (sse3_addsubv4sf3): Likewise.
21093         (sse3_haddv4sf3): Likewise.
21094         (sse3_hsubv4sf3): Likewise.
21095         (sse_cvtss2si): Likewise.
21096         (sse_cvtss2si_2): Likewise.
21097         (sse_cvtss2siq): Likewise.
21098         (sse_cvtss2siq_2): Likewise.
21099         (sse_cvttss2si): Likewise.
21100         (sse_cvttss2siq): Likewise.
21101         (sse2_cvttps2dq): Likewise.
21102         (sse3_movshdup): Likewise.
21103         (sse3_movsldup): Likewise.
21104         (sse2_cvtsd2si): Likewise.
21105         (sse2_cvtsd2si_2): Likewise.
21106         (sse2_cvtsd2siq): Likewise.
21107         (sse2_cvtsd2siq_2): Likewise.
21108         (sse2_cvttsd2si): Likewise.
21109         (sse2_cvttsd2siq): Likewise.
21110         (*sse2_cvtpd2dq): Likewise.
21111         (*sse2_cvttpd2dq): Likewise.
21112         (sse2_pshuflw_1): Likewise.
21113         (sse2_pshufhw_1): Likewise.
21114         (sse4a_insertqi): Likewise.
21115         (sse4a_insertq): Likewise.
21116         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
21117         (ssse3_phadddv4si3): Likewise.
21118         (ssse3_phaddswv8hi3): Likewise.
21119         (ssse3_phsubwv8hi3): Likewise.
21120         (ssse3_phsubdv4si3): Likewise.
21121         (ssse3_phsubswv8hi3): Likewise.
21122         (ssse3_pmaddubswv8hi3): Likewise.
21123         (ssse3_pmulhrswv8hi3): Likewise.
21124         (ssse3_pshufbv16qi3): Likewise.
21125         (ssse3_psign<mode>3): Likewise.
21126         (ssse3_palignrti): Likewise.
21127         (abs<mode>2): Likewise.
21128         (ssse3_phaddwv4hi3): Set prefix_extra.
21129         (ssse3_phadddv2si3): Likewise.
21130         (ssse3_phaddswv4hi3): Likewise.
21131         (ssse3_phsubwv4hi3): Likewise.
21132         (ssse3_phsubdv2si3): Likewise.
21133         (ssse3_phsubswv4hi3): Likewise.
21134         (ssse3_pmaddubswv4hi3): Likewise.
21135         (ssse3_pmulhrswv4hi3): Likewise.
21136         (ssse3_pshufbv8qi3): Likewise.
21137         (ssse3_psign<mode>3): Likewise.
21138         (ssse3_palignrdi): Likewise.
21139         (abs<mode>2): Likewise.
21140         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
21141         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
21142         (sse2_pmovmskb): Set mode to SI instead of V2DF.
21143
21144 2007-04-23  Nick Clifton  <nickc@redhat.com>
21145
21146         * params.def: Fix formatting of emacs local variables.
21147
21148 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21149
21150         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
21151         move if inter-unit move isn't allowed.
21152         Don't split moving the first element of V2DI to DI to inter-unit
21153         move if inter-unit move isn't allowed.
21154
21155 2007-04-23  Richard Guenther  <rguenther@suse.de>
21156
21157         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
21158         and CDI_POST_DOMINATORS separately.
21159
21160 2007-04-23  Nick Clifton  <nickc@redhat.com>
21161
21162         * c.opt (Wformat-contains-nul): Add warning attribute.
21163
21164 2007-04-23  Jan Hubicka  <jh@suse.cz>
21165
21166         * function.c (init_function_start): Don't init line number info.
21167         (expand_function_end): Update.
21168         (reset_block_changes, record_block_change, finalize_block_changes,
21169         check_block_change, free_block_changes): Kill.
21170         * function.h (reset_block_changes, record_block_change,
21171         finalize_block_changes, check_block_change, free_block_changes):
21172         Remove prototypes.
21173         (struct function): Remove ib_boundaries_block.
21174         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21175         Use curr_insn_locator to initialize locator.
21176         (emit_line_note): Remove.
21177         * cfgexpand.c (expand_gimple_cond_expr): Update.
21178         (construct_exit_block): Likewise.
21179         (tree_expand_cfg): Initialize/finalize locators.
21180         * expr.c (expand_expr_real): Update.
21181         * cfglayout.c (line_locators_locs, line_locators_lines,
21182         file_locators_locs, file_locators_files): Remove.
21183         (set_block_levels): Move to cfgexpand.c.
21184         (insn_locators_initialize): Remove.
21185         (pass_insn_locators_initialize): Remove.
21186         (locations_locators_locs, locations_locators_vals): New static vars.
21187         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21188         Likewise.
21189         (insn_locators_alloc, insn_locators_finalize,
21190         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21191         New functions.
21192         (locator_location): New.
21193         (locator_line, locator_file): Rewrite.
21194         * rtl.h (emit_line_note): Kill.
21195         (insn_locators_alloc, insn_locators_finalize,
21196         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21197         Declare.
21198         * tree-inline.c (initialize_cfun): Do not initialize
21199         ib_boundaries_block.
21200         * passes.c (pass_insn_locators_initialize): Remove.
21201
21202 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21203
21204         PR middle-end/31448
21205         * expr.c (reduce_to_bit_field_precision): Handle
21206         CONST_INT rtx's.
21207
21208 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
21209
21210         PR tree-optimization/24659
21211         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
21212         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
21213         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
21214         * genopinit.c (optabs): Rename vec_pack_mod_optab
21215         to vec_pack_trunc_optab.
21216         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
21217         early for scalar floating point operands for NOP_EXPR.
21218         (vectorizable_type_promotion): Ditto.
21219         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
21220         vec_pack_trunc_optab.
21221         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
21222
21223         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
21224         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
21225         Rename from VEC_PACK_MOD_EXPR.
21226         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
21227         * expr.c (expand_expr_real_1): Ditto.
21228         * tree-inline.c (estimate_num_insns_1): Ditto.
21229         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
21230
21231         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
21232         (vec_unpacks_lo_v4sf): Ditto.
21233         (vec_pack_trunc_v2df): Ditto.
21234         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
21235         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21236         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
21237
21238         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
21239         vec_pack_mod_v8hi.
21240         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21241
21242         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
21243         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
21244         packing of floating point operands.
21245         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
21246         represent unpacking of floating point operands.
21247         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
21248         [vec_unpacks_hi]: Ditto.
21249         [vec_unpacks_lo]: Ditto.
21250
21251 2007-04-22  Jan Hubicka  <jh@suse.cz>
21252
21253         * final.c (rest_of_handle_final): Call
21254         targetm.asm_out.constructor/targetm.asm_out.destructor
21255         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
21256         proper priority via decl_*_priority_insert.
21257         * c-common.c (c_expand_body): Likewise.
21258
21259 2007-04-22  Richard Guenther  <rguenther@suse.de>
21260
21261         PR tree-optimization/29789
21262         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
21263         (rewrite_reciprocal): New helper split out from
21264         determine_invariantness_stmt.
21265         (rewrite_bittest): Likewise.
21266         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
21267         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
21268         is not.
21269
21270 2007-04-22  Revital Eres  <eres@il.ibm.com>
21271
21272         * loop-unroll.c (var_to_expand): New field to support also
21273         insns of the form x = something + x.
21274         (analyze_insn_to_expand_var): Use it.
21275         (expand_var_during_unrolling): Likewise.
21276
21277 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21278
21279         * predict.c: Include pointer-set.h.
21280         (bb_predictions): New variable.
21281         (tree_predicted_by_p, tree_predict_edge,
21282         remove_predictions_associated_with_edge): Use bb_predictions map
21283         instead of bb->predictions.
21284         (clear_bb_predictions, assert_is_empty): New functions.
21285         (combine_predictions_for_bb): Use bb_predictions map.  Call
21286         clear_bb_predictions.
21287         (tree_estimate_probability): Create and free bb_predictions map.
21288         * Makefile.in (predict.o): Add pointer-set.h dependency.
21289         * basic-block.h (struct basic_block_def): Remove predictions
21290         field.
21291         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
21292
21293 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21294
21295         PR target/31480
21296         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
21297         is null.
21298
21299 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21300
21301         * timevar.c (timevar_print): Change reference of --disable-checking to
21302         --enable-checking=release.  Also warn if assert checking is disabled.
21303
21304 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21305
21306         PR C/30265
21307         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
21308         decl as addressable if the compound literal was marked as
21309         addressable.
21310         Mark the decl as a gimple register if it is a complex or
21311         vector decl and does not live in memory.
21312
21313 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21314
21315         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
21316         (GENERIC_NEXT): New function macro.
21317         (PHI_CHAIN): Use phi_node's new chain variable.
21318         (tree_phi_node): Change tree_common to tree_base
21319         and add the chain field.
21320         * tree-phinodes.c (make_phi_node): Don't set
21321         TREE_TYPE on the new node.
21322         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
21323         instead of checking GIMPLE_TUPLE_P in chain_next.
21324         * tree-vect-transform.c
21325         (get_initial_def_for_induction): Look at
21326         PHI_RESULT_TREE for the type of the phi node.
21327         (update_vuses_to_preheader): Use PHI_CHAIN
21328         instead of TREE_CHAIN on the phi node.
21329         * tree-ssa-structalias.c (compute_points_to_sets):
21330         Likewise.
21331         (ipa_pta_execute): Likewise.
21332
21333 2007-04-21  Richard Guenther  <rguenther@suse.de>
21334
21335         PR middle-end/31136
21336         * fold-const.c (fold_unary): Call fold_convert_const on the
21337         original tree.
21338
21339 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
21340
21341         * gcse.c (store_killed_in_insn): Handle PARALLELs.
21342         (store_killed_in_pat): New.
21343
21344 2007-04-20  Richard Henderson  <rth@redhat.com>
21345
21346         PR target/31628
21347         * config/i386/i386.c (type_has_variadic_args_p): Look for any
21348         TREE_LIST with a void_type_node value, not void_list_node exactly.
21349
21350 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
21351
21352         * doc/standards.texi: Re-arrange into language-specific
21353         subsections. Add a C++ section, documenting which standards we
21354         support.
21355
21356 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21357
21358         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
21359         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
21360
21361 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
21362
21363         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
21364         ecrti.o and crtbegin.o.
21365         (LIB_DEFAULT_SPEC): Include -lc.
21366         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
21367
21368 2007-04-20  Richard Henderson  <rth@redhat.com>
21369
21370         PR target/28623
21371         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
21372         argument; update all callers.
21373         (get_unaligned_offset): New.
21374         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
21375         get_unaligned_address, just pass on the address directly.
21376         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
21377         the subreg in the helper patterns.
21378         (unaligned_extendqidi_le): Use get_unaligned_offset.
21379         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
21380         (unaligned_extendhidi_be): Likewise.
21381         (unaligned_extendhidi): Tidy.
21382         * config/alpha/alpha-protos.h: Update.
21383
21384 2007-04-20  Richard Henderson  <rth@redhat.com>
21385
21386         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
21387         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
21388         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
21389         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21390         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21391         (CPP_SPEC): Don't include %(cpp_subtarget).
21392         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
21393         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21394         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
21395
21396 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
21397
21398         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
21399         for __builtin_ia32_cmpordss.
21400
21401         PR tree-optimization/31632
21402         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
21403         and arg1 for optimizations of comparison against min/max values.
21404         Fold arg0 to arg1's type for optimizations of comparison against
21405         min+1 and max-1 values.
21406
21407 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
21408
21409         * reload.c (combine_reloads): When trying to use a dying register,
21410         check whether it's uninitialized and don't use if so.
21411
21412 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
21413
21414         * fold-const.c: Remove prototypes for native_encode_expr and
21415         native_interpret_expr.
21416         (native_encode_expr): Make non-static.
21417         (native_interpret_expr): Likewise.
21418         * tree.h: Add prototypes for the above.
21419
21420 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21421
21422         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
21423         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
21424         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
21425         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
21426         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
21427         Add length attributes.
21428
21429 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
21430
21431         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
21432         not that it is 1.
21433
21434         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
21435         __STDC_WANT_DEC_FP__.
21436
21437 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21438
21439         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
21440         for long double compatibility.
21441         * configure: Regenerate.
21442
21443 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
21444
21445         PR rtl-optimization/29841
21446         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
21447         trap instructions.
21448         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
21449         that may cause control flow transfer from being moved.
21450
21451 2007-04-18  Jan Hubicka  <jh@suse.cz>
21452
21453         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
21454         types.
21455
21456 2007-04-18  Eric Christopher  <echristo@apple.com>
21457
21458         * config/rs6000/darwin.md (load_macho_picbase): Use link register
21459         only. Update operands.
21460         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
21461         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
21462         link register to pic register.
21463
21464 2007-04-18  Dirk Mueller  <dmueller@suse.de>
21465
21466         PR diagnostic/31227
21467         * tree-vrp.c (search_for_addr_array): New.
21468         (check_array_bounds): Suppress warning about
21469         address taken of array refs if its not de-referenced.
21470
21471 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21472
21473         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
21474         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
21475
21476         * tree-vectorizer.h (NITERS_KNOWN_P): New.
21477         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
21478         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
21479
21480         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
21481         dump print.
21482         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
21483         print message.
21484         (vect_analyze_scalar_cycles): Fix indentation.
21485         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
21486         (vect_mark_relevant): Include phis in relevance analysis.
21487
21488         * tree-vect-transform.c (vect_transform_loop): Add an assert.
21489
21490 2007-04-18  Anatoly Sokolov <aesok@post.ru>
21491
21492         * config/avr/avr.c (ptrreg_to_str): Replace error() with
21493         output_operand_lossage().
21494
21495 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21496
21497         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
21498         the unused code for reduction without adjust-in-epilog to simplify the
21499         function.
21500
21501 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
21502
21503         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
21504         (S390_TDC_NEGATIVE_ZERO): New constant.
21505         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
21506         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
21507         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
21508         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
21509         (S390_TDC_POSITIVE_INFINITY): New constant.
21510         (S390_TDC_NEGATIVE_INFINITY): New constant.
21511         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
21512         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
21513         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
21514         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
21515         (S390_TDC_INFINITY): New constant.
21516         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
21517         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
21518         optimization for UNSPEC_CCZ_TO_INT.
21519         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
21520         ("*ccz_to_int"): New insn.
21521         ("isinf<mode>2"): New insn.
21522         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
21523         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
21524         (UNSPEC_CCZ_TO_INT): New constant.
21525
21526 2007-04-18  Richard Guenther  <rguenther@suse.de>
21527
21528         PR tree-optimization/19431
21529         PR tree-optimization/21463
21530         * tree-pass.h (pass_phiprop): Declare.
21531         * passes.c (init_optimization_passes): New phiprop pass.
21532         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
21533         (phivn_valid_p): New helper function.
21534         (phiprop_insert_phi): Likewise.
21535         (propagate_with_phi): Likewise.
21536         (tree_ssa_phiprop): New propagator propagating loads
21537         through phi nodes if profitable.
21538
21539 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21540
21541         * tree-vect-analyze.c (process_use): New function.
21542         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
21543         Check phis in all bbs.
21544         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
21545         assert.
21546
21547 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
21548
21549         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
21550         we use REG_EQUAL.
21551
21552 2007-04-17  Anatoly Sokolov <aesok@post.ru>
21553
21554         PR target/30483
21555         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
21556         error().
21557
21558 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21559
21560         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
21561         on "0".
21562         (sse_vmmulv4sf3): Likewise.
21563         (sse2_vmaddv2df3): Likewise.
21564         (sse2_vmmulv2df3): Likewise.
21565
21566 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
21567
21568         PR rtl-optimization/31360
21569         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
21570         (target_reg_cost): New.
21571         (init_set_costs): Initialize target_reg_cost.  Add comments
21572         regarding the rationale of the costs.
21573         (global_cost_for_size): Renamed to...
21574         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
21575         of register pressure.
21576         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
21577         estimate_reg_pressure_cost.  Add number of ivs.
21578         (determine_set_costs): Dump target_reg_cost.
21579         * loop-invariant.c (gain_for_invariant): Use
21580         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
21581         (best_gain_for_invariant, find_invariants_to_move): Remove
21582         n_inv_uses.
21583         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
21584         (target_reg_cost): Declare.
21585         (global_cost_for_size): Declaration removed.
21586         (estimate_reg_pressure_cost): Declare.
21587
21588 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
21589
21590         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
21591         regnos into even/odd register pairs.
21592         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
21593         TDmode similar to the other floating point modes.
21594         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
21595         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
21596         define_expand's.
21597         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
21598         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
21599         (movdd_hardfloat64): Use TARGET_MFPGPR.
21600
21601 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
21602
21603         * reload1.c (delete_output_reload): Don't count output in n_inherited.
21604
21605         Revert
21606         2005-01-05  Richard Henderson  <rth@redhat.com>
21607         PR rtl-opt/10692
21608         * reload1.c (do_input_reload): Restrict the optimization deleteing
21609         a previous output reload to RELOAD_FOR_INPUT.
21610
21611 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
21612
21613         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
21614         induc_vec_info_type.
21615         (vectorizable_induction): New function declaration.
21616         * tree-vect-transform.c (get_initial_def_for_induction): No need to
21617         check if already vectorized.  Find first place in BB where new stmts
21618         can be inserted.  Takes only one argument.
21619         (vectorizable_induction): New function.
21620         (vect_transform_stmt): Add case for induc_vec_info_type to call
21621         vectorizable_induction.
21622         (vect_transform_loop): Consider phis for vectorization.
21623         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
21624         condition.
21625         (analyze_operations): Call vectorizable_induction when analyzing phis.
21626         Fix comment.
21627         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
21628         (vect_mark_relevant): Include phis in relevance analysis.
21629         (vect_mark_stmts_to_be_vectorize): Likewise.
21630         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
21631
21632 2007-04-16  Lawrence Crowl  <crowl@google.com>
21633
21634         * doc/invoke.texi (Debugging Options): Add documentation for the
21635         -femit-struct-debug options -femit-struct-debug-baseonly,
21636         -femit-struct-debug-reduced, and
21637         -femit-struct-debug-detailed[=...].
21638
21639         * c-opts.c (c_common_handle_option): Add
21640         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
21641         and OPT_femit_struct_debug_detailed_.
21642         * c.opt: Add specifications for
21643         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
21644         and -femit-struct-debug-detailed[=...].
21645         * opts.c (set_struct_debug_option): Parse the
21646         -femit-struct-debug-... options.
21647         * opts.c (matches_main_base, main_input_basename,
21648         main_input_baselength, base_of_path, matches_main_base): Add
21649         variables and functions to compare header base name to compilation
21650         unit base name.
21651         * opts.c (should_emit_struct_debug): Add to determine to emit a
21652         structure based on the option.
21653         (dump_struct_debug) Also disabled function to debug this
21654         function.
21655         * opts.c (handle_options): Save the base name of the
21656         compilation unit.
21657
21658         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
21659         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
21660         This hook indicates if a type is generic.  Set it by default
21661         to "never generic".
21662         * langhooks.h (struct lang_hooks_for_types): Add a new hook
21663         to determine if a struct type is generic or not.
21664         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
21665         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
21666         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
21667         with live C++ hook.
21668
21669         * flags.h (enum debug_info_usage): Add an enumeration to describe
21670         a program's use of a structure type.
21671         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
21672         to indicate the program's usage of the type.  Filter structs based
21673         on the -femit-struct-debug-... specification.
21674         (gen_type_die): Split into two routines, gen_type_die and
21675         gen_type_die_with_usage.  gen_type_die is now a wrapper
21676         that assumes direct usage.
21677         (gen_type_die_with_usage): Replace calls to gen_type_die
21678         with gen_type_die_with_usage adding the program usage of
21679         the referenced type.
21680         (dwarf2out_imported_module_or_decl): Suppress struct debug
21681         information using should_emit_struct_debug when appropriate.
21682
21683 2007-04-16  Ian Lance Taylor  <iant@google.com>
21684
21685         PR tree-optimization/31522
21686         * tree-vrp.c (vr_phi_edge_counts): New static variable.
21687         (vrp_initialize): Allocate vr_phi_edge_counts.
21688         (vrp_visit_phi_node): Don't push to infinity if we saw a new
21689         executable edge.  Drop test for all constants.
21690         (vrp_finalize): Free vrp_phi_edge_counts.
21691
21692         * doc/cpp.texi (Common Predefined Macros): Clarify description of
21693         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
21694
21695         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
21696         predecessors at head rather than tail.
21697
21698 2007-04-16  Matthias Klose  <doko@debian.org>
21699
21700         * config/alpha/linux.h (CPP_SPEC): Define.
21701         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
21702
21703 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
21704
21705         * function.h: Remove sequence_stack extern declaration.
21706
21707 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21708
21709         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
21710         TARGET_FIDOA.
21711         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
21712         defined.
21713
21714 2007-04-16  Anatoly Sokolov <aesok@post.ru>
21715
21716         * config/avr/avr.c (avr_arch_types): Rearranging  array.
21717         (enum avr_arch): Add.
21718         (avr_mcu_types): Use avr_arch enumeration constants instead of
21719         numbers.
21720         * config/avr/avr.h (LINK_SPEC): Simplify.
21721
21722 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21723
21724         * config/m68k/m68k.c (m68k_libcall_value,
21725         m68k_function_value): Use macros for register names more.
21726
21727         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
21728         instead.
21729         (M68K_REGNAME): Use A6_REG.
21730         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
21731
21732 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21733
21734         PR middle-end/28071
21735         * sched-int.h (struct deps): Split field 'pending_lists_length' into
21736         'pending_read_list_length' and 'pending_write_list_length'.  Update
21737         comment.
21738         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
21739         to handle two length counters instead of one.  Update all uses.
21740         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
21741         two length counters instead of one.
21742         * sched-rgn.c (propagate_deps): Update to handle two length counters
21743         instead of one.
21744
21745 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
21746
21747         PR target/31582
21748         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
21749         copy of source, pass it to ix86_expand_vector_set and return
21750         it as target.
21751
21752 2007-04-16  David Ung  <davidu@mips.com>
21753             Joseph Myers  <joseph@codesourcery.com>
21754
21755         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
21756         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
21757         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
21758         Add 74K processor information.
21759         * config/mips/mips.md: Include 74k.md.
21760         (cpu): Add 74kc,74kf,74kx.
21761         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
21762         * config/mips/74k.md: New.
21763         * doc/invoke.texi (MIPS Options): Document 74K support.
21764
21765 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
21766
21767         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
21768         vectorizable_* functions.
21769         * tree-vect-transform.c (vectorizable_call): Add check for
21770         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
21771         (vectorizable_store): likewise.
21772         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
21773         Add comments.
21774         (vectorizable_operation, vectorizable_type_demotion): Likewise.
21775         (vectorizable_type_promotion, vectorizable_load): Likewise.
21776         (vectorizable_live_operation, vectorizable_condition): Likewise.
21777         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
21778         STMT_VINFO_LIVE_P.
21779         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
21780
21781 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21782
21783         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
21784         register numbers more.
21785         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
21786         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
21787         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
21788         FUNCTION_VALUE_REGNO_P): Likewise.
21789         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
21790         STATIC_CHAIN_REGNUM): Likewise.
21791         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
21792         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
21793         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
21794         * config/m68k/m68k.md (FP_REG): New.
21795
21796 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21797
21798         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
21799         alignment on fido.
21800
21801 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21802
21803         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
21804         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
21805         comment typos.
21806
21807 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21808
21809         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
21810         cold loops.
21811
21812 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21813
21814         PR c/31520
21815         * c-decl.c (finish_decl): Grab the type of the decl after the call
21816         to store_init_value.
21817
21818 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
21819
21820         * common.opt (fforward-propagate): Fix "Optimization" annotation.
21821
21822 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
21823
21824         PR c++/25874
21825         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
21826         dominators, post dominators and cleanup cfg before returning.
21827
21828 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
21829
21830         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
21831         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
21832
21833 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
21834
21835         * config.gcc: Recognize fido.
21836         * config/m68k/m68k-devices.def (fidoa): New.
21837         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
21838         __mfido__.
21839         (FL_FIDOA, TARGET_FIDOA): New.
21840         * config/m68k/m68k.opt (mfidoa): New.
21841
21842 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21843
21844         PR middle-end/31322
21845         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
21846         when a personality function is used.
21847
21848 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
21849
21850         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
21851
21852 2007-04-13  Mike Stump  <mrs@apple.com>
21853
21854         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
21855         we can...
21856         * config/darwin.opt (fapple-kext): Make C++ only.
21857         * config/darwin.c (darwin_override_options): Remove code to ensure
21858         -fapple-kext is given for C++ only.
21859
21860 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
21861
21862         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
21863         * config/mips/mips.c (override_options): Call
21864         SUBTARGET_OVERRIDE_OPTIONS, if defined.
21865
21866 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21867
21868         * config/i386/i386.opt (msvr3-shlib): Removed.
21869
21870         * doc/invoke.texi: Remove -msvr3-shlib.
21871
21872 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21873
21874         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
21875         with "popcnt" instruction.
21876
21877 2007-04-13  Richard Guenther  <rguenther@suse.de>
21878
21879         PR tree-optimization/21258
21880         * tree-vrp.c (compare_case_labels): New helper.
21881         (find_switch_asserts): New function.
21882         (find_assert_locations): Call it for SWITCH_EXPRs.
21883
21884 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
21885
21886         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
21887         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
21888         check is now implied in X87_FLOAT_MODE_P.
21889         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21890         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21891         (fix_trunc<mode>_i386_fisttp): Ditto.
21892         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21893         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21894         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21895         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21896         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21897         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21898         (unnamed_splitters): Ditto.
21899         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
21900         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
21901         FIRST_SSE_REG for local functions when SSE math is enabled or
21902         for functions with sseregparm attribute.
21903         (standard_80387_constant_p): Return -1 if mode is not
21904         X87_FLOAT_MODE_P.
21905         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
21906         (ix86_expand_compare): Ditto.
21907         (ix86_expand_carry_flag_compare): Ditto.
21908         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
21909         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
21910         DECIMAL_FLOAT_MODE_P.
21911         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
21912         of SCALAR_FLOAT_MODE_P.
21913         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
21914         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
21915         checks before FLOAT_MODE_P.
21916         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
21917         before FLOAT_MODE_P.
21918         [DIV]: Ditto.
21919         [NEG]: Ditto.
21920         [ABS]: Ditto.
21921         [SQRT]: Ditto.
21922         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
21923
21924 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
21925             Charles Wilson  <libtool@cwilson.fastmail.fm>
21926
21927         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
21928         (libgcc.mvars): Don't depend on them.
21929         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
21930         * exec-tool.in: New.
21931
21932 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
21933
21934         * doc/invoke.text (--help): Document --help=common.
21935
21936 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
21937
21938         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
21939
21940 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21941
21942         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
21943         * genemit.c (main): Emit #include "integrate.h".
21944         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
21945         (LOADGP_RTP): New mips_loadgp_style.
21946         * config/mips/mips.h: Include config/vxworks-dummy.h.
21947         (TARGET_RTP_PIC): New macro.
21948         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
21949         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
21950         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
21951         for TARGET_RTP_PIC.
21952         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
21953         -mvxworks-pic when using -mrtp and a PIC option.
21954         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
21955         for RTP PIC.
21956         (mips_symbolic_constant_p, mips_symbolic_address_p)
21957         (mips_symbol_insns): Handle SYMBOL_HALF.
21958         (override_options): Warn about -G and -mrtp being used together.
21959         Initialize mips_lo_relocs[SYMBOL_HALF].
21960         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
21961         (mips_emit_loadgp): Handle LOADGP_RTP.
21962         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
21963         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
21964         (tablejump): Handle function-relative case table entries if
21965         TARGET_RTP_PIC.
21966         * config/mips/predicates.md (symbol_ref_operand): New predicate.
21967
21968 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21969
21970         * config/mips/mips.md (load_call<mode>): Allow any general register.
21971         destination.
21972         (sibcall_value_internal, sibcall_value_multiple_internal)
21973         (call_value_internal, call_value_split, call_value_multiple_internal)
21974         (call_value_multiple_split): Remove constraints from operand 0.
21975
21976 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21977
21978         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
21979         rather than loadgp_noshared.
21980         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
21981         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
21982         gen_loadgp.
21983         * config/mips/mips.md (loadgp): Rename to...
21984         (loadgp_newabi): ...this.
21985         (loadgp_noshared): Rename to...
21986         (loadgp_absolute): ...this.
21987
21988 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21989
21990         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
21991         false for locally-binding symbols.
21992         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
21993
21994 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21995
21996         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
21997         (SYMBOL_GOT_PAGE_OFST): ...this.
21998         (SYMBOL_GOT_GLOBAL): Rename to...
21999         (SYMBOL_GOT_DISP): ...this.
22000         (SYMBOL_GOTOFF_GLOBAL): Rename to...
22001         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
22002         * config/mips/mips.c (mips_global_symbol_p): New function.
22003         (mips_symbol_binds_local_p): Likewise.
22004         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
22005         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
22006         mips_global_symbol_p and mips_symbol_binds_local_p.
22007         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
22008         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
22009         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
22010         SYMBOL_GOTOFF_DISP.
22011         (mips_ok_for_lazy_binding_p): New function.
22012         (mips_load_call_address, mips_expand_call): Use it.
22013         (mips_dangerous_for_la25_p): Likewise.
22014         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
22015         (*got_disp<mode>): Use got_disp_operand instead of
22016         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
22017         SYMBOL_GOTOFF_GLOBAL.
22018         (*got_page<mode>): Use got_page_ofst_operand instead of
22019         local_got_operand.
22020         * config/mips/predicates.md (const_call_insn_operand): Use
22021         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
22022         (global_got_operand): Rename to...
22023         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
22024         SYMBOL_GOT_GLOBAL.
22025         (local_got_operand): Rename to...
22026         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
22027         of SYMBOL_GOT_LOCAL.
22028
22029 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22030
22031         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
22032         TARGET_CALL_CLOBBERED_GP.
22033         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22034         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
22035         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
22036         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
22037         of TARGET_ABICALLS && !TARGET_NEWABI.
22038         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22039         * config/mips/mips.c (mips_load_call_address): Check
22040         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22041         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22042         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22043         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
22044         TARGET_ABICALLS && TARGET_NEWABI.
22045         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
22046         TARGET_ABICALLS.
22047         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
22048         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
22049         TARGET_ABICALLS && TARGET_NEWABI.
22050         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
22051         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
22052         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
22053         whether indirect calls must use $25.
22054         (mips_extra_live_on_entry): Check TARGET_GOT instead of
22055         TARGET_ABICALLS.
22056         * config/mips/mips.md (jal_macro): Check flag_pic and
22057         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
22058         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
22059         instead of TARGET_ABICALLS.
22060         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
22061         TARGET_ABICALLS && TARGET_OLDABI.
22062         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22063         (sibcall): In the comment above the define_insn, mention
22064         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
22065         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
22066         instead of TARGET_ABICALLS.
22067
22068 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
22069
22070         * doc/md.texi (Blackfin family constraints): Document PA and PB.
22071         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
22072         (MACFLAGS_MATCH_P): New macro.
22073         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
22074         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
22075         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
22076         the other MACFLAG constants.
22077         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
22078         (flag_machi): Tighten constraints.  Renumber some of the operands.
22079         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
22080         output template.
22081         (flag_machi_parts_acconly): New pattern.
22082         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
22083         used.
22084         (flag_macinit1hi): Tighten constraints.
22085         (flag_mul_macv2hi_parts_acconly): New pattern.
22086
22087         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
22088         Use a more efficient implementation.
22089         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
22090         inline sequences when not optimizing for size.
22091
22092         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
22093         movhi_high2low): Delete, merge functionality into...
22094         (packv2hi): ... this pattern.
22095
22096         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
22097         * config/bfin/bfin.opt (msim): New option.
22098         (mcpu=): New option.
22099         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
22100         (bfin_cpu_t): Typedef of enum bfin_cpu.
22101         (bfin_cpu_type): New declaration.
22102         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
22103         -msim and -mcpu= options.
22104         (LIB_SPEC): Likewise.
22105         * config/bfin/bfin.c (bfin_cpu_type): Define.
22106         (bfin_handle_option): Handle -mcpu= option.
22107         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
22108         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
22109         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
22110
22111 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22112
22113         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
22114         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
22115         (powerpc-wrs-vxworksae): Use ${tm_file}.
22116         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
22117         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
22118         * config/i386/vx-common.h: New file.
22119
22120 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22121
22122         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
22123         of crt0.o%s.
22124
22125 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
22126
22127         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
22128         ldxtr.
22129
22130 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
22131
22132         PR c++/31078
22133         PR c++/31103
22134         * c-common.c (c_build_qualified_type): Set canonical type
22135         appropriately.
22136
22137 2007-04-12  Richard Guenther  <rguenther@suse.de>
22138
22139         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
22140         lower bound and element size if lower bound is not zero
22141         or either of the ARRAY_REF operands is set.
22142
22143 2007-04-12  Richard Guenther  <rguenther@suse.de>
22144
22145         PR tree-optimization/24689
22146         PR tree-optimization/31307
22147         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
22148         indices by value.
22149         * gimplify.c (canonicalize_addr_expr): To be consistent with
22150         gimplify_compound_lval only set operands two and three of
22151         ARRAY_REFs if they are not gimple_min_invariant.  This makes
22152         it never at this place.
22153         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
22154
22155 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22156
22157         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
22158         null before emitting a .nsubspa directive.
22159
22160 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22161
22162         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
22163         need_to_partition_p if there are no memory statements in the
22164         function.
22165
22166 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22167
22168         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
22169         (gcd_of_steps_may_divide_p): New function.
22170         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
22171
22172 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22173
22174         * reload.c (find_reloads_toplev, find_reloads_address,
22175         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
22176         not a pointer equality test, to decide if we need to call
22177         push_reg_equiv_alt_mem.
22178
22179 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
22180
22181         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
22182         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
22183         New.
22184         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
22185
22186 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22187
22188         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
22189         vector to be positive.
22190
22191 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22192
22193         PR 30735
22194         PR 31090
22195         * doc/invoke.texi: Document --params max-aliased-vops and
22196         avg-aliased-vops.
22197         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
22198         debug_memory_partitions): Move to tree-flow.h
22199         * params.h (AVG_ALIASED_VOPS): Define.
22200         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
22201         users.
22202         (mp_info_t): Likewise.
22203         (get_mem_sym_stats_for): New.
22204         (set_memory_partition): Move from tree-flow-inline.h.
22205         (mark_non_addressable): Only clear the set of symbols for the
22206         partition if it exists.
22207         (dump_memory_partitions): Move from tree-ssa-operands.c
22208         (debug_memory_partitions): Likewise.
22209         (need_to_partition_p): New.
22210         (dump_mem_ref_stats): New.
22211         (debug_mem_ref_stats): New.
22212         (dump_mem_sym_stats): New.
22213         (debug_mem_sym_stats): New.
22214         (update_mem_sym_stats_from_stmt): New.
22215         (compare_mp_info_entries): New.
22216         (mp_info_cmp): Call it.
22217         (sort_mp_info): Change argument to a list of mem_sym_stats_t
22218         objects.
22219         (get_mpt_for): Move from tree-ssa-operands.c.
22220         (find_partition_for): New.
22221         (create_partition_for): Remove.
22222         (estimate_vop_reduction): New.
22223         (update_reference_counts): New.
22224         (build_mp_info): New.
22225         (compute_memory_partitions): Refactor.
22226         Document new heuristic.
22227         Call build_mp_info, update_reference_counts,
22228         find_partition_for and estimate_vop_reduction.
22229         (compute_may_aliases): Populate virtual operands before
22230         calling debugging dumps.
22231         (delete_mem_sym_stats): New.
22232         (delete_mem_ref_stats): New.
22233         (init_mem_ref_stats): New.
22234         (init_alias_info): Call it.
22235         (maybe_create_global_var): Remove alias_info argument.
22236         Get number of call sites and number of pure/const call sites
22237         from gimple_mem_ref_stats().
22238         (dump_alias_info): Call dump_memory_partitions first.
22239         (dump_points_to_info_for): Show how many times a pointer has
22240         been dereferenced.
22241         * opts.c (decode_options): For -O2 set --param
22242         max-aliased-vops to 500.
22243         For -O3 set --param max-aliased-vops to 1000 and --param
22244         avg-aliased-vops to 3.
22245         * fortran/options.c (gfc_init_options): Remove assignment to
22246         MAX_ALIASED_VOPS.
22247         * tree-flow-inline.h (gimple_mem_ref_stats): New.
22248         * tree-dfa.c (dump_variable): Dump memory reference
22249         statistics.
22250         Dump NO_ALIAS* settings.
22251         (referenced_var_lookup): Tidy.
22252         (mem_sym_stats): New.
22253         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
22254         and ORIG are different SSA names for a memory partition.
22255         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
22256         * tree-flow.h (struct mem_sym_stats_d): Define.
22257         (mem_sym_stats_t): Define.
22258         (struct mem_ref_stats_d): Define.
22259         (struct gimple_df): Add field mem_ref_stats.
22260         (enum noalias_state): Define.
22261         (struct var_ann_d): Add bitfield noalias_state.
22262         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
22263         debug_mem_ref_stats, debug_memory_partitions,
22264         debug_mem_sym_stats): Declare.
22265         * tree-ssa-structalias.c (update_alias_info): Update call
22266         sites, pure/const call sites and asm sites in structure
22267         returned by gimple_mem_ref_stats.
22268         Remove local variable IS_POTENTIAL_DEREF.
22269         Increase NUM_DEREFS if the memory expression is a potential
22270         dereference.
22271         Call update_mem_sym_stats_from_stmt.
22272         If the memory references memory, call
22273         update_mem_sym_stats_from_stmt for all the direct memory
22274         symbol references found.
22275         (intra_create_variable_infos): Set noalias_state field for
22276         pointer arguments according to the value of
22277         flag_argument_noalias.
22278         * tree-ssa-structalias.h (struct alias_info): Remove fields
22279         num_calls_found and num_pure_const_calls_found.
22280         (update_mem_sym_stats_from_stmt): Declare.
22281         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
22282         Set default value to 100.
22283         (PARAM_AVG_ALIASED_VOPS): Define.
22284
22285 2007-04-11  Richard Guenther  <rguenther@suse.de>
22286
22287         PR middle-end/31530
22288         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
22289         a * -b + c as c - a * b if we honor sign dependent rounding.
22290
22291 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22292
22293         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
22294         bfin_expand_strmov.
22295         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
22296         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
22297         variables.
22298         (initialize_trampoline): Don't use old-style function definition.
22299         (bfin_secondary_reload): Mark IN_P argument as unused.
22300
22301 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
22302
22303         PR tree-optimization/31343
22304         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
22305         (build_polynomial_chrec): Return a scalar when the evolution is zero.
22306         * testsuite/gcc.dg/vect/pr31343.c: New.
22307
22308 2007-04-10  Eric Christopher  <echristo@apple.com>
22309
22310         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
22311         * config/i386/i386.md (*cmpfp0): Use.
22312         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
22313         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
22314         (fix_trunc<mode>_i386_fisttp): Ditto.
22315         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
22316         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
22317         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
22318         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
22319         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
22320         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
22321         (unnamed_splitters): Ditto.
22322         * config/i386/i386.c (output_fix_trunc): Assert that
22323         we're not being passed a TFmode operand.
22324
22325 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
22326
22327         PR tree-optimization/31526
22328         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
22329         n_basic_blocks to find newly added blocks.
22330
22331 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
22332
22333         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
22334         alternative.
22335         (fix_trunc<mode>si_sse): Ditto.
22336         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
22337         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
22338         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
22339         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
22340         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
22341         expander using SSEMODEF mode macro.
22342         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
22343         expander using SSEMODEF mode macro.
22344         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
22345         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
22346         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
22347         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
22348         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
22349         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
22350         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
22351         Macroize insn using X87MODEF mode macro.
22352
22353 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22354
22355         * config/i386/sse.md (sse2_pinsrw): Removed.
22356         (sse2_pextrw): Renamed to ...
22357         (*sse2_pextrw): This.
22358
22359 2007-04-09  Jan Hubicka  <jh@suse.cz>
22360
22361         PR target/27869
22362         * config/i386/sse.md
22363         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
22364         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
22365         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
22366         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
22367
22368 2007-04-09  Jan Hubicka  <jh@suse.cz>
22369
22370         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
22371         multiple fields of union.
22372
22373 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
22374
22375         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
22376         (create_preheaders): Check that loops are available.
22377         (fix_loop_structure): Clean up, improve comments.
22378         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
22379         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
22380         state flags.
22381         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
22382         * predict.c (tree_estimate_probability): Do not call
22383         calculate_dominance_info.  Call create_preheaders.
22384         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
22385         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
22386         flags.
22387         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
22388         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
22389         * tree-cfg.c (tree_split_edge): Make an assert more precise.
22390         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
22391         arguments.
22392
22393 2007-04-08  Jan Hubicka  <jh@suse.cz>
22394
22395         * tree.h (maybe_fold_offset_to_component_ref): Declare.
22396         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
22397         * fold-const.c (fold_unary): Use it.
22398
22399 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22400
22401         * varasm.c (assemble_variable): Remove call to
22402         lang_hooks.decls.prepare_assemble_variable.
22403         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
22404         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
22405         * langhooks.h (lang_hooks_for_decls): Remove
22406         prepare_assemble_variable.
22407
22408 2007-04-08  Mike Stump  <mrs@apple.com>
22409
22410         * config/i386/i386.c: Use inc/dec on Core2.
22411
22412 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
22413
22414         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
22415         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22416         lhd_tree_inlining_end_inlining): Remove.
22417         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
22418         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
22419         end_inlining hooks.
22420         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
22421         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22422         lhd_tree_inlining_end_inlining): Remove prototypes.
22423         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
22424         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
22425         LANG_HOOKS_TREE_INLINING_START_INLINING,
22426         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
22427
22428         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
22429         not set it.
22430
22431 2007-04-08  Anatoly Sokolov <aesok@post.ru>
22432
22433         PR target/29932
22434         * config/avr/predicates.md (io_address_operand): Delete predicate.
22435         (low_io_address_operand): Don't use 'mode' argument.
22436         (higth_io_address_operand): Rename ...
22437         (high_io_address_operand): ... to this. Don't use 'mode' argument.
22438         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
22439         for above change.
22440
22441 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
22442
22443         Revert change removing staticp.
22444
22445 2007-04-07  Anatoly Sokolov <aesok@post.ru>
22446
22447         PR target/30289
22448         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
22449         earlyclobber.
22450
22451 2007-04-07  Bruce Korb  <bkorb@gnu.org>
22452
22453         * c.opt: Add -Wformat-contains-nul.
22454         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
22455           -Wformat setting.
22456         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
22457         the NUL byte warning.
22458
22459 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
22460
22461         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
22462
22463 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22464
22465         * tree.c (staticp): No longer use staticp langhook.
22466         * langhooks.c (lhd_staticp): Removed.
22467         * langhooks.h (struct lang_hooks): Remove staticp.
22468         * c-common.c (c_staticp): Remove.
22469         * c-common.h (c_staticp): Ditto.
22470         * langhooks-defs.h (lhd_staticp): Ditto.
22471         (LHD_HOOKS_STATICP): Ditto
22472         * tree.h (gcc_assert_lowered): New macro.
22473
22474 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
22475
22476         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
22477         argument "reliable".
22478         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
22479         Add argument "reliable".  Propagate it through calls.
22480         (infer_loop_bounds_from_undefined): Derive number of iterations
22481         estimates from references in blocks that do not dominate loop latch.
22482         (gcov_type_to_double_int): New function.
22483         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
22484         and expected_loop_iterations_unbounded.
22485         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
22486         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
22487         * tree-data-ref.c (estimated_loop_iterations): Export.
22488         (get_references_in_stmt): Fix -- do not return addresses of local
22489         objects.
22490         * cfgloop.h (expected_loop_iterations_unbounded,
22491         estimated_loop_iterations): Declare.
22492
22493 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
22494
22495         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
22496
22497 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22498
22499         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
22500         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
22501         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
22502         Use output_387_reg_move().
22503         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
22504         expander using X87MODEF12 mode macro.
22505         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
22506         choosing register preferences.  Use output_387_reg_move().
22507         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
22508         instead of "x".  Use output_387_reg_move().
22509         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
22510         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
22511         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
22512         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
22513         Use output_387_reg_move().
22514         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
22515         mode macro.
22516         (*truncxf?f_i387 splitter): Ditto.
22517
22518 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22519
22520         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
22521         LANG_HOOKS_SAFE_FROM_P.
22522         * expr.c (safe_from_p): Remove langhook call.
22523         * langhooks.h (lang_hooks): Remove safe_from_p.
22524         (lhd_safe_from_p): Remove prototype.
22525         * langhooks.c (lhd_safe_from_p): Remove.
22526
22527 2007-04-06  Jan Hubicka  <jh@suse.cz>
22528
22529         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
22530         functions.
22531
22532 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22533
22534         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
22535         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
22536         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
22537         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
22538         alternative.
22539         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
22540         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
22541
22542 2007-04-05  Richard Henderson  <rth@redhat.com>
22543
22544         * config/alpha/alpha.c (print_operand) [+]: Remove.
22545         (alpha_end_function): Print nop if call at end of function.
22546         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
22547         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
22548         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
22549         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
22550         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
22551         the call pattern. Update peepholes to match.
22552
22553 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
22554
22555         * doc/extend.texi (Other Builtins): Add decimal float variants
22556         of signbit.
22557         * builtins.def: Ditto.
22558         * builtins.c (expand_builtin): Ditto.
22559
22560 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
22561             H.J. Lu  <hongjiu.lu@intel.com>
22562
22563         PR target/31478
22564         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
22565         of V8HImode when calling ix86_binary_operator_ok.
22566         (sse2_pmaddwd): Call ix86_binary_operator_ok.
22567         (sdot_prodv8hi): Operands 1 and 2 must be register.
22568
22569 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22570
22571         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
22572         initialize align to silence bogus warning.
22573
22574 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22575
22576         PR middle-end/22156
22577         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
22578         all_no_warning.
22579         (struct sra_walk_fns): Remove use_all parameter from use.
22580         (sra_hash_tree): Handle BIT_FIELD_REFs.
22581         (sra_elt_hash): Don't hash bitfld blocks.
22582         (sra_elt_eq): Skip them in parent compares as well.  Handle
22583         BIT_FIELD_REFs.
22584         (sra_walk_expr): Don't maintain or pass down use_all_p.
22585         (scan_use): Remove use_all parameter.
22586         (scalarize_use): Likewise.  Re-expand assignment to
22587         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
22588         output, and re-scalarize after output.  Don't mark anything
22589         for no warning.
22590         (scalarize_ldst): Adjust.
22591         (scalarize_walk_gimple_modify_statement): Likewise.
22592         (build_element_name_1): Handle BIT_FIELD_REFs.
22593         (instantiate_element): Don't warn for any element whose parent
22594         is used as a whole.
22595         (instantiate_missing_elements_1): Return the sra_elt.
22596         (canon_type_for_field): New.
22597         (try_instantiate_multiple_fields): New.
22598         (instantiate_missing_elemnts): Use them.
22599         (mark_no_warning): Removed.
22600         (generate_one_element_ref): Handle BIT_FIELD_REFs.
22601         (REPLDUP, sra_build_elt_assignment): New.
22602         (generate_copy_inout): Use them.
22603         (generate_element_copy): Likewise.  Handle bitfld differences.
22604         (generate_element_zero): Don't recurse for blocks.  Use
22605         sra_build_elt_assignment.
22606         (generate_one_element_int): Take elt instead of var.  Use
22607         sra_build_elt_assignment.
22608         (generate_element_init_1): Adjust.
22609         (scalarize_use, scalarize_copy): Use REPLDUP.
22610         (scalarize_ldst): Move assert before dereference.
22611         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
22612
22613 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22614
22615         * regmove.c: Fix unused variable warnings due to previous commit.
22616
22617 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22618
22619         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
22620         (regmove_bb_head): Remove.
22621         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
22622         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
22623         problems with fixup_match_1.
22624         Don't initialize/free regmove_bb_head.
22625
22626         (reg_is_remote_constant_p): If an insn is in the same basic block
22627         but not before INSN, consider it remote, too.
22628
22629 2007-04-05  Anatoly Sokolov <aesok@post.ru>
22630
22631         PR target/25448
22632         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
22633         DECL_ASSEMBLER_NAME, not the DECL_NAME.
22634
22635 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
22636
22637         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
22638         (CONDITIONAL_REGISTER_USAGE): Likewise.
22639
22640 2007-04-04  Richard Henderson  <rth@redhat.com>
22641
22642         * config/alpha/lib1funcs.asm: Remove unused file.
22643
22644 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22645
22646         PR other/31356
22647         * opts.c (print_specific_help): Fix --help=<language>
22648         header line.
22649         (common_handle_option): Support --help=common.
22650
22651 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22652
22653         PR other/31353
22654         * gcc.c (main): Do not run the linker if
22655         print_subprocess_help indicates that it shouldn't be
22656         run.
22657
22658 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22659
22660         PR doc/31355
22661         * doc/invoke.texi (--help=): Document <languages> value, fix
22662         formatting in tables of values.
22663
22664 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
22665
22666         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
22667         dllimport attribute of virtual methods.
22668
22669 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
22670
22671         * config/score/crti.asm: Change _bss_start to __bss_start.
22672         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
22673         (OUTGOING_REG_PARM_STACK_SPACE) update.
22674         * config/score/score.opt: add options to make backend support
22675         score5, score5u, score7 and score7d.
22676         * config/score/score.md: Likewise.
22677         * config/score/misc.md: Likewise.
22678         * config/score/mac.md: Likewise.
22679         * doc/invoke.texi: Likewise.
22680         * doc/md.texi: update constraints define.
22681
22682 2007-04-03  Richard Henderson  <rth@redhat.com>
22683
22684         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
22685         an appropriate type, use the mode instead.
22686
22687 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
22688
22689         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
22690         Set the default --with-arch setting to mips2.
22691         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
22692         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
22693         (MULTILIB_OSDIRNAMES): Delete.
22694         (MULTILIB_DIRNAMES): Define.
22695         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
22696         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
22697         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
22698         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
22699         VXWORKS_OS_CPP_BUILTINS.
22700         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
22701         (MIPS_DEBUGGING_INFO): Undefine.
22702         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
22703
22704 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
22705
22706         PR middle-end/30704
22707         * fold-const.c (native_encode_real): Encode real.c provided longs
22708         as a series of 32-bit native integers.
22709         (native_interpret_real): Interpret buffer as a series of 32-bit
22710         native integers.
22711
22712 2007-04-03  Richard Guenther  <rguenther@suse.de>
22713
22714         * genpreds.c (write_insn_constraint_len): Write function
22715         optimized for CONSTRAINT_LEN implementation.
22716         (write_tm_preds_h): Output insn_constraint_len inline and
22717         use it for CONSTRAINT_LEN.
22718         (write_insn_preds_c): Don't output insn_constraint_len.
22719         * doc/md.texi (define_register_constraint): Document multi-letter
22720         constraints shall have the same length if they start with the same
22721         letter.
22722
22723 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22724
22725         PR target/31175
22726         * config/i386/i386.md (isinf<mode>2): Expand only when
22727         TARGET_C99_FUNCTIONS is set.
22728
22729 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22730
22731         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
22732         (x86_64-*-linux*): Ditto.
22733         * config/i386/i386.opt (mpc): New option.
22734         * config/i386/i386.c (overrride_options): Handle
22735         ix87_precision_string.
22736         * config/i386/crtprec.c: New file.
22737         * config/i386/t-crtpc: Ditto.
22738         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
22739         and -mpc80 options.
22740         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
22741         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
22742         crtprec32.o, crtprec64.o and crtprec80.o.
22743
22744         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
22745         and -mpc80 options.
22746         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
22747
22748 2007-04-02  Eric Christopher  <echristo@apple.com>
22749
22750         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
22751         limitations on darwin.
22752
22753 2007-04-02  Anatoly Sokolov <aesok@post.ru>
22754
22755         PR target/31137
22756         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
22757
22758 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22759
22760         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
22761
22762 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22763
22764         * libgcc2.h (exception_descriptor): Don't forward-declare.
22765         (__get_eh_table_language, __get_eh_table_version): Delete
22766         prototypes of long-dead functions.
22767
22768 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
22769
22770         * ebitmap.h: New file
22771         * ebitmap.c: New file
22772         * Makefile.in (ebitmap.o): New target.
22773
22774 2007-04-01  Jan Hubicka  <jh@suse.cz>
22775
22776         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
22777         before very first instruction.
22778
22779 2007-04-01  Jan Hubicka  <jh@suse.cz>
22780
22781         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
22782         waring on 64bit hosts.
22783         * bitmap.h: Fix typo in bitmap_head_def.
22784
22785 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
22786
22787         PR rtl-optimization/31391
22788         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
22789         into a DELETED_LABEL note, and the label is in an empty basic
22790         block, update BB_END as well as BB_HEAD.
22791
22792 2007-04-01  Richard Henderson  <rth@redhat.com>
22793
22794         PR tree-optimization/31169
22795         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
22796         to varying if the range is outside [0,  prec-1].
22797
22798 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
22799
22800         PR target/31388
22801         * config/mips/mips.md (load_const_gp): New insn.
22802         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
22803         the MIPS16 GP pseudo register if no_new_pseudos.
22804         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
22805
22806 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22807
22808         PR target/31364
22809         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
22810         secureplt.
22811         (call_value): Likewise.
22812
22813 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
22814             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22815
22816         PR 14737
22817         * doc/invoke.texi: (optimization options): Reword description
22818         of -ffast-math. Document its primary purpose.
22819
22820 2007-03-31  Richard Guenther  <rguenther@suse.de>
22821
22822         * omp-low.c (splay-tree.h): Include.
22823         (lookup_decl): Replace splay-tree usage by pointer-map.
22824         (maybe_lookup_decl): Likewise.
22825         (new_omp_context): Likewise.
22826         (delete_omp_context): Likewise.
22827         * gimplify.c (splay-tree.h): Include.
22828         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
22829         pointer-map.
22830         (remap_ssa_name): Likewise.
22831         (remap_decl): Likewise.
22832         (remap_type_1): Likewise.
22833         (remap_type): Likewise.
22834         (copy_body_r): Likewise.
22835         (expand_call_inline): Likewise.
22836         (clone_body): Likewise.
22837         (copy_tree_r): Likewise.
22838         (remap_save_expr): Likewise.
22839         (unsave_r): Likewise.
22840         (unsave_expr_now): Likewise.
22841         (tree_function_versioning): Likewise.
22842         (build_duplicate_type): Likewise.
22843         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
22844         (struct copy_body_data): Replace splay-tree by pointer-map.
22845         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
22846         not $(SPLAY_TREE_H).
22847         (gimplify.o): Depend on $(SPLAY_TREE_H).
22848         (omp-low.p): Likewise.
22849
22850 2007-03-31  Anatoly Sokolov <aesok@post.ru>
22851
22852         * config/avr/predicates.md (even_register_operand,
22853         odd_register_operand): New predicates.
22854         * config/avr/avr.md (movw peephole2): New.
22855         (movw_r peephole2): New.
22856
22857 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
22858
22859         * tree.h (get_signed_or_unsigned_type): New.
22860         * fold-const.c (operand_equal_for_comparison_p): Use
22861         get_signed_or_unsigned_type instead of
22862         lang_hooks.types.signed_or_unsigned_type.
22863         * expr.c (store_expr): Ditto.
22864         * langhooks.c (get_signed_or_unsigned_type): New.
22865         (lhd_signed_or_unsigned_type): New.
22866         * langhooks.h (lhd_signed_or_unsigned_type): New.
22867         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
22868
22869 2007-03-30  Richard Henderson  <rth@redhat.com>
22870
22871         * tree-ssa-loop-ivopts.c: Include target.h.
22872         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
22873         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
22874         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
22875         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
22876
22877 2007-03-30  Richard Henderson  <rth@redhat.com>
22878             Kai Tietz  <kai.tietz@onevision.com>
22879
22880         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
22881         default for 64-bit.
22882         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
22883         (TARGET_64BIT_MS_ABI): New.
22884         (DBX_REGISTER_NUMBER): Handle 64-bit.
22885         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
22886         (LONG_TYPE_SIZE): Force to 32.
22887         (REG_PARM_STACK_SPACE): New.
22888         (OUTGOING_REG_PARM_STACK_SPACE): New.
22889         (REGPARM_MAX, SSE_REGPARM_MAX): New.
22890         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22891         (STACK_BOUNDARY): Use 128 for 64-bit.
22892         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
22893         Add 64-bit implementation.
22894         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
22895         argument unused.
22896         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
22897         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
22898         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
22899         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
22900         (ix86_handle_cconv_attribute): Don't warn when ignoring if
22901         TARGET_64BIT_MS_ABI.
22902         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
22903         (ix86_pass_by_reference): Likewise.
22904         (ix86_function_value_regno_p): Likewise.
22905         (ix86_build_builtin_va_list): Likewise.
22906         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
22907         (function_arg_advance_ms_64): New.
22908         (function_arg_advance): Call it.
22909         (function_arg_ms_64): New.
22910         (function_arg): Call it.
22911         (function_value_ms_64): New.
22912         (ix86_function_value_1): Call it.
22913         (return_in_memory_ms_64): New.
22914         (ix86_return_in_memory): Call it.
22915         (setup_incoming_varargs_ms_64): New.
22916         (ix86_setup_incoming_varargs): Call it.
22917         (ix86_expand_prologue): Handle 64-bit stack probing.
22918         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
22919         (output_pic_addr_const): Likewise.
22920         (x86_this_parameter): Likewise.
22921         (x86_output_mi_thunk): Likewise.
22922         (x86_function_profiler): Likewise.
22923         (TARGET_STRICT_ARGUMENT_NAMING): New.
22924         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
22925         (TARGET_64BIT_MS_ABI): New.
22926         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
22927         * config/i386/i386.md (allocate_stack_worker): Remove.
22928         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
22929         describe the clobber of eax without a match_scratch.
22930         (allocate_stack_worker_postreload): Remove.
22931         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
22932         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
22933         (allocate_stack_worker_rex64_postreload): Remove.
22934         (allocate_stack): Handle 64-bit.
22935         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
22936         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
22937         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
22938         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
22939         (STANDARD_STARTFILE_PREFIX_1): Likewise.
22940         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
22941         * config.build (x86_64-*-mingw*): New host.
22942         * config.host (x86_64-*-mingw*): New host.
22943         * config.gcc (x86_64-*-mingw*): New target.
22944         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
22945
22946 2007-03-30  Richard Henderson  <rth@redhat.com>
22947             Kai Tietz  <kai.tietz@onevision.com>
22948
22949         * c-pragma.c (struct def_pragma_macro_value): New.
22950         (struct def_pragma_macro): New.
22951         (pushed_macro_table): New.
22952         (dpm_hash, dpm_eq): New.
22953         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
22954         (init_pragma): Install them.
22955         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22956
22957 2007-03-30  Anatoly Sokolov <aesok@post.ru>
22958
22959         * config/avr/avr.c (avr_override_options): Clear
22960         'flag_delete_null_pointer_checks'.
22961
22962 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
22963
22964         PR c++/26099
22965         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
22966         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
22967         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
22968         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
22969         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
22970         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
22971         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
22972         C++ extensions.
22973         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
22974
22975 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
22976
22977         * regmove.c: Move all of pass_stack_adjustments from here...
22978         * combine-stack-adj.c: ...to this new file.
22979         * Makefile.in: Add rules for combine-stack-adj.o.
22980
22981 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
22982
22983         PR tree-optimization/31383
22984         * tree-data-ref.c (affine_function_equal_p): Do not require the
22985         vectors to have the same length.
22986
22987 2007-03-30  Jan Hubicka  <jh@suse.cz>
22988
22989         PR middle-end/30700
22990         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
22991         availablility; add more sanity checking; ask varpool only about
22992         VAR_DECL.
22993
22994 2007-03-29  Richard Henderson  <rth@redhat.com>
22995
22996         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
22997         to decide, but __SIZEOF_LONG_LONG__.
22998
22999 2007-03-29  Richard Henderson  <rth@redhat.com>
23000
23001         * emutls.c (struct __emutls_array): New.
23002         (emutls_destroy): Use it instead of casting element 0 from void*.
23003         (__emutls_get_address): Likewise.
23004
23005 2007-03-29  Richard Henderson  <rth@redhat.com>
23006
23007         * varasm.c (initializer_constant_valid_p): Don't deny
23008         DECL_DLLIMPORT_P on functions.
23009
23010         * config/i386/cygming.h: Remove function declarations.
23011         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
23012         (ASM_OUTPUT_LABELREF): Remove.
23013         (COMMON_ASM_OP): Remove.
23014         (ASM_OUTPUT_COMMON): Remove.
23015         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
23016         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
23017         (ASM_DECLARE_FUNCTION_NAME): Likewise.
23018         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
23019         Rename from TARGET_ENCODE_SECTION_INFO.
23020         * config/i386/netware.h: Likewise.
23021         * config/i386/i386-protos.h: Update.
23022         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
23023         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
23024         (legitimate_constant_p): Reject dllimports.
23025         (dllimport_map, get_dllimport_decl): New.
23026         (legitimize_dllimport_symbol): New.
23027         (legitimize_address, ix86_expand_move): Use it.
23028         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
23029         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
23030         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
23031         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
23032         * config/i386/predicates.md (constant_call_address_operand): Only
23033         accept symbols; reject dllimport_p symbols.
23034         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
23035         i386_pe_maybe_record_exported_symbol.
23036         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
23037         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
23038         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
23039         trust the setting of DECL_DLLIMPORT_P.
23040         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
23041         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
23042         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
23043         tidy the argument scanning loop.
23044         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
23045         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
23046         (i386_pe_strip_name_encoding): Remove.
23047         (i386_pe_binds_local_p): New.
23048         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
23049         (i386_pe_output_labelref): Remove.
23050         (i386_pe_asm_output_aligned_decl_common): New.
23051         (i386_pe_maybe_record_exported_symbol): Rename from
23052         i386_pe_record_exported_symbol; check for dllexported symbols.
23053
23054 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
23055
23056         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
23057         add comment explaining why vsnprintf cannot be used.
23058
23059 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
23060
23061         PR tree-optimization/30666
23062         * tree.c (build_complex_type): When creating type names for DWARF2
23063         debug info, create TYPE_DECLs for TYPE_NAME instead of
23064         IDENTIFIER_NODEs.
23065         (build_common_tree_nodes_2): Use build_complex_type when building
23066         predefined complex types, to preserve canonical types.
23067
23068 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
23069
23070         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
23071         (noce_get_alt_condition): Look at it to determine whether to
23072         reverse the condition or not.
23073         (noce_get_condition): Substitute the truth for lies.
23074         (noce_find_if_block): Set the then_else_reversed field.
23075
23076 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
23077
23078         * config/fr30/fr30.md (movdi): Do not accept immediates as the
23079         destination of this insn.
23080         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
23081         than calling gen_rtx_SET directly.  Use r0 to hold the value of
23082         'address + 4' rather than a stack based temporary which can be
23083         mis-optimized away.
23084
23085 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23086
23087         * config/s390/s390.c (s390_secondary_input_reload_class,
23088         s390_secondary_output_reload_class): Functions removed.
23089         (s390_secondary_reload): New function.
23090         (TARGET_SECONDARY_RELOAD): Target macro defined.
23091         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
23092         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
23093         * config/s390/s390.md ("reload_outti", "reload_outdi",
23094         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
23095         "reload_out<mode>"): Expanders removed.
23096         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
23097         "reload<mode>_nonoffmem_out"): Expanders added.
23098
23099 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23100
23101         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
23102         action if SRC->DEST replacement failed anyway.
23103
23104 2007-03-28  Mike Stump  <mrs@apple.com>
23105
23106         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
23107         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
23108         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
23109
23110 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
23111
23112         * config.gcc: Accept barcelona as a variant of amdfam10.
23113         * config/i386/i386.c (override_options): Likewise.
23114         * doc/invoke.texi: Likewise.
23115
23116 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
23117
23118         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
23119         offsets for BIT_FIELD_REF and COMPONENT_REF.
23120
23121 2007-03-28  Richard Guenther  <rguenther@suse.de>
23122
23123         * tree.c (is_global_var): Move ...
23124         * tree-flow-inline.h (is_global_var): ... here.
23125         * tree.h (is_global_var): Remove declaration.
23126
23127 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
23128
23129         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
23130         option.
23131         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
23132         * config/i386/i386.c (ix86_tune_features): Initialize new
23133         tuning option.
23134         * config/i386/predicates.md (promotable_binary_operator): Use
23135         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
23136
23137 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
23138
23139         PR target/31380
23140         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
23141
23142 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
23143
23144         * config/fr30/fr30.md (movsi_internal): Change destination
23145         constraint from m to V and add m to the end.
23146
23147 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23148
23149         * config/sh/sh.md (movsi_i): Fix type attribute.
23150
23151 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23152
23153         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
23154         (movsf_ie): Likewise.
23155
23156 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23157
23158         * config.gcc: Add sh4-300 to multilib.
23159         * config/sh/t-mlib-sh4-300: New file.
23160
23161 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
23162
23163         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
23164         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
23165         fix_trunc<mode>di2.
23166         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
23167         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
23168         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
23169         "fixuns_trunctddi2"): Whitespace fix.
23170
23171 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
23172
23173         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
23174         the definition of struct sh_args.
23175         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
23176         CALL_COOKIE_INT_REG_GET): Likewise.
23177
23178 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
23179
23180         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
23181         transformations are applied successfully.
23182
23183 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
23184
23185         * tree.c (tree_contains_struct): Permit 512 tree codes.
23186         * tree.h (tree_contains_struct): Ditto.
23187         (MAX_TREE_CODES): Ditto.
23188         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
23189         SPARE member to store remaining padding bits.
23190
23191 2007-03-27  Anatoly Sokolov <aesok@post.ru>
23192
23193         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
23194         architecture.
23195
23196 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
23197
23198         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
23199         * configure: Regenerate.
23200
23201         * configure: Regenerate using the correct version of autoconf.
23202
23203 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
23204
23205         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
23206         pointer regs.
23207         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
23208         regs to "__SP_L__" and "__SP_H__".
23209
23210 2007-03-27  Richard Guenther  <rguenther@suse.de>
23211
23212         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
23213         computations with it with a HOST_WIDE_INT variable.
23214
23215 2007-03-26  Mike Stump  <mrs@apple.com>
23216
23217         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
23218         objective-c-header, objective-c++-header and objc++-cpp-output
23219         support.
23220         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23221
23222 2007-03-26  Richard Henderson  <rth@redhat.com>
23223
23224         PR target/31361
23225         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
23226         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
23227         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
23228         IX86_BUILTIN_PSRLQ128): New.
23229         (ix86_init_mmx_sse_builtins): Add them.
23230         (ix86_expand_builtin): Expand them.
23231         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
23232         operand 2 be TImode.
23233         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
23234         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
23235         _mm_srli_epi64): Mark __B const.
23236         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
23237         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
23238         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
23239         new two-vector shift builtins.
23240
23241 2007-03-26  Ian Lance Taylor  <iant@google.com>
23242
23243         PR tree-optimization/31345
23244         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
23245         [+INF, +INF(OVF)] into VARYING.
23246
23247 2007-03-26  Zack Weinberg  <zackw@panix.com>
23248
23249         * gengtype-parse.c: New file.
23250         * gengtype-yacc.y: Delete.
23251         * gengtype-lex.l: Don't include gengtype-yacc.h.
23252         Define YY_DECL and yyterminate appropriately for recursive
23253         descent parser.  yylval is now a string out-parameter to yylex.
23254         (HWS, EOID): New shorthand.
23255         (IWORD): Add a couple more types.
23256         (yylex): Add a setup stanza.  Remove the complex rules for
23257         detecting GTY'ed types and typedefs; replace with simple
23258         keyword detectors.  Adjust everything for the changed
23259         definition of yylval.  Ignore all pp-directives, not just #define.
23260         (yyerror): Delete.
23261         (parse_file): Rename yybegin; do not call yyparse.
23262         (yyend): New.
23263         * gengtype.c (xasprintf): Export again.
23264         (this_file): New.  Use everywhere __FILE__ was being used.
23265         (get_lang_bitmap): Special case types defined in gengtype.c.
23266         (do_typedef, new_structure): Suppress definition of certain types.
23267         (new_structure): Improve diagnostics of duplicate definitions.
23268         Make sure location_s is associated with input.h.
23269         (nreverse_pairs, define_location_structures): New functions.
23270         (main): Improve tagging of kludge types.  Remove old kludges
23271         for input.h types; use define_location_structures.
23272         * gengtype.h: Update prototypes.  Define token codes here.
23273         * Makefile.in: Remove all references to gengtype-yacc.
23274         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
23275         and gengtype.
23276         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
23277         add GTY((skip)) to the field that's only conditionally there.
23278         * doc/install.texi: Document that Bison is no longer required
23279         unless building treelang.
23280
23281         * gengtype.c: Don't include gtyp-gen.h.
23282         (srcdir): Declare here.
23283         (base_files, lang_dir_names): Allocate dynamically.
23284         (gt_files, num_gt_files, num_lang_dirs): New globals.
23285         (measure_input_list, read_input_line, read_input_list)
23286         (set_lang_bitmap): New functions.
23287         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
23288         simplify, relying on read_input_list to set up the bitmaps.
23289         (main): Arguments are no longer unused.  Check for correct number
23290         of command line arguments, set srcdir and srcdir_len, then call
23291         read_input_list, before doing anything else.  No need to worry
23292         about duplicates in main loop.
23293         * configure.ac: Simplify the calculation of all_gtfiles.
23294         Put language tags in there.  Don't set or substitute
23295         all_gtfiles_files_langs or all_gtfiles_files_frags.
23296         * Makefile.in: Revamp the way gengtype is invoked, now that it
23297         takes a file on its command line with a much simpler format.
23298         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
23299         (GTFILES): Remove duplicates and C source files.
23300         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
23301         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
23302         * configure: Regenerate.
23303
23304         * gengtype.h: Remove all type definitions to gengtype.c; leave
23305         only definitions of options_p, type_p, and pair_p as opaque
23306         pointers.  Update prototypes.
23307         * gengtype.c: Many type definitions moved here from gengtype.h.
23308         Consolidate type definitions at the top of the file.
23309         (xvasprintf): Delete.
23310         (xasprintf): Make static.
23311         (create_nested_pointer_option): Add 'next' parameter.
23312         (create_field_all, create_field_at): New functions.
23313         (create_field): Now a thin wrapper around create_field_all.
23314         (create_optional_field): Rename create_optional_field_ and add
23315         line argument.  Original name is now a macro which supplies
23316         __LINE__.
23317         (oprintf): Use vsnprintf directly.
23318         (close_output_files): Use fatal rather than perror/exit.
23319         (note_def_vec, note_def_vec_alloc): Use create_field_at.
23320         (main): Set progname.  Don't use exit.
23321         * gengtype-yacc.y (struct_fields): Use create_field_at.
23322         (option, optionseqopt): Delete.
23323         (optionseq): Consolidate productions from option here so we
23324         can use the first argument to create_option.
23325
23326         * gengtype-lex.l: Distinguish unions from structures in the
23327         token type.  Don't call find_structure; return the tag as a string.
23328         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
23329         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
23330         string.  Reorganize typedef_struct production accordingly.
23331         Use create_nested_ptr_option.
23332         * gengtype.c (create_nested_ptr_option): New function.
23333         * gengtype.h: Declare it.
23334
23335         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
23336         (string_type): Don't declare.
23337         (do_scalar_typedef): Declare.
23338         (create_scalar_type): Update prototype.
23339         * gengtype.c (string_type): Make static.
23340         (scalar_nonchar, scalar_char): New.
23341         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
23342         (resolve_typedef): Use scalar_nonchar for error recovery.
23343         (create_scalar_type): Remove name_len field.  Return scalar_char
23344         or scalar_nonchar as appropriate.
23345         (adjust_field_type): Look at scalar_is_char boolean to decide whether
23346         to use string_type.
23347         (throughout): Use scalar_nonchar instead of calling
23348         create_scalar_type, whenever possible.
23349         (main): Initialize scalar_char and scalar_nonchar before calling
23350         gen_rtx_next.
23351         * gengtype-lex.l: Adjust for removal of second argument to
23352         create_scalar_type.  Use yylval.s instead of yylval.t when
23353         returning SCALAR.
23354         * gengtype-yacc.y: Type of SCALAR is string.  Call
23355         create_scalar_type from type:SCALAR rule.  Adjust for removal of
23356         second argument to create_scalar_type.
23357
23358         * vec.h: Remove all #if IN_GENGTYPE blocks.
23359         Add comment saying that changes may require adjustments to gengtype.
23360         * gengtype.c: Don't include coretypes.h or tm.h.
23361         Add comment to inclusion of errors.h.
23362         (note_def_vec, note_def_vec_alloc): New functions.
23363         * gengtype.h: Declare new functions.
23364         * gengtype-lex.l: Don't include coretypes.h.
23365         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
23366         Delete.
23367         (update_lineno): Remove unnecessary prototype.
23368         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
23369         (VEC rule): Just return VEC_TOKEN.
23370         * gengtype-yacc.y (VEC_TOKEN): New token type.
23371         (type): Add a production for VEC(a,b).
23372         * Makefile.in: Update dependencies.
23373
23374         * gengtype-lex.l: Remove rules for parsing pointer-to-function
23375         typedefs that use the old PARAMS macro.
23376
23377         * gengtype-lex.l: Remove all rules and states relating to yacc
23378         input files.
23379         * gengtype-yacc.y: Similarly.
23380         * gengtype.c (note_yacc_type): Delete function.
23381         * gengtype.h: Update prototypes.
23382
23383 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
23384
23385         * tree-pretty-print.c (dump_generic_node): Report precision of
23386         unnamed integer types.
23387
23388 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
23389
23390         * ifcvt.c (noce_try_store_flag_constants): Don't check
23391         no_new_pseudos here.
23392         (noce_try_store_flag_constants): Don't check no_new_pseudos.
23393         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
23394         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
23395         noce_try_sign_mask): Likewise.
23396         (if_convert): Check no_new_pseudos here.
23397
23398         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
23399         Remove prototypes.
23400         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
23401         (noce_get_condition): Handle new then_else_reversed argument.
23402         (noce_init_if_info): Remove, fold into noce_find_if_block.
23403         (noce_process_if_block): Take a struct noce_if_info as the
23404         argument.  Don't set up one based on ce_if_info.  Update pointer
23405         references accordingly.
23406         (cond_move_process_if_block): Likewise.
23407         (process_if_block): Removed.
23408         (find_if_block): Removed.  Move functionality two new functions,
23409         noce_find_if_block and cond_exec_find_if_block.
23410         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
23411         blocks and the symmetric IF-ELSE-JOIN case.
23412         (cond_exec_find_if_block): Also new function mostly based on old
23413         find_if_block and process_if_block.
23414         (find_if_header): Replace find_if_block call with separately
23415         guarded calls to noce_find_if_block and cond_exec_find_if_block.
23416         (find_cond_trap): Update noce_get_condition call.
23417         (dead_or_predicable): Likewise.
23418
23419 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
23420
23421         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
23422         Remove.
23423         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
23424         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
23425         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
23426         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
23427         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
23428         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
23429         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
23430         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
23431         __builtin_ia32_psrad128 builtins.
23432
23433 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
23434
23435         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
23436         * config/i386/constraints.md
23437         (define_constraint "I"): Use IN_RANGE macro.
23438         (define_constraint "J"): Ditto.
23439         (define_constraint "K"): Ditto.
23440         (define_constraint "M"): Ditto.
23441         (define_constraint "N"): Ditto.
23442         (define_constraint "O"): Ditto.
23443         * config/i386/predicates.md
23444         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
23445         (define_predicate "const_0_to_3_operand"): Ditto.
23446         (define_predicate "const_0_to_7_operand"): Ditto.
23447         (define_predicate "const_0_to_15_operand"): Ditto.
23448         (define_predicate "const_0_to_63_operand"): Ditto.
23449         (define_predicate "const_0_to_255_operand"): Ditto.
23450         (define_predicate "const_1_to_31_operand"): Ditto.
23451         (define_predicate "const_2_to_3_operand"): Ditto.
23452         (define_predicate "const_4_to_7_operand"): Ditto.
23453
23454 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23455
23456         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
23457         in SImode for save_world.
23458         * config/rs6000/altivec.md (save_world, restore_world): Convert to
23459         LR hard reg.
23460
23461 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
23462
23463         PR tree-optimization/30784
23464         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
23465         BIT_FIELD_REF.
23466
23467 2007-03-25  Revital Eres  <eres@il.ibm.com>
23468
23469         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
23470           Fold movement_possibility function into it.
23471
23472 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23473
23474         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
23475         (load_macho_picbase_{si,di}): Convert to LR hard reg.
23476         (call_indirect_nonlocal_darwin64): Same.
23477         (call_nonlocal_darwin64): Same.
23478         (call_value_indirect_nonlocal_darwin64): Same.
23479         (call_value_nonlocal_darwin64): Same.
23480         (sibcall_nonlocal_darwin64): Same.
23481         (sibcall_value_nonlocal_darwin64): Same.
23482         (sibcall_symbolic_64): Same.
23483         (sibcall_value_symbolic_64): Same.
23484         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
23485         LR pseudo.
23486         (rs6000_emit_load_toc_table): Same.
23487         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
23488         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
23489         (mull_call): Same.
23490         (divss_call): Same.
23491         (divus_call): Same.
23492         (quoss_call): Same.
23493         (quous_call): Same.
23494         (load_toc_v4_pic_si): Same
23495         (load_toc_v4_PIC_1): Same.
23496         (load_toc_v4_PIC_1b): Same.
23497         (call_indirect_aix{32,64}): Same.
23498         (call_value_indirect_aix{32,64}): Same.
23499         (call): Same.
23500         (call_value): Same.
23501         (call_local{32,64}): Same.
23502         (call_value_local{32,64}): Same.
23503         (call_indirect_nonlocal_aix{32,64}): Same.
23504         (call_nonlocal_aix{32,64}): Same.
23505         (call_value_indirect_nonlocal_aix{32,64}): Same.
23506         (call_value_nonlocal_aix{32,64}): Same.
23507         (call_indirect_nonlocal_sysv<mode>): Same.
23508         (call_nonlocal_sysv<mode>): Same.
23509         (call_value_indirect_nonlocal_sysv<mode>): Same.
23510         (call_value_nonlocal_sysv<mode>): Same.
23511         (sibcall): Same.
23512         (sibcall_local{32,64}): Same.
23513         (sibcall_value_local{32,64}): Same.
23514         (sibcall_nonlocal_aix{32,64}): Same.
23515         (sibcall_value_nonlocal_aix{32,64}): Same.
23516         (sibcall_nonlocal_sysv<mode>): Same.
23517         (sibcall_value): Same.
23518         (sibcall_value_nonlocal_sysv<mode>): Same.
23519
23520 2007-03-24  Paul Brook  <paul@codesourcery.com>
23521
23522         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
23523         * config/arm/linux-eabi.h: Remove legacy syscall hack.
23524
23525 2007-03-24  Richard Henderson  <rth@redhat.com>
23526
23527         * config/ia64/constraints.md: New file.
23528         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
23529         satisfies_constraint_?.
23530         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
23531         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
23532         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
23533         ia64_output_mi_thunk): Likewise.
23534         (ia64_const_ok_for_letter_p): Remove.
23535         (ia64_const_double_ok_for_letter_p): Remove.
23536         (ia64_extra_constraint): Remove.
23537         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
23538         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
23539         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
23540         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
23541         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
23542         EXTRA_MEMORY_CONSTRAINT): Remove.
23543         * config/ia64/ia64.md: Include constriants.md.  Replace
23544         CONST_OK_FOR_? with satisfies_constraint_?.
23545
23546 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
23547             H.J. Lu  <hongjiu.lu@intel.com>
23548
23549         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
23550         DPD or BID name.
23551         (name macros): Use DPD_BID_NAME to convert names properly.
23552
23553         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
23554         decimal floating point format.
23555         (init_floating_libfuncs): Change decimal functions so that they
23556         have a "bid_" prefix if the decimal system uses the BID format,
23557         and "dpd_" prefix if the decimal system uses the DPD format.
23558         (init_interclass_conv_libfuncs): Ditto.
23559         (init_intraclass_conv_libfuncs): Ditto.
23560
23561         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23562         using the BID format.
23563
23564         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23565         whether we are using the BID decimal format.
23566         * configure: Regenerate.
23567
23568         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23569         the compiler has decimal floating point enabled.  Define
23570         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23571         instead of DPD.
23572
23573         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23574         using the BID format.
23575
23576         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23577         whether we are using the BID decimal format.
23578         * configure: Regenerate.
23579
23580         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23581         the compiler has decimal floating point enabled.  Define
23582         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23583         instead of DPD.
23584
23585         * doc/install.texi (--enable-decimal-float): Document BID and DPD
23586         options, and that it is enabled for i386/x86_64 systems.
23587
23588         * Makefile.in (enable_decimal_float): New.
23589         (DECNUMFMT): New.
23590         (DECNUMINC): Add  -I$(DECNUMFMT).
23591         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
23592         to $(DECNUMFMT) from $(DECNUM).
23593
23594         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
23595         Substitute enable_decimal_float.
23596         * configure: Regenerated.
23597
23598         PR other/30529
23599         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
23600         unsigned long.
23601
23602         * configure.ac: Enable decimal float for x86_64-*-linux*.
23603         * configure: Regenerated.
23604
23605         PR other/30530
23606         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
23607         decimal128ClearSign to flip and clear the sign bit in decimal128.
23608         (decimal_real_maxval): Set decimal128SetSign to set the sign
23609         bit in decimal128.
23610
23611 2007-03-23  Ian Lance Taylor  <iant@google.com>
23612
23613         * fold-const.c (fold_binary): Correct warning for X - c >= X.
23614
23615 2007-03-23  Ian Lance Taylor  <iant@google.com>
23616
23617         * tree-dump.c (dump_files): Correct comment.
23618
23619 2007-03-23  Ian Lance Taylor  <iant@google.com>
23620
23621         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
23622
23623 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
23624
23625         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
23626         in cfglayout mode.  Don't go into and out of cfglayout mode.
23627         Link the blocks in the order of the constructed traces.
23628         (rest_of_handle_tracer): Adjust call to tracer.
23629         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
23630         Don't go into cfglayout mode.
23631         (rtl_loop_done): Don't go out of cfglayout mode.
23632         * cfglayout.c (relink_block_chain): New function, split out from...
23633         (fixup_reorder_chain): ...here.  Remove redundant checking.
23634         (cfg_layout_finalize): Don't clear the header, footer, and aux
23635         fields here, move the code to do so to relink_block_chain.  Likewise
23636         for free_original_copy_tables.
23637         * rtl.h (tracer): Update prototype.
23638         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
23639         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
23640         mode.  Use relink_block_chain to serialize the CFG according to the
23641         new basic block order.  Move targetm.cannot_modify_jumps_p check from
23642         here...
23643         (gate_handle_reorder_blocks): ...to here.
23644         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
23645         from here...
23646         (gate_duplicate_computed_gotos): ...to here.
23647         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
23648         something always changes when going into and out of cfglayout mode.
23649         Perform an expensive cfg cleanup while going into cfglayout mode.
23650         Always update liveness information on HAVE_conditional_execution
23651         targets.  Reserialize the basic blocks and go out of cfglayout mode.
23652         * reg-stack.c: Include cfglayout.h.
23653         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
23654         the call to reorder_basic_blocks.
23655         * basic-block.h (reorder_basic_blocks): Update prototype.
23656         (relink_block_chain): New prototype.
23657         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
23658
23659 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
23660
23661         * config/mips/mips.md (type, hazard, *movdi_32bit,
23662         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
23663         *movhi_internal, *movqi_internal, *movsf_hardfloat,
23664         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
23665         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
23666         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
23667         applicable.
23668         (movcc): Change first xfer to multi.
23669         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
23670         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
23671         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
23672         config/mips/generic.md: Change reservations using "xfer" to use
23673         "mfc,mtc".
23674         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
23675         using match_operand.
23676         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
23677         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
23678         examining mode.
23679         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
23680
23681 2007-03-22  Richard Henderson  <rth@redhat.com>
23682
23683         * config/i386/i386.c: Remove unnecessary function declarations.
23684         Move targetm definition, and all related macros, to the end of
23685         the file.  Resort some functions to put definitions before uses.
23686         (ix86_attribute_table): Make static.  Move to end of file.
23687         (ix86_gimplify_va_arg): Make static.
23688
23689 2007-03-22  Richard Henderson  <rth@redhat.com>
23690
23691         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
23692         don't increase local_regparm with force_align_arg_pointer check.
23693         (ix86_function_sseregparm): Assert 32-bit.
23694         (type_has_variadic_args_p): New.
23695         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
23696         type_has_variadic_args_p.
23697         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
23698         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
23699         use memset instead.  Do maybe_vaarg check first; skip attribute
23700         tests if true; skip attribute tests for 64-bit.
23701         (construct_container): Remove TARGET_DEBUG_ARG.
23702         (function_arg_advance_32, function_arg_advance_64): Split out ...
23703         (function_arg_advance): ... from here.
23704         (function_arg_32, function_arg_64): Split out ...
23705         (function_arg): ... from here.
23706         (ix86_pass_by_reference): Tidy.
23707         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
23708         (function_value_32): New, from parts of ix86_function_value
23709         and ix86_value_regno.
23710         (function_value_64): New, from parts of ix86_function_value
23711         and ix86_libcall_value.
23712         (ix86_function_value_1): New.
23713         (ix86_function_value, ix86_libcall_value): Use it.
23714         (return_in_memory_32, return_in_memory_64): Split out ...
23715         (ix86_return_in_memory): ... from here.
23716         (ix86_struct_value_rtx): Skip for 64-bit.
23717         (ix86_libcall_value, ix86_value_regno): Remove.
23718         (setup_incoming_varargs_64): Split out ...
23719         (ix86_setup_incoming_varargs): ... from here.
23720         (ix86_va_start): Remove TARGET_DEBUG_ARG.
23721         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
23722         * config/i386/i386-protos.h (ix86_function_value): Remove.
23723         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
23724
23725 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23726
23727         PR other/23572
23728         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
23729         infinities not supported, otherwise emit warning if -Woverflow. On
23730         underflow, emit warning if -Woverflow.
23731         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
23732         and 0 otherwise.
23733         * real.h (real_from_string): Update declaration
23734
23735 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
23736             Richard Henderson  <rth@redhat.com>
23737
23738         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
23739         * calls.c (compute_argument_block_size, expand_call,
23740         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
23741         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
23742         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
23743         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
23744         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
23745         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
23746         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
23747         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
23748         Set to 1.
23749
23750 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
23751
23752         * c-incpath.c (add_sysroot_to_chain): New.
23753         (merge_include_chains): Add sysroot argument.  Call
23754         add_sysroot_to_chain if sysrooted.
23755         (register_include_chains): Update call to merge_include_chains.
23756         * doc/cppopts.texi: Document use of '=' in include directory
23757         arguments.
23758
23759 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
23760
23761         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
23762         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
23763         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
23764         insn pattern using X87MODEF12 mode macro.
23765
23766 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
23767
23768         * regmove.c (regmove_optimize): Use reg_mentioned_p
23769         instead of reg_overlap_mentioned_p for DST.
23770
23771 2007-03-21  Mike Stump  <mrs@apple.com>
23772
23773         * c.opt: Fixup for Objective-C/C++.
23774
23775 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
23776
23777         * explow.c (convert_memory_address): Fold memory reference when
23778         POINTERS_EXTEND_UNSIGNED < 0
23779
23780 2007-03-21  Richard Henderson  <rth@redhat.com>
23781
23782         PR target/31245
23783         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
23784         * config/i386/mmintrin.h (__m64): Likewise.
23785         * config/i386/xmmintrin.h (__m128): Likewise.
23786
23787 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23788
23789         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
23790         (VXWORKS_OS_CPP_BUILTINS): Define.
23791         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
23792         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
23793
23794 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23795
23796         * rtl.h (constant_pool_reference_p): Delete.
23797         (find_constant_src): Declare.
23798         * rtlanal.c (find_constant_src): New function.
23799         * simplify-rtx.c (constant_pool_reference_p): Delete.
23800         * config/i386/i386.md: Use find_constant_src instead of
23801         constant_pool_reference_p/avoid_constant_pool_reference pairs.
23802
23803 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23804
23805         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
23806         * c-cppbuiltin.c (c_cpp_builtins): Define them.
23807
23808 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
23809
23810         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
23811         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
23812         (arm_elf_asm_constructor): Use it.
23813         (arm_elf_asm_destructor): New function.
23814
23815 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
23816
23817         * jump.c (mark_jump_label): Treat SEQUENCE specially.
23818
23819 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
23820
23821         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
23822
23823 2007-03-19  Andrew Haley  <aph@redhat.com>
23824
23825         PR tree-optimization/31264
23826         * tree-vrp.c (register_edge_assert_for_1): Don't look though
23827         VIEW_CONVERT_EXPRs.
23828
23829 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
23830
23831         PR rtl-optimization/30907
23832         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
23833         (fwprop_init): Always call loop_optimizer_initialize.
23834         (fwprop_done): Always call loop_optimizer_finalize.
23835         (fwprop): We always have loop info now.
23836         (gate_fwprop_addr): Remove.
23837         (pass_fwprop_addr): Use gate_fwprop as gate.
23838
23839         PR rtl-optimization/30841
23840         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
23841         df_chain_alloc): Call df_reorganize_refs unconditionally.
23842         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
23843         refs_organized to refs_organized_size.
23844         (df_ref_create_structure): Use refs_organized_size instead of
23845         bitmap_size if refs had been organized, and keep refs_organized_size
23846         up-to-date.
23847         * df.h (struct df_ref_info): Change refs_organized to
23848         refs_organized_size.
23849         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
23850         bitmap_size.
23851
23852 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
23853
23854         * except.c (output_function_exception_table): Do not reference the
23855         EH personality routine for functions that do not require an
23856         exception table.
23857
23858 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
23859
23860         PR c/30762
23861         * c-typeck.c (convert_for_assignment): Call comptypes for
23862         RECORD_TYPE or UNION_TYPE.
23863
23864         PR inline-asm/30505
23865         * reload1.c (reload): Do invalid ASM checking after
23866         cleanup_subreg_operands.
23867
23868 2007-03-19  Jeff Law  <law@redhat.com>
23869
23870         * tree-cfg.c (find_taken_edge): Tighten conditions for
23871         optimizing computed gotos.
23872
23873 2007-03-19  Michael Matz  <matz@suse.de>
23874
23875         * builtins.c (expand_builtin_sync_operation,
23876         expand_builtin_compare_and_swap,
23877         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
23878         correctly.
23879
23880         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
23881         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
23882         for operand 3.
23883
23884 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23885
23886         * doc/tm.texi: Add brackets around the return type of
23887         TARGET_SECONDARY_RELOAD.
23888
23889 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23890         Richard Guenther  <rguenther@suse.de>
23891
23892         PR tree-optimization/31254
23893         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
23894         Use handled_component_p () where appropriate.  Continue
23895         propagating into the rhs if we propagated into an INDIRECT_REF
23896         on the lhs.
23897
23898 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23899
23900         * config/s390/s390.md (op_type attribute): RRR instruction type added.
23901         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
23902         (xde, xdee): Mode attributes adjusted to support DFP modes.
23903         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
23904         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
23905         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
23906         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
23907         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
23908         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23909         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
23910         numbers.
23911         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
23912         "movsf"): Insn definitions removed.
23913         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
23914         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
23915         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
23916         definitions added.
23917         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
23918         "reload_in<mode>", "reload_out<mode>"): Expander added.
23919         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
23920         Expander removed.
23921
23922 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23923
23924         * config/s390/s390.md: Only non-functional changes.  Renamed
23925         FPR mode macro to BFP all over the file.
23926
23927 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23928
23929         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
23930         (op_type attribute): RRF instruction type added.
23931         (fT0): New mode attribute.
23932         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23933         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
23934         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
23935         instruction no secondary memory is needed when moving DFmode values
23936         between GPRs and FPRs.
23937
23938 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23939
23940         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
23941         inverted and documentation adjusted.
23942         ("mhard-dfp", "msoft-dfp"): New options.
23943         * config/s390/s390.c (s390_handle_arch_option): New architecture
23944         switch: z9-ec.
23945         (override_options): Sanity checks for the new options added.
23946         * config.gcc: New architecture switch: z9-ec.
23947         * config/s390/s390.h (processor_flags): PF_DFP added.
23948         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
23949         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
23950         when the bit is NOT set so remove it from the defaults.
23951
23952 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23953
23954         * genemit.c (main): Print include statement for dfp.h.
23955         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
23956         is not available.
23957
23958 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23959
23960         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
23961
23962 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
23963
23964         PR target/31022
23965         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
23966         instead of PATTERN.
23967
23968 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23969
23970         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
23971         attr_length_call, output_call, output_indirect_call): Cleanup
23972         formatting of targetm calls.
23973
23974 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23975
23976         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
23977
23978 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23979
23980         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
23981         reservation, bypass and anti-bypass descriptions for these
23982         instructions.  Update move patterns.
23983         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
23984         TYPE_FPSTORE.
23985
23986 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
23987
23988         * tree-vect-transform.c (get_initial_def_for_induction): Replace
23989         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
23990         (get_initial_def_for_reduction): Likewise.
23991
23992 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
23993
23994         Fix PR tree-optimization/29922
23995         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
23996         (get_representative): Removed.
23997         (value_dies_in_block_x): Update for rvuse removal.
23998         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
23999         (compute_antic_aux): Handle when PHI nodes appear in
24000         non-single-successors.
24001         (dump_bitmap_of_names): Removed.
24002         (compute_antic_safe): Renamed and removed rvuse calculation.
24003         Calculate only antic safe.
24004         (insert_into_preds_of_block): Remove assert.
24005         (execute_pre): Update for renamed functions.
24006         (defer_or_phi_translate_block): New function.
24007
24008 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24009
24010         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
24011         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
24012         typos.
24013         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
24014         Follow spelling conventions.
24015
24016         * tree-data-ref.h: Remove the prototype for analyze_array.
24017
24018 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
24019
24020         PR tree-optimization/31041
24021         * tree-vect-transform.c (get_initial_def_for_induction): Call
24022         force_gimple_operand.
24023
24024 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
24025
24026         * ipa-type-escape.c (look_for_casts) : Revert code to use
24027         handled_component_p due to ada test a-numaux.adb.
24028
24029 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24030
24031         * final.c (final_scan_insn): Alter the condition of a
24032         conditional trap if we have nonstandard CC.
24033
24034 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24035
24036         * configure.ac: Remove excess quoting from asm line 0 test.
24037         * configure: Rebuilt.
24038
24039 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24040
24041         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
24042         * c-common.c (convert_and_check): Move warning logic to...
24043         (warnings_for_convert_and_check): ...here. Define.
24044         * c-common.h (warnings_for_convert_and_check): Declare.
24045
24046 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24047
24048         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
24049         (output_call): Likewise.
24050
24051 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24052
24053         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
24054
24055 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24056
24057         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
24058
24059 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
24060
24061         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
24062         opteron, athlon-64 and athlon-fx processor_alias_table entries.
24063
24064 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
24065
24066         PR tree-optimization/31183
24067         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
24068         Use double_int instead of unsigned int for representing access_strides.
24069         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
24070
24071 2007-03-16  Richard Guenther  <rguenther@suse.de>
24072
24073         PR tree-optimization/31146
24074         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
24075         to allow recursion of forward_propagate_addr_expr.
24076         (forward_propagate_addr_into_variable_array_index): Likewise.
24077         (forward_propagate_addr_expr): Likewise.
24078         (tree_ssa_forward_propagate_single_use_vars): Likewise.
24079         (forward_propagate_addr_expr_1): Recurse on simple copies
24080         instead of propagating into them.  Do so for useless conversions
24081         as well.
24082         (forward_propagate_addr_expr): Clean up unused statements after
24083         recursion.
24084
24085 2007-03-16  Richard Guenther  <rguenther@suse.de>
24086
24087         * builtins.c (expand_builtin_cexpi): Use the right argument
24088         for the expansion via cexp.
24089
24090 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24091
24092         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
24093         * configure: Rebuilt.
24094
24095 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24096
24097         PR debug/29906
24098         * dwarf2out.c (force_type_die): Adjust comment.
24099         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
24100
24101 2007-03-15  DJ Delorie  <dj@redhat.com>
24102
24103         * config/frv/predicates.md (minmax_operator): Don't check operands
24104         here.
24105
24106 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24107
24108         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
24109         Update constant estimates of number of iterations.
24110         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
24111         argument renamed to "realistic".
24112         (compute_estimated_nb_iterations): Removed.
24113         (record_niter_bound): New function.
24114         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
24115         call record_nonwrapping_iv with upper = false.
24116         (infer_loop_bounds_from_signedness): Pass upper argument to
24117         record_nonwrapping_iv.
24118         (estimate_numbers_of_iterations_loop): Do not call
24119         compute_estimated_nb_iterations.  Record estimate based on profile
24120         information.  Initialize the constant estimates of number of
24121         iterations.
24122         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
24123         estimates.
24124         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
24125         number of iterations is too small.
24126         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
24127         (EST_NOT_AVAILABLE): Removed.
24128         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
24129         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
24130         fields.
24131
24132 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24133
24134         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
24135         Handle NE_EXPR guards.
24136
24137 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24138
24139         PR c++/24924
24140         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
24141         Set also -pedantic-errors by default for the  preprocessor unless
24142         -fpermissive is given.
24143
24144 2007-03-15  Richard Guenther  <rguenther@suse.de>
24145
24146         PR middle-end/29719
24147         PR middle-end/31161
24148         * builtins.c (expand_builtin_cexpi): As a fallback if we
24149         don't have builtins for sincos or cexp create a function
24150         declaration for cexp and expand to a call to that.
24151         (expand_builtin_int_roundingfn): Always fall
24152         back to floor/ceil and its variants even if they may be
24153         not available.
24154
24155 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
24156
24157         PR middle-end/31159
24158         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
24159         jump tables, move the call to delete_dead_jumptables from here...
24160         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
24161         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
24162         don't allow merging of blocks that try_redirect_by_replacing_jump
24163         also does not handle when not optimizing.
24164
24165 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24166             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24167
24168         * config/i386/i386.md (x86_sahf_1): Correctly handle
24169         HAVE_AS_IX86_SAHF.
24170
24171 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24172
24173         PR target/31167
24174         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
24175         x86_64_general_operand as operand[2] predicate.  Remove "iF"
24176         from operand constraints and use "e" constraint instead.
24177         (*subti3_1, *subti3_1 splitter): Ditto.
24178         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
24179         operand[1] predicate.
24180
24181 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
24182
24183         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
24184         arrays, multiply the access strides by the size of the sub-array.
24185         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
24186
24187 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24188
24189         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
24190         the configured assembler supports the sahf mnemonic.
24191         * configure: Regenerate.
24192         * config.in: Regenerate.
24193
24194         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
24195         emit "sahf" or ".byte\t0x9e" as asm template.
24196
24197 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
24198
24199         PR 31018
24200         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
24201         option to replace hard coded TARGET_xxx in md file.
24202         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
24203         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24204         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
24205         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
24206         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
24207         (X86_TUNE_NOT_VECTORMODE): Ditto.
24208         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
24209         (TUNE_AVOID_VECTOR_DECODE): Ditto.
24210         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24211         (TUNE_SLOW_IMUL_IMM8): Ditto.
24212         (TUNE_MOVE_M1_VIA_OR): Ditto.
24213         (TUNE_NOT_UNPAIRABLE): Ditto.
24214         (TUNE_NOT_VECTORMODE): Ditto.
24215
24216         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
24217         options.
24218
24219         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
24220         tuning options instead of hard coded TARGET_xxx.
24221         (fix ssemode peephole2's): Ditto.
24222         (imul peephole2's): Ditto.
24223         (movsi_or): Ditto.
24224         (movdi_or_rex64): Ditto.
24225         (move peephole2): Ditto.
24226         (not peephole2's): Ditto.
24227
24228 2007-03-14  Dirk Mueller  <dmueller@suse.de>
24229
24230         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
24231         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
24232         * c-parser.c (c_parser_if_body): Always add an empty statement in case
24233         of empty body.
24234         * c-parser.c (c_parser_do_statement): Warn about empty body in
24235         do/while statement.
24236         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
24237         * doc/invoke.texi (-Wempty-body): Update documentation.
24238
24239 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24240
24241         PR c/21438
24242         * c-common.h (warn_for_div_by_zero): Declare.
24243         * c-common.c (warn_for_div_by_zero): Define.
24244         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
24245         warning.
24246
24247 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24248
24249         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
24250         to PREFIX and STANDARD_PREFIX.
24251
24252 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24253             Phil Edwards  <phil@codesourcery.com>
24254
24255         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
24256         (__gthread_once_t): Remove busy field for RTPs.
24257         (__GTHREAD_ONCE_INIT): Update accordingly.
24258
24259 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24260
24261         * doc/invoke.texi: Document VxWorks options.
24262
24263 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24264
24265         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
24266
24267 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
24268
24269         PR tree-optimization/30590
24270         * tree-nrv.c (tree_nrv): Check for the partial update of the
24271         return value.
24272
24273 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24274
24275         * flags.h (flag_random_seed): Remove declaration, in favor of...
24276         * toplev.h (get_random_seed, set_random_seed): ... these.
24277         * tree.c (get_file_function_name): Use the former.
24278         * opts.c (common_handle_option): Use the latter.
24279         * toplev.c
24280
24281 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
24282
24283         PR middle-end/31127
24284         * cse.c (cse_find_path): Do not bail out if a basic block that
24285         we already visited now becomes part of a path that starts at a
24286         different basic block.  Just disallow this, to make sure we
24287         visit each basic block at most once.
24288
24289 2007-03-13  Jan Hubicka  <jh@suse.cz>
24290
24291         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
24292         attributes, when profile esitmate is present, calls with very low
24293         frequency are cold.
24294
24295 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
24296
24297         PR tree-optimization/30730
24298         PR tree-optimization/26900
24299         * tree-ssa-loop-niter.c: Include gmp.h.
24300         (bounds): New type.
24301         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
24302         split_to_var_and_offset, determine_value_range,
24303         bound_difference_of_offsetted_base, refine_bounds_using_guard,
24304         bound_difference, bounds_add, bounds_negate,
24305         number_of_iterations_ne_max, dump_affine_iv): New functions.
24306         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
24307         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
24308         difference of initial and final value of control iv to validate
24309         results.
24310         (number_of_iterations_cond): Add loop parameter.  Determine bounds
24311         on the difference of the extremes of the control iv.  Add dumps.
24312         (expand_simple_operations): Handle phi nodes.
24313         (simplify_using_initial_conditions): Do not record used conditions.
24314         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
24315         Do not set additional_info.
24316         (implies_nonnegative_p, implies_ge_p): Removed.
24317         (derive_constant_upper_bound): Do not use parameter `additional'.
24318         (record_estimate): Parameter `additional' removed.  Parameter
24319         `i_bound' added.  Do not call derive_constant_upper_bound.
24320         (record_nonwrapping_iv): Use derive_constant_upper_bound to
24321         bound the number of iterations estimate.
24322         (estimate_numbers_of_iterations_loop): Pass the estimate from
24323         the number of iterations analysis to record_estimate.
24324         * tree.h (multiple_of_p): Declare.
24325         * tree-scalar-evolution.c (expression_expensive_p): Removed.
24326         (scev_const_prop): Do not check expression_expensive_p.
24327         * fold-const.c (multiple_of_p): Exported.
24328         * double-int.c (double_int_mask): Exported.
24329         * double-int.h (double_int_mask): Declare.
24330         * tree-flow.h (struct tree_niter_desc): Removed additional_info
24331         field.  Added max field.
24332
24333 2007-03-13  David Taylor  <taylor@candd.org>
24334
24335         PR driver/12448:
24336         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
24337         default -MQ.
24338
24339 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24340
24341         PR target/31123
24342         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
24343         two unamed patterns.
24344
24345 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
24346
24347         * config/i386/i386.opt (mcx16, msahf): New options.
24348         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
24349         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
24350
24351         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
24352         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
24353         Output -mcx16 and -msahf options when corresponding bit is set.
24354
24355         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
24356         and -msahf options.
24357
24358 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24359
24360         * configure.ac: Test for assembler tolerance to # 0 "".
24361         * configure, config.in: Rebuilt.
24362         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
24363
24364 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
24365
24366         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
24367
24368         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
24369         (handle_syscall): Handle direct system calls.
24370         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
24371
24372 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24373
24374         * doc/invoke.texi: Fix cpp.info cross-reference.
24375         * doc/passes.texi: Fix gcc.info cross-reference.
24376
24377 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
24378
24379         PR tree-optimization/30835
24380         * lambda-code.c (can_convert_to_perfect_nest): Check whether
24381         bb_for_stmt is not NULL before accessing it.
24382
24383 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
24384
24385         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
24386         some multilibs.
24387
24388 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24389
24390         PR 30635
24391         * doc/install.texi: Document --enable-stage1-languages
24392
24393 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
24394
24395         * tree-pass.h (pass_into_cfg_layout_mode,
24396         pass_outof_cfg_layout_mode): Declare.
24397         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
24398         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
24399         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
24400         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
24401
24402 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
24403
24404         * c-decl.c (warn_variable_length_array): New function.
24405         Refactored from grokdeclarator to handle warn_vla
24406         and handle unnamed array case.
24407         (grokdeclarator): Refactored VLA warning case.
24408         * c.opt (Wvla): New flag.
24409         * doc/invoke.texi (Wvla): New warning.
24410
24411 2007-03-12  Richard Henderson  <rth@redhat.com>
24412
24413         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
24414         (TARGET_SECTION_TYPE_FLAGS): New.
24415
24416 2007-03-12  Richard Henderson  <rth@redhat.com>
24417
24418         * config/darwin.c (machopic_reloc_rw_mask): New.
24419         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
24420         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
24421
24422 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
24423
24424         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
24425         * cppdefault.h (cpp_PREFIX): Document.
24426         (cpp_PREFIX_len): Likewise.
24427         (cpp_EXEC_PREFIX): New variable.
24428         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
24429         * c-incpath.c (add_standard_paths): Correct logic for relocating
24430         paths within prefix.
24431
24432 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
24433
24434         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
24435         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
24436         mode macro.
24437         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
24438         fix_truncdfdi_sse using SSEMODEF mode macro.
24439         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
24440         fix_truncdfsi_sse using SSEMODEF mode macro.
24441         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
24442         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
24443
24444 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
24445
24446         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
24447         elfos.h to tm_file.
24448
24449 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
24450
24451         * tree.h : Add multiple_of_p declaration.
24452         * fold-const.c (multiple_of_p): Make multiple_of_p public.
24453         * ipa-type-escape.c (results_of_malloc): Redundant.
24454         (visited_stmts): New. Visited stmt for walk_use_def_chains.
24455         (cast_type): Extended with new members.
24456         (check_cast): Returns cast_type.
24457         (cast): New structure for data of walk_use_def_chains.
24458         (is_malloc_result, is_cast_from_non_pointer_1,
24459         is_cast_from_non_pointer,
24460         is_array_access_through_pointer_and_index): New functions.
24461         (look_for_casts): Returns cast types.
24462         (check_call): Returns void.
24463         (okay_pointer_operation): Use support of pointer plus index,
24464         pointer plus constant and allow all multiplications.
24465
24466 2007-03-11  Richard Guenther  <rguenther@suse.de>
24467
24468         PR tree-optimization/31115
24469         * tree-vrp.c (extract_range_from_binary_expr): Make sure
24470         the shift count is positive and non-anti-range for RSHIFT_EXPR.
24471         A shift count of zero is not special as with *_DIV_EXPR.
24472         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
24473         direction.
24474
24475 2007-03-11  Ian Lance Taylor  <iant@google.com>
24476
24477         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
24478         the *_DIV_EXPR codes correctly with overflow infinities.
24479
24480 2007-03-11  Ira Rosen  <irar@il.ibm.com>
24481
24482         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
24483         indicate success/failure of the analysis. Add negation to subtrahend
24484         in case of subtraction. Fail if both operands contain constants.
24485         (create_data_ref): Fail if analyze_offset fails.
24486
24487 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
24488
24489         * config/i386/i386.md (frndintxf2): Rename to ...
24490         (rintxf2): ... this. Remove expander having same name.
24491         (rintsf2, rintdf2): Implement using SSEMODEF macro.
24492         (roundsf2, rounddf2): Ditto.
24493         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
24494         (lround<mode>di2, lround<mode>si2): Ditto.
24495
24496 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
24497
24498         * lower-subreg.c: Include except.h.
24499         (decompose_multiword_subregs): Verify that the only control flow
24500         insns we can split are loads to multi-words pseudos.
24501         Handle breaking such blocks after splitting, instead of calling
24502         find_many_sub_basic_blocks.
24503
24504         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
24505         on the new basic block.  Add a lengthy comment explaining why we
24506         thought this was necessary.
24507         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
24508
24509 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
24510
24511         PR c++/30924
24512         * tree.c (walk_type_fields): Recurse into the element type of
24513         ARRAY_TYPEs if there is a pointer set.
24514
24515 2007-03-10  Dirk Mueller  <dmueller@suse.de>
24516
24517         * c-common.c (warn_logical_operator): Fix condition.
24518
24519 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
24520
24521         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
24522         quotation mark.
24523         * config/darwin.c (machopic_select_section): Remove superfluous
24524         argument in call to categorize_decl_for_section.  Remove unused
24525         variable shlib.
24526
24527 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
24528
24529         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
24530         defined.
24531         * configure: Regenerate.
24532
24533 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
24534
24535         PR target/31101
24536         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
24537         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
24538         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
24539         Add LABEL_NUSES to emitted label.
24540         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
24541         branch probability value to emitted jump insn.
24542         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
24543         Do not check life information and do not re-arrange input operands
24544         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
24545
24546 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24547
24548         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
24549         the change of decode_asm_operands.
24550
24551 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24552
24553         * mode-switching.c (create_pre_exit): Skip blockage insn.
24554
24555 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
24556
24557         * tree-pass.h (TODO_update_smt_usage): Remove.
24558         Update all users.
24559         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
24560         argument SOME.
24561         Update all users.
24562
24563 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24564
24565         * pa.c (attr_length_call): Revise condition for long
24566         pc-relative branch.
24567         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
24568         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
24569         sequence on SOM target.
24570
24571 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
24572
24573         * gcc.c: Document %{, in big comment at top.
24574         (input_suffix_matches): Remove special handling for .s and
24575         .S.
24576         (input_spec_matches): New.
24577         (handle_braces): Handle %{,.
24578         (validate_switches): ',' indicates a value which is not a switch.
24579         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
24580         to detect assembler input.
24581         * config/i386/sol2.h (CPP_SPEC): Likewise.
24582         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
24583         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
24584         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
24585         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
24586         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
24587         -m64 causes deployment target to default to 10.5.
24588         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
24589
24590 2007-03-09  Richard Henderson  <rth@redhat.com>
24591
24592         PR target/26090
24593         * target.h (targetm.asm.out.reloc_rw_mask): New.
24594         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
24595         (TARGET_ASM_OUT): Use it.
24596         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
24597         * varasm.c (categorize_decl_for_section): Remove shlib argument;
24598         use the new reloc_rw_mask target hook instead.
24599         (default_section_type_flags_1): Merge into...
24600         (default_section_type_flags): ... here.
24601         (decl_readonly_section_1): Merge into...
24602         (decl_readonly_section): ... here.
24603         (default_elf_select_section_1): Merge into...
24604         (default_elf_select_section): ... here.
24605         (default_unique_section_1): Merge into...
24606         (default_unique_section): ... here.
24607         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
24608         (default_select_rtx_section): Use it.
24609         (default_elf_select_rtx_section): Likewise.
24610         * output.h: Update to match.
24611         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
24612         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
24613         (TARGET_ASM_RELOC_RW_MASK): New.
24614         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
24615         to categorize_decl_for_section.
24616         (x86_64_elf_unique_section): Likewise.
24617         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
24618         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
24619         (TARGET_ASM_RELOC_RW_MASK): New.
24620         * config/ia64/ia64.c (ia64_rwreloc_select_section,
24621         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
24622         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
24623         (TARGET_RWRELOC): Remove.
24624         (ia64_section_type_flags): Adjust call to default_section_type_flags.
24625         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24626         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
24627         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
24628         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
24629         (rs6000_xcoff_select_section): Use decl_readonly_section.
24630         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
24631         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24632         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
24633         (TARGET_SECTION_TYPE_FLAGS): Remove.
24634         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
24635
24636 2007-03-09  Roger Sayle  <roger@eyesopen.com>
24637
24638         * fold-const.c (fold_comparison): Remove compile-time evaluation of
24639         complex constant equality/inequality comparisons for here.
24640         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
24641         known at compile-time or can be simplified to a scalar comparison.
24642         (fold_relational_const): Move compile-time evaluation of complex
24643         constant equality/inequality comparisons to here.
24644
24645 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24646
24647         PR rtl-optimization/30643
24648         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
24649         dest_addr_elt.
24650         (fold_rtx): Recurse, like before 2006-11-03.
24651
24652 2007-03-09  DJ Delorie  <dj@redhat.com>
24653
24654         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
24655         m32c-pragma.o.
24656
24657 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
24658
24659         PR tree-optimization/30375
24660         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
24661         LHS of statements is not the same.
24662         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
24663
24664 2007-03-09  Chao-ying Fu  <fu@mips.com>
24665
24666         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
24667         REV 2.
24668         * doc/invoke.texi (-mdspr2): Document new option.
24669         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
24670         New unspec for DSP REV 2.
24671         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
24672         these instructions are extended in DSP REV 2.
24673         (mips-dspr2.md): Include.
24674         * config/mips/mips.opt (mdspr2): New option.
24675         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
24676         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
24677         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
24678         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
24679         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
24680         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
24681         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
24682         and 2 builtins.
24683         (bdesc_map): Add one field of unsupported_target_flags.
24684         (bdesc_arrays): Update entries to have extra fields.  Add
24685         dsp_32only_bdesc.
24686         (mips_init_builtins): Initialize new function types.
24687         Check unsupported_target_fileds to filter out builtins.
24688         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
24689         TARGET_DSPR2.
24690         (ASM_SPEC): Pass mdspr2 to the assembler.
24691         * config/mips/mips-dspr2.md: New file.
24692
24693 2007-03-09  Sa Liu  <saliu@de.ibm.com>
24694
24695         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
24696
24697 2007-03-09  Ian Lance Taylor  <iant@google.com>
24698
24699         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
24700         argument) like -Wstrict-overflow=2.
24701         * doc/invoke.texi (Warning Options): Update documentation.
24702
24703 2007-03-09  Dirk Mueller  <dmueller@suse.de>
24704
24705         PR c++/17946
24706         * doc/invoke.texi (-Wlogical-op): Document.
24707         * common.opt (-Wlogical-op): New.
24708         * c-common.h (warn_logical_operator): Declare.
24709         * c-common.c (warn_logical_operator): Define.
24710         * c-typeck.c (parser_build_binary_op): Call
24711         warn_logical_operator.
24712
24713 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24714
24715         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
24716         * final.c (final_scan_insn): Test for non-"" file name.
24717
24718 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
24719
24720         * doc/loop.texi: Document the Omega linear constraints solver.
24721         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
24722         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
24723         omega-hash-table-size, omega-max-keys, and
24724         omega-eliminate-redundant-constraints.
24725         * tree-pass.h (pass_check_data_deps): Declared.
24726         * omega.c: New.
24727         * omega.h: New.
24728         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
24729         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
24730         pass_check_data_deps): New.
24731         * tree-data-ref.c (init_data_ref): Remove declaration.
24732         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
24733         (analyze_array): Renamed init_array_ref, move up initializations.
24734         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
24735         Removed arguments that are set to NULL.
24736         (analyze_indirect_ref): Correct indentation, correct call to
24737         init_pointer_ref.
24738         (object_analysis): Call init_array_ref instead of analyze_array.
24739         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
24740         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
24741         of DR_ACCESS_FNS_ADDR.
24742         (init_omega_eq_with_af, omega_extract_distance_vectors,
24743         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
24744         ddr_consistent_p): New.
24745         (compute_affine_dependence): Check consistency of ddrs when
24746         flag_check_data_deps is passed.
24747         (analyze_all_data_dependences): Uncomment.
24748         (tree_check_data_deps): New.
24749         * tree-data-ref.h: Include omega.h.
24750         (DR_ACCESS_FNS_ADDR): Removed.
24751         (data_dependence_relation): Add inner_loop.
24752         (DDR_INNER_LOOP): New.
24753         * common.opt (fcheck-data-deps): New.
24754         * tree-flow.h (tree_check_data_deps): Declare.
24755         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
24756         (OBJS-common): Depend on omega.o.
24757         (omega.o): Define.
24758         * passes.c (pass_check_data_deps): Scheduled.
24759         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
24760         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
24761         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
24762         PARAM_VECT_MAX_VERSION_CHECKS,
24763         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
24764
24765 2007-03-09  Richard Guenther  <rguenther@suse.de>
24766
24767         PR tree-optimization/30904
24768         PR middle-end/31058
24769         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
24770         the same way as *_DIV_EXPR.
24771
24772 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24773
24774         * recog.c (decode_asm_operands): No mixed declarations and code.
24775
24776 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24777
24778         * rtl.def (ASM_INPUT): Add location.
24779         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
24780         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
24781         (decode_asm_operands): Add loc operand.
24782         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
24783         * stmt.c (expand_asm): Rename to...
24784         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
24785         gen_rtx_ASM_INPUT_loc.
24786         (expand_asm_expr): Adjust.
24787         * recog.c (decode_asm_operands): Add loc operand.
24788         (check_asm_operands, extract_insn): Adjust.
24789         * reload1.c (maybe_fix_stack_asms): Likewise.
24790         * final.c (asm_insn_count): Likewise.
24791         (final_scan_insn): Output # line before and after asm.
24792
24793 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
24794
24795         * tree-ssa-structalias.c (variable_info): Remove
24796         finished_solution.
24797         (new_var_info): Ditto.
24798         (shared_bitmap_info_t): New structure.
24799         (shared_bitmap_table): New variable.
24800         (shared_bitmap_hash): New function.
24801         (shared_bitmap_eq): Ditto
24802         (shared_bitmap_lookup): Ditto.
24803         (shared_bitmap_add): Ditto.
24804         (merge_smts_into): Change to take bitmap directly.
24805         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
24806         (init_alias_vars): Init shared bitmap hashtable.
24807         (delete_points_to_sets): Delete shared bitmap hashtable.
24808         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
24809         is_aliased removal as a change that was still necessary was
24810         deleted.
24811
24812 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
24813
24814         * config/i386/i386.h (override_options): Conditionally disable
24815         x86_sahf for 64bit targets only.
24816
24817 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24818
24819         PR C/31072
24820         * c-decl.c (merge_decls): Don't call make_var_volatile.
24821         * varasm.c (make_var_volatile): Remove.
24822         * output.h (make_var_volatile): Remove.
24823
24824 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
24825
24826         PR tree-optimization/31085
24827         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
24828
24829 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24830
24831         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
24832         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
24833         ATTR_CONST_NOTHROW_LIST.
24834
24835         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24836         FIX_TRUNC_EXPR.
24837
24838 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
24839
24840         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
24841
24842 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
24843
24844         PR 31013
24845         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
24846         is declared.
24847         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
24848         passed, use shared libgcc.
24849
24850 2007-03-08  Roger Sayle  <roger@eyesopen.com>
24851
24852         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
24853         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24854         (honor_protect_cleanup_actions, lower_try_finally_switch):
24855         Likewise.
24856         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
24857         ifc_temp_var): Likewise.
24858         * tree-inline.c (setup_one_parameter): Likewise.
24859         * tree-mudflap.c (mf_decl_cache_locals,
24860         mf_build_check_statement_for): Likewise.
24861         * tree-nested.c (init_tmp_var, save_tmp_var,
24862         finalize_nesting_tree_1): Likewise.
24863         * tree-outof-ssa.c (insert_copy_on_edge,
24864         insert_backedge_copies): Likewise.
24865         * tree-profile.c (tree_gen_edge_profiler,
24866         tree_gen_ic_profiler): Likewise.
24867         * tree-scalar-evolution.c (scev_const_prop): Likewise.
24868         * tree-sra.c (sra_build_assignment): Likewise.
24869         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
24870         * tree-ssa-math-opts.c (insert_reciprocals,
24871         execute_cse_sincos_1): Likewise.
24872         * tree-tailcall.c (adjust_accumulator_values,
24873         adjust_return_value): Likewise.
24874         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
24875         * tree-vect-transform.c (vect_create_data_ref_ptr,
24876         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
24877         vect_create_epilog_for_reduction, vectorizable_reduction,
24878         vectorizable_call, vectorizable_conversion,
24879         vectorizable_assignment, vectorizable_operation,
24880         vectorizable_type_demotion, vect_gen_widened_results_half,
24881         vect_permute_store_chain, vectorizable_store,
24882         vect_setup_realignment, vect_permute_load_chain,
24883         vectorizable_load, vectorizable_condition,
24884         vect_create_cond_for_align_checks): Likewise.
24885         * tree-vrp.c (build_assert_expr_for): Likewise.
24886
24887 2007-03-08  Ian Lance Taylor  <iant@google.com>
24888
24889         * tree-vrp.c: Include "intl.h".
24890         (usable_range_p): New static function.
24891         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
24892         overflowed values, juts set *strict_overflow_p.
24893         (compare_values): Only return -2 if one of the operands is not a
24894         constant.
24895         (compare_ranges): Call usable_range_p.
24896         (compare_range_with_value): Likewise.
24897         (vrp_evaluate_conditional_warnv): Rename from
24898         vrp_evaluate_conditional.  Make static.  Change all callers.
24899         (vrp_evaluate_conditional): New function.
24900         (simplify_div_or_mod_using_ranges): Issue warning about reliance
24901         on signed overflow.
24902         (simplify_abs_using_ranges): Likewise.
24903         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
24904         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
24905         within_stmt parameter.
24906         * tree-ssa-propagate.c (fold_predicate_in): Update call to
24907         vrp_evaluate_conditional.
24908         * tree-ssa-threadedge.c
24909         (record_temporary_equivalences_from_stmts_at_dest): Change
24910         simplify parameter to take a second tree parameter.
24911         (simplify_control_stmt_condition): Likewise.
24912         (thread_across_edge): Likewise.
24913         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24914         (thread_across_edge): Likewise.
24915         * Makefile.in (tree-vrp.o): Depend upon intl.h.
24916
24917 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
24918
24919         * config/i386/i386.h (TARGET_SAHF): New define.
24920         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
24921         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
24922         (x86_sahf): New global variable.
24923         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
24924         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
24925         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
24926         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
24927         for 64-bit.
24928         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
24929         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
24930         when expanding fcomi/sahf based tests.
24931         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
24932         expanding sahf based alternative. Emit sahf based sequence when
24933         optimizing for code size.
24934         * config/i386/i386.md (x86_sahf_1): Do not disable for
24935         TARGET_64BIT, enable for TARGET_SAHF.
24936
24937 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
24938
24939         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
24940         spurious whitespace from error message.
24941
24942 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
24943
24944         PR c++/30852
24945         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
24946
24947 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
24948
24949         * c-decl.c (grokdeclarator): Disable warnings for anonymous
24950         bitfields.
24951         * tree-sra.c (instantiate_element): Propagate disabled warnings
24952         from the element itself to the created variable.
24953
24954 2007-03-07  Richard Henderson  <rth@redhat.com>
24955
24956         PR target/30848
24957         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
24958         silently fix up the stack in the case of a missing register.
24959
24960 2007-03-07  Paul Brook  <paul@codesourcery.com>
24961
24962         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
24963
24964 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
24965
24966         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
24967         New.
24968         (phase1_vrs): Use them.
24969         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
24970         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
24971         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
24972         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
24973         __gnu_Unwind_Restore_WMMXC if required.
24974         (_Unwind_VRS_Pop): Implement iWMMXt support.
24975         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
24976         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
24977         gnu_Unwind_Save_WMMXC): Define.
24978
24979 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24980
24981         * config/vxworks.h (vxworks_override_options): Declare.
24982         (VXWORKS_OVERRIDE_OPTIONS): Use it.
24983         * config/vxworks.c: Include target.h and toplev.h.
24984         (vxworks_override_options): New function.
24985         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
24986
24987 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
24988
24989         * config/s390/s390.c (override_options): Don't emit an error when
24990         -mstack-size is used without providing -mstack-guard.
24991         (s390_emit_prologue): Choose stack_guard value automatically if not
24992         provided via command line.
24993         * doc/invoke.texi: Adjust description of -mstack-guard and
24994         -mstack-size.
24995
24996 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24997
24998         * config/i386/i386.c (output_set_got): Add a GOT initialization
24999         sequence for VxWorks PIC.
25000         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
25001         around labels as well as symbols.  Use gotoff_operand instead
25002         of local_symbolic_operand.
25003         (legitimize_pic_address): Use gotoff_operand instead of
25004         local_symbolic_operand.  Use @GOT accesses for labels as
25005         well as symbols.
25006         (ix86_output_addr_diff_elt): Use PC-relative rather than
25007         GP-relative offsets for VxWorks PIC.
25008         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
25009         no_new_pseudos.  Check whether the returned register is op0.
25010         * config/i386/i386.md (tablejump): Use PC-relative rather than
25011         GP-relative offsets for VxWorks PIC.
25012         * config/i386/predicates.md (gotoff_operand): New predicate.
25013
25014 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25015
25016         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
25017         before defining.
25018         * config/vxworks-dummy.h: New file.
25019         * config/i386/i386.h: Include it.
25020
25021 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
25022
25023         * dwarf2out.c (is_inlined_entry_point): New
25024         (add_high_low_attributes): Emit DW_AT_entry_pc along with
25025         DW_AT_ranges if the first subblock is the entry point.
25026
25027 2007-03-06  David Daney  <ddaney@avtrex.com>
25028
25029         * doc/install.texi (mips-*-*): Change recommended binutils
25030         version.
25031
25032 2007-03-06  Anatoly Sokolov <aesok@post.ru>
25033
25034         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
25035         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
25036         devices.
25037         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25038         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
25039
25040 2007-03-06  Jan Hubicka  <jh@suse.cz>
25041
25042         * errors.h (warning, error, fatal, internal_error): Mark as cold.
25043         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
25044         functions are hot.
25045         (probably_cold_bb_p): Cold functions are cold.
25046         (probably_never_executed_bb_p): Cold functions are cold.
25047         (tree_bb_level_predictions): Predict calls to cold functions as not
25048         taken.
25049         (compute_function_frequency): Check hot/cold attributes.
25050         * function.h (function_frequency): Update comments.
25051         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
25052         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
25053         (c_common_att): Add cold and hot.
25054
25055         * doc/extend.texi (hot,cold attributes): Document.
25056
25057 2007-03-06  Andrew Haley  <aph@redhat.com>
25058
25059         * function.c (expand_function_end): Move blockage to just after we
25060         emit the label for the naked return from the function.
25061
25062 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25063
25064         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
25065         before redefining.
25066
25067 2007-03-06  Jan Hubicka  <jh@suse.cz>
25068
25069         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
25070         loaded for constant large models.  Non-large 64bit PIC can do.
25071         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
25072         * cmodel.h: Add LARGE PIC.
25073         * i386.md (UNSPEC_PLTOFF): New.
25074         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
25075         unspecs as needed.
25076         (*call_1_rex64): Disable for large models.
25077         (*call_1_rex64_large): New.
25078         (*call_value_1_rex64): Disable for large models.
25079         (*call_value_1_rex64_large): New.
25080         (set_rip_rex4): New.
25081         (set_got_offset_rex64): New.
25082         * predicates.md (constant_call_address_operand): For large model
25083         constant calls are not possible.
25084         * i386-protos.h (construct_plt_address): Declare.
25085         * i386.c (override_options): Accept large models.
25086         (ix86_expand_prologue): Expand large PIC GOT pointer load.
25087         (legitimate_constant_p): Add new UNSPECs.
25088         (legitimate_pic_operand_p): Likewise.
25089         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
25090         (legitimize_pic_address): Do easy RIP relative way for TLS only for
25091         non-large model.
25092         (output_pic_addr_const): Add PLTOFF.
25093         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
25094         (ix86_expand_move): Legitimize pic address when in PIC mode.
25095         (construct_plt_address): New function.
25096         (ix86_expand_call): Offload the address to register and use GOT
25097         pointer for large model.
25098         * invoke.texi (mcmodel=large): Update documentation.
25099
25100 2007-03-06  Richard Henderson  <rth@redhat.com>
25101
25102         * config/i386/i386.c (x86_use_leave, x86_push_memory,
25103         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
25104         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
25105         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
25106         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
25107         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
25108         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
25109         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
25110         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
25111         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
25112         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25113         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
25114         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25115         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25116         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
25117         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
25118         x86_schedule, x86_use_bt, x86_pad_returns,
25119         x86_use_xchgb): Merge into ...
25120         (ix86_tune_features): ... here.  New array.
25121         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25122         x86_bswap): Merge into ...
25123         (ix86_arch_features): ... here.  New array.
25124         (x86_3dnow_a): Remove.
25125         (x86_accumulate_outgoing_args): Make static.
25126         (x86_arch_always_fancy_math_387): Make static.
25127         (ix86_tune_mask, ix86_arch_mask): Move ...
25128         (override_options): ... to local variables here.  Apply the
25129         appropriate mask to each element of ix86_arch_features and
25130         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
25131         as were done in the old macros.
25132         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
25133         * config/i386/i386.h (x86_use_leave, x86_push_memory,
25134         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
25135         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
25136         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
25137         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
25138         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
25139         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
25140         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
25141         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
25142         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
25143         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25144         x86_accumulate_outgoing_args, x86_prologue_using_move,
25145         x86_epilogue_using_move, x86_decompose_lea,
25146         x86_arch_always_fancy_math_387, x86_shift1,
25147         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25148         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25149         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
25150         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25151         x86_use_incdec, x86_pad_returns, x86_bswap,
25152         x86_partial_flag_reg_stall): Remove.
25153         (enum ix86_tune_indices): New.
25154         (ix86_tune_features): New.
25155         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
25156         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
25157         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
25158         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
25159         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
25160         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
25161         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
25162         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
25163         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
25164         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
25165         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
25166         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
25167         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
25168         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
25169         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
25170         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
25171         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
25172         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
25173         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
25174         TARGET_EXT_80387_CONSTANTS): Use it.
25175         (enum ix86_arch_indices): New.
25176         (ix86_arch_features): New.
25177         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
25178         TARGET_BSWAP): Use it.
25179         (ix86_tune_mask, ix86_arch_mask): Remove.
25180
25181 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
25182
25183         PR bootstrap/31020
25184         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
25185         Define using $${sysroot_headers_suffix}.
25186         * configure: Regenerate.
25187         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
25188         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
25189         defined.
25190         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
25191         * gcc.c (print_sysroot_headers_suffix): New.
25192         (option_map): Include --print-sysroot-headers-suffix.
25193         (display_help): Mention -print-sysroot-headers-suffix.
25194         (process_command): Handle -print-sysroot-headers-suffix.
25195         (do_spec_1): Append multilib directory to include-fixed path if
25196         sysroot suffixes in use.
25197         (main): Handle -print-sysroot-headers-suffix.
25198         * Makefile.in (start.encap): Don't depend on xlimits.h
25199         (xlimits.h): Remove.
25200         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
25201         limits.h for each multilib in fixinc_list.
25202         (fixinc_list, s-fixinc_list): New.
25203         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
25204         generate them for each multilib in fixinc_list.
25205         (stmp-fixproto): Use include-fixed.  Run fixproto for each
25206         multilib in fixinc_list.
25207         (mostlyclean): Don't remove xlimits.h.
25208         (clean): Remove include-fixed.
25209         (real-install-headers-tar, real-install-headers-cpio,
25210         real-install-headers-cp): Don't copy include, only include-fixed.
25211         (install-mkheaders): Depend on fixinc_list.  Don't depend on
25212         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
25213         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
25214         SYSTEM_HEADER_DIR setting in mkheaders.conf.
25215
25216 2007-03-06  Jan Hubicka  <jh@suse.cz>
25217
25218         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
25219         NANs easilly.
25220
25221 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25222
25223         * configure.ac: Allow tm_file to contain build-directory files.
25224         * configure: Regenerate.
25225         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
25226         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
25227         * config/m68k/print-sysroot-suffix.sh: New file.
25228
25229 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25230
25231         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
25232         of pic_offset_table_rtx if reload_completed.
25233         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
25234         PIC_OFFSET_TABLE_REGNUM.
25235         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
25236         return true.
25237         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
25238         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
25239
25240 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25241
25242         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25243         functions that call eh_return.
25244
25245 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25246
25247         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25248         functions that need a constant pool.
25249
25250 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25251
25252         PR target/28181
25253         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
25254         (m68k_preferred_reload_class): Likewise.
25255         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
25256         (SECONDARY_RELOAD_CLASS): Define.
25257         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
25258         (LIMIT_RELOAD_CLASS): Delete.
25259         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
25260         registers from storing bytes.
25261         (m68k_secondary_reload_class): New function.
25262         (m68k_preferred_reload_class): Likewise.
25263
25264 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25265
25266         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
25267         leaf functions.
25268         (m68k_expand_prologue): Likewise.
25269
25270 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25271
25272         * config/m68k/m68k-protos.h (output_sibcall): Declare.
25273         (mips_expand_epilogue): Add a bool parameter.
25274         (m68k_legitimize_sibcall_address): Declare.
25275         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
25276         (m68k_expand_epilogue): Add a parameter to select between sibling
25277         and normal epilogues.  Only generate a return for the latter.
25278         (m68k_ok_for_sibcall_p): New function.
25279         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
25280         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
25281         (sibcall_value, *sibcall_value): Likewise.
25282         (*call, *call_value): Require !SIBLING_CALL_P.
25283         (epilogue): Update call to m68k_expand_epilogue.
25284         (sibcall_epilogue): New pattern.
25285         * config/m68k/predicates.md (const_call_operand): Say that this
25286         predicate applies to sibling calls too.
25287         (sibcall_operand): New predicate.
25288
25289 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25290
25291         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
25292         alternatives as movsi_cf.
25293         (movsf_cf_hard): Add commentary.
25294
25295 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
25296             Richard Sandiford  <richard@codesourcery.com>
25297
25298         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
25299         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
25300         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
25301         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
25302         as being live on exit from an interrupt function.
25303         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
25304         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
25305         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
25306         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
25307         (m68k_interrupt_function_p): Globalize.
25308         (m68k_compute_frame_layout): Remove reverse mask code.
25309         (m68k_emit_movem, m68k_set_frame_related): New functions.
25310         (m68k_output_function_prologue): Delete in favor of...
25311         (m68k_expand_prologue): ...this new function.
25312         (m68k_output_function_epilogue): Delete in favor of...
25313         (m68k_expand_epilogue): ...this new function.
25314         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
25315         functions.
25316         (print_operand): Handle %?.
25317         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
25318         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
25319         (prologue, epilogue): New patterns.
25320         (return): Turn into a define_expand.
25321         (*return): New pattern, derived from old "return" pattern.  Use rte
25322         rather than rts for interrupt functions.  Only use rtd if the pop
25323         count is nonzero.
25324         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
25325         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
25326         (link, *link, unlink, *unlink, load_got): Likewise.
25327
25328 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25329
25330         PR target/23482
25331         PR target/17114
25332         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
25333         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
25334         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
25335         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
25336         and m68k_matches_u_p.
25337         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
25338         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
25339         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
25340         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
25341         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
25342         (REG_STRICT_P): New macro.
25343         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
25344         PCREL_GENERAL_OPERAND_OK.
25345         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
25346         m68k_legitimate_base_reg_p.
25347         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
25348         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
25349         (PIC_CASE_VECTOR_ADDRESS): Update comment.
25350         * config/m68k/m68k.c (m68k_address): New structure.
25351         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
25352         (m68k_decompose_index, m68k_legitimate_constant_address_p)
25353         (m68k_jump_table_ref_p, m68k_decompose_address)
25354         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
25355         (m68k_matches_u_p): New functions.
25356         (print_operand_address): Rewrite to use m68k_decompose_index.
25357
25358 2007-03-05  David Taylor  <dtaylor@emc.com>
25359
25360         * gcc.c: Correct copyright date in --version output.
25361
25362 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25363
25364         * pa.md: In unamed move patterns, disparge copies between general
25365         and floating point registers using '?' modifier.  Don't include 'f'
25366         constraint for register preferences in DImode, SImode, HImode and
25367         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
25368         Remove constraints for copies between general and floating registers
25369         in soft-float DFmode pattern.
25370         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
25371         floating register.
25372         (movsf): Likewise.
25373
25374 2007-03-05  Mike Stump  <mrs@apple.com>
25375
25376         * c-common.c (targetcm): Add.
25377         * c-opts.c (c_common_handle_option): Handle language specific
25378         target options.
25379         * opts.c (handle_option): Verify language for target options, if
25380         any are given.
25381         * opth-gen.awk: Add CL_LANG_ALL.
25382         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
25383         (TARGETCM_INITIALIZER): Add.
25384         * target.h (struct gcc_targetcm): Add.
25385         (targetcm): Add.
25386         * targhooks.c (default_handle_c_option): Add.
25387         * targhooks.h (default_handle_c_option): Add.
25388         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
25389
25390         * config/darwin.opt (iframework): Add.
25391         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
25392         * config/darwin-c.c (handle_c_option): Add.
25393         (TARGET_HANDLE_C_OPTION): Add.
25394         (targetcm): Add.
25395         * doc/invoke.texi (Darwin Options): Add -iframework.
25396
25397 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25398
25399         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
25400         conversion.
25401
25402 2007-03-05  Ian Lance Taylor  <iant@google.com>
25403
25404         * c.opt (fgnu89-inline): New option.
25405         * c-opts.c (c_common_post_options): Set default value for
25406         flag_gnu89_inline.
25407         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
25408         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
25409         inline functions.
25410         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
25411         (grokdeclarator, start_function): Likewise.
25412         * c-cppbuiltin.c (c_cpp_builtins): Define either
25413         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
25414         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
25415         (C Dialect Options): Document -fgnu89-inline.
25416         * doc/extend.texi (Function Attributes): Explain what the
25417         gnu_inline attribute does.
25418         * doc/cpp.texi (Common Predefined Macros): Document
25419         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
25420
25421 2007-03-05  Ian Lance Taylor  <iant@google.com>
25422
25423         PR tree-optimization/31034
25424         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
25425         half-range if the other side is an overflow infinity.
25426
25427 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
25428
25429         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
25430         (bfin*-linux-uclibc*): New configuration.
25431         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
25432         defining.
25433         * config/bfin/linux.h: New file.
25434         * config/bfin/libgcc-bfin.ver: New file.
25435         * config/bfin/t-bfin-uclinux: New file.
25436         * config/bfin/t-bfin-linux: New file.
25437         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
25438         (TARGET_OS_CPP_BUILTINS): New macro.
25439
25440 2007-03-05  Richard Guenther  <rguenther@suse.de>
25441
25442         * fold-const.c (fold_binary): Remove duplicate folding
25443         of comparison of non-null ADDR_EXPR against null.
25444
25445 2007-03-05  Richard Guenther  <rguenther@suse.de>
25446             Dorit Nuzman  <dorit@il.ibm.com>
25447
25448         PR tree-optimization/26420
25449         * tree-vectorizer.c (vectorize_loops): Bail out early if there
25450         are no loops in the function.  Only print the number of
25451         vectorized loops if it is greater than zero or we are supposed
25452         to print information about unvectorized loops.
25453
25454 2007-03-05  Revital Eres  <eres@il.ibm.com>
25455
25456         * gcc.dg/var-expand1.c: New test.
25457         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
25458         when an accumulator is expanded.
25459
25460 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25461
25462         PR other/30465
25463         * c-common.c (convert_and_check): Don't give warnings for
25464         conversion if 'expr' already overflowed.
25465
25466 2007-03-04  Roger Sayle  <roger@eyesopen.com>
25467
25468         PR middle-end/30744
25469         * fold-const.c (fold_comparison): Enforce type consistency when
25470         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
25471
25472 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
25473
25474         * tree-ssa-address.c (create_mem_ref): Do not put an expression
25475         containing a cast to the base of TARGET_MEM_REF.
25476
25477 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
25478
25479         * tree.c (tree_contains_struct_check_failed): Remove spurious
25480         whitespace from error message.
25481
25482 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
25483
25484         PR target/30406
25485         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
25486         instead of precision.
25487
25488 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
25489             Nathan Sidwell  <nathan@codesourcery.com>
25490
25491         * emit-rtl.c (find_auto_inc): New.
25492         (try_split): recreate REG_INC notes,
25493         Use regular for loops rather than whiles.
25494
25495 2007-03-03  Andreas Schwab  <schwab@suse.de>
25496
25497         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
25498         * configure: Regenerate.
25499
25500 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25501
25502         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
25503         flag_rounding_math, not flag_unsafe_math_optimizations.
25504
25505         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
25506         fold_build2.
25507         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
25508         alpha_fold_vector_minmax): Likewise.
25509         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
25510         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
25511
25512 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25513
25514         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
25515         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
25516         if the lhs has side-effects.
25517         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
25518
25519 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25520
25521         * config/i386/i386.h (TUNEMASK): Remove define.
25522         (ARCHMASK): Remove define.
25523         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
25524          Use ix86_arch_mask variable instead of ARCHMASK.
25525         * config/i386/i386.c (override_options): Ditto.
25526         (standard_80387_constant_p): Ditto.
25527
25528 2007-03-02  Ian Lance Taylor  <iant@google.com>
25529
25530         Used signed infinities in VRP.
25531         * tree-vrp.c (uses_overflow_infinity): New static function.
25532         (supports_overflow_infinity): New static function.
25533         (make_overflow_infinity): New static function.
25534         (negative_overflow_infinity): New static function.
25535         (positive_overflow_infinity): New static function.
25536         (is_negative_overflow_infinity): New static function.
25537         (is_positive_overflow_infinity): New static function.
25538         (is_overflow_infinity): New static function.
25539         (overflow_infinity_range_p): New static function.
25540         (compare_values_warnv): New function split out of compare_values.
25541         (compare_value): Call it.
25542         (set_value_range_to_nonnegative): Add overflow_infinity
25543         parameter.  Change caller.
25544         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
25545         Change callers.
25546         (vrp_expr_computes_nonzero): Likewise.
25547         (compare_ranges, compare_range_with_value): Likewise.
25548         (compare_name_with_value, compare_names): Likewise.
25549         (vrp_evaluate_conditional): Likewise.
25550         (set_value_range): Handle infinity
25551         (vrp_operand_equal_p, operand_less_p): Likewise.
25552         (extract_range_from_assert): Likewise.
25553         (vrp_int_const_binop): Likewise.
25554         (extract_range_from_binary_expr): Likewise.
25555         (extract_range_from_unary_expr): Likewise.
25556         (extract_range_from_comparison): Likewise.
25557         (extract_range_from_expr): Likewise.
25558         (dump_value_range): Likewise.
25559         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
25560         (test_for_singularity): Likewise.
25561         (vrp_int_const_binop): Remove inline qualifier.
25562         (adjust_range_with_scev): Add comment.
25563         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
25564
25565 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
25566
25567         * tree-ssa-structalias.c (could_have_pointers): Tidy.
25568         (get_constraint_for): Likewise.
25569         (do_structure_copy): Likewise.
25570         (find_func_aliases): Fix references to MODIFY_EXPR.
25571         (intra_create_variable_infos): Tidy.
25572         * tree-ssa-operands.c (add_virtual_operand): Add argument
25573         IS_CALL_SITE.
25574         When adding members of alias sets, if IS_CALL_SITE is true and
25575         the symbol is not call-clobbered, skip it.
25576         Adjust all callers.
25577
25578 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25579
25580         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
25581         entry by means of emit_insn_at_entry.
25582
25583 2007-03-02  Richard Henderson  <rth@redhat.com>
25584
25585         * expr.h (promoted_input_arg): Remove decl.
25586         * function.c (promoted_input_arg): Merge into ...
25587         * combine.c (setup_incoming_promotions): ... only caller.
25588         Rearrange to avoid double loop.
25589
25590 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25591             Peter Bergner  <bergner@vnet.ibm.com>
25592             Janis Johnson  <janis187@us.ibm.com>
25593
25594         * config/rs6000/dfp.md: New file.
25595         * config/rs6000/rs6000.md: Include dfp.md.
25596         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
25597         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
25598         and TDmode decimal float modes in FP registers.
25599         (num_insns_constant): Likewise.
25600         (rs6000_legitimate_offset_address_p): Likewise.
25601         (rs6000_legitimize_address): Likewise.
25602         (rs6000_legitimize_reload_address): Likewise.
25603         (rs6000_legitimate_address): Likewise.
25604         (rs6000_emit_move): Likewise.
25605         (function_arg_boundary): Likewise.
25606         (function_arg_advance): Likewise.
25607         (rs6000_darwin64_record_arg_recurse): Likewise.
25608         (function_arg): Likewise.
25609         (rs6000_gimplify_va_arg): Likewise.
25610         (rs6000_split_multireg_move): Likewise.
25611         (rs6000_output_function_epilogue): Likewise.
25612         (rs6000_output_function_epilogue): Likewise.
25613         (rs6000_register_move_cost): Likewise.
25614         (rs6000_function_value): Likewise.
25615         (rs6000_libcall_value): Likewise.
25616
25617 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25618
25619         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
25620
25621 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25622
25623         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
25624         Use $MULTIDIR to choose between the kernel and RTP headers,
25625         and use $WIND_BASE and $WIND_USR to locate them.
25626
25627 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25628
25629         * config/i386/i386.c (override_options): Put initialization of
25630         ix86_tune_mask and ix86_arch_mask to the correct place.
25631
25632 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25633             Michael Meissner  <michael.meissner@amd.com>
25634
25635         PR target/31019
25636         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
25637         (ARCHMASK): Define.
25638         (TARGET_CMOVE): Use ARCHMASK.
25639         (TARGET_CMPXCHG): Ditto.
25640         (TARGET_CMPXCHG8B): Ditto.
25641         (TARGET_XADD): Ditto.
25642         (TARGET_BSWAP): Ditto.
25643         * config/i386/i386.c (ix86_tune_mask): New global variable.
25644         (ix86_arch_mask): Ditto.
25645         (override_options): Initialize ix86_tune_mask and
25646         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
25647         target_flags.
25648
25649 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25650
25651         PR 30992
25652         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
25653
25654 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
25655
25656         * target.h (init_dwarf_reg_sizes_extra): New target hook.
25657         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
25658         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
25659         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
25660         hook.
25661         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
25662         rs6000_init_dwarf_reg_sizes_extra): New.
25663         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
25664         SPE register high parts.
25665
25666 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
25667
25668         * Makefile.in: Add install-pdf target as
25669         copied from automake v1.10 rules.
25670         * configure.ac: Add install-pdf to target list.
25671         * configure: Regenerate.
25672
25673 2007-03-01  Paul Brook  <paul@codesourcery.com>
25674
25675         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
25676         modes to LDRD for DImode.
25677         (output_move_double): Fixup out of range ldrd/strd.
25678         (vfp_secondary_reload_class): Rename...
25679         (coproc_secondary_reload_class): ... to this.  Add wb argument.
25680         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
25681         coproc_secondary_reload_class for CLASS_IWMMXT.
25682         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
25683         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
25684
25685 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
25686
25687         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
25688         unroll factor by the estimated number of iterations.
25689         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
25690         than prefetch latency.
25691
25692         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
25693         decode_caches_intel, detect_caches_intel): New functions.
25694         (host_detect_local_cpu): Use detect_caches_amd and
25695         detect_caches_intel.
25696
25697 2007-03-01  Richard Henderson  <rth@redhat.com>
25698
25699         * expr.c (emit_move_complex_push): Export.
25700         (emit_move_complex_parts): Split out from ...
25701         (emit_move_complex): ... here.
25702         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
25703         * config/i386/i386.md (movcdi): New.
25704
25705 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
25706
25707         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
25708         size of mode1 to check for tieable modes in MMX case.
25709
25710 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
25711
25712         * Makefile.in (rtlanal.o): Depend on tree.h.
25713         * rtl.h (offset_within_section_p, split_const): Declare.
25714         * rtlanal.c: Include tree.h.
25715         (offset_within_block_p): New function, taken from
25716         mips_offset_within_object_p.
25717         (split_const): New function, taken from mips_split_const.
25718         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
25719         Declare.
25720         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
25721         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
25722         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
25723         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
25724         (m68k_illegitimate_symbolic_constant_p): New function.
25725         * config/m68k/m68k.md (movsi): Remove misleading predicates.
25726         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
25727         symbolic constant that might be outside the symbol's section,
25728         move the symbol first and then add the offset.
25729         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
25730         Override.
25731         * config/mips/mips.c (mips_split_const): Delete.
25732         (mips_offset_within_object_p): Delete.
25733         (mips_symbolic_constant_p): Use offset_within_section_p and
25734         split_const instead of mips_offset_within_object_p and
25735         mips_split_const.
25736         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
25737         (mips_legitimize_const_move, print_operand_reloc)
25738         (mips_dangerous_for_la25_p): Use split_const instead of
25739         mips_split_const.
25740
25741 2007-02-28  Eric Christopher  <echristo@apple.com>
25742
25743         * Makefile.in (install-include-dir): Don't rm -rf include.
25744
25745 2007-02-28  Richard Guenther  <rguenther@suse.de>
25746
25747         PR middle-end/30364
25748         * fold-const.c (fold_binary): Do not associate expressions
25749         with more than one variable for integer types that do not wrap.
25750
25751 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
25752
25753         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
25754         Delete, and replace with...
25755         (fold_builtin_call_array): This.  Update callers to use it.
25756         * fold-const.c (fold_build_call_list): Delete, and replace with...
25757         (fold_build_call_array): This.
25758         (fold_build_call_list_initializer): Delete, and replace with...
25759         (fold_build_call_array_initializer): This.
25760         * tree.h: Update declarations to reflect above changes.
25761
25762         * c-typeck.c (build_function_call): Store converted arguments
25763         in a stack-allocated array instead of building a list.
25764         (convert_arguments): Store arguments in the array passed in as an
25765         argument, and return the actual number of arguments.
25766         * c-format.c: (check_function_format): Pass arguments in an
25767         array instead of a list.
25768         * c-common.c (check_function_nonnull): Likewise.
25769         (check_function_sentinel): Likewise.
25770         (check_function_arguments): Likewise.
25771         * c-common.h: Update declarations to reflect above changes.
25772
25773 2007-02-28  Jan Hubicka  <jh@suse.cz>
25774
25775         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
25776         PRED_NEGATIVE_RETURN): Update outcomes.
25777
25778 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
25779
25780         * calls.c (emit_library_call_value_1): Handle partial registers
25781         correctly when building up CALL_INSN_FUNCTION_USAGE.
25782
25783 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25784
25785         * pa/predicates.md (move_src_operand): Allow zero for mode.
25786         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
25787         move pattern.
25788
25789 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
25790
25791         PR target/30970
25792         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
25793         *movv2df_internal): Enable pattern only for valid operand
25794         combinations.
25795         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
25796         tie only 128bit modes. For MMX registers, tie only 64bit modes.
25797
25798 2007-02-27  Mike Stump  <mrs@apple.com>
25799
25800         * config/darwin-crt3.c: Avoid compilation when compiling for a
25801         kext multilib.
25802
25803 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
25804
25805         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
25806         FIXED_INCLUDE_DIR.
25807         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
25808         for fixed headers and limits.h.
25809         (install-include-dir, install-headers-tar, install-headers-cpio,
25810         install-headers-cp, real-install-headers-tar,
25811         real-install-headers-cpio, real-install-headers-cp): Handle
25812         include-fixed as well as include.
25813         (install-mkheaders): Don't install files that go only in include
25814         not include-fixed.
25815         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
25816         from GCC_INCLUDE_DIR.
25817         * gcc.c (process_command): Remove special -BstageN/ handling.
25818         (do_spec_1): Add include-fixed directories.
25819
25820 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25821
25822         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
25823         _smulsi3_highpart.
25824         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
25825         New functions.
25826         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
25827         patterns.
25828
25829 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
25830
25831         * c-common.c (get_priority): Add check for
25832         SUPPORTS_INIT_PRIORITY.
25833
25834 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25835
25836         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
25837
25838         * config/bfin/bfin.c: Include "cfglayout.h".
25839         (MAX_LSETUP_DISTANCE): New macro.
25840         (struct loop_info): New members incoming, incoming_src and
25841         incoming_dest.  Delete member predecessor.
25842         (length_for_loop): New function.
25843         (bfin_optimize_loop): Handle more different loop structures.
25844         (bfin_discover_loop): Rework detection of predecessor blocks by
25845         examining incoming edges.
25846         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
25847         bfin_reorg_loops.
25848         (bfin_reorder_loops): New function.
25849         (bfin_reorg_loops): Use these three new functions.
25850
25851         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
25852         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
25853         (CONSTRAINT_LEN): Add entry for 'q'.
25854         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
25855         Add 'q' constraints.
25856         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
25857         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
25858
25859         * config/bfin/bfin.md (add_with_carry): New pattern.
25860         (s_or_u, su_optab, su_modifier): New code macros/attrs.
25861         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
25862         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
25863         support unsigned multiplies too.  Removed incorrect commutativity from
25864         operand 1 constraint where appropriate.
25865         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
25866         patterns.
25867         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
25868         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
25869         New patterns.
25870         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
25871         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
25872         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
25873         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
25874         usmulhisi_hh_huh): New patterns.
25875
25876         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
25877         lshifthi3): Fix output template to use half reg for operand 2.
25878
25879         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
25880         instead of R2.
25881
25882         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
25883
25884 2007-02-27  Andreas Schwab  <schwab@suse.de>
25885
25886         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
25887
25888 2007-02-27  Jan Hubicka  <jh@suse.cz>
25889
25890         * predict.c (last_basic_block_p): Remove.
25891         (tree_estimate_probability): Update return heuristic for commonized
25892         return blocks.
25893
25894 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25895
25896         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
25897
25898 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25899
25900         * doc/include/gcc-common.texi (versionsubtitle): New macro.
25901         * doc/cpp.texi: Standardize title page.
25902         * doc/cppinternals.texi: Likewise.
25903         * doc/gcc.texi: Standardize title page, remove version number
25904         from copyright page.
25905         * doc/gccint.texi: Likewise.
25906         * doc/install.texi: Standardize title page, add table of
25907         contents.
25908
25909 2007-02-26  Jan Hubicka  <jh@suse.cz>
25910
25911         * predict.def: Set outcomes according to more recent results.
25912         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
25913         Remove dead predictors.
25914         * predict.c (return_prediction): Fix pasto.
25915
25916 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25917
25918         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
25919         change; avoid a memory leak when returning early.
25920
25921 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
25922
25923         * c-decl.c (static_ctors): Move to c-common.c.
25924         (static_dtors): Likewise.
25925         (finish_function): Use c_record_cdtor_fn.
25926         (build_cdtor): Move to c-common.c.
25927         (c_write_global_declarations): Use c_build_cdtor_fns.
25928         * c-common.h (static_ctors): Declare.
25929         (static_dtors): Likewise.
25930         (c_record_cdtor_fn): Likewise.
25931         (c_build_cdtor_fns): Likewise.
25932         * c-common.c (static_ctors): New variable.
25933         (static_dtors): Likewise.
25934         (c_record_cdtor_fn): New function.
25935         (build_cdtor): Move from c-decl.c
25936         (c_build_cdtor_fns): New function.
25937
25938         * output.h (assemble_addr_to_section): Declare.
25939         (get_cdtor_priority_section): Likewise.
25940         * varasm.c (assemble_addr_to_section): New function.
25941         (get_cdtor_priority_section): Likewise.
25942         (default_named_section_asm_out_destructor): Use them.
25943         (destor_dtor_section_asm_out_destructor): Likewise.
25944         (default_named_section_asm_out_constructor): Likewise.
25945         (default_ctor_section_asm_out_constructor): Likewise.
25946         * config.gcc (*-*-vxworks*): Include vxworks.o.
25947         * config/t-vxworks (vxworks.o): New target.
25948         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
25949         (TARGET_ASM_CONSTRUCTOR): Define.
25950         (TARGET_ASM_DESTRUCTOR): Likewise.
25951         (vxworks_asm_out_constructor): Declare.
25952         (vxworks_asm_out_destructor): Likewise.
25953
25954         * c-common.c (get_priority): Check that we have not just an
25955         INTEGER_CST, but an integer constant with integeral type.
25956
25957 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
25958
25959         PR tree-optimization/30938
25960         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
25961         use &dt[nargs-1] instead of &dt[nargs] in the call to
25962         vect_is_simple_use().
25963
25964 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
25965
25966         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
25967         from register elimination as PRE_MODIFY / POST_MODIFY increments.
25968         Do not attempt to handle MEM inside auto-inc expressions.
25969         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
25970         of a register modified by an auto-inc expression.  However, do handle
25971         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
25972         (elimination_effects): Prohibit elimination of a register modified
25973         by an auto-inc expression.  Disable register elimination rules whose
25974         target register is modified by an auto-inc expression with variable
25975         increment.
25976
25977 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
25978
25979         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
25980         off-by-one error.
25981         (array_at_struct_end_p): New function.
25982         (idx_infer_loop_bounds): Use it.
25983         (estimate_numbers_of_iterations_loop): Export.
25984         * predict.c (predict_loops): Use estimated_loop_iterations_int.
25985         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
25986         (tree_estimate_probability): Call record_loop_exits.
25987         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
25988         (estimated_loop_iterations, estimated_loop_iterations_int,
25989         estimated_loop_iterations_tree): New functions.
25990         (analyze_siv_subscript_cst_affine,
25991         compute_overlap_steps_for_affine_1_2,
25992         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
25993         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
25994         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
25995         (PRED_LOOP_ITERATIONS_GUESSED): New.
25996         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
25997         * cfgloop.h (estimate_numbers_of_iterations_loop,
25998         estimated_loop_iterations_int): Declare.
25999
26000 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
26001
26002         * doc/extend.texi: Document optional priority argument to
26003         constructors and destructors.
26004         * tree.c (init_priority_for_decl): Adjust GTY markers.
26005         (init_ttree): Use priority-info hash functions for
26006         init_priority_for_decl.
26007         (tree_map_eq): Rename to ...
26008         (tree_map_base_eq): ... this.
26009         (tree_map_marked_p): Rename to ...
26010         (tree_map_base_marked_p): ... this.
26011         (tree_map_base_hash): New function.
26012         (decl_init_priority_lookup): Rework.
26013         (decl_fini_priority_lookup): New function.
26014         (decl_priority_info): New function.
26015         (decl_init_priority_insert): Use it.
26016         (decl_fini_priority_insert): Likewise.
26017         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
26018         hierarchy.
26019         (decl_restrict_base_insert): Likewise.
26020         (decl_debug_expr_insert): Likewise.
26021         (decl_value_expr_lookup): Likewise.
26022         (decl_value_expr_insert): Likewise.
26023         * tree.h (priority_type): New type.
26024         (decl_init_priority_lookup): Use priority_type.
26025         (decl_fini_priority_lookup): New function.
26026         (decl_init_priority_insert): Use priority_type.
26027         (decl_fini_priority_insert): New function.
26028         (DECL_HAS_INIT_PRIORITY): Tweak comments.
26029         (DECL_INIT_PRIORITY): Likewise.
26030         (SET_DECL_INIT_PRIORITY): Add comment.
26031         (DECL_FINI_PRIORITY): New macro.
26032         (SET_DECL_FINI_PRIORITY): Likewise.
26033         (DEFAULT_INIT_PRIORITY): Document.
26034         (MAX_INIT_PRIORITY): Likewise.
26035         (MAX_RESERVED_INIT_PRIORITY): Likewise.
26036         (tree_map_base): New type.
26037         (tree_map_base_eq): New function.
26038         (tree_map_base_hash): Likewise.
26039         (tree_map_base_marked_p): Likewise.
26040         (tree_map): Inherit from tree_map_base.
26041         (tree_map_eq): Make it a macro.
26042         (tree_map_marked_p): Likewise.
26043         (tree_int_map): Inherit from tree_map_base.
26044         (tree_int_map_eq): Make it a macro.
26045         (tree_int_map_hash): Likewise.
26046         (tree_int_map_marked_p): Likewise.
26047         (tree_priority_map): New type.
26048         (tree_priority_map_eq): New macro.
26049         (tree_priority_map_hash): Likewise.
26050         (tree_priority_map_marked_p): Likewise.
26051         * varasm.c (emults_decl): Adjust for refactoring of tree_map
26052         hierarchy.
26053         (emutls_common_1): Likewise.
26054         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
26055         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
26056         of tree_map hierarchy.
26057         * tree-cfg.c (move_stmt_r): Likewise.
26058         (new_label_mapper): Likewise.
26059         * c-tree.h (c_expand_body): Move to ...
26060         * c-common.h (c_expand_body): ... here.
26061         * c-decl.c (c_expand_body): Move to ...
26062         * c-common.c (c_expand_body): ... here.
26063         (c_common_attribute_table): Allow 1 argument for the constructor
26064         and destructor attributes.
26065         (get_priority): New function.
26066         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
26067         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
26068
26069 2007-02-24  Jan Hubicka  <jh@suse.cz>
26070
26071         PR middle-end/30509
26072         * tree-inline.c (copy_bb): Produce exact copy of EH info when
26073         copying for inlining.
26074
26075 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26076             Jan Hubicka  <jh@suse.cz>
26077
26078         PR target/30778
26079         * i386.c (counter_mode): New function.
26080         (expand_set_or_movmem_via_loop): Use it.
26081         (expand_movmem_epilogue): Likewise; fix pasto.
26082         (ix86_expand_movmem): Do emit guard even for constant counts.
26083         (ix86_expand_setmem): Likewise.
26084
26085 2007-02-25  Nick Clifton  <nickc@redhat.com>
26086
26087         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
26088         (JUMP_TABLES_IN_TEXT_SECTION): Define.
26089
26090 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26091
26092         PR target/30770
26093         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
26094         count argument with 0x10, not with 0x16.
26095         (expand_setmem_epilogue): Ditto.
26096
26097 2007-02-24  Mike Stump  <mrs@apple.com>
26098
26099         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
26100         symbols.
26101
26102 2007-02-24  Richard Guenther  <rguenther@suse.de>
26103
26104         PR middle-end/30951
26105         * fold-const.c (fold_binary): Fold x +- CST op x for
26106         EQ_EXPR and NE_EXPR.
26107
26108 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26109
26110         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
26111
26112 2007-02-24  Jan Hubicka  <jh@suse.cz>
26113
26114         * cgraphunit.c (decide_is_function_needed): Honor
26115         -fkeep-inline-functions.
26116
26117 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26118
26119         * builtins.c (fold_builtin_modf): New.
26120         (fold_builtin_2): Use it.
26121
26122 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
26123
26124         * loop-iv.c (implies_p): Detect additional cases where A implies B.
26125         (determine_max_iter): Take additional LOOP arg; all callers changed.
26126         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
26127         one using simplifications.
26128         (simplify_using_initial_values): Return if the expression becomes
26129         invalid due to altered regs.
26130
26131 2007-02-23  DJ Delorie  <dj@redhat.com>
26132
26133         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
26134
26135 2007-02-23  Mike Stump  <mrs@apple.com>
26136
26137         * tlink.c (scan_linker_output): Parse linker messages from
26138         darwin9's linker better.
26139
26140 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
26141
26142         PR debug/29614
26143         * varpool.c (varpool_assemble_pending_decls): Set
26144         varpool_last_needed_node to null.
26145
26146 2007-02-23  DJ Delorie  <dj@redhat.com>
26147
26148         * config/i386/i386.c (ix86_data_alignment): Don't specify an
26149         alignment bigger than the object file can handle.
26150
26151 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
26152
26153         PR target/30825
26154         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
26155         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
26156         (*movsf_1): Penalize MMX moves.
26157
26158 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26159
26160         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
26161         2^32-1 or more times unless flag_unsafe_loop_optimizations.
26162
26163         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
26164
26165 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26166
26167         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
26168         (fold_builtin_1): Use them.
26169         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
26170         BUILT_IN_SIGNIFICAND.
26171
26172 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
26173
26174         * config/i386/i386.c (bdesc_1arg): Initialize
26175         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
26176         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
26177         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
26178         and IX86_BUILTIN_MOVSLDUP.
26179
26180 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
26181
26182         PR rtl-optimization/30841
26183         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
26184
26185 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26186
26187         * builtins.c (fold_builtin_frexp): New.
26188         (fold_builtin_2): Use it.
26189
26190 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
26191
26192         * doc/invoke.texi (Spec Files): Document getenv spec function.
26193
26194         * gcc.c (getenv_spec_function): New function.
26195         (static_spec_functions): Add it.
26196         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
26197         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
26198         header files.
26199
26200 2007-02-22  Michael Matz  <matz@suse.de
26201
26202         PR c++/29433
26203         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
26204         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
26205
26206 2007-02-22  Ian Lance Taylor  <iant@google.com>
26207
26208         PR debug/30898
26209         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
26210         (mem_loc_descriptor): Call it.
26211
26212 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
26213             Ira Rosen  <irar@il.ibm.com>
26214
26215         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
26216
26217 2007-02-22  Ira Rosen  <irar@il.ibm.com>
26218
26219         PR tree-optimization/30843
26220         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
26221         stores only after all the group is vectorized.
26222
26223 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
26224
26225         PR tree-optimization/30858
26226         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
26227         in the reduction cycle have a single use in the loop.
26228         * tree-vectorizer.h (relevant): Add documentation.
26229
26230 2007-02-20  Mike Stump  <mrs@apple.com>
26231
26232         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
26233         * configure: Regenerate.
26234
26235 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
26236
26237         Change the defaults of some parameters and options.
26238         * config/spu/spu-protos.h (spu_optimization_options): Declare.
26239         * config/spu/spu.c (spu_optimization_options): Add.
26240         (spu_override_options): Change params in spu_optimization_options.
26241         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
26242
26243         Register 127 is only 16 byte aligned when used as a frame pointer.
26244         * config/spu/spu-protos.h (spu_init_expanders): Declare.
26245         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
26246         HARD_FRAME_POINTER_REGNUM.
26247         (spu_legitimate_address): Use regno_aligned_for_reload.
26248         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
26249         aligned when frame_pointer_needed is true.
26250         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
26251         to 8 bits.
26252         * config/spu/spu.h (INIT_EXPANDERS): Define.
26253
26254         Make sure shift and rotate instructions have valid immediate operands.
26255         * config/spu/predicates.md (spu_shift_operand): Remove.
26256         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
26257         * config/spu/constraints.md (W, O): Extend range.
26258         * config/spu/spu.md (umask, nmask): Define.
26259         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
26260         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
26261         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
26262         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
26263         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
26264         (lshr<mode>3_reg): Fix rtl description.
26265
26266         Make sure mulhisi immediate operands are valid.
26267         * config/spu/predicates.md (imm_K_operand): Add.
26268         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
26269
26270         Generate constants using fsmbi and andi.
26271         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
26272         (print_operand, spu_split_immediate, classify_immediate,
26273         fsmbi_const_p): Handle IC_FSMBI2.
26274
26275         Correctly handle a CONST_VECTOR containing symbols.
26276         * config/spu/spu.c (print_operand): Handle HIGH correctly.
26277         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
26278         (immediate_load_p): Allow symbols that use 2 instructions to create.
26279         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
26280         with symbols when flag_pic is set.
26281         (const_vector_immediate_p): New.
26282         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
26283         accept a CONST_VECTOR with symbols.
26284         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
26285         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
26286         correctly.
26287         * config/spu/spu.md (high, low): Delete.
26288         (low_<mode>): Define.
26289
26290         Remove INTRmode and INTR_REGNUM, which didn't work.
26291         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
26292         of INTR_REGNUM.
26293         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
26294         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
26295         peephole2 pattern): Don't use INTR or 131.
26296         (movintrcc): Delete.
26297         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
26298         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
26299         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
26300         (UNSPEC_SET_INTR): Add.
26301         * config/spu/spu-modes.def (INTR): Remove.
26302
26303         More accurate warnings about run-time relocations.
26304         * config/spu/spu.c (reloc_diagnostic): Test in_section.
26305
26306         Correctly warn about immediate arguments to specific intrinsics.
26307         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
26308         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
26309         the instruction predicate.
26310
26311         Fix tree check errors with latest update.
26312         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
26313         CALL_EXPR_ARG.
26314         (spu_expand_builtin): Use CALL_EXPR_FN.
26315
26316         Add missing specific intrinsics.
26317         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
26318         si_bislede.
26319         * config/spu/spu_internals.h: Ditto.
26320
26321         Fix incorrect operand modifiers.
26322         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
26323         * config/spu/spu.md (xor<mode>3): Change %S to %J.
26324
26325         Optimize one case of zero_extend of a vec_select.
26326         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
26327
26328         Accept any immediate for hbr.
26329         * config/spu/spu.md (hbr): Change s constraints to i.
26330
26331 2007-02-21  Paul Brook  <paul@codesourcery.com>
26332
26333         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
26334         condexec_count when skipping USE and CLOBBER.
26335
26336 2007-02-21  Nick Clifton  <nickc@redhat.com>
26337
26338         * common.opt (Warray-bounds): Add Warning attribute.
26339         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
26340         Likewise.
26341         (fsized-zeroes): Add Optimization attribute.
26342         (fsplit-wide-types, ftree-scev-cprop): Likewise.
26343         * c.opt (Wc++0x-compat): Add Warning attribute.
26344
26345 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
26346
26347         PR middle-end/30761
26348         * reload1.c (eliminate_regs_in_insn): In the single_set special
26349         case, attempt to re-recognize the insn before falling back to
26350         having reload fix it up.
26351
26352 2007-02-20  Eric Christopher  <echristo@gmail.com>
26353
26354         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
26355         Rewrite accordingly.
26356         (frv_read_iacc_argument): Ditto.
26357         (frv_expand_set_builtin): Take a call instead of arglist, update for
26358         above changes.
26359         (frv_expand_unop_builtin): Ditto.
26360         (frv_expand_binop_builtin): Ditto.
26361         (frv_expand_cut_builtin): Ditto.
26362         (frv_expand_binopimm_builtin): Ditto.
26363         (frv_expand_voidbinop_builtin): Ditto.
26364         (frv_expand_int_void2arg): Ditto.
26365         (frv_expand_prefetches): Ditto.
26366         (frv_expand_voidtriop_builtin): Ditto.
26367         (frv_expand_voidaccop_builtin): Ditto.
26368         (frv_expand_load_builtin): Ditto.
26369         (frv_expand_store_builtin): Ditto.
26370         (frv_expand_mdpackh_builtin): Ditto.
26371         (frv_expand_mclracc_builtin): Ditto.
26372         (frv_expand_mrdacc_builtin): Ditto.
26373         (frv_expand_mwtacc_builtin): Ditto.
26374         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
26375         calls for above.
26376
26377 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
26378
26379         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
26380         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
26381         cmpb instruction.
26382         (HAVE_GAS_DFP): Check for assembler support of decimal floating
26383         point instructions.
26384         * configure: Regenerate.
26385         * config.in: Regenerate.
26386         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
26387         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
26388         masks to power6 and power6x and to POWERPC_MASKS.
26389         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26390         _ARCH_PWR6.
26391         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
26392         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
26393         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
26394         Access PROTOTYPE as variable, not mask.
26395
26396 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26397
26398         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
26399         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
26400         * combine.c (adjust_for_new_dest): Use it.
26401         * postreload.c (reload_combine): Likewise.
26402
26403 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26404
26405         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
26406         notes on an insn with multiple sets, even if single_set returns
26407         non-NULL for that insn.
26408
26409 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26410
26411         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
26412         scalbn and scalbln.
26413
26414 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
26415
26416         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
26417         if user didn't pass it.
26418         * config/i386/darwin.h (CC1_SPEC): Likewise.
26419         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
26420         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
26421         -mmacosx-version-min.
26422
26423 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26424             Uros Bizjak  <ubizjak@gmail.com>
26425
26426         * optabs.h (enum optab_index): Add new OTI_scalb.
26427         (scalb_optab): Define corresponding macro.
26428         * optabs.c (init_optabs): Initialize scalb_optab.
26429         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
26430         patterns.
26431         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
26432         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
26433         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
26434         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
26435         flag_unsafe_math_optimizations is set.
26436
26437         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
26438         to implement scalbf, scalb and scalbl built-ins as inline x87
26439         intrinsics.
26440
26441 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26442             DJ Delorie <dj@redhat.com>
26443
26444         PR other/30824
26445         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
26446         (diagnostic_report_diagnostic): ... here, and turn them into real
26447         errors. If warnings are inhibited, no need to do anything.
26448
26449 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
26450
26451         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
26452         better code generation.
26453
26454 2007-02-20  Ben Elliston  <bje@au.ibm.com>
26455
26456         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
26457
26458 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
26459
26460         * config/alpha/alpha.c, config/alpha/alpha.md,
26461         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
26462         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
26463         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
26464         config/arm/lib1funcs.asm: Follow spelling conventions.
26465
26466         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
26467         config/fr30/fr30.md, config/i386/i386.h,
26468         config/iq2000/iq2000.h, config/iq2000/predicates.md,
26469         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
26470         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
26471         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
26472         config/rs6000/altivec.md, config/rs6000/rs6000.c,
26473         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
26474         config/sparc/sparc.c, config/sparc/sparc.h,
26475         config/sparc/sparc.md, config/spu/constraints.md,
26476         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
26477         conventions.
26478
26479 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
26480
26481         PR target/29943
26482         * varasm.c (use_blocks_for_decl_p): Return false for decls with
26483         alias attribute.
26484
26485 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26486
26487         * doc/invoke.texi (-ftree-lrs): Remove.
26488
26489 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
26490
26491         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
26492         NULL.
26493
26494 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
26495
26496         * config/ia64/ia64.c (ia64_expand_builtin): Use the
26497         new CALL_EXPR_FN macro for retrieving the function
26498         declaration of the input expression.
26499
26500 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26501
26502         * c.opt (Waddress): New.
26503         * common.opt (Walways-true): Delete.
26504         (Wstring-literal-comparison): Delete.
26505         * doc/invoke.texi (Warning Options): Delete -Walways-true and
26506         -Wstring-literal-comparison. Add -Waddress.
26507         (Waddress): New.
26508         (Walways-true): Delete.
26509         (Wstring-literal-comparison): Delete.
26510         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
26511         consistently instead of -Walways-true in example.
26512         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
26513         * c-typeck.c (parser_build_binary_op): Replace
26514         -Wstring-literal-comparison and -Walways-true with -Waddress.
26515         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
26516         with -Waddress.
26517
26518 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26519
26520         * tree-cfg.c (dump_function_to_file): Be prepared for functions
26521         without DECL_STRUCT_FUNCTION initialized.
26522
26523 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26524
26525         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
26526         due to calls to functions taking pointers as parameters.
26527
26528 2007-02-19  Richard Henderson  <rth@redhat.com>
26529
26530         PR debug/29558
26531         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
26532         in memory.
26533
26534 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
26535
26536         * config/s390/s390.c (s390_call_saved_register_used,
26537         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
26538         accessed to the new scheme.
26539
26540 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26541
26542         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
26543         (cris_print_index, cris_print_operand, cris_print_operand_address)
26544         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
26545         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
26546         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
26547         GET_CODE () == xxx.
26548         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
26549         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
26550         GO_IF_LEGITIMATE_ADDRESS): Ditto.
26551         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
26552         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
26553         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
26554         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
26555         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
26556         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
26557         (uminsi3, call, call_value): Ditto.
26558         (define_split: indir_to_reg_split, unnamed): Ditto.
26559
26560 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
26561
26562         PR tree-optimization/30975
26563         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
26564         wrong assert.
26565
26566 2007-02-18  Eric Christopher  <echristo@gmail.com>
26567
26568         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
26569         Remove use of arglist.
26570         (mips_expand_builtin): Remove use of arglist, pass in expr.
26571         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
26572         (mips_expand_builtin_movtf): Ditto.
26573         (mips_expand_builtin_compare): Ditto.
26574
26575 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26576
26577         * tree-sra.c (sra_build_assignment): Replace assertion
26578         checking with a comment explaining why it can't be done.
26579
26580 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26581
26582         PR middle-end/30833
26583         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
26584         during CALL_EXPR representation conversion.
26585         * tree-ssa-propagate.c (set_rhs): Likewise.
26586
26587 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26588
26589         * tree-sra.c (sra_build_assignment): Disable assertion checking
26590         for now.
26591
26592 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26593
26594         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
26595         instead of calling build2 with a GIMPLE_MODIFY_STMT.
26596         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
26597         Likewise.
26598         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
26599         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
26600         gimplify_init_ctor_eval_range, gimple_push_cleanup,
26601         gimplify_omp_for, gimplify_omp_atomic_pipeline,
26602         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
26603         force_gimple_operand): Likewise.
26604         * ipa-cp.c (constant_val_insert): Likewise.
26605         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
26606         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
26607         perfect_nestify): Likewise.
26608         * langhooks.c (lhd_omp_assignment): Likewise.
26609         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
26610         lower_copyprivate_clauses, lower_send_clauses,
26611         lower_send_shared_vars, expand_parallel_call,
26612         expand_omp_for_generic, expand_omp_for_static_nochunk,
26613         expand_omp_for_static_chunk, expand_omp_sections,
26614         lower_omp_single_copy, lower_omp_for_lastprivate,
26615         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
26616         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
26617         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
26618         Likewise.
26619
26620 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26621
26622         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
26623         config/sh/sh.md: Follow spelling conventions.
26624
26625         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
26626         config/frv/predicates.md: Follow spelling conventions.
26627
26628         * config/m68k/linux-unwind.h: Fix a comment typo.
26629         * target.h: Follow spelling conventions.
26630
26631 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26632
26633         PR rtl-optimization/28173
26634         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
26635         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
26636         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
26637         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
26638         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
26639
26640 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26641
26642         * builtins.c (fold_builtin_load_exponent): New.
26643         (fold_builtin_2): Use it.
26644
26645 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
26646
26647         PR rtl-optimization/30773
26648         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
26649         if we fail to attach a REG_EQUIV note.
26650
26651 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
26652             Roger Sayle  <roger@eyesopen.com>
26653
26654         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
26655
26656 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26657
26658         * calls.c (initialize_argument_information): Pass original EXP
26659         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
26660         code to split complex arguments here, as part of initializing the
26661         ARGS array.
26662         (expand_call): Remove code that builds a list of arguments and
26663         inserts implicit arguments into it.  Instead, just count how many
26664         implicit arguments there will be so we can determine the size of
26665         the ARGS array, and let initialize_argument_information do the work.
26666         (split_complex_values): Delete unused function.
26667
26668 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26669
26670         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
26671
26672 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26673
26674         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
26675         for arg pointer based indexed addressing.
26676
26677 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26678
26679         * config/ia64/ia64.h, config/ia64/ia64.md,
26680         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
26681         spelling conventions.
26682
26683 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26684
26685         * config/m68k/m68k.c (split_di): New.
26686         * config/m68k/m68k-protos.h: Declare split_di.
26687         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
26688           Improve predicate handling and split constant shifts.
26689
26690 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26691
26692         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
26693         parameter for register bitfield operations, general predicates
26694         cleanup
26695
26696 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26697
26698         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
26699         * config/m68k/linux-unwind.h: New file.
26700
26701 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26702
26703         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
26704         config/i386/athlon.md, config/ia64/ia64.md,
26705         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
26706         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
26707         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
26708         tree-ssa-loop-niter.c, tree-vect-analyze.c,
26709         tree-vect-transform.c: Fix comment typos.
26710
26711 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
26712
26713         * sched-deps.c (find_insn_list): Remove.
26714         * sched-int.h: Remove the prototype for find_insn_list.
26715
26716 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
26717
26718         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
26719         to linker.
26720         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
26721         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
26722         darwin_rs6000_override_options.
26723         (C_COMMON_OVERRIDE_OPTIONS): Expect
26724         darwin_macosx_version_min to be non-NULL always.
26725         (TARGET_C99_FUNCTIONS): Likewise.
26726         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
26727         (DARWIN_MINVERSION_SPEC): New.
26728         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
26729         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
26730         to cc1*.
26731         (DARWIN_MINVERSION_SPEC): New.
26732         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
26733         value.
26734         * config/darwin-c.c (darwin_cpp_builtins): Expect
26735         darwin_macosx_version_min to be non-NULL always.
26736
26737         * config/rs6000/rs6000.c: Clean up trailing whitespace.
26738
26739 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
26740
26741         * config/i386/i386.h (x86_use_xchgb): New.
26742         (TARGET_USE_XCHGB): New macro.
26743         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
26744         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
26745         Split after reload into bswaphi for shifts of 8.
26746         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
26747         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
26748         or when optimizing for size.
26749
26750 2007-02-16  Richard Guenther  <rguenther@suse.de>
26751             Christian Bruel  <christian.bruel@st.com>
26752
26753         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
26754         DECLs but prefer SSA_NAMEs over DECLs.
26755
26756 2007-02-16  Richard Guenther  <rguenther@suse.de>
26757
26758         * tree-flow-inline.h (single_imm_use_p): Remove.
26759         (zero_imm_uses_p): Likewise.
26760         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
26761         instead of single_imm_use_p.
26762         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
26763         zero_imm_uses_p.
26764
26765 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26766
26767         PR other/27843
26768         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
26769         nested double- and backquotes.
26770
26771 2007-02-15  Roger Sayle  <roger@eyesopen.com>
26772
26773         PR middle-end/30391
26774         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
26775         should be unreachable.
26776         (build2_stat): Allow construction of MODIFY_EXPR at any time.
26777         For the time being redirect GIMPLE_MODIFY_STMT to the new
26778         (renamed) build_gimple_modify_stmt_stat.
26779         (build2_gimple_stat): Rename to...
26780         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
26781         Always build a GIMPLE_MODIFY_STMT node.
26782         * tree.h (build2_gimple, build2_gimple_stat): Delete.
26783         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
26784         declarations.
26785
26786         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
26787         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
26788         * tree-complex.c (set_component_ssa_name, expand_complex_move,
26789         expand_complex_div_wide): Likewise.
26790         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
26791         * tree-ssa-loop-im.c (schedule_sm): Likewise.
26792         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
26793         * tree-ssa-loop-manip.c (create_iv): Likewise.
26794         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
26795         abs_replacement): Likewise.
26796         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
26797         realify_fake_stores): Likewise.
26798
26799         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
26800         node rather than a GIMPLE_MODIFY_STMT node.
26801         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
26802         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
26803         Likewise.
26804         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
26805         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
26806         GIMPLE_MODIFY_STMT.
26807
26808 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26809
26810         PR middle-end/30433
26811         * fold-const.c (fold_comparison): Add back the
26812         folding of constant complex comparisions.
26813
26814 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26815
26816         PR middle-end/30729
26817         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
26818         effects unknown to this function, return early.
26819
26820 2007-02-15  Ian Lance Taylor  <iant@google.com>
26821
26822         * lower-subreg.c (move_eh_region_note): New static function.
26823         (resolve_simple_move): Call it.
26824         (decompose_multiword_subregs): Track blocks for which we resolve a
26825         simple move which is also a control flow insn.  Pass them to
26826         find_many_sub_basic_blocks.
26827         (pass_lower_subreg): Add TODO_verify_flow.
26828         (pass_lower_subreg2): Likewise.
26829
26830 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26831             Brooks Moses  <brooks.moses@codesourcery.com>
26832             Lee Millward  <lee.millward@codesourcery.com>
26833
26834         * tree.h (enum tree_code_class): Add tcc_vl_exp.
26835         (VL_EXP_CLASS_P): New.
26836         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
26837         TREE_CODE_LENGTH.
26838         (TREE_OPERAND_CHECK_CODE): Likewise.
26839         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
26840         (TREE_RTL_OPERAND_CHECK): Likewise.
26841         (tree_operand_check_failed): Make second parameter the whole tree
26842         instead of its code.  Fixed callers.
26843         (VL_EXP_CHECK): New.
26844         (TREE_OPERAND_LENGTH): New.
26845         (VL_EXP_OPERAND_LENGTH): New.
26846         (CALL_EXPR_FN): New.
26847         (CALL_EXPR_STATIC_CHAIN): New.
26848         (CALL_EXPR_ARGS): New.
26849         (CALL_EXPR_ARG): New.
26850         (call_expr_nargs): New.
26851         (CALL_EXPR_ARGP): New.
26852         (build_nt_call_list): Declare.
26853         (build_vl_exp_stat): Declare.
26854         (build_vl_exp): New.
26855         (build_call_list): Declare.
26856         (build_call_nary): Declare.
26857         (build_call_valist): Declare.
26858         (build_call_array): Declare.
26859         (call_expr_arg): Declare.
26860         (call_expr_argp): Declare.
26861         (call_expr_arglist): Declare.
26862         (fold_build_call_list): Declare.
26863         (fold_build_call_list_initializer): Declare.
26864         (fold_call_expr): Declare to replace fold_builtin.
26865         (fold_builtin_fputs): Update to agree with modified definition.
26866         (fold_builtin_strcpy): Likewise.
26867         (fold_builtin_strncpy): Likewise.
26868         (fold_builtin_memory_chk): Likewise.
26869         (fold_builtin_stxcpy_chk): Likewise.
26870         (fold_builtin_strncpy_chk): Likewise.
26871         (fold_builtin_next_arg): Likewise.
26872         (fold_build_call_expr): Declare.
26873         (fold_builtin_call_list): Declare.
26874         (fold_builtin_call_valist): Declare.
26875         (build_call_expr): Declare.
26876         (validate_arglist): Update to agree with modified definition.
26877         (tree_operand_length): New.
26878         (call_expr_arg_iterator): New.
26879         (init_call_expr_arg_iterator): New.
26880         (next_call_expr_arg): New.
26881         (first_call_expr_arg): New.
26882         (more_call_expr_args_p): New.
26883         (FOR_EACH_CALL_EXPR_ARG): New.
26884
26885         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
26886         and tcc_gimple_stmt.
26887         (tree_code_size): Update documentation.  Use sizeof (tree) rather
26888         than sizeof (char *).
26889         (tree_size): Likewise.  Add case for tcc_vl_exp.
26890         (tree_node_structure): Add case for tcc_vl_exp.
26891         (contains_placeholder_p): Likewise.
26892         (substitute_in_expr): Likewise.
26893         (substitute_placeholder_in_expr): Likewise.
26894         (stabilize_reference_1): Likewise.
26895         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
26896         to diagnose breakage of this interface for constructing CALL_EXPRs.
26897         (build_nt): Add similar assertion here.
26898         (build_nt_call_list): New.
26899         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
26900         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
26901         TREE_CODE_LENGTH.
26902         (get_callee_fndecl): Use new CALL_EXPR accessors.
26903         (tree_operand_check_failed): Change parameters to pass entire node
26904         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
26905         (process_call_operands): New.
26906         (build_vl_exp_stat): New.
26907         (build_call_list): New.
26908         (build_call_nary): New.
26909         (build_call_valist): New.
26910         (build_call_array): New.
26911         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26912         (call_expr_arglist): New.
26913
26914         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
26915         tcc_vl_exp instead of a fixed-size tcc_expression.
26916
26917         * doc/c-tree.texi (CALL_EXPR): Document new representation and
26918         accessors for CALL_EXPRs.
26919         (AGGR_INIT_EXPR): Likewise.
26920
26921 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26922             Brooks Moses  <brooks.moses@codesourcery.com>
26923             Lee Millward  <lee.millward@codesourcery.com>
26924
26925         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
26926         (expand_builtin_nonlocal_goto): Change parameter to be entire
26927         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
26928         (expand_builtin_prefetch): Likewise.
26929         (expand_builtin_classify_type): Likewise.
26930         (mathfn_built_in): Return NULL_TREE instead of 0.
26931         (expand_errno_check): Use new CALL_EXPR accessors.
26932         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
26933         Return NULL_RTX instead of 0.
26934         (expand_builtin_mathfn_2): Likewise.
26935         (expand_builtin_mathfn_3): Likewise.
26936         (expand_builtin_interclass_mathfn): Likewise.
26937         (expand_builtin_sincos): Likewise.
26938         (expand_builtin_cexpi): Likewise.
26939         (expand_builtin_int_roundingfn): Likewise.
26940         (expand_builtin_int_roundingfn_2): Likewise.
26941         (expand_builtin_pow): Likewise.
26942         (expand_builtin_powi): Likewise.
26943         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
26944         of arglist, fixing callers appropriately.  Use new CALL_EXPR
26945         accessors and constructors.  Return NULL_RTX instead of 0.
26946         (expand_builtin_strstr): Likewise.
26947         (expand_builtin_strchr): Likewise.
26948         (expand_builtin_strrchr): Likewise.
26949         (expand_builtin_strpbrk): Likewise.
26950         (expand_builtin_memcpy): Likewise.
26951         (expand_builtin_mempcpy): Likewise.
26952         (expand_builtin_mempcpy_args): New.
26953         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
26954         (expand_builtin_memmove_args): New.
26955         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
26956         (expand_movstr): Likewise.
26957         (expand_builtin_strcpy): Likewise.
26958         (expand_builtin_strcpy_args): New.
26959         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
26960         (expand_builtin_strncpy): Likewise.
26961         (expand_builtin_memset): Likewise.
26962         (expand_builtin_memset_args): New.
26963         (expand_builtin_bzero): Similarly to expand_builtin_memset.
26964         (expand_builtin_memcmp): Likewise.
26965         (expand_builtin_strcmp): Likewise.
26966         (expand_builtin_strncmp): Likewise.
26967         (expand_builtin_strcat): Likewise.
26968         (expand_builtin_strncat): Likewise.
26969         (expand_builtin_strspn): Likewise.
26970         (expand_builtin_strcspn): Likewise.
26971         (expand_builtin_args_info): Likewise.
26972         (expand_builtin_va_start): Likewise.
26973         (gimplify_va_arg_expr): Likewise.
26974         (expand_builtin_va_end): Likewise.
26975         (expand_builtin_va_copy): Likewise.
26976         (expand_builtin_frame_address): Likewise.
26977         (expand_builtin_alloca): Likewise.
26978         (expand_builtin_bswap): Likewise.
26979         (expand_builtin_unop): Likewise.
26980         (expand_builtin_fputs): Likewise.
26981         (expand_builtin_expect): Likewise.
26982         (expand_builtin_fabs): Likewise.
26983         (expand_builtin_copysign): Likewise.
26984         (expand_builtin_printf): Likewise.
26985         (expand_builtin_fprintf): Likewise.
26986         (expand_builtin_sprintf): Likewise.
26987         (expand_builtin_init_trampoline): Likewise.
26988         (expand_builtin_signbit): Likewise.
26989         (expand_builtin_fork_or_exec): Likewise.
26990         (expand_builtin_sync_operation): Likewise.
26991         (expand_builtin_compare_and_swap): Likewise.
26992         (expand_builtin_lock_test_and_set): Likewise.
26993         (expand_builtin_lock_release): Likewise.
26994         (expand_builtin): Likewise.
26995         (builtin_mathfn_code): Likewise.
26996
26997         (fold_builtin_constant_p): Pass call arguments individually instead
26998         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26999         accessors and constructors.  Return NULL_TREE instead of 0.
27000         (fold_builtin_expect): Likewise.
27001         (fold_builtin_classify_type): Likewise.
27002         (fold_builtin_strlen): Likewise.
27003         (fold_builtin_nan): Likewise.
27004         (integer_valued_real_p): Likewise.
27005         (fold_trunc_transparent_mathfn): Likewise.
27006         (fold_fixed_mathfn): Likewise.
27007         (fold_builtin_cabs): Likewise.
27008         (fold_builtin_sqrt): Likewise.
27009         (fold_builtin_cbrt): Likewise.
27010         (fold_builtin_cos): Likewise.
27011         (fold_builtin_cosh): Likewise.
27012         (fold_builtin_tan): Likewise.
27013         (fold_builtin_sincos): Likewise.
27014         (fold_builtin_cexp): Likewise.
27015         (fold_builtin_trunc): Likewise.
27016         (fold_builtin_floor): Likewise.
27017         (fold_builtin_ceil): Likewise.
27018         (fold_builtin_round): Likewise.
27019         (fold_builtin_int_roundingfn): Likewise.
27020         (fold_builtin_bitop): Likewise.
27021         (fold_builtin_bswap): Likewise.
27022         (fold_builtin_logarithm): Likewise.
27023         (fold_builtin_hypot): Likewise.
27024         (fold_builtin_pow): Likewise.
27025         (fold_builtin_powi): Likewise.
27026         (fold_builtin_exponent): Likewise.
27027         (fold_builtin_memset): Likewise.
27028         (fold_builtin_bzero): Likewise.
27029         (fold_builtin_memory_op): Likewise.
27030         (fold_builtin_bcopy): Deleted; call site changed to invoke
27031         fold_builtin_memory_op directly.
27032         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
27033         (fold_builtin_strncpy): Likewise.
27034         (fold_builtin_memcmp): Likewise.
27035         (fold_builtin_strcmp): Likewise.
27036         (fold_builtin_strncmp): Likewise.
27037         (fold_builtin_signbit): Likewise.
27038         (fold_builtin_copysign): Likewise.
27039         (fold_builtin_isascii): Likewise.
27040         (fold_builtin_toascii): Likewise.
27041         (fold_builtin_isdigit): Likewise.
27042         (fold_builtin_fabs): Likewise.
27043         (fold_builtin_abs): Likewise.
27044         (fold_builtin_fmin_fmax): Likewise.
27045         (fold_builtin_carg): Likewise.
27046         (fold_builtin_classify): Likewise.
27047         (fold_builtin_unordered_cmp): Likewise.
27048
27049         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
27050         New functions split out from fold_builtin_1.
27051         (fold_builtin_n): New.
27052         (fold_builtin_varargs): New.
27053         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
27054         instead.
27055         (fold_call_expr): New.
27056         (build_function_call_expr): Rewrite to use new helper function.
27057         (fold_builtin_call_list): New.
27058         (build_call_expr): New.
27059         (fold_builtin_call_valist): New.
27060         (rewrite_call_expr): New.
27061         (validate_arg): New.
27062         (validate_arglist): Change parameter to be entire CALL_EXPR instead
27063         of an arglist.  Change return type to bool.  Use new CALL_EXPR
27064         accessors.
27065
27066         (fold_builtin_strstr): Pass call arguments individually instead
27067         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27068         accessors and constructors.  Return NULL_TREE instead of 0.
27069         (fold_builtin_strchr): Likewise.
27070         (fold_builtin_strrchr): Likewise.
27071         (fold_builtin_strpbrk): Likewise.
27072         (fold_builtin_strcat): Likewise.
27073         (fold_builtin_strncat): Likewise.
27074         (fold_builtin_strspn): Likewise.
27075         (fold_builtin_strcspn): Likewise.
27076         (fold_builtin_fputs): Likewise.
27077         (fold_builtin_next_arg): Likewise.
27078         (fold_builtin_sprintf): Likewise.
27079
27080         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
27081         NULL_RTX instead of 0.
27082         (expand_builtin_memory_chk): Likewise.
27083         (maybe_emit_chk_warning): Likewise.
27084         (maybe_emit_sprintf_chk_warning): Likewise.
27085
27086         (fold_builtin_object_size): Pass call arguments individually instead
27087         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27088         accessors and constructors.  Return NULL_TREE instead of 0.
27089         (fold_builtin_memory_chk): Likewise.
27090         (fold_builtin_stxcpy_chk): Likewise.
27091         (fold_builtin_strncpy_chk): Likewise.
27092         (fold_builtin_strcat_chk): Likewise.
27093         (fold_builtin_strcat_chk): Likewise.
27094         (fold_builtin_strncat_chk): Likewise.
27095         (fold_builtin_sprintf_chk): Likewise.
27096         (fold_builtin_snprintf_chk): Likewise.
27097         (fold_builtin_printf): Likewise.
27098         (fold_builtin_vprintf): Likewise.
27099
27100         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
27101         constructors.
27102         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
27103         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27104         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
27105         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
27106         (fold_unary): Likewise.
27107         (fold_binary): Likewise.
27108         (fold_ternary): Remove CALL_EXPR case, since they are no longer
27109         ternary expressions.
27110         (fold): Add logic for tcc_vl_exp.
27111         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
27112         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27113         (fold_build3_stat): Add assertion to flag broken interface for
27114         constructing CALL_EXPRs.
27115         (fold_build_call_list): New.
27116         (fold_build_call_list_initializer): New.
27117         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
27118         constructors.
27119         (fold_strip_sign_ops): Likewise.
27120
27121 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27122             Brooks Moses  <brooks.moses@codesourcery.com>
27123             Lee Millward  <lee.millward@codesourcery.com>
27124
27125         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
27126         accessors and dump arguments explicitly.
27127
27128         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
27129         TREE_CODE_LENGTH.
27130         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
27131         explicitly.
27132         (print_call_name): Use new CALL_EXPR accessors.
27133
27134         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
27135         CALL_EXPR arguments explicitly instead of as a list.  Use
27136         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27137
27138         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
27139         (vrp_visit_stmt): Likewise.
27140
27141         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
27142         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
27143         TREE_CODE_LENGTH.
27144         (force_move_till_expr): Likewise.
27145
27146         * targhooks.c (default_external_stack_protect_fail): Use
27147         build_call_expr instead of build_function_call_expr.
27148         (default_hidden_stack_protect_fail): Likewise.
27149
27150         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
27151         build the call.
27152
27153         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
27154         and walk arguments explicitly.
27155
27156         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
27157         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27158         (expand_simple_operations): Likewise.
27159         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
27160
27161         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
27162         of TREE_CODE_LENGTH.
27163         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
27164
27165         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
27166         instead of TREE_CODE_LENGTH.
27167
27168         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
27169         (tree_ic_transform): Likewise.
27170         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
27171         parameter instead of arglist.  Fix callers.
27172         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
27173         (tree_stringops_transform): Likewise.
27174         (tree_indirect_call_to_profile): Likewise.
27175         (tree_stringops_values_to_profile): Likewise.
27176
27177         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
27178         (eliminate_tail_call): Likewise.
27179
27180         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
27181
27182         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
27183         Use TREE_OPERAND_LENGTH and generalize to handle any number of
27184         operands.
27185         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
27186
27187         * omp-low.c (build_omp_barrier): Use build_call_expr.
27188         (lower_rec_input_clauses): Likewise.
27189         (lower_reduction_clauses): Likewise.
27190         (expand_parallel_call): Likewise.
27191         (maybe_catch_exception): Likewise.
27192         (expand_omp_for_generic): Likewise.
27193         (expand_omp_for_static_nochunk): Likewise.
27194         (expand_omp_sections): Likewise.
27195         (lower_omp_single_simple): Likewise.
27196         (lower_omp_single_copy): Likewise.
27197         (lower_omp_master): Likewise.
27198         (lower_omp_ordered): Likewise.
27199         (lower_omp_critical): Likewise.
27200
27201         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
27202         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
27203
27204         * tree-gimple.c (is_gimple_call_addr): Fix doc.
27205         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
27206         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
27207
27208         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
27209         and generalize to handle any number of operands.
27210         (chrec_contains_undetermined): Likewise.
27211         (tree_contains_chrecs): Likewise.
27212         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
27213
27214         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
27215
27216         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
27217         fold_call_expr instead of fold_builtin.
27218         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
27219         match declarations there.
27220         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
27221         updates.
27222
27223         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
27224         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27225
27226         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
27227         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
27228
27229         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
27230         accessors.
27231
27232         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
27233         (execute_cse_sincos): Use new CALL_EXPR accessors.
27234
27235         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
27236
27237         * gimple-low.c (lower_function_body): Use build_call_expr.
27238         (lower_builtin_setjmp): Likewise.
27239
27240         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
27241         (set_storage_via_libcall): Likewise.
27242         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
27243         instead of TREE_CODE_LENGTH.
27244         (expand_expr_real_1): Use new CALL_EXPR accessors.
27245
27246         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
27247         generalize to handle any number of operands.
27248         (TB_parent_eq): Likewise.
27249
27250         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
27251         (strip_builtin_expect): Likewise.
27252
27253         * function.c (gimplify_parameters): Use build_call_expr.
27254
27255         * tree-vectorizer.c (vect_is_simple_reduction): Use
27256         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27257
27258         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
27259         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
27260
27261         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
27262         iterators.
27263
27264         * gimplify.c (build_stack_save_restore): Use build_call_expr.
27265         (gimplify_decl_expr): Likewise.
27266         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
27267         Use new CALL_EXPR iterators.
27268         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
27269         (gimplify_modify_expr_to_memset): Likewise.
27270         (gimplify_variable_sized_compare): Likewise.
27271         (gimplify_omp_atomic_fetch_op): Likewise.
27272         (gimplify_omp_atomic_pipeline): Likewise.
27273         (gimplify_omp_atomic_mutex): Likewise.
27274         (gimplify_function_tree): Likewise.
27275
27276         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
27277         (call_expr_flags): Likewise.
27278         (expand_call): Likewise.
27279
27280         * except.c (expand_builtin_eh_return_data_regno): Pass entire
27281         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27282         accessors.
27283
27284         * coverage.c (create_coverage): Use build_call_expr.
27285
27286         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
27287         (temp_call_expr_obstack): New.
27288         (pool_copy_list): Delete.
27289         (temp_copy_call_expr): New.
27290         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
27291         CALL_EXPR accessors.  Get rid of special goo for copying argument
27292         lists and use temp_copy_call_expr instead.
27293         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
27294         CALL_EXPR accessors.
27295         (create_expression_by_pieces): Likewise.  Use build_call_array
27296         to construct the result instead of fold_build3.
27297         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
27298         dealing with argument lists.
27299         (init_pre): Remove references to expression_node_pool and
27300         list_node_pool.  Init temp_call_expr_obstack instead.
27301         (fini_pre): Remove references to expression_node_pool and
27302         list_node_pool.
27303
27304         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
27305         and walk arguments explicitly instead of as a list.
27306
27307         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
27308         (mx_register_decls): Likewise.
27309         (mudflap_register_call): Likewise.
27310         (mudflap_finish_file): Likewise.
27311
27312         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
27313         (ipa_callsite_compute_param): Likewise.
27314
27315         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
27316         accessors and constructor.
27317
27318         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
27319         accessors and constructor.
27320         (convert_tramp_reference): Likewise.
27321         (convert_call_expr): Likewise.
27322         (finalize_nesting_tree_1): Likewise.
27323
27324         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
27325         accessors.
27326
27327         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
27328
27329         * tree-inline.c (initialize_inlined_parameters): Pass entire
27330         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27331         accessors.
27332         (estimate_num_insns_1): Use new CALL_EXPR accessors.
27333         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
27334
27335         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
27336         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27337         (vectorizable_reduction): Likewise.
27338         (vectorizable_call): Use new CALL_EXPR iterators.
27339         (vectorizable_conversion): Use build_call_expr.
27340         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
27341         (vect_gen_widened_results_half): Use build_call_expr.
27342         (vect_setup_realignment): Likewise.
27343         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
27344
27345         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
27346         (pass_through_call): Likewise.
27347         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
27348         fold_builtin.
27349
27350         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
27351         (tree_gen_pow2_profiler): Likewise.
27352         (tree_gen_one_value_profiler): Likewise.
27353         (tree_gen_ic_func_profiler): Likewise.
27354         (tree_gen_average_profiler): Likewise.
27355         (tree_gen_ior_profiler): Likewise.
27356
27357         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
27358         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
27359         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27360
27361         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
27362         of TREE_CODE_LENGTH.
27363
27364         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
27365         of TREE_CODE_LENGTH.
27366
27367         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
27368         constructor.
27369         (convert_to_integer): Likewise.
27370
27371         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
27372         accessors.
27373
27374 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27375             Brooks Moses  <brooks.moses@codesourcery.com>
27376             Lee Millward  <lee.millward@codesourcery.com>
27377
27378         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
27379         accessors.
27380         * config/frv/frv.c (frv_expand_builtin): Likewise.
27381         * config/s390/s390.c (s390_expand_builtin): Likewise.
27382
27383         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
27384         (sparc_expand_builtin): Use new CALL_EXPR accessors.
27385
27386         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
27387         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
27388         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
27389         (ix86_expand_store_builtin): Likewise.
27390         (ix86_expand_unop_builtin): Likewise.
27391         (ix86_expand_unop1_builtin): Likewise.
27392         (ix86_expand_sse_compare): Likewise.
27393         (ix86_expand_sse_comi): Likewise.
27394         (ix86_expand_vec_init_builtin): Likewise.
27395         (ix86_expand_vec_ext_builtin): Likewise.
27396         (ix86_expand_vec_set_builtin): Likewise.
27397         (ix86_expand_builtin): Use new CALL_EXPR accessors.
27398
27399         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
27400         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
27401
27402         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
27403         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27404         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
27405
27406         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
27407         build_call_expr.
27408         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
27409         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
27410         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27411         (altivec_expand_abs_builtin): Likewise.
27412         (rs6000_expand_binop_builtin): Likewise.
27413         (altivec_expand_predicate_builtin): Likewise.
27414         (altivec_expand_lv_builtin): Likewise.
27415         (spe_expand_stv_builtin): Likewise.
27416         (altivec_expand_stv_builtin): Likewise.
27417         (rs6000_expand_ternop_builtin): Likewise.
27418         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
27419         (altivec_expand_st_builtin): Likewise.
27420         (altivec_expand_dst_builtin): Likewise.
27421         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
27422         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27423         (altivec_expand_vec_set_builtin): Likewise.
27424         (altivec_expand_vec_ext_builtin): Likewise.
27425         (altivec_expand_builtin): Use new CALL_EXPR accessors.
27426         (spe_expand_builtin): Likewise.
27427         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
27428         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27429         (spe_expand_evsel_builtin): Likewise.
27430         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
27431         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
27432
27433         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
27434         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27435         (arm_expand_unop_builtin): Likewise.
27436         (arm_expand_builtin): Use new CALL_EXPR accessors.
27437
27438         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
27439         accessors.
27440
27441         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
27442         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
27443         Fix callers.
27444         (bfin_expand_unop_builtin): Likewise.
27445         (bfin_expand_builtin): Use new CALL_EXPR accessors.
27446
27447 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27448             Brooks Moses  <brooks.moses@codesourcery.com>
27449             Lee Millward  <lee.millward@codesourcery.com>
27450
27451         * c-semantics.c (build_stmt): Add internal diagnostic check.
27452
27453         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
27454         accessors.  Print arguments explicitly instead of as a list.
27455
27456         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
27457
27458         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
27459         (c_finish_omp_flish): Likewise.
27460
27461         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
27462         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
27463         instead of TREE_CODE_LENGTH.
27464         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
27465         (c_warn_unused_result): Likewise.
27466
27467 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27468
27469         PR c/26494
27470         * doc/invoke.texi (Warning Options): Remove
27471         -Werror-implicit-function-declaration.
27472         (Wimplicit-function-declaration): Update description.
27473         * opts.c (common_handle_option): Move handling of -Werror=* to...
27474         (enable_warning_as_error): ...here.
27475         * opts.h (enable_warning_as_error): Declare.
27476         * c-decl.c (implicit_decl_warning): Unless
27477         -Wno-implicit-function-declaration is given, emit a pedwarn if
27478         -std=c99 or emit a warning if -Wimplicit-function-declaration.
27479         * c.opt (Wimplicit-function-declaration): Replace
27480         mesg_implicit_function_declaration with
27481         warn_implicit_function_declaration.
27482         * c-opts.c (c_common_handle_option):
27483         -Werror-implicit-function-declaration is exactly equal as
27484         -Werror=implicit-function-declaration.
27485         (set_Wimplicit): Replace mesg_implicit_function_declaration with
27486         warn_implicit_function_declaration.
27487         (c_common_post_options): -Wimplict-function-declaration is enabled
27488         by default by -std=c99, otherwise is disabled by default.
27489         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
27490
27491 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27492
27493         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
27494         DECL on the rhs to a DECL on the lhs for debug info purposes if the
27495         former is ignored but not the latter.
27496
27497 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27498
27499         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
27500         is made and the reference doesn't use the alias set of its type,
27501         do not create the temporary using that type.
27502
27503 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
27504
27505         * jump.c: Remove prototypes for delete_computation and
27506         delete_prior_computation.
27507
27508 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27509
27510         * jump.c (get_label_after): Delete.
27511         (get_label_before, delete_computation, delete_jump,
27512         delete_prior_computation, follow_jumps): Move...
27513         * reorg.c (delete_computation, delete_prior_computation): ... here...
27514         (get_label_before, delete_jump): ... making these static ...
27515         (follow_jumps): ... and simplifying this since it only runs after
27516         reload.
27517         * rtl.h (get_label_after, get_label_before, delete_jump,
27518         follow_jumps): Delete prototypes.
27519
27520 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27521
27522         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
27523
27524 2007-02-15  Nick Clifton  <nickc@redhat.com>
27525
27526         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
27527         order to prevent it from being munged by the target.
27528
27529 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
27530
27531         * config/i386/i386.md: Remove misleading comment.
27532
27533 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27534
27535         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
27536         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
27537         invalid patterns.
27538
27539 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27540
27541         * tree-sra.c (instantiate_missing_elements): Canonicalize
27542         bit-field types.
27543         (sra_build_assignment): New.
27544         (generate_copy_inout, generate_element_copy,
27545         generate_element_zero, generate_one_element_init): Use it.
27546
27547 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27548
27549         * tree-sra.c (instantiate_missing_elements): Canonicalize
27550         bit-field types.
27551         (sra_build_assignment): New.
27552         (generate_copy_inout, generate_element_copy,
27553         generate_element_zero, generate_one_element_init): Use it.
27554
27555 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27556
27557         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
27558         limbo die nodes.
27559
27560 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
27561
27562         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
27563         types as aggregates not scalars.
27564         * function.c (assign_stack_temp_for_type): Likewise.
27565
27566 2007-02-14  Roger Sayle  <roger@eyesopen.com>
27567             Zdenek Dvorak  <dvorakz@suse.cz>
27568
27569         * tree-dump.c (dump_switch_p_1): Require exact match of the option
27570         name.
27571
27572 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
27573
27574         * passes.c (next_pass_1): Clear the next field of the copied
27575         pass structure.
27576
27577 2007-02-14  Richard Henderson  <rth@redhat.com>
27578
27579         * tree-sra.c (early_sra): New.
27580         (decl_can_be_decomposed_p): Deny va_list if early_sra.
27581         (tree_sra_early, pass_sra_early): New.
27582         * tree-pass.h (pass_sra_early): Declare.
27583         * passes.c (init_optimization_passes): Use it.
27584
27585 2007-02-14  Richard Guenther  <rguenther@suse.de>
27586
27587         * flags.h (issue_strict_overflow_warning): Convert to a macro.
27588
27589 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
27590
27591          PR tree-optimization/30771
27592         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
27593         also phi nodes.
27594         (vect_analyze_operations): Induction phis can now be marked as
27595         used_in_loop.
27596         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
27597         Update documentation accordingly.
27598
27599 2007-02-14  Nick Clifton  <nickc@redhat.com>
27600
27601         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
27602         most 3 arguments are supported.
27603         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
27604
27605 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
27606
27607         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
27608         Ensure dst->current is valid.
27609
27610 2007-02-13  Paul Brook  <paul@codesourcery.com>
27611
27612         * config.gcc: Add arm*-*-uclinux-*eabi.
27613         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
27614         (SUBTARGET_EXTRA_LINK_SPEC): Define.
27615         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
27616         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
27617         (LINK_SPEC): Define.
27618         (LIB_SPEC): Define.
27619         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
27620         register.
27621         * config/arm/uclinux-eabi.h: New file.
27622         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
27623         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
27624         based targets.
27625
27626 2007-02-13  Ian Lance Taylor  <iant@google.com>
27627
27628         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
27629         * flags.h (warn_strict_overflow): Declare.
27630         (enum warn_strict_overflow_code): Define.
27631         (issue_strict_overflow_warning): New static inline function.
27632         * opts.c (warn_strict_overflow): New variable.
27633         (common_handle_option): Handle OPT_Wstrict_overflow and
27634         OPT_Wstrict_overflow_.
27635         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
27636         OPT_Wall.
27637         * fold-const.c: Include intl.h.
27638         (fold_deferring_overflow_warnings): New static variable.
27639         (fold_deferred_overflow_warning): New static variable.
27640         (fold_deferred_overflow_code): New static variable.
27641         (fold_defer_overflow_warnings): New function.
27642         (fold_undefer_overflow_warnings): New function.
27643         (fold_undefer_and_ignore_overflow_warnings): New function.
27644         (fold_deferring_overflow_warnings_p): New function.
27645         (fold_overflow_warning): New static function.
27646         (make_range): Add strict_overflow_p parameter.  Change all
27647         callers.
27648         (extract_muldiv, extract_muldiv_1): Likewise.
27649         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
27650         tree_expr_nonnegative_p.
27651         (fold_negate_expr): Call fold_overflow_warning.
27652         (fold_range_test): Likewise.
27653         (fold_comparison): Likewise.
27654         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
27655         instead of tree_expr_nonnegative_p.
27656         (tree_expr_nonnegative_warnv_p): Rename from
27657         tree_expr_nonnegative_p, add strict_overflow_p parameter.
27658         (tree_expr_nonnegative_p): New function.
27659         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
27660         strict_overflow_p parameter.
27661         (tree_expr_nonzero_p): New function.
27662         * passes.c (verify_interpass_invariants): New static function.
27663         (execute_one_pass): Call it.
27664         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
27665         warnings.
27666         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
27667         (estimate_numbers_of_iterations): Likewise.
27668         (scev_probably_wraps_p): Likewise.
27669         * tree-ssa-ccp.c: Include "toplev.h".
27670         (evaluate_stmt): Defer fold overflow warnings until we know we are
27671         going to optimize.
27672         (struct fold_stmt_r_data): Add stmt field.
27673         (fold_stmt_r): Defer fold overflow warnings until we know we
27674         optimized.
27675         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
27676         (fold_stmt_inplace): Likewise.
27677         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
27678         (cleanup_control_expr_graph): Defer fold overflow warnings until
27679         we know we are going to optimize.
27680         * tree-cfg.c (fold_cond_expr_cond): Likewise.
27681         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
27682         Likewise.
27683         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
27684         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
27685         * tree-ssa-loop-manip.c (create_iv): Likewise.
27686         * c-typeck.c (build_conditional_expr): Likewise.
27687         (build_binary_op): Likewise.
27688         * tree-vrp.c (vrp_expr_computes_nonzero): Call
27689         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
27690         (extract_range_from_unary_expr): Likewise.
27691         * simplify-rtx.c (simplify_const_relational_operation): Warn when
27692         assuming that signed overflow does not occur.
27693         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
27694         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
27695         (fold_defer_overflow_warnings): Declare.
27696         (fold_undefer_overflow_warnings): Declare.
27697         (fold_undefer_and_ignore_overflow_warnings): Declare.
27698         (fold_deferring_overflow_warnings_p): Declare.
27699         (tree_expr_nonzero_warnv_p): Declare.
27700         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
27701         of warning options.
27702         (Warning Options): Document -Wstrict-overflow.
27703         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
27704         (tree-ssa-ccp.o): Likewise.
27705         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
27706         (fold-const.o): Depend on intl.h.
27707
27708 2007-02-13  Ian Lance Taylor  <iant@google.com>
27709
27710         PR middle-end/30751
27711         * lower-subreg.c (resolve_simple_move): Decompose subregs in
27712         addresses.
27713
27714 2007-02-13  Stuart Hastings  <stuart@apple.com>
27715
27716         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
27717
27718 2007-02-13  Richard Henderson  <rth@redhat.com>
27719
27720         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
27721         handled_component_p before looking for the indirect_ref.
27722
27723 2007-02-13  Richard Henderson  <rth@redhat.com>
27724
27725         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
27726         remove flags clobber.
27727         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
27728         (bswaphi_lowpart): New.
27729         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
27730         remove TARGET_BSWAP test.  Delete expander of the same name.
27731
27732         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
27733         (expand_unop): Use them.
27734
27735 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
27736
27737         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
27738         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
27739         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
27740         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
27741         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
27742         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
27743         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
27744         assembler dialect choice from asm templates.
27745
27746 2007-02-12  Richard Henderson  <rth@redhat.com>
27747
27748         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
27749         (fixuns_trunc<SSEMODEF>si2): Use it.
27750         * config/i386/sse.md (vec_setv4sf_0): Export.
27751         * config/i386/i386.c (ix86_build_const_vector): Export.
27752         (ix86_split_convert_uns_si_sse): Rename from
27753         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
27754         * config/i386/i386-protos.h: Update.
27755
27756 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27757
27758         PR c/29521
27759         * c-typeck.c (c_finish_return): Improve warning message.
27760
27761 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27762
27763         * alias.c (find_symbolic_term): Delete unused function.
27764
27765 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
27766
27767         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
27768         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
27769         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
27770
27771 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27772
27773         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
27774         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
27775         the function, temporarily point the debug interface to the null one.
27776
27777 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27778
27779         * dwarf2out.c (round_up_to_align): New static function.
27780         (field_byte_offset): Use it to round the offset.
27781
27782 2007-02-12  Richard Henderson  <rth@redhat.com>
27783
27784         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
27785         (inswl_const): Export.
27786
27787 2007-02-12  Richard Henderson  <rth@redhat.com>
27788
27789         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
27790         result mode of the libcall, convert back to outmode.
27791
27792 2007-02-12  Roger Sayle  <roger@eyesopen.com>
27793
27794         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
27795         (bswapdi2): New define_expand to implement 32-bit implementation.
27796
27797 2007-02-12  Nick Clifton  <nickc@redhat.com>
27798
27799         * doc/invoke.texi (Overall Options): Document --help=.
27800         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
27801         (cc1_options): Pass --help= on to cc1.
27802         (display_help): Add description of --help=.
27803         (process_command): Add code to handle --help=.  Allow translated
27804         --help and --target-help switches to be passed on to compiler
27805         sub-process.
27806         (main): Remove unused if statement.
27807         * opts.c (columns): Remove.
27808         (LEFT_COLUMN): Define.
27809         (wrap_help): Add columns argument.
27810         (print_filtered_help): Change parameters to be an include bitmask,
27811         an exclude bitmask, an any bitmask and the column width.  Move the
27812         code to display the params list here.  Add code to display the
27813         status of options rather than their descriptions if the quiet flag
27814         is not active.
27815         (print_specific_help): Change parameters to be an include bitmask,
27816         an exclude bitmask and an any bitmask.  Move code to look up the
27817         column width here.  Decide upon the title for an options listing.
27818         (common_handle_options): Add code to handle --help=.  Adapt code
27819         for --help and --target-help to use the revised form of the
27820         print_specific_help function.
27821         (print_help): Delete.
27822         (print_param_help): Delete.
27823         (print_switch): Delete.
27824         * opts.h (cl_lang_count): Add prototype.
27825         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
27826         CL_MAX_OPTION_CLASS): New defines.
27827         * optc-gen.awk: Add construction of cl_lang_count.
27828         * c.opt: Add Warning attribute to warning options and Optimization
27829         attribute to optimization options.
27830         * common.opt: Likewise.
27831         Add --help=.
27832         Add -fhelp and -ftarget-help as aliases for the transformed --help
27833         and --target-help options.
27834         * opt-functions.awk: Add code to handle Warning and Optimization
27835         attributes.
27836
27837 2007-02-12  Richard Henderson  <rth@redhat.com>
27838
27839         * config/alpha/constraints.md: New file.
27840         * config/alpha/alpha.c: Include tm-constrs.h.
27841         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
27842         alpha_extra_constraint): Remove.
27843         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
27844         * config/alpha/alpha-protos.h: Update.
27845         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
27846         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
27847         (EXTRA_CONSTRAINT): Remove.
27848         * config/alpha/alpha.md: Include constraints.md.
27849         (adddi splitter): Use satisfies_constraint_*.
27850         * config/alpha/predicates.md (add_operand): Likewise.
27851         (sext_add_operand, addition_operation): Likewise.
27852
27853 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
27854
27855         PR tree-optimization/29145
27856         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
27857         in our handling of restrict qualified pointers.
27858
27859 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27860
27861         PR middle-end/7651
27862         * doc/invoke.texi (Wunused-value): Update description.
27863         (Wextra): Delete item.
27864         * opts.c (set_Wextra): Don't use the value of Wextra to set the
27865         value of Wunused-value.
27866         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
27867         (c_finish_stmt_expr): Don't check extra_warnings.
27868         (emit_side_effect_warnings): The caller is responsible to check
27869         warn_unused_value.
27870
27871 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27872             Matt Thomas  <matt@3am-software.com>
27873
27874         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
27875
27876 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27877
27878         * simplify-rtx.c (simplify_relational_operation_1): Optimize
27879         comparisons of POPCOUNT against zero.
27880         (simplify_const_relational_operation): Likewise.
27881
27882 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27883
27884         * doc/invoke.texi (Wextra): Delete outdated paragraph.
27885
27886 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27887
27888         * dwarf2out.c (root_type): Delete unused function.
27889
27890 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27891
27892         * genattrtab.c (contained_in_p): Delete unused function.
27893         (write_expr_attr_cache): Likewise.
27894
27895 2007-02-11  Jan Hubicka  <jh@suse.cz>
27896
27897         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
27898         previous patch.
27899
27900 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
27901
27902         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
27903         to add the REG_EQ* note.
27904         * see.c (see_merge_one_use_extension): Likewise.
27905         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
27906         turn REG_EQUAL notes into REG_EQUIV notes if the target
27907         register may have more than one set.
27908         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
27909         * gcse.c (try_replace_reg): Likewise.
27910         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
27911         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
27912         more than one REG_EQUIV note.
27913         * reload1.c (gen_reload): Use set_unique_reg_note.
27914
27915 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
27916
27917         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
27918         (ix86_builtin_conversion): New function.
27919
27920 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
27921
27922         PR target/29487
27923         * tree.h (DECL_REPLACEABLE_P): New macro.
27924         * except.c (set_nothrow_function_flags): Likewise.
27925
27926 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
27927             Ira Rosen  <irar@il.ibm.com>
27928             Dorit Nuzman  <dorit@il.ibm.com>
27929
27930         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
27931         * targhooks.c (default_builtin_vectorized_conversion): New.
27932         * targhooks.h (default_builtin_vectorized_function): New declaration.
27933         * target.h (struct vectorize): Add builtin_conversion field.
27934         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
27935         stmt_vec_info_type value.
27936         (vectorizable_conversion): New declaration.
27937         * tree-vect-analyze.c (vect_analyze_operations): Add
27938         vectorizable_conversion call.
27939         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
27940         * tree-vect-transform.c (vectorizable_conversion): New function.
27941         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
27942         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
27943         mode.
27944         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
27945         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
27946         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
27947         or ALTIVEC_BUILTIN_VCFSX.
27948
27949 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27950
27951         PR target/30634
27952         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
27953         CONST_DOUBLE and operand 0 is a hard register.
27954         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
27955         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
27956         is a hard floating-point register.
27957
27958 2007-02-10  Richard Henderson  <rth@redhat.com>
27959             Jakub Jelinek  <jakub@redhat.com>
27960             Alexandre Oliva  <aoliva@redhat.com>
27961
27962         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
27963         * builtin-types.def (BT_WORD): Make unsigned.
27964         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
27965         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
27966         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
27967         * c-decl.c (grokdeclarator): Don't error if !have_tls.
27968         * c-parser.c (c_parser_omp_threadprivate): Likewise.
27969         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
27970         emulated tls.
27971         * expr.c (emutls_var_address): New.
27972         (expand_expr_real_1): Expand emulated tls.
27973         (expand_expr_addr_expr_1): Likewise.
27974         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
27975         * output.h (emutls_finish): Declare.
27976         * toplev.c (compile_file): Call it.
27977         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
27978         address before wrapping in CONST.
27979         * varasm.c (emutls_htab, emutls_object_type): New.
27980         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
27981         (get_emutls_object_name, get_emutls_object_type): New.
27982         (get_emutls_init_templ_addr, emutls_decl): New.
27983         (emutls_common_1, emutls_finish): New.
27984         (assemble_variable): When emulating tls, swap decls; generate
27985         constructor for the emutls objects.
27986         (do_assemble_alias): When emulating tls, swap decl and target name.
27987         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
27988         for emulated tls.
27989         * varpool.c (decide_is_variable_needed): Look at force_output.
27990         Recurse for emulated tls.
27991         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
27992         with decide_is_variable_needed.
27993         * emutls.c: New file.
27994         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
27995         tls_object for real tls.
27996
27997 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
27998
27999         PR rtl-optimization/29599
28000         * reload1.c (eliminate_regs_in_insn): Take the destination
28001         mode into account when computing the offset.
28002
28003 2007-02-09  Stuart Hastings  <stuart@apple.com>
28004             Richard Henderson  <rth@redhat.com>
28005
28006         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28007         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28008         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
28009         fixuns_truncdfhi2): New.
28010         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
28011         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
28012         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
28013         (floatunssidf2): Allow nonimmediate source.
28014         * config/i386/sse.md (movdi_to_sse): New.
28015         (vec_concatv2di): Drop '*'.
28016         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
28017         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28018         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
28019         New.
28020         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
28021         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28022         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
28023         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
28024         (ix86_build_signbit_mask): Fix decl of v, refactor to call
28025         ix86_build_const_vector.
28026         (x86_emit_floatuns): Rewrite.
28027
28028 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28029
28030         * genautomata.c (longest_path_length): Delete unused function.
28031         (struct state): Delete unused longest_path_length.
28032         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
28033         (get_free_state): Delete unused.
28034
28035 2007-02-09  Jan Hubicka  <jh@suse.cz>
28036
28037         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
28038         * doc/invoke.texi (inline-unit-growth): Update default value.
28039
28040         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
28041         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
28042         (rebuild_cgraph_edges): Likewise.
28043         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
28044         (dump_cgraph_node): Dump frequencies.
28045         (cgraph_clone_edge): Add frequency scales.
28046         (cgraph_clone_node): Add freuqnecy.
28047         * cgraph.h (cgraph_edge): Add freuqnecy argument.
28048         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
28049         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
28050         * tree-pass.h (TODO_rebuild_frequencies): New constant.
28051         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
28052         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
28053         (save_inline_function_body): Likewise.
28054         * ipa-inline.c: inluce rtl.h
28055         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
28056         (cgraph_edge_badness): Use frequencies.
28057         (cgraph_decide_recursive_inlining): Update clonning.
28058         (cgraph_decide_inlining_of_small_function): Dump frequency.
28059         * predict.c (estimate_bb_frequencies): Export.
28060         * predict.h (estimate_bb_frequencies): Declare.
28061         * tree-inline.c (copy_bb): Watch overflows.
28062         (expand_call_inline): Update call of cgraph_create_edge.
28063         (optimize_inline_calls): Use TODO flags to update frequnecies.
28064         * passes.h: Include predict.h
28065         (init_optimization_passes): Move profile ahead.
28066         (execute_function_todo): Handle TODO_rebuild_frequencies.
28067
28068 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28069
28070         * config/alpha/alpha.c (emit_insxl): Force the first operand of
28071         the insbl or inswl pattern into a register.
28072
28073 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28074
28075         * config/ia64/ia64.md (bswapdi2): New define_insn.
28076
28077 2007-02-09  Richard Henderson  <rth@redhat.com>
28078
28079         * config/i386/constraints.md (Ym): New constraint.
28080         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
28081         (movdi_1_rex64): Split sse and xmm general register moves from
28082         memory move alternatives.  Use conditional register constraints.
28083         (movsf_1, movdf_integer): Likewise.
28084         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
28085         (movdf_integer_rex64): New.
28086         (pushsf_rex64): Fix output constraints.
28087         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
28088         (sse2_stored): Likewise.
28089         (sse2_storeq_rex64): New.
28090         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
28091         amd and not generic.
28092         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
28093         for optimize_size.  Remove SF/DFmode hack.
28094
28095 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
28096
28097         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
28098         (bit_SSE4a): New.
28099
28100 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
28101             Richard Sandiford  <richard@codesourcery.com>
28102
28103         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
28104         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
28105         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
28106         m68k/t-mlib to tmake_file.
28107         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
28108         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
28109         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
28110         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
28111         variable is not empty, add t-$m68k_arch_family to tmake_file.
28112         Add t-mlibs to tmake_file.
28113         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
28114         * config/m68k/t-cf: New file.
28115         * config/m68k/t-m68k: Likewise.
28116         * config/m68k/t-mlibs: Likewise.
28117         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28118         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28119         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28120         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28121         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
28122         Delete.
28123         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
28124         (INSTALL_LIBGCC): Delete.
28125         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28126         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28127         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28128         (M68K_MLIB_CPU): Define.
28129         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28130         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28131         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
28132
28133 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
28134             Richard Guenther  <rguenther@suse.de>
28135
28136         PR middle-end/23361
28137         * fold-const.c (fold_comparison): Handle obfuscated comparisons
28138         against INT_MIN/INT_MAX.
28139         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
28140         file if a loop is removed.
28141
28142 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
28143
28144         * calls.c (store_one_arg): Pass correct alignment to
28145         emit_push_insn for non-BLKmode values.
28146         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
28147         unaligned stack slot via a suitably aligned slot.
28148
28149 2007-02-08  DJ Delorie  <dj@redhat.com>
28150
28151         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
28152         warnings.
28153         (legal_subregs): Use unsigned char, make const.
28154         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
28155
28156 2007-02-08  Paul Brook  <paul@codesourcery.com>
28157
28158         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
28159         special interworking needed.
28160
28161 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
28162
28163         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
28164         conditional to __SSE2__.
28165         (Entries below should have been added to first ChangeLog
28166         entry for amdfam10 dated 2007-02-05)
28167         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
28168         defined.
28169         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
28170         defined.
28171         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
28172         defined.
28173
28174 2007-02-08  DJ Delorie  <dj@redhat.com>
28175
28176         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
28177         * config/m32c/m32c.c (legal_subregs): New.
28178         (m32c_illegal_subreg_p): New.
28179         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
28180         unsupported subregs of hard regs.
28181
28182 2007-02-08  Jan Hubicka  <jh@suse.cz>
28183
28184         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
28185         the same one; always update histograms.
28186
28187 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28188
28189         * passes.c (init_optimization_passes): Tidy comment.
28190
28191 2007-02-08  Roger Sayle  <roger@eyesopen.com>
28192
28193         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
28194         strip zero_extend, bswap and rotates from POCOUNT's argument.
28195         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
28196         zero_extend and rotates from PARITY's argument.
28197         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
28198         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
28199         of an integer constant at compile-time.
28200
28201 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28202
28203         PR 30562
28204         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
28205         Update all users.
28206         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
28207         users.
28208         (init_alias_info):
28209         * tree-ssa-live.c (remove_unused_locals): Do not remove
28210         TREE_ADDRESSABLE variables.
28211         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
28212         * tree-ssa-operands.c (add_virtual_operand): Remove argument
28213         FOR_CLOBBER.  Update all users.
28214         If VAR has an associated alias set, add a virtual operand for
28215         it if no alias is found to conflict with the memory reference.
28216
28217 2007-02-07  Jan Hubicka  <jh@suse.cz>
28218             Robert Kidd <rkidd@crhc.uiuc.edu>
28219
28220         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
28221
28222 2007-02-07  Ian Lance Taylor  <iant@google.com>
28223
28224         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
28225
28226 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28227
28228         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
28229         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
28230         tablejumpdi, movsi_to_cr_one): Remove constraints from
28231         define_expand's match_operands.
28232
28233 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28234
28235         * global.c (compute_regsets): Move declatation of "i" inside of
28236         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
28237
28238 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
28239
28240         PR c++/30703
28241         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
28242         of INDIRECT_REF <RESULT_DECL>.
28243
28244         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
28245
28246 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
28247             Kaz Kojima  <kkojima@gcc.gnu.org>
28248
28249         PR target/29746
28250         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
28251         properly.
28252         (sh_initialize_trampoline): Add parentheses to avoid a warning.
28253
28254 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
28255
28256         * doc/loop.texi: Document possibility not to perform disambiguation
28257         of loops with multiple latches.
28258         * cfgloopmanip.c (alp_enum_p): Removed.
28259         (add_loop): Handle subloops.  Use get_loop_body_with_size.
28260         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
28261         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
28262         the new forwarder block.
28263         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
28264         Handle the case latch is NULL.
28265         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
28266         modifications when marking loop exits.
28267         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
28268         be modified.
28269         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
28270         disambiguate_loops_with_multiple_latches.
28271         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
28272         before fix_loop_structure.
28273         * cfgloop.c: Include pointer-set.h and output.h.
28274         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
28275         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
28276         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
28277         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
28278         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
28279         disambiguate_multiple_latches, get_loop_body_with_size,
28280         disambiguate_loops_with_multiple_latches): New functions.
28281         (flow_loop_dump): Dump multiple latch edges.
28282         (flow_loop_nodes_find): Handle loops with multiple latches.
28283         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
28284         (glb_enum_p): Modified.
28285         (get_loop_body): Use get_loop_body_with_size.
28286         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
28287         (AVOID_CFG_MODIFICATIONS): New constant.
28288         (disambiguate_loops_with_multiple_latches, add_loop,
28289         get_loop_body_with_size): Declare.
28290         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
28291
28292 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
28293
28294         PR inline-asm/28686
28295         * global.c (compute_regsets): New function.
28296         (global_alloc): Refactored ELIMINABLE_REGSET
28297         and NO_GLOBAL_ALLOC_REGS computation out.
28298         (rest_of_handle_global_alloc): Call compute_regsets()
28299         for non-optimizing case.
28300
28301 2007-02-06  Richard Henderson  <rth@redhat.com>
28302
28303         * config/i386/constraints.md (Y2): Rename from Y.
28304         (Yi): New constraint.
28305         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
28306         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
28307         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
28308         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
28309         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
28310         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
28311         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
28312         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
28313         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
28314         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
28315         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
28316         vec_extractv2si_1): Change Y constraints to Y2.
28317         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
28318         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
28319         Change Y constraints to Y2.
28320         (sse2_loadld): Change Y constraints to x.
28321
28322 2007-02-06  Roger Sayle  <roger@eyesopen.com>
28323
28324         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
28325         (parity<mode>2): New define_expand using rs6000_emit_parity.
28326         * config/rs6000/rs6000.c (rs6000_emit_popcount,
28327         rs6000_emit_parity): New functions.
28328         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
28329         rs6000_emit_parity): Prototype here.
28330
28331 2007-02-06  Ian Lance Taylor  <iant@google.com>
28332
28333         * lower-subreg.c (simple_move_operand): Reject CONST.
28334         (resolve_clobber): Call validate_change rather than directly
28335         assigning to XEXP (pat, 0).
28336
28337 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28338
28339         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
28340         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
28341         (tree-cfg.o): Remove hashtab.h dependency.
28342
28343         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
28344         (struct ivopts_data): Change niters to pointer_map_t.
28345         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
28346         (niter_for_exit): Create pointer_map on demand.  Change for
28347         pointer_map API.
28348         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
28349         (free_loop_data): Destroy data->niters if created and reset field.
28350         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
28351         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
28352
28353         * tree-ssa-reassoc.c: Include pointer-set.h.
28354         (bb_rank): Change to long *.
28355         (operand_rank): Change to pointer_map_t.
28356         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
28357         (insert_operand_rank): Accept long.
28358         (operand_entry_hash, operand_entry_eq): Remove.
28359         (get_rank): Return long.  Adjust for changes above.
28360         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
28361         and operand_rank.
28362         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
28363
28364         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
28365         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
28366         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
28367         is not NULL.
28368         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
28369         directly since it cannot be NULL.
28370         (get_vi_for_tree): Rewrite for pointer_map API.
28371         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
28372         (init_alias_vars): Create vi_for_tree as pointer_map.
28373         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
28374
28375         * tree-cfg.c: Don't include hashtab.h.
28376         (edge_to_cases): Declare as pointer_map.
28377         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
28378         Delete.
28379         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
28380         (start_recording_case_labels): Create edge_to_cases as pointer_map.
28381         (end_recoding_case_labels): Cleanup edge_to_cases manually before
28382         destroying it.
28383         (record_switch_edge): Delete.
28384         (get_cases_for_edge): Adjust for pointer_map API, inline
28385         record_switch_edge (rewritten for new API), remove goto.
28386
28387 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28388
28389         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
28390         * tree-nested.c: Include pointer-set.h.
28391         (var_map_elt, var_map_eq, var_map_hash): Delete.
28392         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
28393         to pointer_map_t's.
28394         (nesting_info_bitmap_obstack): New.
28395         (lookup_field_for_decl): Adjust for pointer_map API.
28396         (lookup_tramp_for_decl): Adjust for pointer_map API.
28397         (get_nonlocal_debug_decl): Adjust for pointer_map API.
28398         (get_local_debug_decl): Adjust for pointer_map API.
28399         (convert_nl_goto_reference): Adjust for pointer_map API.
28400         (convert_nl_goto_receiver): Adjust for pointer_map API.
28401         (create_nesting_tree): Create outside GGC space.  Create bitmap on
28402         the new obstack.  Create field_map and var_map as pointer_maps.
28403         (free_nesting_tree): Adjust for changes to create_nesting_tree.
28404         (root): Delete.
28405         (lower_nested_functions): Move root here, no need to NULL it.
28406         Initialize and release the obstack.
28407
28408 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
28409
28410         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
28411         Remove prototypes and make them non-static.
28412         (struct tree_int_map): Remove.
28413         * tree.h (struct tree_int_map): Move here, turning TO into an
28414         unsigned int.
28415         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
28416
28417         * tree.h (TREE_COMPLEXITY): Remove.
28418         (struct tree_exp): Remove complexity field.
28419         * tree.c (build1_stat): Don't set it.
28420
28421 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
28422             Victor Kaplansky  <victork@il.ibm.com>
28423
28424         * tree-vectorizer.c (vect_is_simple_use): Support induction.
28425         (vect_is_simple_reduction): Support reduction with induction as
28426         one of the operands.
28427         (vect_is_simple_iv_evolution): Fix formatting.
28428         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
28429         formatting.  Don't mark induction phis for vectorization.
28430         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
28431         * tree-vect-transform.c (get_initial_def_for_induction): New function.
28432         (vect_get_vec_def_for_operand): Support induction.
28433         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
28434         induction case.
28435         (vectorizable_reduction): Support reduction with induction as one of
28436         the operands.
28437         (vectorizable_type_demotion): Use def-type of stmt argument rather
28438         than dummy def-type.
28439
28440         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
28441         flag_tree_scev_cprop.
28442         * common.opt (tree-scev-cprop): New flag.
28443
28444         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
28445         call to vect_get_new_vect_var.
28446
28447 2007-02-06  Ira Rosen  <irar@il.ibm.com>
28448
28449         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
28450         vectype is not NULL.
28451         (vect_pattern_recog_1): Likewise.
28452
28453 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28454
28455         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
28456         (fold_negate_expr): Likewise.
28457
28458 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
28459
28460         PR debug/30189
28461         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
28462         even if cv-qualification is the same.
28463
28464 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
28465
28466         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
28467         __enable_execute_stack on completion.
28468
28469 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28470
28471         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
28472         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
28473         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
28474         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
28475         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
28476         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
28477         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
28478         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
28479
28480 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28481
28482         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
28483         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
28484         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
28485         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
28486         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
28487         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
28488         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
28489         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
28490         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
28491         umuldi3_highpart_rex64, umulsi3_highpart_insn,
28492         umulsi3_highpart_zext, smuldi3_highpart_rex64,
28493         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
28494         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
28495         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
28496         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
28497         sqrtextenddfxf2_i387): Added amdfam10_decode.
28498
28499         * config/i386/athlon.md (athlon_idirect_amdfam10,
28500         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
28501         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
28502         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
28503         athlon_ivector_store_amdfam10): New define_insn_reservation.
28504         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
28505         amdfam10.
28506
28507 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28508
28509         * config/i386/athlon.md (athlon_call_amdfam10,
28510         athlon_pop_amdfam10, athlon_lea_amdfam10): New
28511         define_insn_reservation.
28512         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
28513         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
28514         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
28515
28516 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28517
28518         * config/i386/athlon.md (athlon_sseld_amdfam10,
28519         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
28520         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
28521
28522 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28523
28524         * config/i386/athlon.md (athlon_sseins_amdfam10): New
28525         define_insn_reservation.
28526         * config/i386/i386.md (sseins): Added sseins to define_attr type
28527         and define_attr unit.
28528         * config/i386/sse.md: Set type attribute to sseins for insertq
28529         and insertqi.
28530
28531 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28532
28533         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
28534         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
28535         ssecomi_load_amdfam10, ssecomi_amdfam10,
28536         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
28537         define_insn_reservation.
28538         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
28539
28540 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28541
28542         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
28543         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
28544         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
28545         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
28546         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
28547         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
28548         define_insn_reservation.
28549
28550         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
28551         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
28552         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
28553         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
28554         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
28555
28556 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28557
28558         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
28559         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
28560         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
28561         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
28562         athlon_ssemul_load_k8): Added amdfam10.
28563
28564 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28565
28566         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
28567         (x86_sse_unaligned_move_optimal): New variable.
28568
28569         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
28570         m_AMDFAM10.
28571         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
28572         for unaligned vector SSE double/single precision loads for AMDFAM10.
28573
28574 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28575
28576         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
28577         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
28578         Define TARGET_CPU_DEFAULT_amdfam10.
28579         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
28580         (processor_type): Add PROCESSOR_AMDFAM10.
28581
28582         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
28583         processor_type in config/i386/i386.h.
28584         Enable imul peepholes for TARGET_AMDFAM10.
28585
28586         * config.gcc: Add support for --with-cpu option for amdfam10.
28587
28588         * config/i386/i386.c (amdfam10_cost): New variable.
28589         (m_AMDFAM10): New macro.
28590         (m_ATHLON_K8_AMDFAM10): New macro.
28591         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
28592         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
28593         x86_promote_QImode, x86_integer_DFmode_moves,
28594         x86_partial_reg_dependency, x86_memory_mismatch_stall,
28595         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
28596         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
28597         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
28598         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
28599         Enable/disable for amdfam10.
28600         (override_options): Add amdfam10_cost to processor_target_table.
28601         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
28602         processor_alias_table.
28603         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
28604         (ix86_adjust_cost): Add code for amdfam10.
28605
28606 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28607
28608         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
28609         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
28610         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
28611         * config/i386/i386.h: Add builtin definition for SSE4A.
28612         * config/i386/i386.md: Add support for ABM instructions
28613         (popcnt and lzcnt).
28614         * config/i386/sse.md: Add support for SSE4A instructions
28615         (movntss, movntsd, extrq, insertq).
28616         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
28617         Add -march=amdfam10 flag.
28618         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
28619         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
28620         and amdfam10.
28621         * doc/extend.texi: Add documentation for SSE4A builtins.
28622
28623 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
28624
28625         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
28626
28627 2007-02-05  Richard Guenther  <rguenther@suse.de>
28628
28629         * tree-vectorizer.h (vectorizable_function): Add argument type
28630         argument, change return type.
28631         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
28632         * tree-vect-transform.c (vectorizable_function): Handle extra
28633         argument, return vectorized function decl.
28634         (build_vectorized_function_call): Remove.
28635         (vectorizable_call): Handle calls with result and argument types
28636         differing.  Handle loop vectorization factor correctly.
28637         * targhooks.c (default_builtin_vectorized_function): Adjust for
28638         extra argument.
28639         * targhooks.h (default_builtin_vectorized_function): Likewise.
28640         * target.h (builtin_vectorized_function): Add argument type
28641         argument.
28642         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
28643         extra argument, allow vectorizing of lrintf.
28644         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
28645         documentation of target hook.
28646
28647 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
28648
28649         PR target/30665
28650         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
28651         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
28652         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
28653
28654 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28655
28656         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
28657         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
28658         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
28659         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
28660         before canonicalizing sincos to cexpi.
28661         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
28662
28663 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28664
28665         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
28666         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
28667         (alpha_init_builtins): Use alpha_add_builtins to process tables.
28668
28669 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28670
28671         * mips-tfile.c (initialize_init_file): Correct endianness test.
28672
28673 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
28674
28675         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
28676         the 'y' constraint.
28677
28678 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28679
28680         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
28681         saves in a PARALLEL before the register assignments.
28682
28683 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28684
28685         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
28686         DWARF_FRAME_RETURN_COLUMN to be a general register.
28687         * dwarf2out.c (init_return_column_size): New function, split from...
28688         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
28689         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
28690         to be nongeneral registers.
28691         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
28692         integer registers.
28693         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
28694         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
28695
28696 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28697
28698         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
28699
28700 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28701
28702         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
28703         (remove_path): Use can_remove_branch_p and remove_branch instead
28704         of loop_delete_branch_edge.
28705         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
28706         (tree_transform_and_unroll_loop): Remove dead branches immediately.
28707         Update profile using scale_dominated_blocks_in_loop.
28708         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
28709         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
28710         (can_remove_branch_p, remove_branch): Declare.
28711         * tree-cfg.c (tree_can_remove_branch_p): New function.
28712         (tree_cfg_hooks): Add tree_can_remove_branch_p.
28713         * cfgrtl.c (rtl_can_remove_branch_p): New function.
28714         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
28715
28716 2007-02-05  Jan Hubicka  <jh@suse.cz>
28717
28718         PR middle-end/30696
28719         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
28720         nodes in cgraph, don't remove offline copy of the function.
28721
28722 2007-02-04  Jan Hubicka  <jh@suse.cz>
28723
28724         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
28725         vectors might cause maybe_lookup_element_for_expr to be called
28726         on non-sra-candidate.
28727
28728 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28729
28730         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
28731         config/bfin/bfin.md, config/bfin/predicates.md: Follow
28732         spelling conventions.
28733
28734 2007-02-04  Richard Guenther  <rguenther@suse.de>
28735
28736         PR middle-end/30636
28737         * fold-const.c (try_move_mult_to_index): Make sure to not
28738         overflow one dimension of a multi-dimensional array access.
28739
28740 2007-02-04  Jan Hubicka  <jh@suse.cz>
28741
28742         * passes.c (init_optimization_passes): Reindent.
28743
28744 2007-02-04  Jan Hubicka  <jh@suse.cz>
28745             Eric Botcazou  <ebotcazou@adacore.com>
28746
28747         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
28748         (execute_fixup_cfg): Break out the abnormal goto code.
28749         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
28750         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
28751         (optimize_inline_calls): Call make_nonlocal_label_edges.
28752
28753 2007-02-04  Jan Hubicka  <jh@suse.cz>
28754
28755         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
28756         true when something was changed.
28757         (rename_ssa_copies): When something was changed, do
28758         TODO_remove_unused_locals.
28759         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28760         add TODO_remove_unused_locals when instruction was removed.
28761
28762 2007-02-04  Jan Hubicka  <jh@suse.cz>
28763
28764         * ipa-inline.c (try_inline): Improve debug output; work on already
28765         inline edges too.
28766         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
28767         call try_inline for already inlined edges too when flattening;
28768         inline also functions that make callee growth but overall unit size
28769         reduce.
28770
28771 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28772
28773         * config/m32c/bitops.md, config/m32c/jump.md,
28774         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
28775         config/m32r/m32r.h, config/m32r/m32r.md,
28776         config/m32r/predicates.md, config/m68hc11/larith.asm,
28777         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
28778         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
28779         config/mips/mips-protos.h, config/mips/mips.c,
28780         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
28781         config/mn10300/mn10300.h, config/mn10300/predicates.md,
28782         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
28783         spelling conventions.
28784
28785         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
28786         Follow spelling conventions.
28787
28788 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
28789
28790         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
28791         warn about C++0x compatibility.
28792
28793 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28794
28795         * config/h8300/h8300.c, config/h8300/h8300.h,
28796         config/h8300/h8300.md: Follow spelling conventions.
28797
28798 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
28799
28800         PR middle-end/30667
28801         * combine.c (try_combine): Do not substitute source operand
28802         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
28803
28804 2007-02-03  Jan Hubicka  <jh@suse.cz>
28805
28806         PR gcov-profile/30650
28807         * value-prof.c (stringop_block_profile): Fix handling of size counter;
28808         do not divide by zero for never executed counters.
28809         (tree_find_values_to_profile): Fix counters.
28810         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
28811
28812 2007-02-03  Ian Lance Taylor  <iant@google.com>
28813
28814         * lower-subreg.c (simple_move_operand): New static function,
28815         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
28816         operands.
28817         (simple_move): Call simple_move_operand.
28818         (find_decomposable_subregs): Add special handling of MEMs.
28819         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
28820         meaning of return value.  If we see a hard register, test whether
28821         it can store a word_mode value.  Change all callers.
28822
28823 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28824
28825         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
28826         ftrapv insns and expanders.
28827         (subdi3): Change define_expand operand 1 to arith11_operand, and
28828         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
28829         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
28830         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
28831         respectively.
28832
28833         PR middle-end/30174
28834         * varasm.c (notice_global_symbol): Treat global objects as weak when
28835         flag_shlib is true.
28836
28837 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28838
28839         * emit-rtl.c (dconstpi): Delete.
28840         (dconstsqrt2): New.
28841         (init_emit_once): Delete dconstpi and init dconstsqrt2.
28842         * real.h (dconstpi): Delete.
28843         (dconstsqrt2): New.
28844         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
28845         (fold_builtin_hypot): Likewise.
28846
28847 2007-02-03  Tom Tromey  <tromey@redhat.com>
28848
28849         PR driver/30246
28850         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
28851         -gcoff3, -gxcoff3, -gvms3 implies -dD.
28852
28853 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
28854
28855         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
28856         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
28857         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
28858         config/rs6000/cell.md, config/rs6000/darwin.h,
28859         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
28860         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
28861         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
28862         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
28863         typos.  Follow spelling conventions.
28864         * doc/invoke.texi: Follow spelling conventions.
28865
28866 2007-02-03  Roger Sayle  <roger@eyesopen.com>
28867
28868         * simplify-rtx.c (simplify_relational_operation_1): Implement some
28869         canonicalization transformations that attempt to simplify integer
28870         constant comparisons to become comparisons against zero.
28871
28872 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28873
28874         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
28875         fabs(x)*sqrt(2).
28876         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
28877         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
28878
28879 2007-02-02  Mike Stump  <mrs@apple.com>
28880
28881         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
28882         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
28883         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
28884         generate a branch island.
28885
28886 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
28887
28888         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
28889         (xtensa_legitimate_address_p): New.
28890         (xtensa_legitimize_address): New.
28891         (xtensa_output_addr_const_extra): New.
28892         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
28893         (BASE_REG_P): New.
28894         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
28895         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
28896         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
28897         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
28898         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
28899         (xtensa_legitimize_address): New.
28900         (xtensa_output_addr_const_extra): New.
28901
28902 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
28903
28904         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
28905
28906 2007-02-02  Ian Lance Taylor  <iant@google.com>
28907
28908         * expmed.c (expand_divmod): Add comment.
28909
28910 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
28911
28912         * emit-rtl.c (renumber_insns): Remove.
28913         * flags.h: Remove the extern for flag_renumber_insns.
28914         * rtl.h: Remove the prototype for renumber_insns.
28915         * toplev.c (flag_renumber_insns): Remove.
28916
28917 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
28918
28919         Revert for x86 darwin:
28920         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
28921
28922         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
28923         code before the following patch under TARGET_MACHO.
28924         (ix86_function_value_regno_p): Likewise.
28925
28926 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28927
28928         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
28929         COMPLEX_EXPR.
28930
28931 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28932
28933         PR target/29682
28934         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
28935         loads to general or fp registers.  Add comments.
28936         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
28937
28938 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
28939
28940         * pointer-set.c (insert_aux): Only return insertion slot.
28941         (pointer_set_insert): Adjust.
28942         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
28943         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
28944         pointer_map_traverse): New.
28945         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
28946         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
28947         pointer_map_contains, pointer_map_traverse): Declare.
28948
28949 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
28950
28951         PR middle-end/30473
28952         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
28953         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
28954
28955 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28956
28957         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
28958
28959         (struct _dep): New type.
28960         (dep_t): New typedef.
28961         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
28962         (DEP_STATUS): New access macro.  The macro with the same name was
28963         renamed to DEP_LINK_STATUS.
28964         (dep_init): Declare function
28965
28966         (struct _dep_link): New type.
28967         (dep_link_t): New typedef.
28968         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
28969         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
28970         (DEP_LINK_STATUS): New macro.
28971         (debug_dep_links): New debug function.
28972
28973         (struct _deps_list): New type.
28974         (deps_list_t): New typedef.
28975         (DEPS_LIST_FIRST): New access macro.
28976         (FOR_EACH_DEP_LINK): New cycle macro.
28977         (create_deps_list, free_deps_list, delete_deps_list): Declare
28978         functions.
28979         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
28980         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
28981         (copy_deps_list_change_con): Ditto.
28982
28983         (move_dep_link): Declare function.
28984
28985         (struct _dep_node): New type.
28986         (dep_node_t): New typedef.
28987         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
28988
28989         (struct haifa_insn_data.back_deps): New field to hold backward
28990         dependencies of the insn.
28991         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
28992         to deps_list_t.
28993         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
28994         Change its type to deps_list_t.
28995         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
28996         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
28997         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
28998
28999         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
29000
29001         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
29002
29003         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
29004         and all callers.
29005         (dep_cost): Declare.
29006
29007         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
29008         (ds_to_dk, dk_to_ds): New functions.
29009
29010         (init_dep_1): New static function.
29011         (init_dep): New function.
29012         (copy_dep): New static function.
29013
29014         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
29015         functions.
29016         (detach_dep_link): New static function.
29017         (move_dep_link): New function.
29018
29019         (dep_links_consistent_p, dump_dep_links): New static functions.
29020         (debug_dep_links): New debugging function.
29021
29022         (deps_obstack, dl_obstack, dn_obstack): New static variables.
29023
29024         (alloc_deps_list, init_deps_list): New static functions.
29025         (create_deps_list): New function.
29026         (clear_deps_list): New static function.
29027         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
29028         (deps_list_consistent_p, dump_deps_list): New static functions.
29029         (debug_deps_list): New function.
29030         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
29031         functions.
29032         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
29033
29034         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
29035         use new scheduler dependencies lists.
29036         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
29037         (sched_analyze): Ditto.  Initialize dependencies lists.
29038         (add_forw_dep, compute_forward_dependences): Update to use new
29039         scheduler dependencies lists.
29040
29041         (init_dependency_caches): Init deps_obstack.
29042         (free_dependency_caches): Free deps_obstack.
29043
29044         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
29045         new scheduler dependencies lists.
29046         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
29047         (add_back_forw_dep, delete_back_forw_dep): Ditto.
29048
29049         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
29050         Update to use new scheduler dependencies lists.
29051         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
29052         (debug_dependencies): Ditto.
29053         (schedule_region): Update comments.
29054
29055         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
29056         scheduler dependencies lists.
29057         (schedule_ebb): Update comments.
29058
29059         * rtl.def (DEPS_LIST): Remove.
29060
29061         * lists.c (unused_deps_list): Remove.
29062         (free_list): Update assertions.
29063
29064         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
29065         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29066
29067         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
29068         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29069
29070         * haifa-sched.c (comments): Update.
29071         (insn_cost1): Remove.  Inline the code into insn_cost ().
29072         (insn_cost): Update to use new scheduler dependencies lists.  Move
29073         processing of the dependency cost to dep_cost ().
29074         (dep_cost): New function.  Use it instead of insn_cost () when
29075         evaluating cost of the dependency.  Use compatible interface to
29076         interact with the target.
29077         (priority): Update to use new scheduler dependencies lists.
29078         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
29079         with greater number of insns that depend on the insn.
29080         (schedule_insn): Update to use new scheduler dependencies lists.  Add
29081         code to free backward dependencies lists.  Inline and optimize code
29082         from resolve_dep () - see PR28071.
29083         (ok_for_early_queue_removal): Update to use new scheduler dependencies
29084         lists.  Update call to targetm.sched.is_costly_dependence hook.
29085
29086         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
29087         scheduler dependencies lists.
29088
29089         (resolve_dep): Remove.  Move the logic to schedule_insn ().
29090         (init_h_i_d): Initialize dependencies lists.
29091
29092         (process_insn_depend_be_in_spec): Rename to
29093         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
29094         dependencies lists.
29095         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
29096         Update to use new scheduler dependencies lists.
29097         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
29098
29099         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
29100         new scheduler dependencies lists.
29101         (build_intra_loop_deps): Ditto.
29102
29103         * target.h (struct _dep): Declare to use in
29104         gcc_target.sched.is_costly_dependence.
29105         (struct gcc_target.sched.adjust_cost): Fix typo.
29106         (struct gcc_target.sched.is_costly_dependence): Change signature to
29107         use single dep_t parameter instead of an equivalent triad.
29108         (struct gcc_target.sched.adjust_cost_2): Remove.
29109
29110         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
29111
29112         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
29113
29114         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
29115         documentation.
29116         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
29117
29118         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
29119         (REG_DEP_TRUE): Document.
29120
29121         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
29122         Change signature to correspond to the targetm.sched.adjust_cost hook.
29123         Update use in TARGET_SCHED_ADJUST_COST_2.
29124         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
29125         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
29126         new scheduler dependencies lists.
29127         (ia64_gen_check): Ditto.
29128
29129         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
29130         scheduler dependencies lists.
29131
29132         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
29133         signature to correspond to the targetm.sched.is_costly_dependence hook.
29134         (is_costly_group): Update to use new scheduler dependencies lists.
29135
29136         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
29137         instead of INSN_COST () macro.
29138
29139 2007-02-01  Ian Lance Taylor  <iant@google.com>
29140
29141         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
29142
29143 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
29144
29145         * pa.md (tp_load): Correct mfctl instruction syntax.
29146
29147 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
29148
29149         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
29150         altivec_padding_size calculation on AIX.  Improve comment, add
29151         assert to verify that it's right.
29152
29153         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
29154         64-bit.
29155
29156 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
29157
29158         PR inline-asm/28686
29159         * global.c (global_alloc): Add mising initialization of
29160         ELIMINABLE_REGSET.
29161
29162 2007-02-01  Roger Sayle  <roger@eyesopen.com>
29163
29164         * alias.c (init_alias_analysis): Correct whitespace.
29165         * bb-reorder.c (fix_edges_for_rarely_executed_code,
29166         partition_hot_cold_basic_blocks): Likewise.
29167         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
29168         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
29169         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
29170         fold_builtin_snprintf_chk, fold_builtin_printf,
29171         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
29172         do_mpfr_arg3, do_mpfr_sincos): Likewise.
29173         * cfgcleanup.c (cleanup_cfg): Likewise.
29174         * cfgexpand.c (tree_expand_cfg): Likewise.
29175         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
29176         * function.c (get_next_funcdef_no): Likewise.
29177         * gengtype.c (main): Likewise.
29178         * genmodes.c (main): Likewise.
29179         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
29180         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
29181         * ifcvt.c (noce_emit_move_insn): Likewise.
29182         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
29183         Likewise.
29184         * stor-layout.c (get_best_mode): Likewise.
29185         * tree-ssa-loop-niter.c (get_val_for): Likewise.
29186         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
29187         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
29188         perform_var_substitution, solve_graph): Likewise.
29189         * tree-vrp.c (vrp_finalize): Likewise.
29190
29191 2007-02-01  Ian Lance Taylor  <iant@google.com>
29192
29193         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
29194         high part of a paradoxical subreg, return a constant zero.
29195
29196 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
29197
29198         * toplev.c (lang_dependent_init): Call init_set_costs.
29199         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
29200
29201 2007-02-01  Richard Guenther  <rguenther@suse.de>
29202
29203         PR middle-end/30656
29204         * fold-const.c (fold_negate_expr): Allow negating a
29205         constant if overflow does not change.
29206
29207 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29208
29209         * doc/c-tree.texi (Expression trees): Improve markup.
29210         * doc/tm.texi (Register Classes, Addressing Modes)
29211         (Floating Point): Fix spacing after abbreviations.  Fix some
29212         typos.
29213
29214 2007-02-01  Ben Elliston  <bje@au.ibm.com>
29215
29216         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
29217         * doc/contrib.texi: Likewise.
29218         * doc/install.texi: Likewise.
29219
29220 2007-01-31  Richard Henderson  <rth@redhat.com>
29221             Ian Lance Taylor  <iant@google.com>
29222
29223         * lower-subreg.c: New file.
29224         * rtl.def (CONCATN): Define.
29225         * passes.c (init_optimization_passes): Add pass_lower_subreg and
29226         pass_lower_subreg2.
29227         * emit-rtl.c (update_reg_offset): New static function, broken out
29228         of gen_rtx_REG_offset.
29229         (gen_rtx_REG_offset): Call update_reg_offset.
29230         (gen_reg_rtx_offset): New function.
29231         * regclass.c: Revert patch of 2006-03-05, restoring
29232         reg_scan_update.
29233         (clear_reg_info_regno): New function.
29234         * dwarf2out.c (concatn_loc_descriptor): New static function.
29235         (loc_descriptor): Handle CONCATN.
29236         * common.opt (fsplit_wide_types): New option.
29237         * opts.c (decode_options): Set flag_split_wide_types when
29238         optimizing.
29239         * timevar.def (TV_LOWER_SUBREG): Define.
29240         * rtl.h (gen_reg_rtx_offset): Declare.
29241         (reg_scan_update): Declare.
29242         * regs.h (clear_reg_info_regno): Declare.
29243         * tree-pass.h (pass_lower_subreg): Declare.
29244         (pass_lower_subreg2): Declare.
29245         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
29246         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
29247         -fsplit-wide-types.
29248         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
29249         * Makefile.in (OBJS-common): Add lower-subreg.o.
29250         (lower-subreg.o): New target.
29251
29252 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29253
29254         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
29255
29256 2007-01-31  Anatoly Sokolov <aesok@post.ru>
29257
29258         PR target/19087
29259         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
29260
29261 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29262
29263         PR middle-end/29335
29264         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
29265
29266 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
29267
29268         * cfgloop.h: Include vec-prim.h.
29269         (enum li_flags): Remove LI_ONLY_OLD.
29270         (loop_iterator): Changed.
29271         (fel_next, fel_init): Iterate over loop tree.
29272         (FOR_EACH_LOOP_BREAK): New macro.
29273         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
29274         FOR_EACH_LOOP.
29275         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
29276         * modulo-sched.c (sms_schedule): Ditto.
29277         * tree-vectorizer.c (vectorize_loops): Ditto.
29278         * doc/loop.texi: Update information on loop numbering and behavior of
29279         FOR_EACH_LOOP wrto new loops.
29280         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
29281         add_to_evolution_1): Test nestedness of loops instead of comparing
29282         their numbers.
29283         * tree-chrec.c (chrec_fold_plus_poly_poly,
29284         chrec_fold_multiply_poly_poly, chrec_evaluate,
29285         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
29286         reset_evolution_in_loop): Ditto.
29287         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
29288
29289 2007-01-31  Dirk Mueller  <dmueller@suse.de>
29290
29291         * c-common.c (warn_about_parentheses): Separate warning about
29292         un-parenthized sequence of comparison operators from the one
29293         which is supposed to warn about x <= y <= z.
29294
29295 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
29296
29297         * optabs.h (enum optab_index): Add new OTI_isinf.
29298         (isinf_optab): Define corresponding macro.
29299         * optabs.c (init_optabs): Initialize isinf_optab.
29300         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
29301         patterns.
29302         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
29303         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
29304         using isinf_optab.
29305         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
29306         expand_builtin_interclass_mathfn.
29307         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
29308         * config/i386/i386.md (UNSPEC_FXAM): New constant.
29309         (fxam<mode>2_i387): New insn pattern.
29310         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
29311         built-in functions as x87 inline asm.
29312
29313 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29314
29315         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
29316
29317 2007-01-30  Eric Christopher  <echristo@apple.com>
29318
29319         * config.gcc: Add geode.
29320
29321 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29322
29323         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
29324         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
29325         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
29326         value-prof.c: Fix comment typos.
29327
29328 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29329
29330         PR c++/24745
29331         * doc/invoke.texi (Wpointer-arith): Document warning.
29332
29333 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
29334
29335         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
29336         the list of discrepancies from the draft TR.
29337
29338 2007-01-30  Dirk Mueller  <dmueller@suse.de>
29339
29340         PR c++/30601
29341         * doc/invoke.texi (-Wreturn-type): Update description to
29342         match new behavior.
29343
29344 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
29345
29346         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
29347
29348 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
29349
29350         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
29351         to handle optabs that operate on floating point input argument and
29352         output to integer output.
29353         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
29354         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
29355         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
29356         expand_builtin_interclass_mathfn ().
29357         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
29358         (ilogbsi2): Remove.
29359         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
29360         ilogbl built-in functions as x87 intrinsics.
29361
29362 2007-01-30  Richard Guenther  <rguenther@suse.de>
29363
29364         PR middle-end/27657
29365         * dwarf2out.c (reference_to_unused): Query varpool if the
29366         variable was output.
29367
29368 2007-01-30  Richard Guenther  <rguenther@suse.de>
29369
29370         PR middle-end/30313
29371         * passes.c (execute_one_pass): Reset in_gimple_form to not
29372         confuse non-unit-at-a-time mode.
29373
29374 2007-01-29  Roger Sayle  <roger@eyesopen.com>
29375             Richard Guenther  <rguenther@suse.de>
29376
29377         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
29378         avoid undefined behaviour on overflow.  Use force_fit_type_double
29379         to construct the constant with the specified TREE_OVERFLOW.
29380
29381 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29382
29383         * config/dfp-bit.c: Add parameterized support for fp exceptions.
29384         * config/dfp-bit.h: Ditto.
29385
29386 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29387
29388         * c-decl.c (pop_scope): Replace warnings with call to
29389         warn_for_unused_label.
29390         * c-common.h (warn_for_unused_label): Declare.
29391         * c-common.c (warn_for_unused_label): Define.
29392
29393 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29394
29395         * tree-optimize.c (update_inlined_to_pointers): Delete unused
29396         function.
29397
29398 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29399
29400         * Makefile.in (USER_H): Remove decfloat.h.
29401         * ginclude/decfloat.h: Delete, moving contents to ...
29402         * ginclude/float.h: Add support for decimal floating point,
29403         guarded by __STDC_WANT_DEC_FP__.
29404
29405 2007-01-29  Mike Stump  <mrs@apple.com>
29406
29407         * doc/gccint.texi (Top): Rename Loop Representation to Loop
29408         Analysis and Representation to resolve case insensitive conflict.
29409         * doc/loop.texi (Loop Analysis and Representation): Likewise.
29410
29411 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
29412
29413         * tree.h (struct tree_memory_tag): Add aliases member.
29414         (MTAG_ALIASES): New macro.
29415         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
29416         (add_may_alias): Remove pointer-set. Update for may_aliases being
29417         a bitmap.
29418         (mark_aliases_call_clobbered): Update for may_aliases being a
29419         bitmap.
29420         (compute_tag_properties): Ditto.
29421         (create_partition_for): Ditto.
29422         (compute_memory_partitions): Ditto.
29423         (dump_may_aliases_for): Ditto.
29424         (is_aliased_with): Ditto.
29425         (add_may_alias_for_new_tag): Ditto.
29426         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
29427         (compute_is_aliased): New function.
29428         (compute_may_aliases): Call compute_is_aliased).
29429         (init_alias_info): Initialize alias_bitmap_obstack.
29430         (union_alias_set_into): New function.
29431         (compute_flow_sensitive_aliasing): Use union_aliases_into.
29432         (have_common_aliases_p): Rewrite to take two bitmaps and use
29433         intersection.
29434         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
29435         Update for bitmaps.
29436         (finalize_ref_all_pointers): Update for add_may_alias changes.
29437         (new_type_alias): Ditto.
29438         * tree-flow-inline.h (may_aliases): Return a bitmap.
29439         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
29440         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
29441         may_aliases being a bitmap.
29442         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
29443         may_aliases now returns a bitmap.
29444         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
29445         being a bitmap.
29446         * tree-ssa-operands.c (add_virtual_operand): Update for
29447         may_aliases being a bitmap.
29448
29449 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
29450
29451         PR tree-optimization/30630
29452         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
29453         variable as changed.
29454
29455 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
29456
29457         PR c++/28266
29458         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
29459         expanded only once even if an error occurs.
29460
29461 2007-01-29  Ben Elliston  <bje@au.ibm.com>
29462
29463         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
29464         (__gcov_average_profiler): Likewise.
29465         (__gcov_ior_profiler): Likewise.
29466         (__gcov_merge_ior): Likewise.
29467
29468 2007-01-28  Jan Hubicka  <jh@suse.cz>
29469
29470         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
29471         * value-prof.c (stringop_block_profile): Likewise.
29472
29473 2007-01-28  Jan Hubicka  <jh@suse.cz>
29474
29475         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
29476         Add variant handling histograms; add wrapper.
29477         (clear_storage_via_libcall): Export.
29478         (emit_block_move_hints): Break out from ...; add histograms.
29479         (emit_block_move): ... this one.
29480         (clear_storage_hints): Break out from ...; add histograms.
29481         (clear_storage): ... this one.
29482         (set_storage_via_memset): Handle histogram.
29483         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
29484         (clear_storage_hints, clear_storage_via_libcall): Declare.
29485         (set_storage_via_setmem): Update prototype.
29486         * doc/md.texi (movmem, setmem): Document new arguments.
29487
29488         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
29489         Add new histograms.
29490         (stringop_block_profile): New global function.
29491         (tree_stringops_values_to_profile): Profile block size and alignment.
29492         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
29493         HIST_TYPE_IOR.
29494         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
29495         (stringop_block_profile): Declare.
29496         * builtins.c: Include value-prof.h.
29497         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
29498         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
29499         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
29500         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
29501         * profile.c (instrument_values): Add new counters.
29502         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
29503         calls.
29504         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
29505         (tree_init_edge_profiler): Build new profilers.
29506         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
29507         (pass_tree_profile): Add dump.
29508         (tree_profile_hooks): Update.
29509         * Makefile.in (LIBGCOV): Add new constants.
29510         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
29511         __gcov_ior_profiler): New.
29512         * i386.md (movmem/setmem expanders): Add new optional arguments.
29513
29514 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
29515
29516         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
29517
29518 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29519
29520         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
29521         (tree_unswitch_single_loop): Pass eni_size_weights to
29522         tree_num_loop_insns.
29523         * tree-ssa-loop-manip.c: Include tree-inline.h.
29524         (can_unroll_loop_p): Pass eni_size_weights to
29525         tree_num_loop_insns.
29526         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
29527         Pass eni_size_weights to estimate_num_insns.
29528         * tree.h (init_inline_once): Export.
29529         * toplev.c (backend_init): Call init_inline_once.
29530         * cgraphunit.c (cgraph_process_new_functions,
29531         cgraph_analyze_function): Pass eni_inlining_weights to
29532         estimate_num_insns.
29533         * ipa-inline.c (compute_inline_parameters): Ditto.
29534         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
29535         to estimate_num_insns.
29536         (try_unroll_loop_completely): Pass eni_size_weights to
29537         tree_num_loop_insns.
29538         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
29539         ot estimate_num_insns.
29540         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
29541         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
29542         * tree-inline.c (eni_inlining_weights, eni_size_weights,
29543         eni_time_weights): New variables.
29544         (init_inline_once): Initialize them.
29545         (struct eni_data): Mew.
29546         (estimate_num_insns_1, estimate_num_insns): Use weights.
29547         * tree-inline.h (struct eni_weights_d): New.
29548         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
29549         (estimate_num_insns): Declaration changed.
29550         * cfgloop.h (tree_num_loop_insns): Declaration changed.
29551         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
29552         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
29553
29554 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29555
29556         * tree-data-ref.c (conflict_fn): Assert that the number of affine
29557         relations in the conflict function is valid.
29558
29559 2007-01-27  Ian Lance Taylor  <iant@google.com>
29560
29561         * common.opt: Add fstrict-overflow.
29562         * opts.c (decode_options): Set flag_strict_overflow if -O2.
29563         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
29564         (TYPE_OVERFLOW_UNDEFINED): Define.
29565         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
29566         Replace all uses.
29567         * tree.h (TYPE_TRAP_SIGNED): Don't define.
29568         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
29569         (fold_negate_expr): Likewise.
29570         (make_range): Likewise.
29571         (extract_muldiv_1): Likewise.
29572         (maybe_canonicalize_comparison): Likewise.
29573         (fold_comparison): Likewise.
29574         (fold_binary): Likewise.
29575         (tree_expr_nonnegative_p): Likewise.
29576         (tree_expr_nonzero_p): Likewise.
29577         * tree-vrp.c (compare_values): Likewise.
29578         (extract_range_from_binary_expr): Likewise.
29579         (extract_range_from_unary_expr): Likewise.
29580         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
29581         Likewise.
29582         (nowrap_type_p): Likewise.
29583         * tree-scalar-evolution.c (simple_iv): Likewise.
29584         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
29585         (build_range_check): Likewise.
29586         (extract_muldiv_1): Likewise.
29587         (fold_comparison): Likewise.
29588         * tree-vrp.c (vrp_int_const_binop): Likewise.
29589         (extract_range_from_unary_expr): Likewise.
29590         * convert.c (convert_to_integer): Likewise.
29591         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
29592         (fold_comparison): Likewise.
29593         (fold_binary): Likewise.
29594         * optabs.c (optab_for_tree_code): Likewise.
29595         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
29596         * simplify-rtx.c (simplify_const_relational_operation): Check
29597         flag_strict_overflow and flag_trapv.
29598         (simplify_const_relational_operation): Likewise.
29599         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
29600         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
29601         -fstrict-overflow.
29602
29603 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29604
29605         * tree.c (tree_fold_gcd): Delete.
29606         * tree.h (tree_fold_gcd): Remove prototype.
29607         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
29608         test whether one constant integer is a multiple of another.  Instead
29609         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
29610         * fold-const.c (multiple_of_p): We've determined both TOP and
29611         BOTTOM are integer constants so we can call int_const_binop directly
29612         instead of the more generic const_binop.
29613
29614 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29615
29616         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
29617         1*X check that the constant hasn't overflowed, to preserve the
29618         TREE_OVERFLOW bit.
29619         (round_up): Provide an efficient implementation when rouding-up an
29620         INTEGER_CST to a power-of-two.
29621
29622 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29623
29624         * doc/sourcebuild.texi: Add comma for clarity.
29625         * doc/extend.texi: Fix some typos.
29626         * doc/passes.texi: Likewise.
29627         * doc/cppinternals.texi: Likewise.
29628         * doc/c-tree.texi: Likewise.
29629         * doc/tree-ssa.texi: Likewise.
29630         * doc/install.texi: Likewise.
29631
29632 2007-01-27  Jan Hubicka  <jh@suse.cz>
29633
29634         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
29635         (pass_sra): Do not require alias information.
29636         * passes.c (init_optimization_passes): Add SRA
29637
29638 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
29639
29640         * tracer.c (rest_of_handle_tracer): We already cleaned
29641         up the CFG in tracer() so don't do it here again.
29642         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
29643         cleanup_cfg here, either.  And don't call renumber_insns.
29644
29645         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
29646         and BB_HEAD are in the insn stream here.  Instead make sure
29647         that BB_INSN is valid on all insns.  Also, do check here that
29648         there are no pending branch predictions...
29649         (rtl_verify_flow_info): ...instead of doing it here.  Checks
29650         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
29651         here.
29652
29653 2007-01-26  Roger Sayle  <roger@eyesopen.com>
29654
29655         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
29656         function to simplify/factorize operand order canonicalization.
29657         (ix86_fixup_binary_operands): Reorganize using the above function.
29658         (ix86_binary_operator_ok): Likewise.
29659
29660 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
29661
29662         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
29663         file scope from optimize_attrs.
29664         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
29665         up search.
29666         (optimize_attrs): Clear insn_code_values after freeing it.
29667
29668 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29669
29670         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
29671         a parts.base assignment.
29672
29673 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29674
29675         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
29676         (compute_subscript_distance, initialize_data_dependence_relation,
29677         finalize_ddr_dependent, analyze_ziv_subscript,
29678         analyze_siv_subscript_cst_affine,
29679         compute_overlap_steps_for_affine_univar,
29680         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
29681         analyze_siv_subscript, analyze_miv_subscript,
29682         analyze_overlapping_iterations, subscript_dependence_tester_1,
29683         compute_self_dependence, free_dependence_relation): Work
29684         with affine_fn instead of chrecs.
29685         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
29686         common_affine_function, affine_function_base,
29687         affine_function_constant_p, affine_fn_op, affine_fn_plus,
29688         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
29689         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
29690         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
29691         (all_chrecs_equal_p): Removed.
29692         * tree-data-ref.h (affine_fn, conflict_function): New types.
29693         (struct subscript): Change type of conflicting_iterations_in_a
29694         and conflicting_iterations_in_b.
29695
29696 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
29697
29698         PR other/30182
29699         * config/pa/pa.h (TARGET_HPUX_11): New.
29700         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
29701         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
29702
29703 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
29704         Richard Guenther  <rguenther@suse.de>
29705
29706         * tree-ssa-structalias.c (solve_graph): Handle case
29707         we merged the variable to another.
29708
29709 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29710
29711         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
29712         functions.
29713
29714         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
29715         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
29716
29717 2007-01-25  DJ Delorie  <dj@redhat.com>
29718
29719         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
29720         allow changes to modes which don't fit in those registers.
29721
29722         * reload1.c (choose_reload_regs): Check for invalid subregs before
29723         computing their locations, not after.
29724
29725 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
29726
29727         PR 25127
29728         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
29729         save Altivec registers in an eh_return function.
29730         (compute_vrsave_mask): Likewise.
29731         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
29732         for saving Altivec registers.
29733         (rs6000_emit_prologue): Don't allocate stack twice in
29734         eh_return function.  Correct expected value of altivec_save_offset
29735         when using save_world.  Describe save of R0 to stack when using
29736         save_world.  Describe stack pointer adjustment when using
29737         save_world.  Remove duplicated eh_return parameter register saving.
29738         Update sp_offset variable after save_world.
29739         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
29740         darwin-world.asm.
29741         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
29742         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
29743         implies Altivec.
29744
29745 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29746
29747         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
29748
29749 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29750
29751         PR other/30182
29752         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
29753         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
29754
29755 2007-01-25  Richard Guenther  <rguenther@suse.de>
29756
29757         * doc/invoke.texi (-Wcoverage-mismatch): Document.
29758         * common.opt (-Wcoverage-mismatch): New warning option.
29759         * coverage.c (get_coverage_counts): Ignore coverage mismatch
29760         if -Wcoverage-mismatch is given.
29761
29762 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
29763
29764         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
29765         (ipcp_driver): Change to static definition.
29766         Add dumping of the ifunctions.
29767         (constant_val_insert): Remove unused parameter. Support for SSA.
29768         (ipcp_propagate_const): Support for SSA.
29769         (ipcp_profile_bb_print): Print only analyzed nodes.
29770         (ipcp_replace_map_create): Remove support for Fortran constant
29771         for now.
29772         * ipa-prop.c (ipa_method_modify_stmt,
29773         ipa_callsite_compute_param): Support for SSA.
29774         * ipa-prop.h (ipcp_driver): Remove declaration.
29775         (IS_VALID_TREE_MAP_INDEX): Add define.
29776
29777 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
29778
29779         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
29780
29781 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29782
29783         PR middle-end/30447
29784         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
29785         constant argument to cabs and do it without checking for
29786         -funsafe-math-optimizations.
29787
29788 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
29789
29790         * c-common.h (RID_FIRST_CXX0X): New.
29791         (RID_LAST_CXX0X): New.
29792         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
29793         by -Wall.
29794         * c.opt (Wc++0x-compat): New.
29795         * doc/invoke.texi (-Wc++0x-compat): Document.
29796
29797 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29798
29799         * builtins.c (fold_builtin_carg): New.
29800         (fold_builtin_1): Use it.
29801
29802 2007-01-24  Jan Hubicka  <jh@suse.cz>
29803
29804         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
29805
29806         * ipa-inline.c (initial_insns, max_insns): Delete.
29807         (compute_max_insns): New function.
29808         (cgraph_decide_inlining_of_small_function): Use it; take minimal
29809         amount of insns as base for code growth.
29810         (cgraph_decide_inlining): Make initial_insns local; do not compute
29811         max_insns.
29812         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
29813         * doc/invoke.texi (inline-unit-growth): Update docs.
29814
29815 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
29816
29817         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
29818         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
29819         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
29820         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
29821         for CPUs that have PTA_CX16 set.
29822
29823         PR middle-end/27416
29824         * gimplify.c (omp_check_private): New function.
29825         (gimplify_scan_omp_clauses): Use it for
29826         firstprivate/lastprivate/reduction.
29827
29828         PR middle-end/30494
29829         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
29830         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
29831
29832         PR middle-end/30421
29833         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
29834         If lower_lastprivate_clauses emits some statements, append them
29835         to dlist rather than body_p and to body_p append an initializer.
29836         (lower_omp_for): Adjust caller.
29837
29838 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
29839
29840         * target.h (globalize_decl_name): New.
29841         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29842         * output.h (default_globalize_decl_name): New.
29843         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
29844         globalize_label.
29845         (globalize_decl): Ditto.
29846         (default_globalize_decl_name): New.
29847         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
29848         (ia64_handle_version_id_attribute): New.
29849         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29850         (ia64_asm_output_external): Use globalize_decl_name instead
29851         of globalize_label.
29852         * doc/extend.texi (version_id): New pragma.
29853         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
29854
29855 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29856
29857         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
29858         _uleb128_t and _Unwind_SWord with _sleb128_t.
29859         * unwind-dw2.c (extract_cie_info, execute_stack_op,
29860         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
29861         Likewise.
29862         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
29863         * unwind-pe.h (read_uleb128, read_sleb128,
29864         read_encoded_value_with_base): Likewise.
29865         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
29866
29867 2007-01-24  Richard Guenther  <rguenther@suse.de>
29868
29869         * builtins.c (expand_builtin_cexpi): Get the fndecl
29870         for cexp in the correct way.
29871
29872 2007-01-24  Jan Hubicka  <jh@suse.cz>
29873
29874         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
29875         of calls.
29876
29877 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29878
29879         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
29880         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
29881         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
29882         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
29883         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
29884         __SIZEOF_PTRDIFF_T__.
29885         * doc/cpp.texi: Documentation for the new builtin macros added.
29886
29887 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
29888
29889         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
29890         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
29891         instead of operands[2] to avoid access past the end of array.
29892
29893 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
29894
29895         * reload1.c (emit_reload_insns): Pass the reload register
29896         for a non-spill output reload through forget_old_reloads_1.
29897
29898 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
29899
29900         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
29901         _SOFT_DOUBLE if doubles use software floating-point.
29902         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
29903         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29904         * config/rs6000/darwin-ldouble.c: Also compile functions for
29905         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
29906         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29907         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
29908         commented-out long double override.
29909         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
29910         * config/rs6000/eabispe.h: Likewise.
29911         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
29912         long double for non-SPE.
29913         (rs6000_handle_option): Likewise.
29914         (invalid_e500_subreg): Disallow more subregs involding DImode,
29915         DFmode, TImode or TFmode.
29916         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
29917         E500 double.
29918         (legitimate_lo_sum_address_p): Also check for TFmode for E500
29919         double.
29920         (rs6000_legitimize_address): Also handle TFmode for E500 double.
29921         (rs6000_legitimize_reload_address): Also handle TFmode for E500
29922         double.
29923         (rs6000_legitimate_address): Also check for TFmode for E500
29924         double.
29925         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
29926         (spe_build_register_parallel): Handle TFmode and TCmode.
29927         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
29928         double.
29929         (function_arg): Handle TFmode and TCmode for E500 double.
29930         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
29931         in general.
29932         (print_operand): Handle TFmode and TImode for %y.
29933         (rs6000_generate_compare): Handle TFmode comparisons for E500
29934         double.
29935         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
29936         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
29937         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
29938         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
29939         TFmode for E500 double.
29940         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
29941         (floatsidf2): Enable for E500 double.
29942         (movtf_softfloat): Use rs6000_nonimmediate_operand.
29943         (extenddftf2): Change to extenddftf2_fprs.
29944         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
29945         depending on TARGET_E500_DOUBLE.
29946         (extendsftf2): Enable for E500 double.
29947         (trunctfdf2): Enable for E500 double.
29948         (trunctfsf2): Change to trunctfsf2_fprs.
29949         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
29950         depending on TARGET_E500_DOUBLE.
29951         (floatsitf2): Enable for E500 double.
29952         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
29953         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
29954         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
29955         (negtf2): Change to negtf2_internal.
29956         (negtf2): New expander.
29957         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
29958         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
29959         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
29960         (movdi_internal32): Use rs6000_nonimmediate_operand.
29961         (unnamed splitter): Likewise.
29962         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
29963         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
29964         (SPE64TF, DITI): New mode macros.
29965         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
29966         modes.
29967         (frob_tf_ti): New.
29968         (frob_<mode>_di_2): New.
29969         (frob_tf_di_8_2): New.
29970         (frob_di_df): Change to frob_di_<mode>; allow more modes.
29971         (frob_ti_tf): New.
29972         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
29973         more modes.
29974         (frob_ti_<mode>_8_2): New.
29975         (frob_ti_tf_2): New.
29976         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
29977         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
29978         TFmode.
29979         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
29980         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
29981         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
29982         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
29983         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
29984         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
29985         tsttflt_gp): New.
29986
29987 2007-01-23  Ian Lance Taylor  <iant@google.com>
29988
29989         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
29990         insn-*.o first.
29991         (OBJS-archive): Reformat, alphabetize.
29992         (OBJS): Change out_object_file to OBJS-md.
29993
29994 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
29995
29996         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
29997         JUMP_P and CALL_P predicates where applicable.
29998         * config/i386/i386.c: Ditto.
29999         * config/i386/i386.md: Ditto.
30000         * config/i386/mmx.md: Ditto.
30001         * config/i386/predicates.md: Ditto.
30002
30003 2007-01-22  Andreas Schwab  <schwab@suse.de>
30004
30005         * config/m68k/m68k.h: Fix comment.
30006
30007 2007-01-22  Jan Hubicka  <jh@suse.cz>
30008
30009         * passes.c (init_optimization_passes): Do not rerun
30010         pass_early_warn_uninitialized.
30011
30012 2007-01-22  Richard Guenther  <rguenther@suse.de>
30013
30014         PR tree-optimization/30038
30015         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
30016         function.
30017         (execute_cse_sincos_1): Likewise.
30018         (execute_cse_sincos): Likewise.
30019         (gate_cse_sincos): Likewise.
30020         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
30021         the cexpi() canonicalization of sincos().
30022         * tree-pass.h (pass_cse_sincos): Declare.
30023         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
30024
30025 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
30026
30027         PR rtl-optimization/29329
30028         * combine.c (replaced_rhs_insn): Rename to i2mod.
30029         (replaced_rhs_value): Rename to i2mod_new_rhs.
30030         (i2mod_old_rhs): New global variable.
30031         (combine_instructions): Adjust for above change.  Save a copy of
30032         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
30033         note are substituted in the second instruction.
30034         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
30035         ditch the note if it pertains to the second eliminated register
30036         and this register is mentioned in i2mod_old_rhs.
30037
30038         Revert:
30039         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
30040
30041         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
30042         the insn to which the note was originally attached.
30043
30044 2007-01-21  Jan Hubicka  <jh@suse.cz>
30045
30046         * ipa-inline.c (inlining_mode): Comment, move up.
30047         (cgraph_decide_inlining_incrementally): Do not perform inlining
30048         itself; fix handling of flattening of self recursive functions.
30049         (cgraph_find_cycles): Remove.
30050         (cgraph_flatten_node): Remove.
30051         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
30052         (try_inline): New function.
30053         (cgraph_early_inlining): Update call of
30054         cgraph_decide_inlining_incrementally.  Apply inlining here.
30055         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
30056
30057 2007-01-21  Dirk Mueller  <dmueller@suse.de>
30058
30059         PR bootstrap/30511
30060         * tree-vrp.c (check_array_bounds): do not warn
30061         about ADDR_EXPR's of ARRAY_REF's which are immediately
30062         used in binary expressions.
30063
30064 2007-01-21  Ira Rosen  <irar@il.ibm.com>
30065
30066         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
30067         read_write_dep and macros for its access.
30068         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
30069         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
30070         argument, call vect_check_interleaving for every independent pair of
30071         data-refs. Mark loads that access the same memory location as a store
30072         in the loop.
30073         (vect_check_dependences): Remove.
30074         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
30075         call, fix the call to vect_analyze_data_ref_dependence.
30076         (vect_analyze_data_ref_access): For statements that access the same
30077         data-ref, check that they are not stores; for loads, check that there
30078         is no store that access the same location.
30079
30080 2007-01-20  Roger Sayle  <roger@eyesopen.com>
30081             Joseph Myers  <joseph@codesourcery.com>
30082
30083         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
30084         (-fdump-rtl-stack): Likewise.
30085         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
30086         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
30087         (-mpt-fixed): Use @minus{} for minus sign.
30088         (Using Precompiled Headers): Fix under/overfull hbox.
30089
30090 2007-01-20  Jan Hubicka  <jh@suse.cz>
30091
30092         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
30093         place within annotation.
30094
30095 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30096
30097         * pa.c (output_move_double): Change array size of xoperands to 4.
30098
30099 2007-01-20  Jan Hubicka  <jh@suse.cz>
30100
30101         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
30102         as temporary.
30103
30104 2007-01-19  Ian Lance Taylor  <iant@google.com>
30105
30106         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
30107         constant to unsigned HOST_WIDE_INT before negating.
30108
30109 2007-01-19  Ian Lance Taylor  <iant@google.com>
30110
30111         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
30112         to unsigned.
30113         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
30114         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30115         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
30116         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
30117         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30118         (realloc_vdef, realloc_vuse): Change second parameter to
30119         unsigned.
30120         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
30121         fields to unsigned.
30122         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
30123         unsigned. Change x and lim locals to unsigned.
30124         (realloc_vdef, realloc_vuse): Change num_elem parameter to
30125         unsigned.
30126         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
30127         (copy_virtual_operands): Change i and n locals to unsigned.
30128
30129 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30130
30131         PR middle-end/29335
30132         * builtins.c (fold_builtin_1): Handle builtin fdim.
30133
30134 2007-01-20  Jan Hubicka  <jh@suse.cz>
30135
30136         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
30137         * tree-ssa-structalias.c (compute_points_to_sets): Do call
30138         init_alias_heapvars.
30139         (init_alias_heapvars): Initialize only when not already initialized.
30140         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
30141
30142 2007-01-19  Roger Sayle  <roger@eyesopen.com>
30143
30144         * common.opt (fsigned-zeros): New command line option.
30145         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
30146         of flag_unsafe_math_optimizations.
30147         * opts.c (set_fast_math_flags): The -ffast-math command line option
30148         implies -fno-signed-zeros.
30149         (fast_math_flags_set_p): Likewise.
30150
30151         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
30152         the documentation of -ffast-math appropriately.  Wrap long lines.
30153
30154 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
30155
30156         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
30157         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
30158
30159 2007-01-19  Tomas Bily  <tbily@suse.cz>
30160
30161         * cgraphunit.c (cgraph_finalize_function): Updating of pid
30162         * tree-profile.c:
30163         (tree_init_ic_make_global_vars): New function
30164         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
30165         (tree_gen_ic_profiler): New function
30166         (tree_gen_ic_func_profiler): New function
30167         (tree_profiling): Added calling of tree_gen_ic_func_profiler
30168         (tree_profile_hooks): Added hook for indirec/virtual calls
30169         * value-prof.c (tree_find_values_to_profile): New case for
30170         indirect calls
30171         (tree_values_to_profile): Call for determining indirect/virtual
30172         counters
30173         (tree_indirect_call_to_profile): New function
30174         (tree_ic_transform): New function
30175         (tree_ic): New function
30176         (find_func_by_pid): New function
30177         (init_pid_map): New function
30178         (tree_value_profile_transformations): Added check for
30179         indirect/virtual call transformation
30180         * value-prof.h (enum hist_type): New counter type for
30181         indirect/virtual calls
30182         (profile_hooks): Added new hook for profiling indirect/virtual
30183         calls
30184         * profile.c (instrument_values): New case for indirect/virtual
30185         call added
30186         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
30187         (GCOV_COUNTER_V_INDIR): New counter type
30188         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
30189         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
30190         call added
30191         * cgraph.c: Definition of cgraph_max_pid
30192         (cgraph_create_node): Default init of pid attribute
30193         * cgraph.h: Declaration of cgraph_max_pid
30194         (struct cgraph_node): Added pid attribute
30195         * libgcov.c (__gcov_indirect_call_profiler): New function
30196         (__gcov_one_value_profiler_body): New function
30197         (__gcov_one_value_profiler): Body was moved to
30198         __gcov_one_value_profiler_body and calls it
30199
30200 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
30201
30202         * doc/gty.texi (Options): Document the mark_hook option to GTY.
30203         * gengtype.c (write_types_data, write_func_for_structure,
30204         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
30205         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
30206         (walk_type, write_func_for_structure): Generate the mark_hook if
30207         needed.
30208
30209 2007-01-19  Jan Hubicka  <jh@suse.cz>
30210
30211         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
30212         'early' argument take inlining mode argument specifying whether to
30213         inline for size/speeed or all functions; add support for flattening;
30214         improve dumpting.
30215         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
30216
30217 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30218
30219         PR c++/17947
30220         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
30221         the name of the declared identifier.
30222
30223 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30224
30225         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
30226         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
30227         duplicate evaluation.
30228
30229 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30230
30231         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
30232         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
30233         to XFMode, use acosxf2 and truncate result to requested mode.
30234         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
30235         (asin<mode>2): Similarly, with asin expanders.
30236         (*fscalexf4_i387): Rename from *fscalexf4.
30237         (expNcorexf3): New expander.
30238         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
30239         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
30240         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
30241         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
30242         patterns for SSE math.
30243         (exp10<mode>2): Similarly, with exp10 expanders.
30244         (exp2<mode>2): Similarly, with exp2 expanders.
30245         (expm1<mode>2): Similarly, with expm1 expanders.
30246         (ldexp<mode>3): Similarly, with ldexp expanders.
30247         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
30248         Use gen_truncxf<mode>2_i387_noop to truncate result.
30249
30250 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30251
30252         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
30253         for ColdFire targets.
30254
30255 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
30256             Richard Sandiford  <richard@codesourcery.com>
30257
30258         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
30259         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
30260         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
30261         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
30262         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30263         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30264
30265 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30266
30267         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
30268         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
30269         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
30270         (*adddi_dilshr32_cf): New pattern.
30271         (adddi3, subdi3): Remove first alternatives.
30272
30273 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30274
30275         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
30276         implemented using move.l, do not use its cc result for floating-point
30277         comparisons.
30278
30279 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30280
30281         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
30282         from accepting 's' constraints if flag_pic.
30283
30284 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30285
30286         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
30287         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
30288         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
30289         condition from TARGET_68881 to TARGET_HARD_FLOAT.
30290
30291 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
30292
30293         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
30294         ColdFire alternatives.
30295         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
30296         * config/m68k/m68k.md (clzsi2): Define for ColdFire
30297         architectures that support ff1 instruction.
30298
30299 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30300             Julian Brown  <julian@codesourcery.com>
30301
30302         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
30303         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
30304         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
30305         Add commentary.
30306
30307 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30308
30309         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
30310         and return a bool.
30311         (output_move_const_into_data_reg, output_move_simode_const): Delete.
30312         * config/m68k/m68k.c (const_method, const_int_cost): Take a
30313         HOST_WIDE_INT instead of an rtx.
30314         (m68k_rtx_costs): Update call accordingly.
30315         (output_move_const_into_data_reg): Likewise.  Fix formatting.
30316         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
30317         Return a bool.
30318         (output_move_simode_const): Update calls after above changes.
30319         Rework to use automatic variables and predicates like MEM_P.
30320         * config/m68k/m68k.md (pushexthisi_const): Update call to
30321         valid_mov3q_const.
30322
30323 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30324
30325         * tree-ssa-alias.c (perform_var_substitution): Fix typo
30326         in dump_flags test.
30327
30328 2007-01-19  Richard Guenther  <rguenther@suse.de>
30329
30330         * builtins.c (expand_builtin_cexpi): Fall back to expanding
30331         via cexp in case sincos is not available.
30332
30333 2007-01-19  Richard Guenther  <rguenther@suse.de>
30334
30335         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
30336         * defaults.h (TARGET_HAS_SINCOS): Default to off.
30337         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
30338         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
30339         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
30340         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
30341         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
30342         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
30343
30344 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30345
30346         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
30347         New insn patterns.
30348         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
30349         (atan2xf3): Directly generate RTL pattern.
30350         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
30351         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30352         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30353         disable patterns for SSE math.
30354         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
30355         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30356         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30357         disable patterns for SSE math.
30358
30359 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
30360
30361         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
30362
30363 2007-01-18  Roger Sayle  <roger@eyesopen.com>
30364
30365         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
30366         VIEW_CONVERT_EXPR to the same type as it's operand.
30367
30368 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
30369
30370         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
30371         configured for long double 128.
30372
30373 2007-01-18  Mike Stump  <mrs@apple.com>
30374
30375         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
30376         error.
30377
30378 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
30379
30380         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
30381         type correct.
30382
30383 2007-01-18  Jan Hubicka  <jh@suse.cz>
30384
30385         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
30386         greater than NUM_VOP_FREE_BUCKETS.
30387
30388 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
30389
30390         * tree-ssa-structalias.c: Update comments.
30391         (ptabitmap_obstack): Removed.
30392         (pta_obstack): New.
30393         (oldpta_obstack): Ditto.
30394         (stats): Add a few members.
30395         (struct variable_info): Remove node, complex, address_taken, and
30396         indirect_target members. Add oldsolution member.
30397         (new_var_info): Do not initialize removed members.
30398         (constraint_expr_type): Remove INCLUDES.
30399         (constraint_graph): Add size, implicit_preds, rep,
30400         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
30401         (FIRST_REF_NODE): New macro.
30402         (LAST_REF_NODE): Ditto.
30403         (FIRST_ADDR_NODE): Ditto.
30404         (find): New function.
30405         (unite): Ditto.
30406         (dump_constraint): Do not handle INCLUDES.
30407         (insert_into_complex): Do not insert duplicate constraints.
30408         (condense_varmap_nodes): Renamed and rewritten into ...
30409         (merge_node_constraints): This. Also fix bug in handling of
30410         offseted copy constraints.
30411         (clear_edges_for_node): No longer need to deal with preds at all,
30412         or removing associated preds/succs.
30413         (merge_graph_nodes): Deal with indirect_cycles.
30414         Don't deal with predecessors.
30415         (add_implicit_graph_edge): New function.
30416         (add_pred_graph_edge): Ditto.
30417         (add_graph_edge): Don't deal with predecessors.
30418         (build_constraint_graph): Removed.
30419         (build_pred_graph): New function.
30420         (build_succ_graph): Ditto.
30421         (struct scc_info): Removed in_component. Added roots, dfs, and
30422         node_mapping. Remove visited_index, unification_queue.
30423         (scc_visit): Deal with union-find we do now.
30424         Deal with cycles with REF nodes.
30425         (collapse_nodes): Renamed and rewritten to ...
30426         (unify_nodes): This.
30427         (process_unification_queue): Removed.
30428         (topo_visit): Cleanup
30429         (do_da_constraint): Use find.
30430         (do_sd_constraint): Ditto.
30431         (do_ds_constraint): Ditto.
30432         (do_complex_constraint): Ditto.
30433         (init_scc_info): Update for removed and added members.
30434         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
30435         (find_indirect_cycles): This.
30436         (equivalence_class): New variable.
30437         (label_visit): New function.
30438         (perform_variable_substitution): Rewritten.
30439         (free_var_substitution_info): New function.
30440         (find_equivalent_node): Ditto.
30441         (move_complex_constraints): Ditto.
30442         (eliminate_indirect_cycles): Ditto.
30443         (solve_graph): Only propagate changed bits.
30444         Use indirect cycle elimination.
30445         Use find.
30446         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
30447         (tree_id_eq): Renamed to ...
30448         (tree_vi_eq): This. Update for member change
30449         (insert_id_for_tree): Renamed and rewritten to ...
30450         (insert_vi_for_tree): This.
30451         (lookup_id_for_tree): Renamed and rewritten to ...
30452         (lookup_vi_for_tree): This.
30453         (get_id_for_tree): Renamed and rewritten to ...
30454         (get_vi_for_tree): Ditto.
30455         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
30456         (process_constraint): Don't handle INCLUDES.
30457         Remove special ADDRESSOF case.
30458         (find_func_aliases): Rewrite to use vi functions instead of id
30459         ones.
30460         (create_function_info_for): Ditto.
30461         (create_variable_info_for): Ditto.
30462         (intra_create_variable_infos): Ditto.
30463         (merge_smts_into): Ditto.
30464         (find_what_p_points_to): Ditto.
30465         (init_base_vars): Ditto.
30466         (init_alias_vars): Ditto.
30467         (remove_preds_and_fake_succs): New function.
30468         (dump_sa_points_to_info): Dump new stats.
30469         (dump_solution_for_var): Use find.
30470         (set_used_smts): Fix formatting.
30471         (compute_points_to_sets): Updated for new functions.
30472         (ipa_pta_execute): Ditto.
30473
30474 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30475             Richard Sandiford  <richard@codesourcery.com>
30476
30477         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
30478         parallels.
30479         * calls.c (expand_call): If the return value is a PARALLEL,
30480         extract its first member.
30481         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
30482         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30483         use FUNCTION_EXTRA_EPILOGUE.
30484         (m68k_function_value): Return a PARALLEL if the return value
30485         is of a pointer type.
30486         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
30487         (FUNCTION_EXTRA_EPILOGUE): Remove.
30488         * config/m68k/m68k.md (D0_REG): New constant.
30489
30490 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30491
30492         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30493         output a NOP for empty epilogues.
30494
30495 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30496
30497         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
30498         before function.  Extend register save check to include all
30499         registers, not just integer ones.
30500
30501 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30502
30503         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
30504         (m68k_use_return_insn): ...this.
30505         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
30506         * config/m68k/m68k.c (use_return_insn): Rename to...
30507         (m68k_use_return_insn): ...this.
30508         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
30509         of USE_RETURN_INSN.
30510
30511 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30512
30513         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
30514         nearest even, fix denormal rounding overflow.
30515
30516 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30517
30518         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
30519         f%$smove and f%$move.
30520         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
30521         (extendsfdf2_cf): Use fdmove instead of f%&move.
30522         (truncdfsf2_cf): Use fsmove instead of f%$smove.
30523         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
30524
30525 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30526
30527         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
30528         GPR<-GPR moves.
30529
30530 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30531
30532         * real.h (real_format): Add a canonical_nan_lsbs_set field.
30533         (coldfire_single_format): Declare.
30534         (coldfire_double_format): Likewise.
30535         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
30536         of qnan_msb_set to determine the lower bits of a canonical
30537         NaN significand.
30538         (encode_ieee_double): Likewise.
30539         (encode_ieee_quad): Likewise.
30540         (ieee_single_format): Initialize canonical_nan_lsbs_set.
30541         (mips_single_format): Likewise.
30542         (ieee_double_format): Likewise.
30543         (mips_double_format): Likewise.
30544         (ieee_extended_motorola_format): Likewise.
30545         (ieee_extended_intel_96_format): Likewise.
30546         (ieee_extended_intel_128_format): Likewise.
30547         (ieee_extended_intel_96_round_53_format): Likewise.
30548         (ibm_extended_format): Likewise.
30549         (mips_extended_format): Likewise.
30550         (ieee_quad_format): Likewise.
30551         (mips_quad_format): Likewise.
30552         (vax_f_format): Likewise.
30553         (vax_d_format): Likewise.
30554         (vax_g_format): Likewise.
30555         (i370_single_format): Likewise.
30556         (i370_double_format): Likewise.
30557         (decimal_single_format): Likewise.
30558         (decimal_double_format): Likewise.
30559         (decimal_quad_format): Likewise.
30560         (c4x_single_format): Likewise.
30561         (c4x_extended_format): Likewise.
30562         (real_internal_format): Likewise.
30563         (coldfire_single_format): New real_format.
30564         (coldfire_double_format): Likewise.
30565         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
30566         canonical_nan_lsbs_set.
30567         (pdp11_d_format): Likewise.
30568         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
30569         if TARGET_COLDFIRE_CPU.
30570
30571 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30572
30573         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
30574         (output_call, m68k_legitimize_call_address): Declare.
30575         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
30576         parenthesees.  Add support for a 'W' constraint.
30577         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
30578         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
30579         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
30580         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
30581         variables.
30582         (override_options): Initialize them.  Do not set flag_no_function_cse
30583         for TARGET_ID_SHARED_LIBRARY.
30584         (m68k_output_pic_call): Delete.
30585         (m68k_legitimize_call_address): New function.
30586         (print_operand): Remove the %o prefix.  Handle the %p prefix.
30587         (output_call): New function.
30588         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
30589         target address from the GOT if symbolic jumps are not allowed.
30590         * config/m68k/m68k.md (call, general_operand): Do not set
30591         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
30592         Merge separate flag_pic and !flag_pic define_insns into...
30593         (*call, *call_value): ...these new patterns.  Match the address
30594         rather than the containing MEM and require it to be a call_operand.
30595         Use output_call to generate the asm template.
30596         * config/m68k/predicates.md (const_call_operand): New predicate.
30597         (call_operand): Likewise.
30598
30599 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30600
30601         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
30602         (STACK_GROWS_DOWNWARD): Define to 1.
30603         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
30604         comments, emphasizing that these values are only defaults.
30605         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
30606         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
30607
30608 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30609
30610         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
30611
30612 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30613             Richard Sandiford  <richard@codesourcery.com>
30614
30615         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
30616         (FP_REGNO_P): New macros.
30617         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
30618         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
30619         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
30620         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
30621
30622 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30623
30624         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30625         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
30626         to $tmake_file.
30627         * config/m68k/t-floatlib: New file, extracting common code from...
30628         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
30629         * config/m68k/t-uclinux: Here.
30630         * config/m68k/fpgnulib.c: Do not compile extendeed precision
30631         routines on ColdFire targets.
30632
30633 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30634
30635         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30636         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
30637         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
30638         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
30639         explicitly set MOTOROLA to 1.
30640         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
30641
30642 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30643             Nathan Sidwell  <nathan@codesourcery.com>
30644
30645         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
30646         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
30647         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
30648         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
30649         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
30650         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
30651         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
30652         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
30653         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
30654         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30655         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
30656         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
30657         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
30658         (DBX_REGISTER_NUMBER): Delete.
30659         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
30660         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30661         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
30662
30663 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30664
30665         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
30666         * config/flat.h: New file.
30667         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
30668         OBJECT_FORMAT_FLAT.
30669         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
30670         indirect references for -msep-data or -mid-shared-library.
30671         Do not use PC-relative code addresses either.
30672         * config/m68k/m68k.c (override_options): Restrict -fPIC error
30673         to -mpcrel.
30674         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
30675         for shared libraries and crt1.o for executables.  Use crti.o and
30676         crtbegin.o.
30677         (ENDFILE_SPEC): Use crtend.o and crtn.o.
30678         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
30679         Do not add -elf2flt or -shared-lib-id options here.
30680         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
30681         Pass -shared-lib-id if -mid-shared-library, taking the library
30682         identifier from -mshared-library-id if given, otherwise
30683         defaulting to 0.
30684         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
30685         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
30686         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
30687         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
30688         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
30689         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
30690         and crtend.o.
30691         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
30692         jump sequence for ISA A and ISA A+.
30693         (PICJUMP): Likewise.
30694
30695 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30696
30697         * config.gcc (m68k-*-uclinux*): Base the port on the common
30698         and m68k GNU/Linux files rather than on the generic ELF ones.
30699         * config/m68k/uclinux.h (TARGET_VERSION): Override.
30700         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
30701
30702 2007-01-18  Julian Brown  <julian@codesourcery.com>
30703             Richard Sandiford  <richard@codesourcery.com>
30704
30705         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
30706         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30707         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
30708         before redefining.
30709         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
30710         80 unconditionally.
30711         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30712
30713 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30714
30715         * doc/install.texi: Document m68k-uclinuxoldabi.
30716         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
30717         * config/m68k/uclinux-oldabi.h: New file, copied from
30718         config/m68k/uclinux.h.
30719
30720 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
30721
30722         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
30723         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
30724         (m32r_compute_frame_size): Use unsigned for regno.
30725         (m32r_reload_lr): Use gen_frame_mem.
30726         (pop): New.
30727         (m32r_output_function_epilogue): Don't output the function epilogue
30728         textually here.
30729         (m32r_expand_epilogue): New.
30730         (direct_return): Return false if the function has the interrupt
30731         attribute.
30732         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
30733         * config/m32r/m32r.md (epilogue): New expander.
30734         (return_lr, return_rte): New insns.
30735         (return): Make it expander.
30736         (return_normal): New expander.
30737
30738 2007-01-18  Josh Conner  <jconner@apple.com>
30739
30740         PR target/30485
30741         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
30742         support for UNLE, UNLT, UNGE, and UNGT.
30743
30744 2007-01-18  Jan Hubicka  <jh@suse.cz>
30745
30746         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
30747         * tree-tailcall (add_virtual_phis): Likewise.
30748         (optimize_tail_call): Return TODOs.
30749         (execute_tail_calls): Return TODOs.
30750         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
30751         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
30752         changed.
30753         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
30754         Cleanup cfg using TODO.
30755         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
30756         * passes.c (execute_function_todo): When cleanup did something, remove
30757         unused locals.
30758         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
30759         (make_edges): Don't cleanup_cfg.
30760
30761 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
30762
30763         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
30764         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
30765         operate on the top of stack.
30766         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
30767         register handling of instructions that output to the second
30768         stack slot.
30769         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
30770         (move_for_stack_reg): Special-case check for dead destination
30771         stack slot for constant load of 1.0 inside UNSPEC_TAN.
30772
30773         * config/i386/i386.md (UNSPEC_TAN): New constant.
30774         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
30775         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
30776         to correctly model move of constant 1.0 to top stack slot.
30777         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
30778         (unnamed peephole2 pattern): Remove corresponding peephole2
30779         pattern that optimizes tan insn and loading of constant 1.0.
30780         (tanxf2): Use fptanxf4_i387.
30781         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
30782         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
30783         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30784         disable patterns for SSE math.
30785         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
30786         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
30787
30788 2007-01-18  Dirk Mueller  <dmueller@suse.de>
30789             Richard Guenther <rguenther@suse.de>
30790
30791         PR diagnostic/8268
30792         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
30793         * common.opt (Warray-bounds): Add new warning option.
30794         * c-opts.c (c_common_handle_option): Define -Warray-bounds
30795         if -Wall is given.
30796         * Makefile.in: make tree-vrp.o depend on toplev.h
30797         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
30798         is enabled.
30799         (check_array_refs, check_array_bounds, check_array_ref): New.
30800
30801 2007-01-18  Jan Hubicka  <jh@suse.cz>
30802
30803         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
30804         (execute_ssa_ccp): Return flags conditionally.
30805         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
30806         changed.
30807         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
30808
30809 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
30810
30811         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
30812         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
30813
30814         * Makefile.c (GTFILES): Add cfglayout.h.
30815         * gengtype.c (open_base_files): Likewise.
30816         * cfglayout.c (cfg_layout_function_footer,
30817         cfg_layout_function_header) Reindent to make gengtype happy.
30818         * cfglayout.h (cfg_layout_function_footer,
30819         cfg_layout_function_header): Add GTY(()) marker.
30820
30821         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
30822
30823 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30824
30825         * genautomata.c (write_automata): Include xstrerror output in the
30826         error message if writing the DFA description file fails.
30827
30828 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
30829
30830         * config/mips/mips-protos.h (mips_output_external): Make it
30831         return void.
30832         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
30833         * config/mips/mips.c (irix_output_external_libcall): Likewise.
30834         (extern_list): Likewise.
30835         (extern_head): Likewise.
30836         (TARGET_ASM_FILE_END): Likewise.
30837         (mips_file_end): Likewise.
30838         (mips_output_external): Rewritten.
30839
30840 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30841
30842         * genpreds.c (write_insn_preds_c): Only write out the function
30843         body for regclass_for_constraint if we have register constraints.
30844
30845 2007-01-17  Tom Tromey  <tromey@redhat.com>
30846
30847         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
30848         * doc/install.texi (Testing): Use sourceware.org.
30849         (Binaries): Likewise.
30850         (Specific): Likewise.
30851         * doc/contrib.texi (Contributors): Use sourceware.org.
30852
30853 2007-01-17  Anatoly Sokolov <aesok@post.ru>
30854
30855         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
30856         (AVR_ENHANCED): Rename to ...
30857         (AVR_HAVE_MUL): ... new.
30858         (avr_enhanced_p): Rename to ...
30859         (avr_have_mul_p): ... new.
30860         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
30861         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
30862         * config/avr/avr.c (avr_enhanced_p): Rename to ...
30863         (avr_have_mul_p): ... new.
30864         (base_arch_s): Rename 'enhanced' to 'have_mul'.
30865         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
30866         'avr_enhanced_p' and 'enhanced'.
30867         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
30868         AVR_HAVE_MUL instead of AVR_ENHANCED.
30869         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30870         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
30871         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
30872         instead of AVR_ENHANCED.
30873         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30874         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
30875         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
30876
30877 2007-01-17  Ian Lance Taylor  <iant@google.com>
30878
30879         * vec.h (VEC_reserve_exact): Define.
30880         (vec_gc_p_reserve_exact): Declare.
30881         (vec_gc_o_reserve_exact): Declare.
30882         (vec_heap_p_reserve_exact): Declare.
30883         (vec_heap_o_reserve_exact): Declare.
30884         (VEC_OP (T,A,reserve_exact)): New static inline function, three
30885         versions.
30886         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
30887         negative parameter.
30888         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
30889         (VEC_OP (T,A,copy)) [all versions]: Likewise.
30890         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
30891         * vec.c (calculate_allocation): Add exact parameter.  Change all
30892         callers.
30893         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
30894         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
30895         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
30896         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
30897         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
30898         (vec_heap_p_reserve_exact): New function.
30899         (vec_heap_o_reserve_exact): New function.
30900
30901 2007-01-17  Jan Hubicka  <jh@suse.cz>
30902
30903         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
30904
30905 2007-01-17  Eric Christopher  <echristo@apple.com>
30906
30907         * config.gcc: Support core2 processor.
30908
30909 2007-01-16  Jan Hubicka  <jh@suse.cz>
30910
30911         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
30912         the names, just unlink the chain so we don't crash on dangling
30913         pointers
30914         to dead SSA names.
30915
30916 2007-01-16  Jan Hubicka  <jh@suse.cz>
30917
30918         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
30919         * tree-pass.h: Reorder to make IPA passes appear toegher.
30920         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
30921         Declare.
30922         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
30923         parameters, do not call early inliner.
30924         * ipa-inline.c: Update comments.  Include tree-flow.h
30925         (cgraph_decide_inlining): Do not compute inlining parameters.
30926         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
30927         be called with function context set up.
30928         (pass_ipa_inline): Remove unreachable functions before pass.
30929         (cgraph_early_inlining): Simplify assuming to be called from the
30930         PM as local pass.
30931         (pass_early_inline): New pass.
30932         (cgraph_gate_ipa_early_inlining): New gate.
30933         (pass_ipa_early_inline): Turn into simple wrapper.
30934         (compute_inline_parameters): New function.
30935         (gate_inline_passes): New gate.
30936         (pass_inline_parameters): New pass.
30937         (apply_inline): Move here from tree-optimize.c
30938         (pass_apply_inline): New pass.
30939         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
30940         transforming.
30941         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
30942         doing them by hand.
30943         (tree_function_versioning): Do not allocate dummy struct function.
30944         * tree-inline.h (optimize_inline_calls): Update prototype.
30945         * tree-optimize.c (execute_fixup_cfg): Export.
30946         (pass_fixup_cfg): Remove
30947         (tree_rest_of_compilation): Do not apply inlines.
30948         * tree-flow.h (execute_fixup_cfg): Declare.
30949         * Makefile.in (gt-passes.c): New.
30950         * passes.c: Include gt-passes.h
30951         (init_optimization_passes): New passes.
30952         (nnodes, order): New static vars.
30953         (do_per_function_toporder): New function.
30954         (execute_one_pass): Dump current pass here.
30955         (execute_ipa_pass_list): Don't dump current pass here.
30956
30957 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
30958
30959         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
30960         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
30961
30962 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
30963
30964         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
30965         (strong_alias): Define.
30966         (__gcc_qmul): Provide non-FMA for soft-float.
30967         (__gcc_qdiv): Same.
30968         (__gcc_qneg): New.
30969         (__gcc_qeq): New.
30970         (__gcc_qle): New.
30971         (__gcc_qge): New.
30972         (__gcc_qunord): New.
30973         (__gcc_stoq): New.
30974         (__gcc_dtoq): New.
30975         (__gcc_qtos): New.
30976         (__gcc_qtod): New.
30977         (__gcc_qtoi): New.
30978         (__gcc_qtou): New.
30979         (__gcc_itoq): New.
30980         (__gcc_utoq): New.
30981         (fmsub): New.
30982         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
30983         soft-float functions.
30984         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
30985         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
30986         about long double soft float.
30987
30988 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
30989             Tehila Meyzels  <tehila@il.ibm.com>
30990
30991         * tree-vectorizer.h (is_pattern_stmt_p): New.
30992         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
30993         formatting (tabs instead of spaces). Cleanup and clarify setting
30994         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
30995         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
30996         (vectorizable_type_demotion): Check that types are integral.
30997         (vectorizable_type_promotion): Likewise.
30998         (vectorizable_store): Fix typo.  Eliminate new-line at end of
30999         comments.
31000
31001 2007-01-16  Jan Hubicka  <jh@suse.cz>
31002
31003         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
31004         cgraph edges too.
31005
31006 2007-01-15  Eric Christopher  <echristo@apple.com>
31007
31008         * ifcvt.c: Include vec.h, vecprim.h.
31009         (check_cond_move_block): New argument regs.
31010         Reorganize. Add registers used to regs.
31011         (cond_move_process_if_block): Use regs set above as
31012         loop bounds.
31013
31014 2007-01-15  Eric Christopher  <echristo@apple.com>
31015
31016         * config/darwin.h: Update copyright.
31017         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
31018         (LINK_COMMAND_SPEC): Add -u.
31019         (LINK_SPEC): Fix umbrella for above.
31020
31021 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
31022
31023         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
31024         glibc CVS.
31025
31026 2007-01-15  Tom Tromey  <tromey@redhat.com>
31027
31028         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
31029         * doc/install.texi (Testing): Don't mention jacks.
31030         (Configuration): Document --enable-java-maintainer-mode.  Move
31031         --with-java-home to libgcj-specific section.  Document
31032         --with-ecj-jar.
31033         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
31034
31035 2007-01-15  Jan Hubicka  <jh@suse.cz>
31036
31037         * tree-ssa-dce.c (DCE_TODOs): New.
31038         (propagate_necessity): Return if something changed.
31039         (eliminate_unnecessary_stmts): Likewise.
31040         (perform_tree_ssa_dce): Return TODO flags when needed.
31041         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
31042
31043 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
31044
31045         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
31046         (fyl2x_extend<mode>xf3_i387): New insn pattern.
31047         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
31048         patterns using X87MODEF12 mode macro.  Extend operand 1
31049         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
31050         (log10<mode>2): Ditto.
31051         (log2<mode>2): Ditto.
31052         (log1p<mode>2): Ditto.
31053         (logb<mode>2): Ditto.
31054         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
31055         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
31056         (*fxtractxf3_i387): Rename from *fxtractxf3.
31057         (fxtract_extend<mode>xf3_i387): New insn pattern.
31058         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
31059         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
31060         and gen_fyl2xxf3_i387().
31061
31062 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
31063
31064         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
31065         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
31066         get_loop_exit_edges.  Changed return type to bool.
31067         * cfgloop.h (fix_loop_placement): Declaration removed.
31068
31069 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
31070
31071         * param.h (MIN_VECT_LOOP_BOUND): New.
31072         * params.def (MIN_VECT_LOOP_BOUND): New.
31073         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
31074         argument - minimum threshold for number of iterations.
31075         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
31076         argument to declaration.
31077         * tree-vect-analyze.c (vect_analyze_operations): Check value of
31078         MIN_VECT_LOOP_BOUND.
31079         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
31080         slpeel_tree_peel_loop_to_edge with additional argument.
31081         (vect_do_peeling_for_alignment): Likewise.
31082         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
31083
31084 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
31085
31086         PR target/30413
31087         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
31088         operands of size 1.
31089
31090 2007-01-14  Jan Hubicka  <jh@suse.cz>
31091
31092         * tree-dfa.c (remove_referenced_var): New function.
31093         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
31094         prune referenced vars list too.
31095         * tree-flow.h (remove_referenced_var): Declare.
31096
31097 2007-01-14  Jan Hubicka  <jh@suse.cz>
31098
31099         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
31100         separately.
31101         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
31102         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
31103         * except.h (verify_eh_throw_table_statements): Kill prototype.
31104         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
31105         into call exrepssions.
31106         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
31107         eh trhow verifier.
31108         * tree-cfg.c: Include pointer-set.h.
31109         (verify_node_sharing): Work on pointer set.
31110         (verify_eh_throw_stmt_node): New.
31111         (verify_stmts): Use pointers sets, verify throw_stmt.
31112
31113 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
31114
31115         * ipa-reference.c (analyze_function): Consider also addresses taken
31116         in phi nodes.
31117
31118 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31119
31120         * c-typeck.c (null_pointer_constant_p): Replace use of
31121         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31122         (build_c_cast): Likewise.
31123
31124 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31125
31126         * tree.h (force_fit_type_double): Remove unused final argument.
31127         * c-common.c (constant_expression_warning): Replace use of
31128         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31129         (convert_and_check): Likewise.
31130         (shorten_compare): Update call to force_fit_type_double.
31131         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
31132         * convert.c (convert_to_pointer): Update call to
31133         force_fit_type_double.
31134         * fold-const.c (force_fit_type_double): Remove overflowed_const
31135         argument.
31136         (int_const_binop, fold_convert_const_int_from_int,
31137         fold_convert_const_int_from_real, fold_div_compare,
31138         fold_sign_changed_comparison, fold_unary, fold_negate_const,
31139         fold_abs_const, fold_not_const): Remove the final argument from
31140         calls to force_fit_type_double.
31141
31142 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31143
31144         * configure.ac: Set insn to "nop" for spu-*-* also.
31145         * configure: Regenerate.
31146
31147 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
31148
31149         * builtins.def : Add BUILT_IN_FREE.
31150
31151 2007-01-12  Jan Hubicka  <jh@suse.cz>
31152
31153         PR tree-optimization/30443
31154         * tree-inline.c (tree_function_versioning): Do not optimize when
31155         cloning for inlining.
31156
31157 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
31158
31159         * doc/loop.texi: Document recording of loop exits.
31160         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
31161         (update_single_exits_after_duplication,
31162         update_single_exit_for_duplicated_loop,
31163         update_single_exit_for_duplicated_loops): Removed.
31164         (duplicate_loop_to_header_edge): Do not call
31165         update_single_exits_after_duplication and
31166         update_single_exit_for_duplicated_loops.
31167         (loop_version): Do not update single_exit information.
31168         (fix_loop_structure): Use record_loop_exits instead of
31169         mark_single_exit_loops.
31170         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
31171         the lists of loop exits.
31172         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
31173         split_edge, merge_blocks): Update the lists of loop exits.
31174         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
31175         loop_optimizer_init.
31176         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
31177         of mark_single_exit_loops.
31178         (loop_optimizer_finalize): Call release_recorded_exits.
31179         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
31180         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
31181         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
31182         update single exit information.
31183         * lambda-code.c (perfect_nestify): Ditto.
31184         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
31185         (mark_single_exit_loops): Removed.
31186         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
31187         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
31188         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
31189         functions.
31190         (get_loop_exit_edges, single_exit): Use recorded exit lists.
31191         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
31192         (verify_loop_structure): Verify consistency of the exit lists.
31193         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
31194         (set_single_exit): Removed.
31195         * cfgloop.h (struct loop_exit): New function.
31196         (struct loop): single_exit_ field replaced by exits field.
31197         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
31198         LOOPS_HAVE_RECORDED_EXITS.
31199         (struct loops): Added exits hash.
31200         (mark_single_exit_loops, set_single_exit): Declaration removed.
31201         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
31202
31203 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31204
31205         * doc/invoke.texi: Avoid use of @headitem.
31206
31207 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31208
31209         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
31210
31211 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31212
31213         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
31214         list of targets.
31215
31216 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31217             Richard Sandiford  <richard@codesourcery.com>
31218
31219         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
31220         * config/m68k/m68k.opt: Resort options.
31221         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
31222
31223 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31224             Richard Sandiford  <richard@codesourcery.com>
31225
31226         * doc/invoke.texi: Document the macros that are defined by
31227         m68k's -mtune and -mhard-float options.
31228         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
31229         (m68k_cpp_cpu_family): Likewise.
31230         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
31231         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
31232         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
31233         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
31234         (m68k_cpp_cpu_family): Likewise.
31235
31236 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31237
31238         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
31239         macros besides mc68000 as tuning macros.  Use a switch statement
31240         to set them and mcpu32.
31241
31242 2007-01-12  Julian Brown  <julian@codesourcery.com>
31243
31244         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
31245         (TARGET_68040_ONLY): Rename to...
31246         (TARGET_68040): ...this.
31247         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
31248         * config/m68k/m68k.md: Likewise.
31249
31250 2007-01-12  Julian Brown  <julian@codesourcery.com>
31251             Nathan Sidwell  <nathan@codesourcery.com>
31252             Richard Sandiford  <richard@codesourcery.com>
31253
31254         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
31255         the -mcpu= argument associated with the --with-cpu setting.
31256         Define M68K_DEFAULT_TUNE to the default -mtune= option,
31257         if different from the one implied by the -mcpu setting.
31258         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
31259         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
31260         * doc/invoke.texi: Mention ColdFire in the introduction to the
31261         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
31262         -mno-div and -mhard-float options.  Make -m68881 a synonym for
31263         -mhard-float.  Document the previously-undocumented -m5206e,
31264         -m528x, -m5307 and -m5407 options.  Tweak the existing option
31265         documentation for consistency.
31266         * doc/install.texi: Mention new --with-cpu arguments.
31267         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
31268         default CPU if neither -mcpu nor -march are specified.
31269         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
31270         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
31271         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
31272         using m68k_tune to decide between families that implement the
31273         same ISA.  Use m68k_tune to set __mcfv4e__.
31274         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
31275         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
31276         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
31277         (FL_ISA_C, FL_ISA_MMU): New macros.
31278         (MASK_COLDFIRE): Delete.
31279         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
31280         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
31281         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
31282         (TARGET_HARD_FLOAT): Do not define here.
31283         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
31284         (TUNE_68000): New macro.
31285         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
31286         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
31287         (TUNE_CFV2): Redefine in terms of m68k_tune.
31288         (uarch_type, target_device, fpu_type): New enums.
31289         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
31290         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
31291         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
31292         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
31293         (FL_FOR_isa_c): New macros.
31294         (m68k_isa): New enum.
31295         (m68k_target_selection): New structure.
31296         (all_devices, all_isas, all_microarchs): New tables.
31297         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
31298         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
31299         (MASK_ALL_CPU_BITS): Delete.
31300         (m68k_find_selection): New function.
31301         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
31302         Map the legacy target options to a combination of the new ones.
31303         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
31304         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
31305         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
31306         settings.
31307         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
31308         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
31309         properties.
31310         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
31311         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
31312         * config/m68k/m68k-devices.def: New file.
31313
31314 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31315             Nathan Sidwell  <nathan@codesourcery.com>
31316
31317         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
31318         (SUBTARGET_EXTRA_SPECS): New macros.
31319         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
31320         use %(asm_cpu_spec) instead.
31321         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
31322         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
31323         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
31324         (EXTRA_SPECS): Rename to...
31325         (SUBTARGET_EXTRA_SPECS): ...this.
31326
31327 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31328             Richard Sandiford  <richard@codesourcery.com>
31329             Julian Brown  <julian@codesourcery.com>
31330
31331         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
31332         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
31333         to the configuration's default CPU.
31334         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
31335         Remove default masks.
31336         (m680[012]0-*-*): Set the default with_cpu to the first part of
31337         the target name.
31338         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
31339         (m68k*-*-linux): Extend the --with-cpu handling to...
31340         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
31341         and m68010.  Don't set target_cpu_default2.
31342         * doc/install.texi: Document --with-cpu for m68k.
31343         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
31344         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
31345         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
31346         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
31347         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
31348         (ASM_SPEC): Remove use of %(asm_cpu_default).
31349         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
31350         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
31351         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
31352         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
31353         __HAVE_FPU__ if TARGET_HARD_FLOAT.
31354         (TARGET_DEFAULT): Delete.
31355         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
31356         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
31357         (CPP_CPU_SPEC): Delete.
31358         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
31359         the appropriate string.
31360         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
31361         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
31362         (ASM_SPEC): Don't use %(asm_default_spec).
31363         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
31364         TARGET_DEFAULT and add MASK_68881.
31365         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
31366
31367 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31368
31369         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
31370         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
31371         MASK_68010 alongside MASK_68020.
31372         * doc/invoke.texi: Document -m68010.
31373         * config/m68k/m68k.opt (m68010): New.
31374         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
31375         if TUNE_68010.
31376         (TUNE_68010): New macro.
31377         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
31378         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
31379         (M68K_CPU_m68332): Add MASK_68010.
31380         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
31381         fallback definition.
31382         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
31383         defines.
31384         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
31385         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
31386         to all entries that use MASK_68020.
31387         (output_move_simode_const, output_move_himode, output_move_qimode)
31388         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
31389         instead of TARGET_68020 to select clr behavior.  Remove comment
31390         about there being no TARGET_68010.
31391         * config/m68k/m68k.md: Likewise throughout.
31392
31393 2007-01-12  Julian Brown  <julian@codesourcery.com>
31394
31395         * config/m68k/m68k.h (TARGET_ISAB): New macro.
31396         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
31397         * config/m68k/m68k.md: Likewise.
31398
31399 2007-01-12  Julian Brown  <julian@codesourcery.com>
31400
31401         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
31402         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
31403
31404 2007-01-12  Julian Brown  <julian@codesourcery.com>
31405
31406         * config/m68k/m68k.h (TUNE_68040_60): New macro.
31407         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
31408         * config/m68k/m68k.md: Likewise.
31409
31410 2007-01-12  Julian Brown  <julian@codesourcery.com>
31411             Richard Sandiford  <richard@codesourcery.com>
31412
31413         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
31414         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
31415         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
31416         TARGET_CPU32.
31417         (TARGET_CPU32): Rename to...
31418         (TUNE_CPU32): ...this.
31419         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
31420         (TUNE_CFV2): New macros.
31421         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
31422         remove conditions that are implied by TARGET_68020.
31423         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
31424         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
31425         (m68k_output_function_epilogue): Likewise.
31426         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
31427         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
31428         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
31429         non-68000 timings.  Refactor multiplication and division costs.
31430         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
31431         TUNE_CPU32 instead of TARGET_CPU32.
31432         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
31433         and TUNE_68060 instead of TARGET_68060.
31434         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
31435         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
31436         TARGET_CPU32.
31437         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
31438         && !TARGET_COLDFIRE" to choose between moveq and clr.
31439         Likewise in the unnamed movsf pattern.
31440         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
31441         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
31442         ashiftrt pattern.
31443
31444 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31445
31446         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
31447         of tabbing before backslashes.
31448
31449 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31450
31451         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
31452         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
31453         (ASM_OUTPUT_INTERNAL_LABEL): Define.
31454
31455 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31456
31457         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
31458         find_interesting_uses_cond.
31459         (find_interesting_uses_cond): Use extract_cond_operands.
31460         (rewrite_use_compare): Use extract_cond_operands and
31461         force_gimple_operand_bsi.  Do not call update_stmt.
31462         (determine_use_iv_cost_condition): Use extract_cond_operands.
31463         Return cheaper of using original bound and changing the exit bound.
31464
31465 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31466
31467         PR tree-optimization/29516
31468         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
31469         most_expensive_mult_to_index, addr_to_parts,
31470         create_mem_ref, maybe_fold_tmr): Make the type of
31471         fields of TARGET_MEM_REF sizetype.
31472         (move_fixed_address_to_symbol, move_pointer_to_base):
31473         New functions.
31474         * tree.def (TARGET_MEM_REF): Add comment on types of
31475         the operands.
31476
31477 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
31478
31479         * c-common.c (vector_types_convertible_p): Treat opaque types as
31480         always convertible if they have the same size, but not otherwise.
31481
31482 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
31483
31484         * ifcvt.c (struct noce_if_info): Add comments to the fields.
31485         Remove the b_unconditional field.
31486         (noce_try_sign_mask): Do not look at b_unconditional.
31487         (noce_process_if_block): Do not use merge_if_blocks.  Update
31488         the CFG here.  Do not set b_unconditional.
31489         (cond_move_process_if_block): Likewise.
31490         (find_cond_trap): Likewise.
31491         (check_cond_move_block): Require simple jump insns at the end
31492         of the basic block.
31493
31494 2007-01-11  Jan Hubicka  <jh@suse.cz>
31495
31496         PR tree-optimization/1046
31497         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
31498         when alias info is not ready.
31499         (pass_tail_recursion): Do not require aliasing.
31500         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
31501         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
31502         * tree-ssa-copy.c (pass_copy_prop): Likewise.
31503         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
31504         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
31505         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
31506         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
31507         before inlining.
31508         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
31509         When aliasing is not build, mark statement as volatile.
31510
31511 2007-01-11  Tom Tromey  <tromey@redhat.com>
31512
31513         PR preprocessor/15185, PR preprocessor/20989:
31514         * doc/cppopts.texi <-MT>: Update description of algorithm for
31515         computing default target.
31516         <-M, -MD>: Reword "basename" text.
31517
31518 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31519
31520         * builtins.c (expand_builtin_pow, expand_builtin_powi,
31521         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
31522         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
31523         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
31524         fold_builtin_bswap, real_constp, fold_builtin_pow,
31525         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
31526         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
31527         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31528         * convert.c (convert_to_pointer): Likewise.
31529         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
31530         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
31531         const_binop, fold_convert_const_int_from_int,
31532         fold_convert_const_int_from_real,
31533         fold_convert_const_real_from_real, sign_bit_p,
31534         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
31535         fold_sign_changed_comparison, fold_unary, fold_comparison,
31536         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
31537         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
31538         * print-tree.c (print_node_brief, print_node): Likewise.
31539         * stor-layout.c (place_field, layout_type): Likewise.
31540         * tree-chrec.c (keep_cast): Likewise.
31541         * tree.c (build_vector, build_real, build_real_from_int_cst,
31542         build_complex): Likewise.
31543
31544 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31545
31546         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
31547         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
31548
31549 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
31550
31551         * configure.ac (strict1_warn): Rename to strict_warn.
31552         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
31553         cc_set_by_configure, quoted_cc_set_by_configure,
31554         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
31555         all_boot_languages, all_stagestuff): Remove.
31556         (target_list): Remove bootstrap targets.
31557         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
31558         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
31559         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
31560         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
31561         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
31562         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
31563         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
31564         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
31565         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
31566         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
31567         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
31568         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
31569         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
31570         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
31571         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
31572         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
31573         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
31574         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
31575         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
31576         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
31577         (mostlyclean): Adjust.
31578         (clean, distclean): Don't mention bootstrap stuff.
31579         * configure: Regenerate.
31580         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
31581         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
31582         treelang/config-lang.in (stagestuff): Remove.
31583         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
31584         stageprofile, stagefeedback, stagestuff): Remove mention.
31585
31586 2007-01-11  Nick Clifton  <nickc@redhat.com>
31587
31588         * config/mcore/predicates.md (mcore_general_movesrc_operand):
31589         Accept CONSTs.
31590         (mcore_general_movdst_operand): Do not accept CONST_INTs.
31591         (mcore_arith_K_S_operand): Run the test for the S constraint not
31592         the test for the M constraint.
31593         (mcore_addsub_operand): Do not accept integer values that are
31594         larger than 32 bits.
31595         * config/mcore/mcore.md: Remove unused constraints from split.
31596         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
31597         (addsi3): Likewise.
31598         (allocate_stack): Likewise.
31599         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
31600         operands to 32 bits.
31601         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
31602         INTVAL.
31603         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
31604         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
31605         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
31606         mcore_output_bclri, mcore_output_andn, output_inline_const,
31607         mcore_output_move, mcore_output_movedouble): Likewise.
31608         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
31609         (output_inline_const): Likewise.
31610         (output_inline_const): Fix format strings used in sprintf
31611         statements.
31612         * config/mcore/mcore-protos.h: Update prototypes for changed
31613         functions in mcore.c.
31614         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
31615         HOST_WIDE_INT and not int.
31616         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
31617         CONST_OK_FOR_N): Likewise.
31618         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
31619         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
31620         an INTVAL.
31621
31622 2007-01-10  Jan Hubicka  <jh@suse.cz>
31623
31624         * tree-vrp.c (remove_range_assertions): Release defs.
31625         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
31626         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
31627
31628 2007-01-10  Paul Brook  <paul@codesourcery.com>
31629
31630         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
31631         * config/arm/arm.md (mulsi3subsi): New insn.
31632
31633 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
31634
31635         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
31636         (tree_transform_and_unroll_loop): New.
31637         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
31638         Declare.
31639
31640 2007-01-10  Robert Kennedy <jimbob@google.com>
31641
31642         * fold-const.c (fold_comparison): Fold comparisons like (x *
31643         1000 < 0) to (x < 0).
31644
31645 2007-01-10  Ian Lance Taylor  <iant@google.com>
31646
31647         * tree-pretty-print.c (dump_generic_node): Print parentheses when
31648         operands have the same priority.
31649
31650 2007-01-10  Tom Tromey  <tromey@redhat.com>
31651
31652         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
31653         (fold_binary): Likewise.
31654         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
31655         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
31656         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
31657         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
31658         * langhooks.h (struct lang_hooks): Removed field
31659         'can_use_bit_fields_p'.
31660
31661 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
31662
31663         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
31664
31665 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
31666
31667         * function.c (get_last_funcdef_no): New function.
31668         * function.h (get_last_funcdef_no): Declare.
31669         * tree-inline.c (initialize_cfun): Add initialization.
31670         (tree_function_versioning): Cleanup.
31671
31672 2007-01-10  Jan Hubicka  <jh@suse.cz>
31673
31674         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
31675         PHIs.
31676
31677 2007-01-10  Sa Liu  <saliu@de.ibm.com>
31678             Ben Elliston  <bje@au.ibm.com>
31679
31680         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
31681         for SAVE_NONLOCAL and Pmode for any other save level.
31682         * spu-protos.h (spu_restore_stack_block): Declare.
31683         * spu.md (save_stack_block): Remove.
31684         (restore_stack_block): Call spu_restore_stack_block.
31685         * spu.c (spu_restore_stack_block): New function.
31686         (spu_expand_epilogue): Remove old comment.
31687
31688 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
31689
31690         PR tree-optimization/30322
31691         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
31692         (cand_value_at): Return the value as aff_tree.
31693         (may_eliminate_iv): Convert the bound from aff_tree to tree.
31694         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
31695         aff_combination_mult): New functions.
31696         (aff_combination_add): Use aff_combination_add_cst.
31697         (aff_combination_convert): Allow conversions to a wider type.
31698         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
31699         * tree-affine.h (aff_combination_mult): Declare.
31700
31701 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
31702
31703         * doc/tm.texi: Update documentation to reflect reality of exec
31704         and start file search behaviours. Update copyright year.
31705         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
31706         header file directories.
31707
31708 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
31709
31710         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
31711         (*cosxf2): Rename to cosxf2_i387.
31712         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
31713         using X87MODEF12 mode macro. Rename patterns to
31714         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
31715         for SSE math.
31716         (*cosdf2, *cossf2): Ditto.
31717         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
31718         to match extended input operands.
31719         (sincos<mode>3): New expander.
31720         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
31721         insn patterns and corresponding splitters.
31722
31723 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
31724
31725         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
31726         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
31727
31728 2007-01-09  Nicolas Pitre  <nico@cam.org>
31729
31730         PR target/30173
31731         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
31732
31733 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31734
31735         * target.h (struct gcc_target): New field library_rtti_comdat.
31736         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
31737         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
31738         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
31739         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
31740
31741 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31742
31743         * doc/invoke.texi (Optimize Options): Correct description of -O0.
31744
31745 2007-01-08  Richard Guenther  <rguenther@suse.de>
31746
31747         * tree.h (force_fit_type_double): Export.
31748         (force_fit_type): Remove.
31749         * fold-const.c (force_fit_type_double): New function.
31750         (force_fit_type): Remove.
31751         (int_const_binop): Use it.
31752         (fold_convert_const_int_from_int): Likewise.
31753         (fold_convert_const_int_from_real): Likewise.
31754         (fold_div_compare): Likewise.
31755         (fold_sign_changed_comparison): Likewise.
31756         (fold_unary): Likewise.
31757         (fold_negate_const): Likewise.
31758         (fold_abs_const): Likewise.
31759         (fold_not_const): Likewise.
31760         * c-common.c (shorten_compare): Use force_fit_type_double.
31761         * convert.c (convert_to_pointer): Likewise.
31762
31763 2007-01-08  Richard Guenther  <rguenther@suse.de>
31764
31765         * tree.h (build_int_cst_wide_type): Export.
31766         * tree.c (build_int_cst_wide_type): New function.
31767         (build_int_cst_wide): Fix comment.
31768         * builtins.c (fold_builtin_object_size): Use build_int_cst
31769         to build -1 or 0 of the correct type.  Use fit_double_type
31770         to check for overflow.
31771         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
31772         to build the mask.
31773         (decode_field_reference): Likewise.
31774         (all_ones_mask_p): Likewise.
31775         (native_interpret_int): Use build_int_cst_wide_type.
31776         (fold_binary): Use build_int_cst_type to build an all-ones
31777         value.
31778         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
31779
31780 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
31781
31782         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
31783
31784 2007-01-09  Ben Elliston  <bje@au.ibm.com>
31785
31786         * genautomata.c (STATS_OPTION): New option.
31787         (stats_flag): New flag.
31788         (gen_automata_option): Handle it.
31789         (initiate_automaton_gen): Ditto.
31790         (write_automata): Output statistics only if stats_flag is
31791         set. Likewise, output time statistics only if time_flag is set.
31792         * doc/md.texi (Processor pipeline description): Document new flag.
31793
31794 2007-01-08  Richard Guenther  <rguenther@suse.de>
31795
31796         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
31797         * tree.c (build_int_cst_type): Likewise.
31798         (size_in_bytes): Don't call force_fit_type on the result.
31799         (int_fits_type_p): Use fit_double_type.
31800         * fold-const.c (fit_double_type): New function.
31801         (force_fit_type): Use it.
31802         * tree.h (fit_double_type): Export.
31803
31804 2007-01-08  Jan Hubicka  <jh@suse.cz>
31805
31806         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
31807         * ipa.c (function_and_variable_visibility): Fix return type.
31808
31809 2007-01-08  Richard Guenther  <rguenther@suse.de>
31810
31811         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
31812         of offset to build the index.
31813         * tree-pretty-print.c (dump_generic_node): Don't build negated
31814         const just for printing.
31815         * c-pretty-print.c (pp_c_integer_constant): Likewise.
31816         * builtins.c (fold_builtin_int_roundingfn): Check if result
31817         fits the type by using force_fit_type and comparing the result.
31818         * predict.c (predict_loops): Use compare_tree_int for comparison.
31819         * tree.c (build_int_cst): Fall back to integer_type_node for
31820         NULL_TREE type.
31821         (build_int_cst_wide): Assert type is non-null.
31822
31823 2007-01-08  Roberto Costa  <roberto.costa@st.com>
31824
31825         * tree-vrp.c (extract_range_from_cond_expr): New.
31826         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
31827         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
31828         as expressions.
31829         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
31830         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
31831         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
31832         used as expressions.
31833         * tree-object-size.c (cond_expr_object_size): New.
31834         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
31835
31836 2007-01-08  Jan Hubicka  <jh@suse.cz>
31837
31838         * tree-ssa-forwprop.c (forward_propagate_into_cond,
31839         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
31840         statement.
31841
31842 2007-01-08  Richard Guenther  <rguenther@suse.de>
31843
31844         PR tree-optimization/23603
31845         * tree-vrp.c (set_value_range_to_truthvalue): New function.
31846         (extract_range_from_binary): Fall back to truthvalue instead of
31847         varying for TRUTH_*_EXPR.
31848         (extract_range_from_comparison): Fall back to truthvalue instead of
31849         varying.
31850         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
31851         if all visited PHI values were constant.
31852
31853 2007-01-08  Jan Hubicka  <jh@suse.cz>
31854
31855         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
31856         (cgraph_analyze_function): break out from ...
31857         (cgraph_finalize_compilation_unit): ... here.
31858         (cgraph_expand_function): Remove forgoten commented out line.
31859         (cgraph_optimize): Analyze functions.
31860
31861 2007-01-08  Jan Hubicka  <jh@suse.cz>
31862
31863         * tree-pas.h (TODO_remove_function): New flag.
31864         (TODO_update*): Renumber.
31865         (pass_ipa_increase_alignment,
31866         pass_ipa_function_and_variable_visibility): New passes.
31867         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
31868         (cgraph_function_and_variable_visibility): Move to ipa.c
31869         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
31870         cgraph_increase_alignment.
31871         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
31872         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
31873         calling tree-inline.
31874         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
31875         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
31876         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
31877         (gate_increase_alignment): New function.
31878         (pass_ipa_increase_alignment): New pass.
31879         * ipa.c: Inline tree-pass.h and timevar.h
31880         (function_and_variable_visibility): Move here from cgraphunit.c
31881         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
31882         * passes.c (init_optimization_passes): Add the two new passes.
31883         (execute_todo): Handle cgraph_remove_functions.
31884
31885 2007-01-08  Nick Clifton  <nickc@redhat.com>
31886
31887         * config/frv/predicates.md (reg_or_0_operand): Accept
31888         CONST_DOUBLEs.
31889
31890 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
31891
31892         * config/bfin/rtems.h, config/bfin/t-rtems: New.
31893         * config.gcc: Add bfin*-rtems*.
31894
31895 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31896
31897         * c.opt: Add -flax-vector-conversions.
31898         * c-typeck.c (convert_for_assignment): Pass flag to
31899         vector_types_convertible_p to allow emission of note.
31900         (digest_init): Likewise.
31901         * c-opts.c: Handle -flax-vector-conversions.
31902         * c-common.c (flag_lax_vector_conversions): New.
31903         (vector_types_convertible_p): Unless -flax-vector conversions
31904         has been passed, disallow conversions between vectors with
31905         differing numbers of subparts and/or element types.  If such
31906         a conversion is disallowed, possibly emit a note on the first
31907         occasion only to inform the user of -flax-vector-conversions.
31908         The new last argument specifies this.
31909         * c-common.h (flag_lax_vector_conversions): New.
31910         (vector_types_convertible_p): Add extra argument.
31911         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
31912         char_type_node for V*QI type vectors.
31913         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
31914         Update to satisfy new typechecking rules.
31915         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
31916         C and C++ variants.
31917         * doc/invoke.texi (C Dialect Options): Document
31918         -flax-vector-conversions.
31919
31920 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31921
31922         PR tree-optimization/29877
31923         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
31924         a register variable on the RHS to not be replaceable.
31925
31926 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
31927         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
31928         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
31929         const_simm15, const_pow2, const_npow2): Added.
31930         * config/score/misc.md (insv, extv, extzv, movmemsi,
31931         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
31932         * config/score/score.c (score_address_cost, score_select_cc_mode):
31933         Added.
31934         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
31935         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
31936         Update score_print_operand.
31937         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
31938         Adjust register allocate order and update some macro define.
31939         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
31940         mdx_block_move_straight, mdx_block_move_loop_head,
31941         mdx_block_move_loop_body, mdx_block_move_loop_foot,
31942         mdx_block_move_loop, mdx_block_move): Added.
31943         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
31944         mdp_limm): Updated and fix some bug and typo.
31945         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
31946         (movsf, movdf, doloop_end): Added.
31947
31948 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
31949
31950         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
31951         config/arm/thumb2.md: Fix comment typos.
31952         * doc/extend.texi: Fix a typo.
31953
31954 2007-01-07  Eric Christopher  <echristo@apple.com>
31955
31956         * configure.ac: Check for __stack_chk_fail for darwin.
31957         * configure: Regenerate.
31958
31959 2007-01-07  Richard Guenther  <rguenther@suse.de>
31960
31961         * tree-vrp.c (extract_range_from_assert): CSE calls to
31962         compare_values where possible.
31963         (extract_range_from_unary_expr): Likewise.
31964
31965 2007-01-07  Anatoly Sokolov <aesok@post.ru>
31966
31967         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
31968         * config/avr/avr.c (call_insn_operand): Delete function.
31969         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
31970         instead of register number. Use predicates.
31971         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
31972         call_insn_operand): Add.
31973
31974 2007-01-06  Jan Hubicka  <jh@suse.cz>
31975
31976         * tree-pass.h (pass_build_cgraph_edges): Declare.
31977         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
31978         (visited_nodes): Remove.
31979         (cgraph_create_edges): Move to cgraphbuild.c; rename to
31980         build_cgrpah_edges; make visited_nodes local.
31981         (cgraph_process_new_functions): DO not call initialize_inline_failed.
31982         (record_references_in_initializer): Move to cgraphbuild.c
31983         (initialize_inline_failed, rebuild_cgraph_edges,
31984         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
31985         (verify_cgraph_node): Make visited_nodes local.
31986         (cgraph_analyze_function): Do not call cgraph_create_edges and
31987         initialize_inline_failed.
31988         (cgraph_expand_function): Do not call cgraph_lower_function;
31989         assert that function is already lowered.
31990         * Makefile.in (cgraphbuild.o): New.
31991         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
31992         at the end of lowering passes.
31993
31994 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
31995
31996         * ifcvt.c (cond_move_convert_if_block): New function, code
31997         factored out from...
31998         (cond_move_process_if_block): ...here.  Call the new function
31999         on the THEN and ELSE blocks.
32000         (merge_if_block): Do not copy global_live_at_end, merge_blocks
32001         already takes care of this.
32002
32003 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32004
32005         PR c/19978
32006         * tree.h (TREE_OVERFLOW_P): New.
32007         * c-typeck.c (parser_build_unary_op): Warn only if result
32008         overflowed and operands did not.
32009         (parser_build_binary_op): Likewise.
32010         (convert_for_assignment): Remove redundant overflow_warning.
32011         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
32012
32013 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32014
32015         * c-typeck.c (store_init_value): Split over two lines to follow
32016         the GNU coding style.
32017
32018 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
32019
32020         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
32021         __GXX_EXPERIMENTAL_CXX0X__.
32022         * doc/cpp.texi: Same.
32023
32024 2007-01-05  Richard Guenther  <rguenther@suse.de>
32025
32026         PR middle-end/27826
32027         * tree.c (get_narrower): Do not construct COMPONENT_REFs
32028         with mismatched types.  Instead explicitly build a
32029         conversion NOP_EXPR.
32030
32031 2007-01-05  Ian Lance Taylor  <iant@google.com>
32032
32033         * c-common.c (decl_with_nonnull_addr_p): New function.
32034         (c_common_truthvalue_conversion): Call it.
32035         * c-typeck.c (build_binary_op): Likewise.
32036         * c-common.h (decl_with_nonnull_addr_p): Declare.
32037
32038 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
32039
32040         PR c/30360
32041         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
32042         denom against 0.0.
32043
32044 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
32045
32046         * doc/install.texi (Final install): Document the fact that
32047         the GNAT runtime should not be stripped.
32048
32049 2007-01-04  Jan Hubicka  <jh@suse.cz>
32050
32051         * tree-inline.c (fold_marked_statements): Update operand caches
32052         and EH after folding
32053
32054 2007-01-04  Ian Lance Taylor  <iant@google.com>
32055
32056         * c-common.c (check_function_nonnull): Whitespace fix.
32057
32058 2007-01-04  Jan Hubicka  <jh@suse.cz>
32059
32060         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
32061         comitted older version of patch.
32062         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
32063         function, celanup cfg and collect garbage.
32064
32065 2007-01-04  Mike Stump  <mrs@apple.com>
32066
32067         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
32068         (clean): Likewise.
32069
32070 2007-01-04  Eric Christopher  <echristo@apple.com>
32071
32072         * libgcc2.c (__bswapsi2): Use SItype.
32073         (__bswapdi2): Use DItype.
32074         * libgcc2.h: Update for above.
32075
32076 2007-01-04  Paul Brook  <paul@codesourcery.com>
32077
32078         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
32079         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
32080         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
32081         umulsidi3, umulsidi3adddi, smulsi3_highpart,
32082         umulsi3_highpart): Make conditional on !arm_arch6.
32083         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
32084         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
32085         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
32086         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
32087         umulsi3_highpart_v6): New insns.
32088
32089 2007-01-04  Roger Sayle  <roger@eyesopen.com>
32090
32091         * fold-const.c (fold_convert): When casting an expression to void,
32092         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
32093         have a type.  Instead of attempting to build a NOP_EXPR, return
32094         these "special" trees directly.
32095
32096 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
32097
32098         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
32099         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
32100         rs6000_cost->fp not 0 as adjustment for outer NEG.
32101
32102 2007-01-04  Jan Hubicka  <jh@suse.cz>
32103
32104         * cgraph.c (cgraph_release_function_body): New function.
32105         (cgraph_remove_node): Use it.
32106         * cgraph.h (cgraph_release_function_body): Declare.
32107         * cgraphunit.c (cgraph_expand_function): Use it.
32108         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
32109         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
32110         is initialized and while compilation of other function is running.
32111         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
32112         statement CFG annotations from here to ...
32113         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
32114
32115 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
32116
32117         * cfgloop.h (enum li_flags): Make the constants powers of two.
32118
32119 2007-01-04  Jan Hubicka  <jh@suse.cz>
32120
32121         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
32122         set.
32123         (fold_marked_statements): New function.
32124         (optimize_inline_calls, tree_function_versioning): Fold new statements.
32125         * tree-inline.h (copy_body_data): Add statements_to_fold.
32126
32127 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
32128
32129         * config.gcc: Mention libgcc/config.host.
32130         * Makefile.in: Update comments mentioning libgcc.
32131         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
32132         (all.cross, start.encap, rest.encap, rest.cross): Update
32133         dependencies for libgcc move.
32134         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
32135         (clean-target, clean-target-libgcc): Delete.
32136         (srcdirify, GCC_EXTRA_PARTS): New macros.
32137         (libgcc-support, libgcc.mvars): New rules.
32138         (distclean): Remove mention of mklibgcc.
32139         (install): Don't reference INSTALL_LIBGCC.
32140         (install-common): Don't reference EXTRA_PARTS.
32141         (install-libgcc, install-multilib): Delete rules.
32142         * mklibgcc.in: Delete file.
32143         * doc/configfiles.texi: Don't mention mklibgcc.
32144
32145         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
32146         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
32147         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
32148         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
32149         (mklibgcc, ldblspecs): Likewise.
32150
32151         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
32152         (posixpre.def): Use $(T).
32153         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
32154         (SHLIB_SRC, SHLIB_INSTALL): Delete.
32155         (SHLIB_LINK): Make dummy.
32156         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
32157
32158         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
32159
32160         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
32161         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
32162         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
32163         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
32164
32165         * configure.ac (all_outputs): Remove mklibgcc.
32166         * configure: Regenerated.
32167
32168 2007-01-03  Josh Conner  <jconner@apple.com>
32169
32170         PR middle-end/29683
32171         * calls.c (compute_argument_addresses): Set stack and stack_slot
32172         for partial args, too.
32173         (store_one_arg): Use locate.size.constant for the size when
32174         generating a save_area.
32175
32176 2007-01-03  Robert Kennedy <jimbob@google.com>
32177
32178         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
32179         whose definitions are deleted due to basic block merging.
32180
32181 2007-01-03  Paul Brook  <paul@codesourcery.com>
32182
32183         PR target/16634
32184         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
32185         functions.
32186         (use_return_insn): Return 0 for Thumb interrupt functions.
32187         (print_multi_reg): Add rfe argument for IRQ returns.
32188         (arm_output_epilogue): Pop interrupt return address directly into PC.
32189         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
32190
32191 2007-01-03  Paul Brook  <paul@codesourcery.com>
32192
32193         Merge from sourcerygxx-4_1.
32194         * config/arm/thumb2.md: New file.
32195         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
32196         Thumb-2.
32197         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
32198         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32199         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
32200         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
32201         tables.
32202         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32203         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
32204         comptibility.
32205         * config/arm/ieee754-sf.S: Ditto.
32206         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
32207         (thumb1_base_register_rtx_p): ... to this.
32208         (thumb_index_register_rtx_p): Rename...
32209         (thumb1_index_register_rtx_p): ... to this.
32210         (thumb_output_function_prologue): Rename...
32211         (thumb1_output_function_prologue): ... to this.
32212         (thumb_legitimate_address_p): Rename...
32213         (thumb1_legitimate_address_p): ... to this.
32214         (thumb_rtx_costs): Rename...
32215         (thumb1_rtx_costs): ... to this.
32216         (thumb_compute_save_reg_mask): Rename...
32217         (thumb1_compute_save_reg_mask): ... to this.
32218         (thumb_final_prescan_insn): Rename...
32219         (thumb1_final_prescan_insn): ... to this.
32220         (thumb_expand_epilogue): Rename...
32221         (thumb1_expand_epilogue): ... to this.
32222         (arm_unwind_emit_stm): Rename...
32223         (arm_unwind_emit_sequence): ... to this.
32224         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
32225         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
32226         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
32227         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
32228         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
32229         thumb2_output_casesi): New functions.
32230         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
32231         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
32232         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
32233         THUMB2_WORK_REGS): Define.
32234         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
32235         arm_condexec_mask, arm_condexec_masklen)): New variables.
32236         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
32237         (arm_override_options): Check new CPU capabilities.
32238         Set new architecture flag variables.
32239         (arm_isr_value): Handle v7m interrupt functions.
32240         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
32241         Thumb-2.
32242         (const_ok_for_arm): Handle Thumb-2 constants.
32243         (arm_gen_constant): Ditto.  Use movw when available.
32244         (arm_function_ok_for_sibcall): Return false for v7m interrupt
32245         functions.
32246         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
32247         (thumb_find_work_register, arm_load_pic_register,
32248         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
32249         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
32250         print_multi_reg, output_mov_long_double_fpa_from_arm,
32251         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
32252         output_mov_double_fpa_from_arm, output_move_double,
32253         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
32254         output_return_instruction, arm_output_function_prologue,
32255         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
32256         arm_output_mi_thunk, thumb_set_return_address): Ditto.
32257         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
32258         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
32259         (arithmetic_instr, shift_op): Use arm_shift_nmem.
32260         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
32261         '!' and 'L'.
32262         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
32263         (thumb_expand_prologue): Use thumb_set_frame_pointer.
32264         (arm_file_start): Output directive for unified syntax.
32265         (arm_unwind_emit_set): Handle stack alignment instruction.
32266         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
32267         Add v6t2, v7, v7a, v7r and v7m.
32268         (RETLDM): Add Thumb-2 code.
32269         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
32270         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
32271         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
32272         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
32273         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
32274         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
32275         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
32276         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
32277         ADJUST_INSN_LENGTH): Define.
32278         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
32279         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
32280         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
32281         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
32282         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
32283         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
32284         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
32285         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
32286         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
32287         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
32288         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
32289         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
32290         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
32291         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
32292         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
32293         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
32294         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
32295         cortex-m3.
32296         * config/arm/arm-tune.md: Regenerate.
32297         * config/arm/arm-protos.h: Update prototypes.
32298         * config/arm/vfp.md: Enable patterns for Thumb-2.
32299         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
32300         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
32301         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
32302         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
32303         * config/arm/libunwind.S: Add Thumb-2 code.
32304         * config/arm/constraints.md: Update include Thumb-2.
32305         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
32306         * config/arm/ieee754-df.S: Ditto.
32307         * config/arm/bpabi.S: Ditto.
32308         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
32309         * config/arm/predicates.md (low_register_operand,
32310         low_reg_or_int_operand, thumb_16bit_operator): New.
32311         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
32312         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
32313         * config/arm/t-arm-elf: Add armv7 multilib.
32314         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
32315         Include thumb2.md.
32316         (UNSPEC_STACK_ALIGN, ce_count): New.
32317         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
32318         arm_zero_extendsidi2, arm_zero_extendqidi2): New
32319         insns/expanders.
32320         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
32321         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
32322         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
32323         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
32324         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
32325         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
32326         insns.
32327         * doc/extend.texi: Document ARMv7-M interrupt functions.
32328         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
32329
32330 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
32331
32332         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
32333         (struct _Unwind_Context): Rename args_size to flags, remove
32334         signal_frame field, add a new args_size field and version field.
32335         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
32336         _Unwind_IsExtendedContext): New inline functions.
32337         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
32338         Assume by_value array is only present if _Unwind_IsExtendedContext.
32339         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
32340         _Unwind_IsSignalFrame.
32341         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
32342         (uw_update_context_1): Use _Unwind_SetSignalFrame.
32343         (uw_init_context_1): Initialize context->flags to
32344         EXTENDED_CONTEXT_BIT.
32345         * config/rs6000/linux-unwind.h (frob_update_context): Use
32346         _Unwind_SetSignalFrame.
32347
32348 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32349
32350         PR middle-end/30353
32351         * gimplify.c (gimplify_modify_expr_complex_part): Move below
32352         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
32353         the value.
32354
32355 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
32356
32357         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
32358         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
32359         RET, AT_SP): Remove.
32360         * config/i386/i386.md (*sse_prologue_save_insn): Use return
32361         instead of RET.
32362
32363         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32364         * cfgbuild.c (find_basic_blocks): Likewise.
32365         * cfgrtl.c (rtl_create_basic_block): Likewise.
32366         * function.c (temp_slots_at_level): Likewise.
32367         * reg-stack.c (stack_regs_mentioned): Likewise.
32368         * regclass.c (allocate_reg_info): Likewise.
32369         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32370         set_bb_for_stmt, move_block_to_fn): Likewise.
32371         * tree-complex.c (tree_lower_complex): Likewise.
32372         * vec.h (VEC_safe_grow_cleared): New.
32373
32374         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
32375
32376 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
32377
32378         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
32379         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
32380         to loop_version.
32381         * cfgloopmanip.c (scale_loop_frequencies): Export.
32382         (loopify): Scale the frequencies by prescribed coefficients.
32383         (set_zero_probability): New function.
32384         (duplicate_loop_to_header_edge): Improve updating of frequencies.
32385         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
32386         and frequencies according to arguments.
32387         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
32388         correctly.
32389         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
32390         * modulo-sched.c (sms_schedule): Set probabilities for entering
32391         versioned loop correctly.
32392         * tree-vect-transform.c (vect_transform_loop): Ditto.
32393         * cfgloop.h (loopify, loop_version): Declaration changed.
32394         (scale_loop_frequencies): Declared.
32395
32396 2007-01-02  Jan Hubicka  <jh@suse.cz>
32397
32398         * cgraph.c: Include tree-flow.h
32399         (cgraph_add_new-function): Handle IPA_SSA mode; execute
32400         early_local_passes.
32401         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
32402         * tree-pass.h (pass_all_early_optimizations): Declare.
32403         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
32404         early_local_passes.
32405         (cgraph_analyze_function): Do early_local_passes.
32406         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32407         Do not add referenced vars.
32408         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
32409         SSA form.
32410         (gate_all_early_local_passes): New gate.
32411         (pass_early_local_passes): Use new gate.
32412         (execute_early_local_optimizations): New functions.
32413         (gate_all_early_optimizations): New gate.
32414         (pass_all_early_optimizations): New pass.
32415         (execute_free_datastructures): Free SSA only when initialized.
32416         (gate_init_datastructures): Init only when optimizing.
32417         (tree_lowering_passes): Do early local passes when called late.
32418         * tree-profile.c (do_tree_profiling): Don't profile functions added
32419         late.
32420         (do_early_tree_profiling, pass_early_tree_profile): Kill.
32421         * tree-cfg.c (update_modified_stmts): Do not update when operands are
32422         not active.
32423         * passes.c (init_optimizations_passes): Reorder so we go into SSA
32424         during early_local_passes.
32425         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
32426
32427
32428 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32429
32430         * Makefile.in: Update copyright year.
32431
32432 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32433
32434         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
32435         in $(lang_checks) and check-consistency targets.
32436
32437 2007-01-02  Jan Hubicka  <jh@suse.cz>
32438
32439         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32440         Do not add referenced vars.
32441         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
32442         are not active.
32443         * passes.c (init_optimization_passes): Put mudflap_2 after
32444         free_datastructures.
32445
32446 2007-01-02  Jan Hubicka  <jh@suse.cz>
32447
32448         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
32449         Set NOTHROW flag on call statements proved to be nothrow.
32450         Update statement of local calls so new pure/const functions are
32451         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
32452         goto receivers.
32453         (tree_rest_of_compilation): Register hooks and initialize bitmap
32454         early. Do not set after_inlining flag.
32455
32456 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
32457
32458         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
32459         HOST_BITS_PER_LONGLONG
32460
32461 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
32462
32463         PR c/19977
32464         * c-typeck.c (store_init_value): Don't emit pedantic overflow
32465         warning for non-static initializers.
32466
32467 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
32468
32469         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
32470         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
32471         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
32472         Always use set_unique_reg_note to add REG_EQUAL notes.
32473
32474 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32475
32476         Revert:
32477         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32478
32479         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32480         * cfgbuild.c (find_basic_blocks): Likewise.
32481         * cfgrtl.c (rtl_create_basic_block): Likewise.
32482         * function.c (temp_slots_at_level): Likewise.
32483         * reg-stack.c (stack_regs_mentioned): Likewise.
32484         * regclass.c (allocate_reg_info): Likewise.
32485         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32486         set_bb_for_stmt, move_block_to_fn): Likewise.
32487         * tree-complex.c (tree_lower_complex): Likewise.
32488         * vec.h (VEC_safe_grow_cleared): New.
32489
32490 2007-01-02  Ian Lance Taylor  <iant@google.com>
32491
32492         * c-common.c (c_common_truthvalue_conversion): When warning about
32493         using an assignment as a truth value, set TREE_NO_WARNING.
32494
32495 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32496
32497         PR middle-end/7651
32498         * c.opt (Wold-style-declaration): New.
32499         * doc/invoke.texi (C-only Warning Options): New.
32500         (Wold-style-declaration): Document it.
32501         (Wextra): Enabled by -Wextra.
32502         * c-opts.c (c_common_post_options): Enabled by -Wextra.
32503         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
32504         -Wold-style-declaration.
32505
32506 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32507
32508         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32509         * cfgbuild.c (find_basic_blocks): Likewise.
32510         * cfgrtl.c (rtl_create_basic_block): Likewise.
32511         * function.c (temp_slots_at_level): Likewise.
32512         * reg-stack.c (stack_regs_mentioned): Likewise.
32513         * regclass.c (allocate_reg_info): Likewise.
32514         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32515         set_bb_for_stmt, move_block_to_fn): Likewise.
32516         * tree-complex.c (tree_lower_complex): Likewise.
32517         * vec.h (VEC_safe_grow_cleared): New.
32518
32519 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
32520
32521         * c-common.c (c_common_nodes_and_builtins): Since variants of
32522         void_type_node get built before it is given a name, we need to
32523         give those variants the name, too.
32524         (complete_array_type): We need to work with the canonical main
32525         type of the array, from which we will build the qualified version.
32526         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
32527         * print-tree.c (print_node): Display canonical type information
32528         for each type.
32529         * stor-layout.c (layout_type): When we don't know the
32530         alignment of a type for which we're building an array, we end up
32531         guessing wrong, so make the type require structural equality.
32532         * tree.c (make_node_stat): When we build a new type, it is its
32533         own canonical type.
32534         (build_type_attribute_qual_variant): When building an attribute
32535         variant, its canonical type is the non-attribute variant. However,
32536         if the attributes are target-dependent and they differ, we need to
32537         use structural equality checks for this type.
32538         (build_qualified_type): A qualified type is not equivalent to its
32539         unqualified variant; set the canonical type appropriately.
32540         (build_distinct_type_copy): When building a distinct type from
32541         another type, the new type is its own canonical type.
32542         (build_variant_type_copy): When building a new type variant, we
32543         assume that it is equivalent to the original type.
32544         (build_pointer_type_for_mode): When building a pointer type, also
32545         build a canonical type pointer.
32546         (build_reference_type_for_mode): When building a reference type,
32547         also build a canonical type reference.
32548         (build_index_type): When we can't hash an index type (e.g.,
32549         because its maximum value is negative), the index type requires
32550         structural equality tests.
32551         (build_array_type): Build the canonical form of an array type.
32552         (build_function_type): Function types require structural equality,
32553         because they contain default arguments, attributes, etc.
32554         (build_method_type_directly): Ditto for method types.
32555         (build_offset_type): Build the canonical offset type.
32556         (build_complex_type): Build the canonical vector type.
32557         (make_vector_type): Build the canonical vector type.
32558         * tree.h (TYPE_CANONICAL): New.
32559         (TYPE_STRUCTURAL_EQUALITY_P): New.
32560         (SET_TYPE_STRUCTURAL_EQUALITY): New.
32561         (struct tree_type): Added "canonical" field.
32562         * params.h (VERIFY_CANONICAL_TYPES): New.
32563         * doc/c-tree.texi (TYPE_CANONICAL): Document.
32564         (TYPE_STRUCTURAL_EQUALITY_P): Document.
32565         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
32566         * doc/invoke.texi (verify-canonical-types): Document --param
32567         parameter for verifying canonical types.
32568
32569 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32570
32571         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
32572         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
32573         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
32574         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
32575         tm_file.
32576         * config/rs6000/e500.h: New.
32577         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
32578         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
32579         Remove.
32580         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
32581         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
32582         TARGET_E500_DOUBLE): Remove.
32583         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
32584         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
32585         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
32586         * config/rs6000/rs6000.c (rs6000_override_options): Use
32587         CHECK_E500_OPTIONS.
32588
32589 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32590
32591         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
32592         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
32593         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
32594         rs6000_emit_cmove): Don't check TARGET_E500.
32595         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
32596         sordered): Don't check TARGET_E500.
32597
32598 2007-01-01  Eric Christopher  <echristo@apple.com>
32599
32600         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
32601         HARD_REGISTER_NUM_P.
32602
32603 2007-01-01  Roger Sayle  <roger@eyesopen.com>
32604
32605         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
32606         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
32607         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
32608         eq/ne Y".
32609
32610 2007-01-01  Mike Stump  <mrs@apple.com>
32611
32612         * configure.ac: Remove support for building with Apple's gcc-3.1.
32613
32614 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32615
32616         PR middle-end/30311
32617         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
32618         REG is a hard register.  Do not modify REG before calling
32619         subreg_nregs.
32620         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
32621         multiple of the size of YMODE for certain lowpart cases.
32622
32623 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32624
32625         PR middle-end/30253
32626         * gimplify (voidify_wrapper_expr): Update for
32627         GIMPLE_MODIFY_STMT.
32628
32629 2007-01-01  Andreas Schwab  <schwab@suse.de>
32630
32631         PR target/29166
32632         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
32633         save of BR0 in extra_spill_size instead of spill_size.
32634         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
32635         area.
32636         (ia64_expand_epilogue): Restore BR0 from its new location.
32637
32638 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32639
32640         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
32641         Use a temporary variable if the left hand side is not a gimple
32642         register.
32643
32644 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32645
32646         * gimplify.c (gimplify_return_expr): Make the temporary variable
32647         for the return expression, a gimple register variable.
32648
32649 2007-01-01  Jan Hubicka  <jh@suse.cz>
32650
32651         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
32652         INSN_LIST.
32653
32654 2007-01-01  Mike Stump  <mrs@apple.com>
32655
32656         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
32657         .literal16.
32658         * config/darwin.c (machopic_select_rtx_section): Use
32659         HAVE_GAS_LITERAL16.
32660         (darwin_mergeable_constant_section): Likewise.
32661         * configure: Regenerate.
32662         * config.in: Regenerate.
32663
32664 2007-01-01  Jan Hubicka  <jh@suse.cz>
32665             Andrew Pinski  <pinskia@gmail.com>
32666
32667         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
32668         before starting IPA passes.