OSDN Git Service

46cfbac2d7cf8a7041a623e4fb7abe9363094231
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-11-26  Ben Elliston  <bje@au.ibm.com>
2
3         * unwind-dw2-fde.c: Fix comment typo.
4         * unwind-generic.h: Likewise, fix comment typos.
5         
6 2007-11-25  Richard Sandiford  <rsandifo@nildram.co.uk>
7
8         * tree-sra.c (scalarize_use): Adjust the vpos argument to
9         sra_explode_bitfield_assignment in cases where the type is
10         wider than the bitfield.
11
12 2007-11-25  Richard Guenther  <rguenther@suse.de>
13
14         * tree.h (struct tree_block): Move locus member next to
15         flags.
16         * c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
17         (SCOPE_LIST_CONCAT): Likewise.
18         (pop_scope): Likewise.
19         * function.c (instantiate_decls_1): Likewise.
20         (setjmp_vars_warning): Likewise.
21         * emit-rtl.c (set_used_decls): Likewise.
22         * tree-inline.c (add_lexical_block): Likewise.
23
24 2007-11-24  Hans-Peter Nilsson  <hp@axis.com>
25
26         * rtlanal.c (label_is_jump_target_p): Return true for a matching
27         REG_LABEL_TARGET.
28         * reorg.c (fill_slots_from_thread): Correct last change to use
29         NULL_RTX, not NULL.  Outside of REG_NOTES loop, increase and
30         decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
31         * jump.c (mark_jump_label_1): Add comment for last change
32         regarding JUMP_LABEL setting.
33         * gcse.c (add_label_notes): Remove conditional that the label is
34         mentioned in insn before adding regnote.
35         * sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
36         single_set insn only feeding a label to a jump through a
37         register that dies there.
38
39 2007-11-23  Dirk Mueller  <dmueller@suse.de>
40         Richard Guenther <rguenther@suse.de>
41
42         PR middle-end/34197
43         * tree-vrp.c (check_array_ref): Move check for valid location..
44         (check_array_bounds) here. Use EXPR_HAS_LOCATION().
45
46 2007-11-23  Hans-Peter Nilsson  <hp@axis.com>
47
48         * reload.c (find_reloads_address_1) <autoincdec cases>:
49         Call REG_OK_FOR_CONTEXT with the autoincdec code, not
50         outer_code.
51
52 2007-11-23  Richard Guenther  <rguenther@suse.de>
53         Michael Matz  <matz@suse.de>
54
55         PR tree-optimization/34176
56         * alloc-pool.h (empty_alloc_pool): Declare.
57         * alloc-pool.c (empty_alloc_pool): New function.
58         * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
59         valid table if a lookup from the optimistic table failed.
60         (vn_unary_op_lookup): Likewise.
61         (vn_binary_op_lookup): Likewise.
62         (vn_phi_lookup): Likewise.
63         (process_scc): Clear optimistic tables before every iteration.
64
65 2007-11-23  Richard Guenther  <rguenther@suse.de>
66
67         * tree-ssa-copy.c (may_propagate_copy): Remove redundant
68         checks.
69         (merge_alias_info): Do verification only if checking is
70         enabled.  Merge flow-sensitive alias information in simple
71         cases.
72         * tree-ssa-operands.c (get_addr_dereference_operands): Also
73         complain about missing NMTs.
74
75 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
76
77         PR c++/34198
78         * c-common.c (conversion_warning): For INTEGER_TYPE to
79         INTEGER_TYPE conversions call get_narrower on expr to avoid
80         spurious warnings from binop shortening or when the implicit
81         conversion can't change the value.
82
83 2007-11-22  Joseph Myers  <joseph@codesourcery.com>
84
85         PR c/14050
86         * c-decl.c (set_array_declarator_inner): Don't give error for
87         static or type qualifiers in abstract declarator.  Remove
88         abstract_p parameter.
89         * c-tree.h (set_array_declarator_inner): Update prototype.
90         * c-parser.c (c_parser_direct_declarator_inner): Update call to
91         set_array_declarator_inner.
92         * doc/standards.texi: Update for C99 TC3.
93
94 2007-11-22  Hans-Peter Nilsson  <hp@bitrange.com>
95
96         * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
97         line in my edit of the last change.
98
99 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
100
101         PR target/33947
102         * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
103         and TREE_READONLY on the fn decl rather than passing a chain
104         of attributes.
105
106 2007-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>
107
108         * config/sh/sh.md (divsi_inv_m3): Handle zero dividend
109         specially.
110
111 2007-11-22  Uros Bizjak  <ubizjak@gmail.com>
112
113         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
114         of ix86_arch and ix86_tune into a switch statement.
115         (enum processor_type): Default PROCESSOR_I386 to 0.
116         * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
117         of "ix86_tune == PROCESSOR_K6".
118         (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
119         a switch statement.
120
121 2007-11-22  Tom Tromey  <tromey@redhat.com>
122
123         * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
124         avoid writing into string allocated by ggc_alloc_string.
125
126 2007-11-21  Kaz Kojima  <kkojima@gcc.gnu.org>
127
128         PR target/34155
129         * config/sh/sh.md (binary_sf_op): Remove.
130         (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
131         * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
132         and gen_binary_sf_op1.
133
134 2007-11-21  Hans-Peter Nilsson  <hp@axis.com>
135
136         * regclass.c (init_reg_autoinc): Fix typo preventing test of
137         secondary output reload when setting forbidden_inc_dec_class.
138
139 2007-11-21  Richard Guenther  <rguenther@suse.de>
140
141         PR tree-optimization/34148
142         * tree-ssa-structalias.c (create_variable_info_for): Do not use
143         field-sensitive PTA for single-element structures.
144         * tree-ssa-alias.c (create_overlap_variables_for): Do not create
145         SFTs for single-element structures.
146
147 2007-11-20  Richard Guenther  <rguenther@suse.de>
148
149         PR middle-end/34154
150         * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
151         of the signed INT_CST_LT.
152         * stmt.c (expand_case): Likewise.
153         (estimate_case_costs): Likewise.
154
155 2007-11-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
156
157         * read-rtl.c (fatal_expected_char): Print EOF as text rather that
158         its binary representation.
159
160 2007-11-20  Richard Guenther  <rguenther@suse.de>
161
162         * tree-ssa-operands.c (add_virtual_operand): Consistently prune
163         accesses.
164
165 2007-11-20  Thiemo Seufer  <ths@mips.com>
166
167         * config/mips/mips.c (mips_file_start): Add support for
168         flagging 32-bit code with -mfp64 floating-point.
169
170 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
171
172         PR c/34146
173         * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
174         (c_gimplify_expr): Use it.
175
176 2007-11-20  Ben Elliston  <bje@au.ibm.com>
177
178         * config/spu/spu_mfcio.h: Fix typo.
179
180 2007-11-20  Ben Elliston  <bje@au.ibm.com>
181
182         * unwind.inc: Comment that unwind-sjlj.c includes this file.
183
184 2007-11-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
185             Ben Elliston  <bje@au.ibm.com>
186
187         * config/spu/mfc_tag_release.c: New file.
188         * config/spu/mfc_multi_tag_release.c: Likewise.
189         * config/spu/mfc_multi_tag_reserve.c: Likewise.
190         * config/spu/mfc_tag_release.c: Likewise.
191         * config/spu/mfc_tag_reserve.c: Likewise.
192         * config/spu/mfc_tag_table.c: Likewise.
193         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
194         (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
195         * config/spu/spu_mfcio.h: Avoid <stdint.h>.
196         (uint64_t): Typedef if __IN_LIBGCC2 is defined.
197         (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
198         (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
199         mfc_multi_tag_release): Likewise.
200         (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
201         __mfc_multi_tag_release): Declare.
202
203 2007-11-19  Jason Merrill  <jason@redhat.com>
204
205         PR debug/28834, debug/29436, c/32326
206         * tree.c (build_type_attribute_qual_variant): Refuse to make
207         a distinct copy of a struct/enum type.  Use build_distinct_type_copy.
208         * doc/extend.texi (Type Attributes): Don't encourage people to add
209         attributes to struct/enum types in a typedef.  Fix
210         transparent_union example.
211
212         * tree-inline.c (remap_type_1): Remove code that's redundant with
213         remap_type.
214         (build_duplicate_type): Set id.copy_decl.
215         * c-common.c (handle_transparent_union_attribute): Simplify logic.
216
217 2007-11-19  Peter Bergner  <bergner@vnet.ibm.com>
218
219         * config/rs6000/rs6000.c (invalid_e500_subreg,
220         rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
221         rs6000_legitimize_address, rs6000_legitimize_reload_address,
222         rs6000_legitimate_address, function_arg_advance,
223         spe_build_register_parallel, rs6000_spe_function_arg,
224         rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
225         emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
226         rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
227         TDmode similarly to DFmode and TFmode.
228         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
229         DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
230
231 2007-11-19  Eric Botcazou  <ebotcazou@adacore.com>
232
233         * stor-layout.c (lang_adjust_rli): Delete.
234         (set_lang_adjust_rli): Likewise.
235         (layout_type): Do not call lang_adjust_rli hook.
236         * tree.h (set_lang_adjust_rli): Delete.
237
238 2007-11-19  Bernd Schmidt  <bernd.schmidt@analog.com>
239         
240         * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
241         n_dregs_to_save and n_pregs_to_save.
242         (n_pregs_to_save, n_dregs_to_save): Use it.  New argument CONSECUTIVE;
243         all callers changed.
244         (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
245         able to save single D/P registers that aren't saved by the push/pop
246         multiple insns.
247
248 2007-11-19  Richard Guenther  <rguenther@suse.de>
249
250         PR tree-optimization/34099
251         * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
252         MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
253         if only one operand is undefined.
254
255 2007-11-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
256
257         PR tree-optimization/34036
258         * opts.c (set_fast_math_flags): Do not set flags in common
259         with set_unsafe_math_optimizations_flags, invoke it directly.
260         (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
261         and flag_signed_zeros.
262         * toplev.c (process_options): Force flag_associative_math to 0 and
263         warn, if it is set and either flag_trapping_math or flag_signed_zeros
264         is set too.
265         * doc/invoke.texi (Optimize Options): Document the new behavior
266         of -funsafe-math-optimizations, that -fassociative-math requires
267         both -fno-signed-zeros and -fno-trapping-math and make it clear
268         that -fno-trapping-math requires -fno-signaling-nans.  Refactor
269         documentation of -ffast-math.
270
271 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
272
273         PR rtl-optimization/34132
274         * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
275         and insn.
276
277         PR middle-end/33335
278         * optabs.h (optab_table): Change type to struct optab from optab.
279         (convert_optab_table): Similarly.
280         Adjust all _optab macros to expand to addresses of optab_table
281         resp. convert_optab_table elements rather than the values of the
282         elements.
283         * optabs.c (optab_table): Change typype to struct optab from optab.
284         If compiled by recent GCC, initialize all the insn_code fields in
285         the array using designated range initializers.
286         (convert_optab_table): Similarly.
287         (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
288         set_conv_libfunc): Into libfunc_entry's optab field store index within
289         optab_table resp. convert_optab_table array instead of difference
290         between two separately malloced addresses.
291         (new_optab): Add op argument, don't return anything.  Initialize
292         just the insn_code field in handlers array and only when needed.
293         (init_optab, init_optabv): Add op argument, don't return anything.
294         Adjust new_optab caller.
295         (new_convert_optab): Removed.
296         (init_convert_optab): Add op argument, don't return anything, don't
297         call new_convert_optab.  If needed, initialize insn_code field in
298         handlers array.
299         (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
300         callers.
301         (debug_optab_libfuncs): Adjust uses of optab_table and
302         convert_optab_table arrays.
303
304 2007-11-18  Richard Guenther  <rguenther@suse.de>
305
306         PR tree-optimization/34127
307         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
308         Make code match up the comments, require compatibility of the
309         pointed-to types.
310
311 2007-11-17  Richard Guenther  <rguenther@suse.de>
312
313         PR middle-end/34130
314         * fold-const.c (extract_muldiv_1): Do not move negative
315         constants inside ABS_EXPR.
316
317 2007-11-16  Ian Lance Taylor  <iant@google.com>
318
319         * collect2.c (dump_file): If a demangled symbol is followed by a
320         space, make sure we output at least one space.
321
322 2007-11-16  Richard Guenther  <rguenther@suse.de>
323
324         PR middle-end/34030
325         * fold-const.c (fold_binary): Use correct types for folding
326         1 << X & Y to Y >> X & 1.
327
328 2007-11-16  Richard Guenther  <rguenther@suse.de>
329
330         PR tree-optimization/33870
331         * tree.h (struct tree_memory_tag): Add base_for_components flag.
332         (struct tree_struct_field_tag): Remove nesting_level field.
333         (SFT_NESTING_LEVEL): Remove.
334         (SFT_BASE_FOR_COMPONENTS_P): Add.
335         * tree-flow.h (struct fieldoff): Remove nesting_level field.  Add
336         base_for_components flag.
337         (push_fields_onto_fieldstack): Remove nesting_level parameter.
338         * tree-ssa-alias.c (create_sft): Likewise.  Add base_for_components
339         parameter.
340         (create_overlap_variables_for): Deal with it.
341         * tree-dfa.c (dump_subvars_for): Likewise.
342         (dump_variable): Likewise.
343         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
344         Set base_for_components for first elements of sub-structures.
345         (create_variable_info_for): Handle base_for_components.
346         (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
347         pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
348         * tree-ssa-operands.c (ref_nesting_level): Remove.
349         (add_vars_for_offset): Remove full_ref parameter, always add
350         the offset of the pointed-to SFT.
351         (add_virtual_operand): Adjust for changed signature of
352         add_vars_for_offset.
353
354 2007-11-16  Sa Liu  <saliu@de.ibm.com>
355
356         * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined 
357         floatunssidf2 and floatunsdidf2.
358
359 2007-11-16  Richard Guenther  <rguenther@suse.de>
360
361         PR tree-optimization/34113
362         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
363         Use correct conversion direction for checking type compatibility.
364
365 2007-11-16  Richard Guenther  <rguenther@suse.de>
366
367         PR tree-optimization/34099
368         * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
369         that produce UNDEFINED result if at least one of its operands
370         is UNDEFINED.  By default the result is only UNDEFINED if all
371         operands are UNDEFINED.
372
373 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
374
375         PR driver/30460
376         * gcc.c (init_spec): Don't initialize asm_debug here...
377         (main): ... but here.
378
379 2007-11-07  Tom Tromey  <tromey@redhat.com>
380
381         * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to
382         'func'. 
383         * tree-parloops.c (create_loop_fn): Use set_cfun.
384         * gengtype.c (open_base_files): Emit #undef cfun.
385         * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
386         * function.h (cfun): New define.
387         * function.c: Undefine cfun.
388
389 2007-11-07  Eric B. Weddington  <eweddington@cso.atmel.com>
390
391         * config/avr/avr.c (avr_mcu_types): Add attiny88.
392         * config/avr/avr.h (LINK_SPEC): Likewise.
393         (CRT_BINUTILS_SPECS): Likewsie.
394         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
395
396 2007-11-15  Jakub Jelinek  <jakub@redhat.com>
397
398         PR middle-end/23848
399         * tree-ssa-ccp.c (optimize_stack_restore): New function.
400         (execute_fold_all_builtins): Call optimize_stack_restore for
401         BUILT_IN_STACK_RESTORE.
402
403 2007-11-15  Paolo Bonzini  <bonzini@gnu.org>
404
405         * fwprop.c (try_fwprop_subst): Skip profitability check for forward
406         propagation into an address; that's done in should_replace_address.
407                 
408 2007-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
409
410         * config/spu/spu-protos.h (legitimate_const): Remove prototype.
411         * config/spu/spu.c (legitimate_const): Remove.
412         (classify_immediate): Inline call to legitimate_const.
413         (spu_legitimate_address): Likewise.  Allow SYMBOL_REF + CONST_INT
414         for any constant, not just -512 .. 511.
415
416 2007-11-15  Sa Liu  <saliu@de.ibm.com>
417
418         * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
419         condition from HONOR_NANS test.
420         * config/spu/spu.md (ceq_df): Always generate comparison code
421         inline, including checks for NaNs and infinities.
422         (cgt_df): Likewise.
423         (cgt_v2df): Likewise.
424         (cmpdf): Make this expander unconditional.
425
426 2007-11-15  Richard Guenther  <rguenther@suse.de>
427
428         * tree-ssa-alias.c (create_overlap_variables_for): Make sure
429         to only create SFTs if we also create variable infos for PTA.
430         * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping
431         SFTs.
432
433 2007-11-15  Richard Guenther  <rguenther@suse.de>
434
435         * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
436         type for TBAA pruning.
437         (find_what_p_points_to): Call set_uids_in_ptset with the original
438         pointer, not the decl of the solution we collapsed to.
439
440 2007-11-14  David Daney  <ddaney@avtrex.com>
441
442         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
443         to find sigcontext.
444
445 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
446
447         PR target/33923
448         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
449         for registers in BR_REGS class.
450
451 2007-11-14  Jakub Jelinek  <jakub@redhat.com>
452
453         PR middle-end/34088
454         * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
455         init_ssa_operands has not been called for cfun.
456
457 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
458
459         PR tree-optimization/34046
460         * cfg.c (update_bb_profile_for_threading): Avoid the division for the
461         scaling if the old probability is greater than the new base.
462
463 2007-11-14  Sebastian Pop  <sebastian.pop@amd.com>
464
465         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
466         unused edges after loop duplication.
467
468 2007-11-14  Uros Bizjak  <ubizjak@gmail.com>
469
470         * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
471         (enum target_cpu_default): ... this enum.
472         (TARGET_CPU_DEFAULT_NAMES): Remove macro.  Move initializer to ...
473         * config/i386/i386.c (override_options): ... here.
474         * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
475         TARGET_CPU_DEFAULT_i486.
476
477 2007-11-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
478
479         * global.c (rest_of_handle_global_alloc): Fix comment typos.
480         * config/sh/sh.c (sh_rtx_costs): Likewise.
481         * ChangeLog: Likewise.
482
483 2007-11-13  Sebastian Pop  <sebastian.pop@amd.com>
484
485         * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
486         should not be of pointer type.
487
488 2007-11-13  Michael Meissner  <michael.meissner@amd.com>
489
490         * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate
491         line.
492
493 2007-11-13  Sterling Augustine  <sterling@tensilica.com>
494             Bob Wilson  <bob.wilson@acm.org>
495         
496         * config/xtensa/unwind-dw2-xtensa.c: New.
497         * config/xtensa/unwind-dw2-xtensa.h: New.
498         * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
499         (DWARF2_UNWIND_INFO): Remove.
500         (DWARF_FRAME_REGISTERS): Define.
501         (EH_RETURN_DATA_REGNO): Define.
502         * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
503         (eh_return): New.
504         * config/xtensa/t-xtensa (LIB2ADDEH): Define.
505         
506 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
507
508         * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
509         -fsched-stalled-insns.
510
511         PR tree-optimization/34063
512         * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
513         as first chrec_fold_plus operand rather than second.
514
515 2007-11-13  Diego Novillo  <dnovillo@google.com>
516
517         PR tree-optimization/33870
518         * tree.h (strcut tree_memory_tag): add field unpartitionable.
519         remove field in_nested_struct.
520         (struct tree_struct_field_tag): add field nesting_level.
521         (sft_in_nested_struct): remove.
522         (sft_nesting_level): define.
523         (sft_unpartitionable_p): define.
524         * tree-ssa-alias.c (mem_sym_score): if mp->var is not
525         partitionable, return long_max.
526         (compute_memory_partitions): do not partition sfts marked
527         unpartitionable.
528         (create_sft): add argument nesting_level.  set
529         sft_nesting_level with it.  update all users.
530         (create_overlap_variables_for): show nesting level.
531         * tree-dfa.c (dump_subvars_for): likewise.
532         (dump_variable): likewise.
533         show whether the sft is partitionable or not.
534         * tree-flow.h (struct fieldoff): remove field
535         in_nested_struct.
536         add field nesting_level.
537         * tree-ssa-structalias.c (struct variable_info): remove
538         field in_nested_struct.
539         (push_fields_onto_fieldstack): add argument
540         nesting_level.  update all users.
541         update documentation.
542         update pair->nesting_level with nesting_level.
543         make recursive calls with nesting_level + 1.
544         (set_uids_in_ptset): if an sft is added to the points-to
545         set, mark it as unpartitionable.
546         * tree-ssa-operands.c (ref_nesting_level): new.
547         (add_vars_for_offset): call it.
548         add argument full_ref.  update
549         callers.
550         if var is inside a nested structure and the nesting level
551         of full_ref is lower than the nesting level of var,
552         adjust offset by the offset of var.
553
554 2007-11-13  Victor Kaplansky  <victork@il.ibm.com>
555
556         PR tree-optimization/32582
557         * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
558
559 2007-11-12  Danny Smith  <dannysmith@users.sourceforge.net>
560
561         * doc/extend.texi (dllimport): Document that pointers to dllimport'd
562         functions can be used as constant.
563
564 2007-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
565
566         PR rtl-optimization/34035
567         * cse.c (cse_cfg_altered): New global variable.
568         (cse_jumps_altered): Make boolean.
569         (recorded_label_ref): Likewise.
570         (cse_insn): Adjust for above changes.
571         (cse_extended_basic_block): Likewise.  Set cse_cfg_altered
572         if dead edges have been purged.
573         (cse_main): Change return value specification and adjust code.
574         (rest_of_handle_cse): Adjust for above change.
575         (rest_of_handle_cse2): Likewise.
576         * gcse.c (rest_of_handle_gcse): Likewise.
577
578 2007-11-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
579             Michael Meissner  <michael.meissner@amd.com>
580
581         * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
582         get the appropriate suffix for the coms* instruction.
583         (sse5_pcmov_<mode>): Restrict operands of pcmov
584         for scalar case to be only xmm registers and not memory.
585
586         * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
587         constraints to follow the mnemonics for the pcmov instruction   
588
589 2007-11-12  Richard Sandiford  <rsandifo@nildram.co.uk>
590
591         PR target/34042
592         * config/mips/mips.c (mips_return_fpr_single): New function.
593         (mips_function_value): Use it when returning single-field
594         aggregates in FPRs.
595         (mips_expand_call): Handle the PARALLELs created by
596         mips_return_fpr_single.
597
598 2007-11-12  Richard Guenther  <rguenther@suse.de>
599
600         PR middle-end/34070
601         * fold-const.c (fold_binary): If testing for non-negative
602         operands with tree_expr_nonnegative_warnv_p make sure to
603         use op0 which has all (sign) conversions retained.
604
605 2007-11-12  Richard Guenther  <rguenther@suse.de>
606
607         PR middle-end/34027
608         * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
609         (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
610
611 2007-11-12  Ira Rosen  <irar@il.ibm.com>
612
613         PR tree-optimization/33953
614         * tree-vect-transform.c (vectorizable_operation): In case of SLP,
615         allocate vec_oprnds1 according to the number of created vector
616         statements. In case of shift with scalar argument, store scalar operand
617         for every vector statement to be created for the SLP node. Fix a
618         comment.
619
620 2007-11-10  Steven Bosscher  <stevenb.gcc@gmail.com>
621
622         * gcse.c (CUID_INSN): Remove.
623         (cuid_insn): Ditto.
624         (alloc_gcse_mem): Don't allocate cuid_insn.
625         (free_gcse_mem): Don't free cuid_insn.
626
627 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
628
629         PR fortran/34020
630         * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
631         nops.
632
633         PR middle-end/34018
634         * tree-inline.h (copy_body_data): Add regimplify field.
635         * tree-inline.c (copy_body_r): Set id->regimplify to true
636         if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
637         substitutions.
638         (copy_bb): Clear id->regimplify before walk_tree, if it is
639         set afterwards, regimplify the whole statement.
640
641         PR tree-optimization/33680
642         * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
643         if the added cast involves variable length types.
644
645 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
646             Maxim Kuvyrkov  <maxim@codesourcery.com>
647
648         * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
649         instead of TRUE_BARRIER for jumps.  Add register dependencies
650         even when reg_pending_barrier is set.
651
652 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
653
654         * haifa-sched.c (haifa_classify_insn): Rename to ...
655         (haifa_classify_rtx): ...  this.  Improve handling of COND_EXECs,
656         handle PARALLELs by recursing.  Use it ...  
657         (haifa_classify_insn): ...  here.  Reimplement.
658
659 2007-11-09  Richard Guenther  <rguenther@suse.de>
660
661         * bitmap.h (bitmap_single_bit_set_p): Declare.
662         * bitmap.c (bitmap_single_bit_set_p): New function.
663         * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
664         (maybe_create_global_var): Use bitmap_empty_p.
665
666 2007-11-09  Paolo Bonzini  <bonzini@gnu.org>
667             Jakub Jelinek  <jakub@redhat.com>
668
669         PR rtl-optimization/34012
670         * fwprop.c (try_fwprop_subst): Do not replace if the new
671         SET_SRC has a higher cost than the old one.
672
673 2007-11-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
674
675         PR rtl-optimization/33732
676         * reload.c (push_reload): Check that the REG_DEAD note was referring
677         to a hardreg or to a pseudo that has been assigned exactly one hardreg
678         before considering it in order to select the reload register.
679         (combine_reloads): Likewise.
680         (find_dummy_reload): Likewise.
681
682 2007-11-09  Richard Guenther  <rguenther@suse.de>
683
684         * tree-flow.h (struct ptr_info_def): Make escape_mask a
685         ENUM_BITFIELD.
686         (struct ptr_info_def): Likewise.
687         (enum escape_type): Also use bit zero.
688
689 2007-11-09  Richard Guenther  <rguenther@suse.de>
690
691         PR tree-optimization/33604
692         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
693         Disregard changes in CV qualifiers of pointed to types for
694         forward propagating ADDR_EXPRs.
695         * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
696         expression.
697
698 2007-11-09  Richard Sandiford  <rsandifo@nildram.co.uk>
699
700         * dse.c (find_shift_sequence): Always choose an integer mode for
701         new_mode.
702         (replace_read): Require both the read and store mode to be
703         integer ones.  Remove a then-redundant FLOAT_P check.
704
705 2007-11-08  Richard Guenther  <rguenther@suse.de>
706
707         * tree-dfa.c (remove_referenced_var): If removing a
708         variable which has subvars, also remove those from
709         the referenced vars.  Do not create a variable annotation.
710
711 2007-11-08  Bob Wilson  <bob.wilson@acm.org>
712
713         * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
714         argument for gen_entry calls.
715         * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
716         (entry): Use the new attribute value.  Remove unused first operand.
717
718 2007-11-08  Tom Tromey  <tromey@redhat.com>
719
720         * c-parser.c (c_parser_translation_unit): Use location in error.
721         (c_parser_external_declaration): Likewise.
722         (c_parser_declaration_or_fndef): Likewise.
723         (c_parser_enum_specifier): Likewise.
724         (c_parser_struct_or_union_specifier): Likewise.
725         (c_parser_struct_declaration): Likewise.
726         (c_parser_typeof_specifier): Likewise.
727         (c_parser_parms_list_declarator): Likewise.
728         (c_parser_asm_string_literal): Likewise.
729         (c_parser_braced_init): Likewise.
730         (c_parser_initelt): Likewise.
731         (c_parser_compound_statement_nostart): Likewise.
732         (c_parser_statement_after_labels): Likewise.
733         (c_parser_do_statement): Likewise.
734         (c_parser_asm_statement): Likewise.
735         (c_parser_conditional_expression): Likewise.
736         (c_parser_unary_expression): Likewise.
737         (c_parser_sizeof_expression): Likewise.
738         (c_parser_postfix_expression): Likewise.
739         (c_parser_postfix_expression_after_paren_type): Likewise.
740         (c_parser_objc_class_instance_variables): Likewise.
741         (c_parser_objc_method_definition): Likewise.
742         (c_parser_objc_methodprotolist): Likewise.
743         (c_parser_pragma): Likewise.
744         (c_parser_omp_clause_num_threads): Likewise.
745         (c_parser_omp_clause_schedule): Likewise.
746         (c_parser_omp_all_clauses): Likewise.
747         (c_parser_omp_sections_scope): Likewise.
748         (c_parser_label): Use location of label, not colon.
749
750 2007-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
751
752         PR target/33774
753         * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
754         IN_TARGET_LIBS.
755
756 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
757
758         PR middle-end/33826
759         * ipa-pure-const.c (static_execute): Added code to keep recursive
760         functions from being marked as pure or const.
761         * ipa-utils.c (searchc): Fixed comment.
762                 
763 2007-11-08  Tom Tromey  <tromey@redhat.com>
764
765         * common.opt (fshow-column): Default to 0.
766         * configure: Rebuilt.
767         * configure.ac (--enable-mapped-location): Default to 'yes'.
768
769 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
770
771         * common.opt: Add pointer to doc/options.texi.
772         * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
773         -fipa-reference): Add or correct doc.  Sorted options list for -Os
774         -O, -O2.
775
776 2007-11-07  Bernhard Fischer  <aldot@gcc.gnu.org>
777
778         PR target/16350
779         * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
780         * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
781         TARGET_BIG_ENDIAN_DEFAULT.  Use for MULTILIB_DEFAULTS.
782         (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
783         (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
784         * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
785         to TARGET_BIG_ENDIAN_DEFAULT.
786         (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
787         * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
788         to TARGET_BIG_ENDIAN_DEFAULT.
789
790 2007-11-07  Diego Novillo  <dnovillo@google.com>
791
792         * tree.h (struct tree_struct_field_tag): Move field
793         in_nested_struct ...
794         (struct tree_memory_tag): ... here.
795
796 2007-11-07  Diego Novillo  <dnovillo@google.com>
797
798         PR 33870
799         * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
800         (SFT_IN_NESTED_STRUCT): Define.
801         * tree-dfa.c (dump_subvars_for): Show offset of each
802         sub-var.
803         * tree-flow.h (struct fieldoff): Add field in_nested_struct.
804         * tree-ssa-structalias.c (struct variable_info): Likewise.
805         (push_fields_onto_fieldstack): If OFFSET is positive,
806         set in_nested_struct.
807         (create_variable_info_for): Copy setting of
808         in_nested_struct from the field offset object.
809         (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
810         variable info object.
811         * tree-ssa-operands.c (add_vars_for_offset): If VAR
812         belongs to a nested structure, adjust OFFSET by
813         SFT_OFFSET(VAR).
814
815 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
816
817         PR rtl-optimization/33737
818         * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
819         target block after computing the probabilities of outgoing edges.
820         Cap the frequency to BB_FREQ_MAX.
821         * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
822         frequency of the basic block if it has been reused.
823
824 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
825
826         PR rtl-optimization/33822
827         * rtl.h (REG_OFFSET): Fix comment.
828         * var-tracking.c (INT_MEM_OFFSET): New macro.
829         (var_mem_set): Use it.
830         (var_mem_delete_and_set): Likewise.
831         (var_mem_delete): Likewise.
832         (same_variable_part_p): Likewise.
833         (vt_get_decl_and_offset): Likewise.
834         (offset_valid_for_tracked_p): New predicate.
835         (count_uses): Do not track locations with invalid offsets.
836         (add_uses): Likewise.
837         (add_stores): Likewise.
838
839 2007-11-07  Tom Tromey  <tromey@redhat.com>
840
841         * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
842         (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
843
844 2007-11-07  Dmitry Zhurikhin  <zhur@ispras.ru>
845             Andrey Belevantsev  <abel@ispras.ru>
846
847         * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
848         generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
849         (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
850         Save calculated max_asap in it.         
851         (sms_schedule): Calculate maxii using max_asap.
852
853 2007-11-07  Andreas Krebbel  <krebbel1@de.ibm.com>
854
855         * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
856         with -mhard-dfp/-mno-hard-dfp.
857
858 2007-11-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
859             Jakub Jelinek  <jakub@redhat.com>
860
861         PR middle-end/33670
862         * haifa-sched.c (check_sched_flags): Remove.
863         (sched_init): Don't call it.
864
865 2007-11-06  Diego Novillo  <dnovillo@google.com>
866
867         * tree-flow.h (struct fieldoff): Reformat comment.
868         Document fields.
869         * tree-ssa-operands.c: Tidy top-level comments.
870         (add_vop): Likewise.
871         (add_vars_for_offset): Tidy parameter formatting..
872         (get_addr_dereference_operands): Likewise.
873         (get_indirect_ref_operands): Likewise.
874         (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
875         <OMP_ATOMIC_STORE>: Likewise.
876
877 2007-11-06  Rask Ingemann Lambertsen  <rask@sygehus.dk>
878
879         PR target/32787
880         * config/i386/driver-i386.c: Test for __GNUC__ instead of
881         GCC_VERSION which is always defined.
882
883 2007-11-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
884
885         PR target/30961
886         * reload1.c (find_reloads): Also check in_reg when handling a
887         simple move with an input reload and a destination of a hard
888         register.
889
890 2007-11-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
891
892         * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
893         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
894         TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
895         TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
896         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
897         (m68k_sched_attr_type2): New function.
898         (sched_adjust_cost_state): New static variable.
899         (m68k_sched_adjust_cost): New static function implementing
900         scheduler hook.
901         (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
902         New static variables.
903         (m68k_sched_variable_issue): New static function implementing
904         scheduler hook.
905         (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
906         (sched_dump_split_class): New static function.
907         (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
908         variables.
909         (sched_dump_dfa_class, m68k_sched_dump): New static function.
910         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
911         m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
912         m68k_sched_dfa_post_advance_cycle): New static functions implementing
913         scheduler hooks.
914
915         * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
916         (CPU_UNITS_QUERY): Define.
917
918         * config/m68k/cf.md: New file.
919         * config/m68k/m68.md (cf.md): New include.
920
921 2007-11-06  Tom Tromey  <tromey@redhat.com>
922
923         PR c++/32256, PR c++/32368:
924         * function.c (saved_in_system_header): New global.
925         (push_cfun): Save in_system_header.
926         (pop_cfun): Restore in_system_header.
927         (push_struct_function): Save in_system_header.
928
929 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
930
931         PR c++/33977
932         PR c++/33886
933         * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
934         (complete_array_type): Set canonical type appropriately.
935         * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
936         C and C++ front ends now have different versions of this function,
937         because the C++ version needs to maintain canonical types here.
938
939 2007-11-04  Razya Ladelsky  <razya@il.ibm.com>
940         
941         * tree-parloops.c (reduction_info): Remove reduction_init field.
942         (initialize_reductions): Remove creation of the reduction_init variable.
943         (struct data_arg): Remove.
944         (add_field_for_reduction, create_stores_for_reduction): New functions.
945         (add_field_for_name): Remove reduction handling.
946         (separate_decls_in_loop): Call add_field_for_reduction,
947         create_stores_for_reduction.
948
949 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
950
951         PR tree-optimization/33458
952         * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
953         !is_gimple_val PHI argument, gimplify it and insert it on edge.
954
955         PR tree-optimization/33993
956         * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
957         rather than build_constructor_from_list if all list values are
958         constants.
959         (get_initial_def_for_induction): Use build_vector instead of
960         build_constructor_from_list.
961
962 2007-11-05  Mark Mitchell  <mark@codesourcery.com>
963
964         PR target/33579
965         * tree.h (DECL_INIT_PRIORITY): Do not require
966         DECL_HAS_INIT_PRIORITY_P.
967         (DECL_FINI_PRIORITY): Likewise.
968         * tree.c (decl_init_priority_lookup): Remove assert.
969         (decl_fini_priority_insert): Likewise.
970         * cgraphunit.c (static_ctors): Make it a VEC.
971         (static_dtors): Likewise.
972         (record_cdtor_fn): Adjust accordingly.
973         (build_cdtor): Generate multiple functions for each initialization
974         priority.
975         (compare_ctor): New function.
976         (compare_dtor): Likewise.
977         (cgraph_build_cdtor_fns): Sort the functions by priority before
978         calling build_cdtor.
979         (cgraph_build_static_cdtor): Put the priority in the function's
980         name.
981
982 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
983
984         PR driver/32632
985         * common.opt: Add shared and pie.
986
987 2007-11-05  Bob Wilson  <bob.wilson@acm.org>
988
989         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
990         replace references to virtual_stack_vars_rtx in goto_handler.
991
992 2007-11-05  Paul Brook  <paul@codesourcery.com>
993
994         * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
995         * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
996         (arm_file_start): Don't set Tag_ABI_PCS_wchar_t.  Call
997         arm_lang_output_object_attributes_hook.
998         * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
999         (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
1000         * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
1001         prototype.
1002         * config/arm/t-arm.c (arm.o): New rule.
1003         * config/arm/arm-c.c: New file.
1004
1005 2007-11-05  Nick Clifton  <nickc@redhat.com>
1006             Sebastian Pop  <sebastian.pop@amd.com>
1007
1008         PR tree-optimization/32540
1009         PR tree-optimization/33922
1010         * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
1011         * tree-ssa-pre.c: Include params.h.
1012         (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
1013         to limit the maximum length of the PA set for a given block.
1014         * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
1015         * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
1016
1017 2007-11-05  Nathan Sidwell  <nathan@codesourcery.com>
1018
1019         * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
1020         __fixunssfDI): Make return type unsigned.
1021         * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
1022         __fixunssfDI): Make return type unsigned.
1023
1024 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
1025
1026         PR tree-optimization/33856
1027         * tree-data-ref.c (get_references_in_stmt): Don't add
1028         REFERENCE_CLASS_P trees to references vector if get_base_address
1029         returns NULL on them.
1030
1031 2007-11-05  Alexandre Oliva  <aoliva@redhat.com>
1032
1033         * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
1034
1035 2007-11-04  Andrew Pinski  <pinskia@gmail.com>
1036
1037         PR middle-end/32931
1038         * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
1039         for TRUTH_NOT_EXPR to type.
1040
1041 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
1042
1043         * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
1044
1045 2007-11-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1046
1047         PR fortran/10220
1048         * dwarf2out.c (add_calling_convention_attribute): Change
1049         second argument. Set calling convention to DW_CC_program for
1050         Fortran main program.
1051         (gen_subprogram_die): Adjust to new prototype for
1052         add_calling_convention_attribute.
1053
1054 2007-11-03  Dorit Nuzman  <dorit@il.ibm.com>
1055
1056         PR tree-optimization/33987
1057         * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
1058         Fix indentation.
1059         (vectorizable_reduction): Add type check.
1060
1061 2007-11-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1062
1063         PR c/29062
1064         * c-parser.c (c_parser_statement_after_labels): Error if a
1065         declaration is parsed after a label.
1066         
1067 2007-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
1068
1069         PR debug/33921
1070         * reorg.c (emit_delay_sequence): Do not clear the locator on
1071         the jump instruction.
1072
1073 2007-11-03  Jakub Jelinek  <jakub@redhat.com>
1074
1075         PR middle-end/33670
1076         * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
1077         current sched region.
1078
1079 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1080
1081         * config/ia64/ia64.c (struct reg_write_state): Change into
1082         unsigned short bitfields rather than unsigned int, decrease
1083         first_pred to just 10 bits.
1084         (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
1085         into two char array.
1086         (rws_insn_set, rws_insn_test): New functions.
1087         (in_safe_group_barrier): New variable.
1088         (rws_update): Remove first argument, always set rws_sum array.
1089         (rws_access_regno): Use rws_insn_set macro.  Only call rws_update
1090         or update rws_sum if !in_safe_group_barrier, adjust rws_update
1091         args.
1092         (rtx_needs_barrier): Use rws_insn_test macro.
1093         (safe_group_barrier_needed): Don't save/restore rws_sum array,
1094         instead set/clear in_safe_group_barrier flag.
1095
1096 2007-11-02  Bob Wilson  <bob.wilson@acm.org>
1097
1098         * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
1099         REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
1100         pointer or frame pointer.
1101         * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
1102         (MUST_USE_SJLJ_EXCEPTIONS): Define.
1103         (DWARF2_UNWIND_INFO): Define.
1104         (INCOMING_RETURN_ADDR_RTX): Define.
1105         (DWARF_FRAME_RETURN_COLUMN): Define.
1106
1107 2007-11-02  Tom Tromey  <tromey@redhat.com>
1108
1109         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
1110         traversing pool.
1111
1112 2007-11-02  Diego Novillo  <dnovillo@google.com>
1113
1114         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
1115         argument from function pointer ANALYZE_EXPR.  Update all
1116         users.
1117         * cgraph.c (debug_cgraph_node): New.
1118         (debug_cgraph): New.
1119
1120 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1121
1122         PR rtl-optimization/33648
1123         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
1124         the newly created basic block.
1125
1126 2007-11-01  Richard Guenther  <rguenther@suse.de>
1127
1128         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
1129
1130 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
1131
1132         PR rtl-optimization/33828
1133         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
1134         of VBEIN and VBEOUT.
1135
1136 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
1137
1138         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
1139         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
1140         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
1141
1142 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
1143
1144         * gcc.c (getenv_spec_function): Escape the environment variable's
1145         value.
1146
1147 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1148
1149         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
1150         show that CSE means common subexpression elimination.  Change wording
1151         for -fsee and define LCM.  Remove capitalization of optimizations
1152         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
1153
1154 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1155
1156         PR testsuite/25352
1157         * doc/sourcebuild.texi (Test Directives): Document that xfail
1158         has no effect for dg-do except when dg-do-what is "run".
1159
1160 2007-11-01  Tom Tromey  <tromey@redhat.com>
1161
1162         * c-decl.c (grokdeclarator): Set decl source locations.
1163         * c-parser.c (c_parser_enum_specifier): Set location.
1164         (c_parser_struct_or_union_specifier): Likewise.
1165
1166 2007-11-01  Tom Tromey  <tromey@redhat.com>
1167
1168         * print-tree.c (print_node): Print column number.
1169
1170 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
1171
1172         PR debug/33537
1173         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
1174         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
1175         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
1176
1177         PR rtl-optimization/33673
1178         * gcse.c (cprop_jump): If a conditional jump has been optimized
1179         into unconditional jump, make the remaining normal edge fallthru
1180         and delete the jump insn.
1181
1182 2007-11-01  Ben Elliston  <bje@au.ibm.com>
1183
1184         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
1185         (set_mem_attrs_from_reg): Likewise.
1186
1187 2007-11-01  Michael Matz  <matz@suse.de>
1188
1189         PR tree-optimization/33961
1190         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
1191         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
1192         (add_or_mark_expr): New argument 'store', using it to search
1193         the hash table.
1194         (nt_init_block): Adjust calls to add_or_mark_expr.
1195
1196 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
1197
1198         PR target/31507
1199         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
1200         for the first push_operand.
1201
1202 2007-10-31  Revital Eres  <eres@il.ibm.com>
1203
1204         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
1205         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
1206         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
1207         movmisalignv2sf, vcondv2sf): New.
1208         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
1209         UNSPEC_EXTODD_V2SF): Define new constants.
1210         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
1211         paired_emit_vector_cond_expr): New.
1212         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
1213         * config/rs6000/rs6000.c (paired_expand_vector_move,
1214         paired_emit_vector_cond_expr, paired_emit_vector_compare):
1215         New functions.
1216         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
1217
1218 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
1219
1220         PR tree-optimization/32377
1221         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
1222         work also for unknown number of iterations.
1223         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
1224         number of iterations is not known.
1225
1226 2007-10-31  Richard Guenther  <rguenther@suse.de>
1227
1228         PR middle-end/33779
1229         * fold-const.c (extract_muldiv_1): Make sure to not introduce
1230         new undefined integer overflow.
1231         (fold_binary): Avoid useless conversion.
1232
1233 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1234
1235         PR target/33948
1236         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P
1237         check.
1238
1239 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
1240
1241         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
1242
1243         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
1244         with -mhard-dfp/-mno-hard-dfp.
1245         * config/s390/s390.opt: Likewise.
1246         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
1247         definition.
1248
1249 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1250
1251         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
1252
1253 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1254
1255         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
1256         optimization options.
1257         (Optimize Options): Add -fdce and -fdse to the list of optimizations
1258         enabled by -O.  Document -fdce and -fdse.
1259
1260 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
1261
1262         PR c++/33709
1263         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
1264         convert second operand of COMPOUND_EXPR to the original type of
1265         that argument.
1266
1267 2007-10-30  Richard Guenther  <rguenther@suse.de>
1268
1269         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
1270         of loop adding SFTs as virtual operands.
1271
1272 2007-10-30  Richard Guenther  <rguenther@suse.de>
1273
1274         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
1275
1276 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
1277
1278         PR tree-optimization/32893
1279         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
1280         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
1281
1282 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1283
1284         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
1285         x86_64 versions.
1286         (sub_ddmmss): Likewise.
1287         (umul_ppmm): Likewise.
1288         (udiv_qrnnd): Likewise.
1289
1290 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
1291
1292         PR testsuite/24841
1293         * doc/sourcebuild.texi (Test Directives): Document that dg-require
1294         directives must come before dg-additional-sources.
1295
1296 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
1297
1298         PR tree-optimization/33723
1299         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
1300         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
1301
1302 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
1303
1304         PR tree-optimization/33614
1305         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
1306         if they can't be reduced to VECTOR_CSTs and aren't legitimate
1307         initializer constants.
1308
1309 2007-10-29  Richard Guenther  <rguenther@suse.de>
1310
1311         PR tree-optimization/33870
1312         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
1313         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
1314         SFTs.
1315
1316 2007-10-29  Richard Guenther  <rguenther@suse.de>
1317
1318         * passes.c (init_optimization_passes): Exchange store_copy_prop
1319         with copy_prop.
1320         * tree-pass.h (pass_store_copy_prop): Remove.
1321         * tree-ssa-copy.c (do_store_copy_prop): Remove.
1322         (stmt_may_generate-copy): Do not handle store_copy_prop.
1323         (get_copy_of_val): Likewise.
1324         (set_copy_of_val): Likewise.
1325         (copy_prop_visit_assignment): Likewise.
1326         (copy_prop_visit_stmt): Likewise.
1327         (copy_prop_visit_phi_node): Likewise.
1328         (init_copy_prop): Likewise.
1329         (execute_copy_prop): Likewise.
1330         (do_copy_prop): Remove.
1331         (gate_store_copy_prop): Likewise.
1332         (store_copy_prop): Likewise.
1333         (pass_store_copy_prop): Likewise.
1334         (pass_copy_prop): Call execute_copy_prop.
1335         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
1336         * common.opt (ftree-store-copy-prop): Mark obsolete.
1337         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
1338
1339 2007-10-29  Ian Lance Taylor  <iant@google.com>
1340
1341         * ifcvt.c (noce_can_store_speculate_p): New static function.
1342         (noce_process_if_block): Call it.
1343         (if_convert): Remove recompute_dominance parameter.  Change all
1344         callers.
1345
1346 2007-10-29  Richard Guenther  <rguenther@suse.de>
1347
1348         * tree-flow-inline.h (get_subvar_at): Use binary search.
1349         (get_first_overlapping_subvar): New function to binary search
1350         for the first overlapping subvar.
1351         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
1352         just handle adding subvars for a pointed-to subvar.  Optimize
1353         and use get_first_overlapping_subvar.
1354         (add_vars_for_bitmap): Fold into single caller.
1355         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
1356         and non pointed-to bits of add_vars_for_offset.
1357
1358 2007-10-29  Revital Eres  <eres@il.ibm.com> 
1359
1360         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
1361
1362 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
1363             Zdenek Dvorak  <ook@ucw.cz>
1364
1365         OMP_ATOMIC Changes,
1366         reduction support for automatic parallelization.
1367
1368         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
1369         OMP_ATOMIC_STORE.
1370         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
1371         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
1372         and OMP_ATOMIC_STORE.
1373         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1374         * gimple-low.c (lower_stmt): Same.
1375         * gimplify.c (gimplify_expr): Same.
1376         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
1377         gimplify_omp_atomic_mutex): Remove.
1378         (gimplify_omp_atomic): Change it to simply gimplify the
1379         statement instead of expanding it.
1380         * omp-low.c: Add includes to optabs.h, cfgloop.h.
1381         (expand_omp_atomic, expand_omp_atomic_pipeline,
1382         goa_stabilize_expr, expand_omp_atomic_mutex,
1383         expand_omp_atomic_fetch_op): New functions to implement
1384         expansion of OMP_ATOMIC.
1385         (expand_omp, build_omp_regions_1): Add support for
1386         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
1387         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
1388         OMP_ATOMIC_STORE.
1389         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
1390         OMP_ATOMIC_STORE.
1391         * tree-parloops.c: add include to tree-vectorizer.h.
1392         (reduction_info): New structure for reduction.
1393         (reduction_list): New list to represent list of reductions per loop.
1394         (struct data_arg): New helper structure for reduction.
1395         (reduction_info_hash, reduction_info_eq, reduction_phi,
1396         initialize_reductions, create_call_for_reduction,
1397         create_phi_for_local_result, create_call_for_reduction_1,
1398         create_loads_for_reductions, create_final_loads_for_reduction):
1399         New functions.
1400         (loop_parallel_p): Identify reductions, add reduction_list parameter.
1401         (separate_decls_in_loop_name): Support reduction variables.
1402         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
1403         call create_loads_for_reduction for each reduction.
1404         (canonicalize_loop_ivs): Identify reductions, add reduction_list
1405         parameter.
1406         (transform_to_exit_first_loop): Add reduction support, add
1407         reduction_list parameter.
1408         (gen_parallel_loop): Add reduction_list parameter.  Add call
1409         separate_decls_in_loop with
1410         the new argument.  Traverse reductions and call
1411         initialize_reductions, create_call_for_reduction.
1412         (parallelize_loops): Create and delete the reduction list.
1413         (add_field_for_name): Change use of data parameter.  Add fields for
1414         reductions.
1415         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
1416         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
1417         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1418         * tree-inline.c (estimate_num_insns_1): add cases for
1419         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1420         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1421         * tree-ssa-operands.c (get_addr_dereference_operands):
1422         New function.  Subroutine of get_indirect_ref_operands.
1423         (get_indirect_ref_operands): Call get_addr_dereference_operands.
1424         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1425
1426
1427 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
1428
1429         * config/cris/cris.c: Include df.h.
1430         (cris_address_cost): Add gcc_assert for canonicalization
1431         assumptions.  For PLUS with MULT or register, correct
1432         test for register in other arm.  Tweak comments.
1433
1434 2007-10-28  Richard Guenther  <rguenther@suse.de>
1435
1436         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
1437         telling if the var is to be treated as points-to location.
1438         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
1439         (add_virtual_operand): Only recurse into MPTs if aliases
1440         is from a NMT.
1441
1442 2007-10-28  Richard Guenther  <rguenther@suse.de>
1443
1444         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
1445         (add_vars_for_bitmap): Do not recurse further.  Only add vars
1446         for pointed-to SFTs.
1447         (add_virtual_operand): Re-instantiate loop to add operands for
1448         aliases.  Recurse into MPTs.
1449         (get_indirect_ref_operands): If we fall back to use a pointers
1450         SMT, make sure to not prune based on the access offset and size.
1451
1452 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
1453
1454         PR tree-opt/33589
1455         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
1456         the eh information on the statement.
1457
1458 2007-10-28  Richard Guenther  <rguenther@suse.de>
1459
1460         * tree-flow.h (subvar_t): Make it a VEC.
1461         (struct subvar): Remove.
1462         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
1463         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
1464         variable subvars.
1465         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
1466         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
1467         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
1468         (set_initial_properties): Likewise.
1469         (setup_pointers_and_addressables): Likewise.
1470         (new_type_alias): Likewise.
1471         (create_overlap_variables_for): Likewise.
1472         * tree-dfa.c (dump_subvars_for): Likewise.
1473         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
1474         (get_expr_operands): Likewise.
1475         (add_to_addressable_set): Likewise.
1476         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
1477
1478 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
1479
1480         PR tree-optimization/33920
1481         * tree-if-conv.c (tree_if_conversion): Force predicate of single
1482         successor bb to true when predecessor bb has NULL predicate.
1483         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
1484
1485 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1486
1487         * config/mips/mips.md: Add combiner patterns for DImode extensions
1488         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
1489         for consistency.
1490
1491 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1492
1493         PR target/33895
1494         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
1495
1496 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1497
1498         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
1499         LIBCALL notes if they are about to be moved to the same insn.
1500
1501 2007-10-27  Richard Guenther  <rguenther@suse.de>
1502
1503         PR tree-optimization/33870
1504         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
1505         duplication.  Remove redundant call to access_can_touch_variable.
1506         (add_vars_for_bitmap): New helper for recursing over MPT contents.
1507         (add_virtual_operand): Use it.
1508
1509 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1510
1511         PR fortran/31608
1512         * pa.h (ASM_PN_FORMAT): Delete define.
1513
1514 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
1515
1516         * doc/invoke.texi (Option Summary, optimizations): Remove
1517         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
1518         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
1519         -fsplit-wide-types to match later entry.  Break up a long line.
1520         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
1521         missing @gol to the end of a line.
1522         (Optimization Options): Remove -fbounds-check, which is also
1523         documented under Code Generation Options.  Remove =n from
1524         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
1525         to -fcprop-registers to match other options, and say when it is
1526         enabled rather than disabled.  Remove extra index entry for
1527         -fno-cx-limited-range.  Add index entries for -fstack-protector
1528         and -fstack-protector-all.
1529         (Code Gen Options): Add index entry for -ftls-model.
1530
1531 2007-10-26  Anatoly Sokolov <aesok@post.ru>
1532
1533         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
1534         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
1535         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
1536         expand_epilogue, output_movhi): Don't handle 'main' function.
1537         (avr_attribute_table): Add 'OS_task' function attribute.
1538         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
1539         'is_OS_task' field.
1540         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
1541         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
1542         'main' function.
1543         * config/avr/avr.opt (minit-stack): Remove.
1544
1545 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
1546
1547         * tree-nested.c (get_trampoline_type): Fix thinko.
1548
1549 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
1550
1551         PR c++/33601
1552         * tree.c (build_offset_type): Build canonical type based on the
1553         TYPE_MAIN_VARIANT of the base type.
1554
1555 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
1556
1557         * reorg.c (emit_delay_sequence): Move insn locator from the
1558         first insn to the sequence.
1559
1560 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
1561
1562         * ipa-pure-const.c (check_decl): Return immediately when
1563         pure_const_state has been set to IPA_NEITHER.
1564
1565 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1566
1567         PR tree-optimization/33833
1568         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
1569         and convert init to sizetype in inner_base construction.
1570
1571 2007-10-25  Richard Guenther  <rguenther@suse.de>
1572
1573         * tree-flow.h (mem_sym_stats): Remove.
1574         (dump_mem_sym_stats_for_var): Declare.
1575         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
1576         (mem_sym_stats): Move ...
1577         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
1578         (mem_sym_score): Rename from ...
1579         (pscore): ... this.  Remove.
1580         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
1581         not the frequencies.
1582         (compare_mp_info_entries): Make sort stable by disambiguating
1583         on DECL_UID.
1584
1585 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1586
1587         PR tree-optimization/33866
1588         * tree-vect-transform.c (vectorizable_store): Check operands of all
1589         the stmts in the group of strided accesses. Get def stmt type for each
1590         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
1591
1592 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
1593
1594         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
1595         (Yt): Rename register constraint to Y2.
1596         * config/i386/sse.md: Use renamed register constraints.
1597         * config/i386/mmx.md: Ditto.
1598         * config/i386/i386.md: Ditto.
1599
1600 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1601
1602         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
1603
1604 2007-10-24  Chao-ying Fu  <fu@mips.com>
1605
1606         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
1607         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
1608
1609 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1610             Olga Golovanevsky <olga@il.ibm.com>
1611         
1612         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
1613         the compiler that wr.wrap and wr.domain are initialized in
1614         any case.
1615
1616 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1617
1618         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
1619         to print gcov_type values.
1620
1621 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
1622
1623         * config/avr/avr.h: Do not include progmem_section definition when
1624         building with IN_TARGET_LIBS.
1625
1626 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1627
1628         PR target/33755
1629         * config/mips/mips.c (mips_lo_sum_offset): New structure.
1630         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
1631         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
1632         (mips_orphaned_high_part_p: New functions.
1633         (mips_avoid_hazard): Don't check INSN_P here.
1634         (mips_avoid_hazards): Rename to...
1635         (mips_reorg_process_insns): ...this.  Cope with
1636         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
1637         or turn them into nops.
1638         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
1639         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
1640         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
1641         (mips_override_options): Set flag_delayed_branch to 0.
1642
1643 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1644
1645         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
1646         MIPS-specific implementation details.
1647         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
1648         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
1649         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
1650         for targets with movmemsi.
1651         (MOVE_BY_PIECES_P): Define.
1652         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
1653         (mips_block_move_loop): Add a bytes_per_iter argument.
1654         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
1655         Update call to mips_block_move_loop.
1656
1657 2007-10-24  Michael Matz  <matz@suse.de>
1658
1659         PR debug/33868
1660         * var-tracking.c (variable_union): Don't break after one loop
1661         iteration but only when a difference is found.
1662         (dump_variable): Also print DECL_UID.
1663
1664 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1665
1666         * ipa-type-escape.h: Expose function
1667         is_array_access_through_pointer_and_index.
1668         * ipa-type-escape.c
1669         (is_array_access_through_pointer_and_index):
1670         Add three new parameters. Add support of
1671         POINTER_PLUS_EXPR tree code.
1672
1673 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1674
1675         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
1676         * tree-pass.h: Add pass_ipa_struct_reorg.
1677         * common.opt: Add ipa-struct-reorg flag.
1678         * Makefile.in: Add ipa-strcut-reorg.o compilation.
1679         * passes.c: Add pass pass_ipa_struct_reorg.
1680         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
1681         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
1682
1683 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1684
1685         PR tree-optimization/33804
1686         * tree-vect-transform.c (vectorizable_operation): Remove the
1687         checks that the vectorization is worthwhile from the transformation
1688         phase.
1689
1690 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1691
1692         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
1693         vectype cannot be determined for the scalar type.
1694         (vect_analyze_slp_instance): Likewise.
1695         * tree-vect-transform.c (vect_model_reduction_cost): Change the
1696         return type to bool. Return false if vectype cannot be determined 
1697         for the scalar type.
1698         (vect_get_constant_vectors): Return false if vectype cannot be
1699         determined for the scalar type.
1700         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
1701         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
1702         vectorizable_reduction): Likewise.      
1703
1704 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1705
1706         * config.gcc: For a FreeBSD target, parse the value of ${target}
1707         to determine the value of FBSD_MAJOR, instead of adding an
1708         explicit check for every possible FreeBSD major version.
1709
1710 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
1711
1712         PR rtl-optimization/33846
1713         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
1714
1715 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
1716
1717         PR tree-optimization/33860
1718         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
1719         interleaved accesses in case the dr is inside the inner-loop during
1720         outer-loop vectorization.
1721
1722 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
1723
1724         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
1725         Document MEM_POINTER.  Replace mentions of "integrated"
1726         field with "return_val".  Delete outdated stuff.
1727
1728 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
1729
1730         * config/rs6000/rs6000.c (rs6000_override_options): Set
1731         rs6000_altivec_abi on AIX.
1732         (conditional_register_usage): Set VR20:31 fixed on AIX.
1733
1734 2007-10-23  Richard Guenther  <rguenther@suse.de>
1735
1736         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
1737         SSA_NAME pointers.
1738
1739 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
1740         David S. Miller  <davem@davemloft.net>
1741
1742         * df-scan.c (df_get_call_refs): Mark global registers as both a
1743         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
1744
1745 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
1746
1747         PR tree-optimization/33834
1748         PR tree-optimization/33835
1749         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
1750         stmts need to be checked for success seperately.
1751         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
1752         Remove the check that stmt is not LIVE.
1753         (vectorizable_assignment, vectorizable_induction): Likewise.
1754         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1755         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
1756         Likewise.
1757         (vectorizable_live_operation): Check that op is not NULL. 
1758
1759 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
1760
1761         * doc/invoke.texi (Optimization Options): In the summary, show
1762         that the value for options -falign-jumps, -falign-labels,
1763         -falign-loops, -falign-functions, -fsched-stalled-insns, and
1764         -fsched-stalled-insns-dep is optional.  In the summary, show that
1765         -fsched-stalled-insns takes an optional argument and that
1766         -fparallelize-loops takes an argument.  Add opindex for several
1767         optimization options, and fix typos in the opindex commands for
1768         several others.  In the descriptions for -fsched-stalled-insns
1769         and -fsched-stalled-insns-dep, show the options with and without
1770         values.
1771
1772 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
1773
1774         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
1775         produced.
1776         * config/avr/avr.h (LINK_SPEC): Likewise.
1777         (CRT_BINUTILS_SPECS): Likewsie.
1778         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1779
1780 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1781
1782         PR rtl-optimization/33644
1783         * cfgcleanup.c: Do not include dce.h.
1784         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
1785         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
1786         * dce.c (something_changed): Delete.
1787         (libcall_dead_p): New predicate.
1788         (delete_unmarked_insns): Use it to delete dead libcalls.
1789         Deal with REG_LIBCALL and REG_RETVAL notes.
1790         (prescan_libcall_for_dce): New function.
1791         (prescan_insns_for_dce): Use it to deal with libcalls.
1792         (mark_reg_dependencies): Do nothing special for libcalls.
1793         (dce_process_block): Likewise.
1794         (fast_dce): Delete unused local variable.
1795         (run_fast_dce): Do not return a value.
1796         * dce.h (struct df): Delete.
1797         (run_fast_dce): Adjust prototype.
1798         * optabs.c (libcall_id): Delete.
1799         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
1800         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
1801         * reload1.c (reload): Delete REG_LIBCALL_ID case.
1802         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
1803         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
1804         notes instead of REG_LIBCALL_ID notes.
1805         * reg-notes.def (LIBCALL_ID): Delete.
1806         * Makefile.in (see.o): Add dce.h dependency.
1807         (cfgcleanup.o): Remove dce.h dependency.
1808
1809 2007-10-22  Michael Matz  <matz@suse.de>
1810
1811         PR tree-optimization/33855
1812         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
1813         and VECTOR_TYPE.
1814
1815 2007-10-22  Ira Rosen  <irar@il.ibm.com>
1816
1817         PR tree-optimization/33854
1818         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1819         FLOAT_EXPR to the list of promotion operations. 
1820
1821 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1822
1823         PR target/29473
1824         PR target/29493
1825         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
1826         (print_reg): Print register prefix only with AT&T asm syntax. 
1827         Support pc_rtx for RIP register.
1828         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
1829         relative addressing.  Always print segment register prefix with AT&T
1830         asm syntax and never with Intel asm syntax.
1831         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
1832         Fix prefix for 16-byte XFmode operands.
1833         (output_addr_const_extra): Support Intel asm syntax.
1834         (x86_file_start): Don't use register prefix with Intel asm syntax.
1835         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
1836         ("return_internal_long"): Fix Intel asm syntax output.
1837         ("set_got_rex64"): Support Intel asm syntax.
1838         ("set_rip_rex64"): Likewise.
1839         ("set_got_offset_rex64"): Likewise.
1840         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
1841         syntax.
1842         ("*tls_global_dynamic_64"): Likewise.
1843         ("*tls_local_dynamic_base_64"): Likewise.
1844         ("*load_tp_si")("*load_tp_di"): Likewise.
1845         ("*add_tp_si")("*add_tp_di"): Likewise.
1846         ("*tls_dynamic_lea_64"): Likewise.
1847         ("*sibcall_value_1_rex64_v"): Likewise.
1848         ("stack_tls_protect_set_si"): Likewise.
1849         ("stack_tls_protect_set_di"): Likewise.
1850         ("stack_tls_protect_test_si"): Likewise.
1851         ("stack_tls_protect_test_di"): Likewise.
1852         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
1853         syntax output.
1854         ("*movv2sf_internal_rex64"): Likewise.
1855         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
1856         (__get_cpuid_max): Likewise.
1857
1858 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1859
1860         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
1861         the STRICT_P argument type "bool" rather than "int".
1862         (mips_legitimate_address_p): Likewise.
1863         (fp_register_operand, lo_operand): Delete.
1864         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1865         (mips_emit_scc): Rename to...
1866         (mips_expand_scc): ...this.
1867         (gen_conditional_branch): Rename to...
1868         (mips_expand_conditional_branch): ...this.
1869         (gen_conditional_move): Rename to...
1870         (mips_expand_conditional_move): ...this.
1871         (mips_gen_conditional_trap): Rename to...
1872         (mips_expand_conditional_trap): ...this and take an rtx code instead
1873         of an operands array.
1874         (mips_expand_call): Give the SIBCALL_P argument type "bool"
1875         rather than "int".
1876         (mips_emit_fcc_reload): Rename to...
1877         (mips_expand_fcc_reload): ...this.
1878         (init_cumulative_args): Rename to...
1879         (mips_init_cumulative_args): ...this and remove the libname argument.
1880         (function_arg_advance): Rename to...
1881         (mips_function_arg_advance): ...this.
1882         (function_arg): Rename to...
1883         (mips_function_arg): ...this and use "rtx" instead of
1884         "struct rtx_def *".
1885         (function_arg_boundary): Rename to...
1886         (mips_function_arg_boundary): ...this.
1887         (mips_expand_unaligned_load): Rename to...
1888         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1889         and BITPOS arguments type "HOST_WIDE_INT".
1890         (mips_expand_unaligned_store): Rename to...
1891         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1892         and BITPOS arguments type "HOST_WIDE_INT".
1893         (override_options): Rename to...
1894         (mips_override_options): ...this.
1895         (print_operand): Rename to...
1896         (mips_print_operand): ...this.
1897         (print_operand_address): Rename to...
1898         (mips_print_operand_address): ...this.
1899         (mips_output_ascii): Remove the PREFIX argument.
1900         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1901         rather than "int".
1902         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1903         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
1904         of "struct rtx_def *".
1905         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1906         rather than "int".
1907         (build_mips16_call_stub): Delete.
1908         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1909         (mips_use_ins_ext_p): Give the second and third arguments type
1910         "HOST_WIDE_INT" rather than "rtx".
1911         * config/mips/mips.h: Update after the above changes.  Tweak comments
1912         and formatting.
1913         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
1914         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
1915         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1916         element type from "char" to "bool".
1917         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
1918         (mips_cpu_info_table): Delete.
1919         * config/mips/mips.md: Update after the above changes.  Tweak some
1920         formatting.
1921         * config/mips/mips-ps-3d.md: Likewise.
1922         * config/mips/mips.c: Tweak comments and formatting.
1923         Use NULL-like macros rather than 0 in various places.
1924         (mips_section_threshold): Rename to...
1925         (mips_small_data_threshold): ...this and give it an unsigned type.
1926         (num_source_filenames): Remove explicit initialization.
1927         (sdb_label_count): Likewise.
1928         (sym_lineno): Delete.
1929         (set_noat): Make static.
1930         (mips_branch_likely): Likewise, and give it type "bool".
1931         (mips_isa_info): Rename to...
1932         (mips_isa_option_info): ...this.
1933         (mips_flag_delayed_branch): Rename to...
1934         (mips_base_delayed_branch): ...this.
1935         (mips_split_addresses): Delete.
1936         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1937         element type from "char" to "bool".
1938         (mips_regno_to_class): Add an explicit array size.
1939         (mips16_flipper): Change from type "int" to type "bool".
1940         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
1941         (mips_tls_operand_p): Rename to...
1942         (mips_tls_symbol_p): ...this.
1943         (mips_global_symbol_p): Remove redundant "const".
1944         (mips_offset_within_alignment_p): Simplify.
1945         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
1946         to STRICT_P and give it type bool.
1947         (mips_valid_base_register_p): Likewise.
1948         (mips_classify_address): Likewise.
1949         (mips_legitimate_address_p): Likewise.
1950         (mips16_unextended_reference_p): Take the offset as an
1951         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
1952         (mips_const_insns): Use IN_RANGE.
1953         (mips_force_temporary): Remove an unnecessary copy_rtx.
1954         (mips16_gp_pseudo_reg): Simplify.
1955         (mips_split_symbol): Remove an unnecessary copy_rtx.
1956         (mips_legitimize_tls_address): Only create registers if we need them.
1957         (mips_legitimize_address): Use mips_split_plus.
1958         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
1959         variable COST to NUM_OPS.
1960         (mips_legitimize_move): Use gen_lowpart.
1961         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
1962         (m16_check_op): Use IN_RANGE.
1963         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1964         (mips_split_doubleword_move): Pass booleans to mips_subword.
1965         (mips_output_move): Store the mode in a local variable.
1966         Explicitly assert that this function does not deal with
1967         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
1968         cases more consistent.
1969         (mips_relational_operand_ok_p): Rename to...
1970         (mips_int_order_operand_ok_p): ...this.
1971         (mips_canonicalize_comparison): Rename to...
1972         (mips_canonicalize_int_order_test): ...this.
1973         (mips_emit_int_relational): Rename to...
1974         (mips_emit_int_order_test): ...this.  Store the mode in a local
1975         variable.
1976         (mips_reverse_fp_cond_p): Rename to...
1977         (mips_reversed_fp_cond): ...this.
1978         (mips_emit_compare): Make the order of the statements more consistent.
1979         (mips_emit_scc): Rename to...
1980         (mips_expand_scc): ...this.
1981         (gen_conditional_branch): Rename to...
1982         (mips_expand_conditional_branch): ...this.
1983         (gen_conditional_move): Rename to...
1984         (mips_expand_conditional_move): ...this.  Build the condition
1985         separately from the main pattern.
1986         (mips_gen_conditional_trap): Rename to...
1987         (mips_expand_conditional_trap): ...this and take an rtx code instead
1988         of an operands array.  Simplify.
1989         (init_cumulative_args): Rename to...
1990         (mips_init_cumulative_args): ...this.  Use memset rather than a
1991         copy from a zeroed static.  Use prototype_p and stdarg_p.
1992         (mips_arg_info): Rename to...
1993         (mips_get_arg_info): ...this and put the INFO argument first.
1994         (function_arg): Rename to...
1995         (mips_function_arg): ...this and use "rtx" instead of
1996         "struct rtx_def *".  Only split structures into chunks if 
1997         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
1998         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
1999         comparison with REAL_TYPE.  Rename local variable REG to REGNO
2000         and make it unsigned.
2001         (function_arg_advance): Rename to...
2002         (mips_function_arg_advance): ...this.
2003         (function_arg_boundary): Rename to...
2004         (mips_function_arg_boundary): ...this.
2005         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
2006         with MODE_INT.
2007         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
2008         comparison with REAL_TYPE.
2009         (mips_function_value): Remove the FUNC argument.  Rename local
2010         variable UNSIGNEDP to UNSIGNED_P.
2011         (mips_return_in_memory): Use IN_RANGE.
2012         (mips_setup_incoming_varargs): Pass a boolean rather than an int
2013         to FUNCTION_ARG_ADVANCE.
2014         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
2015         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
2016         SIZE and RSIZE if needed.
2017         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
2018         rather than "int".
2019         (build_mips16_function_stub): Rename to...
2020         (mips16_build_function_stub): ...this.
2021         (build_mips16_call_stub): Rename to...
2022         (mips16_build_call_stub): ...this.  Make static, and return a
2023         "bool" rather than an "int".  Rename the ARG_SIZE argument to
2024         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
2025         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
2026         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
2027         rather than "int".
2028         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
2029         are not sibling ones.
2030         (mips_emit_fcc_reload): Rename to...
2031         (mips_expand_fcc_reload): ...this.
2032         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
2033         "HOST_WIDE_INT".
2034         (mips_expand_unaligned_load): Rename to...
2035         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
2036         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
2037         SUBREG_BYTE check.
2038         (mips_expand_unaligned_store): Rename to...
2039         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
2040         and BITPOS arguments type "HOST_WIDE_INT".
2041         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
2042         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
2043         Use IN_RANGE.
2044         (mips_init_split_addresses): Replace with...
2045         (mips_split_addresses_p): ...this new function.
2046         (mips_init_relocs): Check mips_split_addresses_p () rather than
2047         mips_split_addresses.  Always initialize mips_split_p with booleans.
2048         (print_operand_reloc): Rename to...
2049         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
2050         a fatal_error.
2051         (print_operand): Rename to...
2052         (mips_print_operand): ...this.
2053         (print_operand_address): Rename to...
2054         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
2055         (mips_in_small_data_p): Simplify.
2056         (mips_output_ascii): Remove the PREFIX argument and "register"
2057         keywords.  Use the STRING parameter directly and cast to
2058         "unsigned char".
2059         (mips16e_collect_argument_save_p): Use IN_RANGE.
2060         (mips_function_has_gp_insn): Simplify.
2061         (mips_set_return_address): Use BITSET_P.
2062         (mips_restore_gp): Use a separate statement to pick the base
2063         register.
2064         (mips_output_function_prologue): Use a local FRAME variable.
2065         (mips_save_reg): Pass booleans to mips_subword.
2066         (mips_expand_prologue): Use a local FRAME variable.  Use
2067         cprestore_size to detect when .cprestore is needed.
2068         (mips_restore_reg): Use GP_REG_FIRST.
2069         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
2070         rather than "int".  Use local FRAME and REGNO variables.
2071         (mips_can_use_return_insn): Return a "bool" rather than an "int".
2072         (mips_secondary_reload_class): Give the IN_P argument type "bool"
2073         rather than "int".
2074         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
2075         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
2076         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
2077         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
2078         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
2079         (builtin_description): Rename to...
2080         (mips_builtin_description): ...this.
2081         (mips_bdesc): Rename to...
2082         (mips_ps_bdesc): ...this.
2083         (sb1_bdesc): Rename to...
2084         (mips_sb1_bdesc): ...this.
2085         (dsp_bdesc): Rename to...
2086         (mips_dsp_bdesc): ...this.
2087         (dsp_32only_bdesc): Rename to...
2088         (mips_dsp_32only_bdesc): ...this.
2089         (bdesc_map): Rename to...
2090         (mips_bdesc_map): ...this.
2091         (bdesc_arrays): Rename to...
2092         (mips_bdesc_arrays): ...this.
2093         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
2094         Tweak error message.
2095         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
2096         Rename local variables I and J to OPNO and ARGNO respectively.
2097         Assert that the number of arguments is no more than the number of
2098         input operands.
2099         (mips_expand_builtin_compare): Use an array of arguments rather
2100         than an array of operands.  Assert that the number of operands is
2101         as expected.
2102         (add_constant): Rename to...
2103         (mips16_add_constant): ...this.  Use XNEW.
2104         (dump_constants_1): Rename to...
2105         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
2106         (dump_constants): Rename to...
2107         (mips16_emit_constants): ...this.
2108         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
2109         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
2110         Assign mips16_p to was_mips16_p.
2111         (mips_parse_cpu): Tweak warning message.
2112         (override_options): Rename to...
2113         (mips_override_options): ...this.  Move the mips_cost initialization
2114         out of the "shared with GAS" block.  Quote option names in error
2115         messages.
2116         (mips_conditional_register_usage): Make local variable REGNO unsigned.
2117         (mips_order_regs_for_local_alloc): Remove register keyword.
2118
2119 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2120
2121         * system.h (IN_RANGE): Cast each argument individually.
2122
2123 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2124
2125         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
2126         MIPS16 code unless using o32 or o64.  
2127
2128 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2129
2130         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
2131         for modes smaller than 4 bytes.
2132         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
2133         FPR alternatives.
2134
2135 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2136
2137         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
2138         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
2139         (ASM_OUTPUT_ALIGNED_BSS): Delete.
2140         * config/mips/mips.c (mips_output_aligned_bss): Delete.
2141
2142 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2143
2144         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
2145         sibling calls to "mips16" functions if the function satisfies
2146         const_call_insn_operand.
2147
2148 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2149
2150         * config/mips/mips.c (mips_va_start): Fix types in calls
2151         to build_int_cst.
2152
2153 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2154
2155         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
2156         if ISA_HAS_FP4.
2157
2158 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2159
2160         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
2161         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
2162         instead of checking mips_isa.
2163
2164 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2165
2166         * doc/invoke.texi (-mpaired-single): Don't say that the option
2167         requires 64-bit code.
2168         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
2169         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
2170         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
2171         V2SF if ISA_MIPS32R2.
2172         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
2173         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
2174         to ISA_HAS_NMADD_NMSUB.
2175         (mips_split_doubleword_move): Handle V2SF.
2176         (mips_modes_tieable_p): New function.
2177         (override_options): Report a warning rather than an error when
2178         -mpaired-single is used on ISAs that don't support it; use
2179         ISA_HAS_PAIRED_SINGLE to check that case.
2180         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
2181         and DF move splitters with a single MOVE64 splitter, thereby adding
2182         a V2SF splitter too.
2183         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
2184         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
2185         (HALFMODE): Add V2SF.
2186         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
2187         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
2188         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
2189         (movv2sf_hardfloat_32bit): New pattern.
2190         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
2191         TARGET_DOUBLE_FLOAT conditions.
2192
2193 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
2194
2195         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
2196         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
2197         64-bit register in 64-bit libgcc.
2198
2199 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
2200
2201         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
2202         * config/avr/avr.h (LINK_SPEC): Likewise.
2203         (CRT_BINUTILS_SPECS): Likewsie.
2204         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2205
2206 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2207
2208         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
2209         and -Wfatal-errors together.
2210         
2211 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
2212
2213         PR target/33812
2214         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
2215         change for vrsave, ie restore after frame pop.
2216
2217 2007-10-19  David S. Miller  <davem@davemloft.net>
2218
2219         * config/sparc/niagara2.md: Fix copyright notice.
2220
2221 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
2222
2223         PR tree-optimization/23820
2224         PR tree-optimization/24309
2225         PR tree-optimization/33766
2226         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
2227         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
2228         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
2229         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
2230         * tree-loop-linear.c (perfect_loop_nest_depth): New.
2231         (linear_transform_loops): Use perfect_loop_nest_depth.
2232         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
2233         should have a single condition: their exit.
2234
2235 2007-10-19  Richard Guenther  <rguenther@suse.de>
2236
2237         PR middle-end/33816
2238         PR middle-end/32921
2239         * stor-layout.c (layout_type): Assert that aggregates do not
2240         have their alias sets set.
2241         * alias.c (get_alias_set): Return alias set zero for incomplete
2242         types, return the alias set of the element for incomplete array
2243         types, but do not remember these.
2244
2245 2007-10-19  Richard Guenther  <rguenther@suse.de>
2246
2247         Revert
2248         2007-10-19  Richard Guenther  <rguenther@suse.de>
2249
2250         PR middle-end/32921
2251         * tree.c (build_array_type): Do not re-layout unbound array
2252         types.
2253
2254 2007-10-19  Richard Guenther  <rguenther@suse.de>
2255
2256         PR middle-end/32921
2257         * tree.c (build_array_type): Do not re-layout unbound array
2258         types.
2259
2260 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2261
2262         * config/mips/mips.c (mips_canonicalize_comparison):  Check
2263         mips_relational_operand_ok_p before trying to rewrite the test.
2264         Only calculate PLUS_ONE if needed.
2265         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
2266         here.
2267
2268 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2269
2270         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
2271         calculation.
2272
2273 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2274
2275         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
2276         the call uses the incoming value of $2.
2277
2278 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2279
2280         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
2281         rather then gen_rtx_MEM.
2282         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
2283         gen_rtx_MEM.
2284         (mips_set_return_address): Likewise.
2285         (mips_restore_gp): Likewise.
2286
2287 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2288
2289         * config/mips/mips.c (gpr_mode): Delete.
2290         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
2291         instead of gpr_mode.
2292         (mips_for_each_saved_reg): Likewise.
2293         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2294         (override_options): Don't initialize gpr_mode.
2295         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
2296
2297 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2298
2299         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
2300         case last.
2301         (mips_class_max_nregs): Calculate the smallest consituent register
2302         size and use that to determine an upper bound on the number of
2303         registers.
2304
2305 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2306
2307         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
2308         split out from...
2309         (mips_expand_epilogue): ...here.
2310         (mips_mdebug_abi_name): New function, split out from...
2311         (mips_file_start): ...here.
2312         (mips_hard_regno_mode_ok_p): New function, split out from...
2313         (override_options): ...here.
2314         (mips_expand_builtin_1): New function, split out from...
2315         (mips_expand_buitin): ...here.  Abort if we don't recognize
2316         the function.
2317
2318 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2319
2320         * config/mips/mips.c (build_mips16_function_stub): Load the
2321         target address into $1 before transfering the arguments.
2322         Don't use ".set noreorder".
2323         (build_mips16_call_stub): Likewise.
2324
2325 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2326
2327         * config/mips/mips.c (mips_output_32bit_xfer): New function.
2328         (mips_output_64bit_xfer): Likewise.
2329         (mips16_fp_args): Rename to...
2330         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
2331         with a DIRECTION argument.  Use mips_output_32bit_xfer and
2332         mips_output_64bit_xfer.
2333         (build_mips16_function_stub): Update accordingly.
2334         (mips16_fpret_double): Delete.
2335         (build_mips16_call_stub): Update after above changes.
2336         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
2337         of mips16_fpret_double.  Use GP_REG_RETURN.
2338
2339 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2340
2341         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
2342         use asm_out_file instead.
2343         (build_mips16_function_stub): Likewise.
2344         (build_mips16_call_stub, mips_output_function_prologue): Update
2345         accordingly.
2346
2347 2007-10-18  David S. Miller  <davem@davemloft.net>
2348
2349         Add Niagara-2 support.
2350         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
2351         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
2352         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
2353         (include): Add inclusion of niagara2.md
2354         * config/sparc/sparc.c (niagara2_costs): New.
2355         (sparc_override_options): Add niagara2 entry to cpu_default[]
2356         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
2357         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
2358         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
2359         (sparc_initialize_trampoline): Handle niagara2 like niagara.
2360         (sparc64_initialize_trampoline): Likewise.
2361         (sparc_use_sched_lookahead): Likewise.
2362         (sparc_issue_rate): Likewise.
2363         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
2364         mcpu=niagara2
2365         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
2366         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
2367         TARGET_CPU_niagara2.
2368         (PROCESSOR_NIAGARA2): New.
2369         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
2370         (BRANCH_COST): Likewise.
2371         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
2372         * config/sparc/sol2.h: Likewise.
2373         * config/sparc/niagara2.md: New file.
2374
2375 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2376
2377         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
2378         and fp_reg_size.
2379         (mips_compute_frame_info): Remove associated code.
2380         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
2381
2382 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2383
2384         * config/mips/mips-protos.h (compute_frame_size): Delete.
2385         * config/mips/mips.h: Update comments.
2386         * config/mips/mips.c (mips_frame_info): Remove initialized.
2387         (compute_frame_size): Rename to...
2388         (mips_compute_frame_info): ...this and make static.  Remove the
2389         SIZE argument and return no value.  Remove the setting of initialized.
2390         Update rest of file accordingly.
2391         (mips_set_return_address): Don't call compute_frame_size.
2392         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
2393         Don't call compute_frame_size.
2394
2395 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2396
2397         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
2398         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
2399         mips_hard_frame_pointer_required.
2400         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
2401         large MIPS16 frames.
2402         * config/mips/mips.c (mips_frame_pointer_required): New function.
2403
2404 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2405
2406         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
2407         and hard_frame_pointer_offset.
2408         (mips_debugger_offset): Use hard_frame_pointer_offset.
2409         (mips16e_collect_argument_save_p): Likewise.
2410         (compute_frame_size): Initialize arg_pointer_offset and
2411         hard_frame_pointer_offset.
2412         (mips_initial_elimination_offset): Use them.
2413         (mips_output_function_prologue): Use hard_frame_pointer_offset.
2414         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2415
2416 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2417
2418         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
2419         profiling code.
2420         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
2421         "unsigned int" rather than "int" and put them with the other
2422         register-related fields.  Put expanded comments above fields
2423         rather than to their right.
2424         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
2425         with a NUM_REGS_PTR argument.
2426         (mips16e_save_restore_pattern_p): Update accordingly.
2427         (compute_frame_size): Clarify frame diagram.  Rewrite.
2428
2429 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2430
2431         * config/mips/mips-ftypes.def: New file.
2432         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
2433         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
2434         (mips_function_type): Redefine using mips-ftypes.def.
2435         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
2436         (mips_builtin_vector_type): New function.
2437         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
2438         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
2439         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
2440         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
2441         macros.
2442         (mips_build_function_type): New function.
2443         (mips_init_builtins): Use it to create types lazily.
2444
2445 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2446
2447         * config/mips/mips.h (set_volatile): Delete.
2448         * config/mips/mips.c (set_volatile): Delete.
2449         (mips_print_operand_punctuation): New function, split out from
2450         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
2451         Use the same character ordering in the code and the comments.
2452         Use a recursive call to handle '*'.  Abort on unknown characters.
2453         (mips_init_print_operand_punct): New function, split out from
2454         override_options.
2455         (mips_print_int_branch_condition): New function, split out from
2456         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
2457         to report unexpected codes.
2458         (mips_print_float_branch_condition): New function, split out from
2459         print_operand.  Use output_operand_lossage to report unexpected codes.
2460         (print_operand): Rework to use a case statement.  Use the
2461         same letter ordering in the code and the comments.  Use
2462         output_operand_lossage to report unexpected codes and
2463         reverse_condition to handle inverted branch conditions.
2464         (override_options): Use mips_init_print_operand_punct.
2465
2466 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2467
2468         * config/mips/mips.h: Move variable declarations to end of file and
2469         enclose them all in #ifndef USED_FOR_TARGET.
2470         * config/mips/mips.c: Reorder functions into more logical groups,
2471         and so that callees appear before callers.  Put the targetm
2472         initializer at the end of the file.  Remove forward static
2473         declarations where possible.
2474         (mips_init_builtins): Add "static" to definition.
2475         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
2476
2477 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2478
2479         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
2480         (TARGET_MAX_ANCHOR_OFFSET): Delete.
2481         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
2482         (mips_set_mips16_mode): Initialize min_anchor_offset and
2483         max_anchor_offset directly to constants.
2484
2485 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2486
2487         * config/mips/mips.c: Delete trailing whitespace.
2488
2489 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2490
2491         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
2492         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
2493         and pick the first.
2494         * config/mips/mips.md (load_call<mode>): Don't make the unspec
2495         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
2496
2497 2007-10-18  David Daney  <ddaney@avtrex.com>
2498
2499         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
2500         reg_offset variable to calculate register locations.
2501
2502 2007-10-18  Richard Guenther  <rguenther@suse.de>
2503
2504         * tree-ssa.c (uid_ssaname_map_eq): New function.
2505         (uid_ssaname_map_has): Likewise.
2506         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
2507         * tree-flow.h (struct gimple_df): Make default_defs a
2508         uid_ssaname map.
2509         * tree-dfa.c (gimple_default_def): Deal with it.
2510         (set_default_def): Likewise.
2511
2512 2007-10-18  Richard Guenther  <rguenther@suse.de>
2513
2514         * tree-flow.h (struct gimple_df): Make referenced_vars
2515         a uid_decl_map.
2516         (uid_decl_map_eq): Declare.
2517         (uid_decl_map_hash): Likewise.
2518         * tree-ssa.c (uid_decl_map_eq): New function.
2519         (uid_decl_map_hash): Likewise.
2520         (init_tree_ssa): Make referenced_vars a uid_decl_map.
2521         * tree-flow-inline.h (first_referenced_var): Deal with
2522         the referenced_vars representation change.
2523         (next_referenced_var): Likewise.
2524         * tree-dfa.c (referenced_var_lookup): Likewise.
2525         (referenced_var_check_and_insert): Likewise.
2526         (remove_referenced_var): Likewise.
2527
2528 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
2529
2530         * config/mips/mips.c (mips_dwarf_register_span): New.
2531         (TARGET_DWARF_REGISTER_SPAN): Define.
2532
2533 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
2534
2535         * config.gcc : update score-*-elf(extra_objs).
2536         * config/score/mac.md : Remove.
2537         * config/score/misc.md : Remove.
2538         * config/score/score7.md : Remove.
2539         * config/score/score-mdaux.h : Remove.
2540         * config/score/score-mdaux.c : Remove.
2541         * config/score/score-version.h : Remove.
2542         * config/score/score-generic.md : New.
2543         * config/score/score3.h : New.
2544         * config/score/score3.c : New.
2545         * config/score/score7.h : New.
2546         * config/score/score7.c : New.
2547         * config/score/mul-div.S : add flush_cache score3 support.
2548         * config/score/elf.h : Fix some typos.
2549         * config/score/score.md : merge score3 and score7 pattern.
2550         * config/score/score.c : use to seperate which target it used.
2551         * config/score/score.h : use to seperate the target macro.
2552         * config/score/score.opt : remove -mmac option , add -mscore3,
2553         -mscore3d and -march OPTION support.
2554  
2555 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2556
2557         * cfgexpand.c (expand_stack_vars): Add checking to make sure
2558         that the offset of a variable is not greater than the size
2559         of the paritition.
2560
2561 2007-10-17  Anatoly Sokolov <aesok@post.ru>
2562
2563         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
2564         atmega88p, atmega168p and atmega328p devices.
2565         * config/avr/avr.h (LINK_SPEC): (Ditto.).
2566         (CRT_BINUTILS_SPECS): (Ditto.).
2567         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2568
2569 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2570
2571         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
2572         * ddg.c: Ditto.
2573         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
2574         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
2575         (print_insn): Move declaration to ...
2576         * rtl.h (print_insn): ... here.
2577
2578 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2579
2580         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
2581         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
2582         m68k_sched_branch_type): Move declarations to ...
2583         * config/m68/m68k-protos.h: ... here.
2584
2585 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2586
2587         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
2588
2589 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2590
2591         * config/avr/avr.c (avr_mcu_types): Add attiny48.
2592         * config/avr/avr.h (LINK_SPEC): Likewise.
2593         (CRT_BINUTILS_SPECS): Likewsie.
2594         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2595
2596 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2597
2598         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
2599         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
2600         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2601
2602 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2603
2604         PR middle-end/33794
2605         * reg-stack.c (move_for_stack_reg): Swap input argument of
2606         UNSPEC_TAN insn to the top of the stack.
2607
2608 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2609
2610         PR target/32961
2611         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
2612         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
2613         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
2614         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
2615         immediate shift value.
2616         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
2617         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
2618         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
2619         Remove macros for !__OPTIMIZE__ case.
2620
2621 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
2622
2623         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
2624         directness anymore.
2625         (perform_var_substitution): Only DFS from real nodes. Don't test
2626         for directness.
2627         (unite_pointer_equivalences): Fix broken test.
2628
2629 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
2630
2631         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
2632         altivec sp_offset.  Rearrange sp_offset assignments to
2633         correspond to stack adjustments.  Use frame_reg_rtx for
2634         SPE register restores.  Correct SPE stack adjustment.
2635
2636 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2637
2638         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
2639         * toplev.c (check_global_declaration_1): Use appropriate warning
2640         option instead of unnamed warning.
2641         * stor-layout.c (layout_decl): Likewise.
2642         * c-typeck.c (build_conditional_expr): Likewise.
2643         (build_compound_expr): Fix wrong comment.
2644         (build_binary_op): Use appropriate warning option instead of
2645         unnamed warning.
2646         * cfgexpand.c (tree_expand_cfg): Likewise.
2647         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2648         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
2649         (execute_warn_function_return): Likewise.
2650         * stmt.c (warn_if_unused_value): Likewise.
2651
2652 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
2653
2654         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
2655         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
2656         similar devices.
2657         (CRT_BINUTILS_SPECS): Likewsie.
2658         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2659
2660 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
2661
2662         PR target/33594
2663         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
2664
2665 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
2666
2667         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
2668         (fini_dce): Only release them for the fast pass.
2669         (end_ud_dce): Delete.
2670         (rest_of_handle_ud_dce): Do not modify df_in_progress.
2671         Call fini_dce instead of end_ud_dce.
2672         (rest_of_handle_fast_dce): Do not modify df_in_progress.
2673         (run_fast_df_dce): Reset df_in_progress to false on exit.
2674
2675 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
2676             Maxim Kuvyrkov  <maxim@codesourcery.com>
2677
2678         * target.h (unspec_may_trap_p): New target hook.
2679         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
2680         * targhooks.c (default_unspec_may_trap_p): Default implementation of
2681         the hook.
2682         * targhooks.h (default_unspec_may_trap_p): Declare it.
2683         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
2684         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
2685         * rtl.h (may_trap_p_1): Declare.
2686         
2687         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
2688         override default hook implementation.
2689         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
2690         hook.
2691
2692 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2693
2694         * doc/invoke.texi (Wextra): Move it just after Wall, list the
2695         options enabled by Wextra and mention Wuninitialized.
2696         
2697 2007-10-15  Nigel Stephens  <nigel@mips.com>
2698
2699         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
2700
2701 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2702
2703         PR tree-optimization/33136
2704         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
2705
2706 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2707
2708         PR tree-optimization/33735
2709         PR tree-optimization/33572
2710         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
2711         2007-10-09's change.
2712         * except.c (duplicate_eh_regions): Don't look for prev_try
2713         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
2714
2715 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2716
2717         PR middle-end/33706
2718         * tree-inline.c (copy_bb): Use bsi_replace to replace a
2719         __builtin_va_arg_pack-containing call stmt.
2720
2721 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
2722
2723         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
2724         program flag.
2725
2726 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2727
2728         PR tree-optimization/33619
2729         * tree-ssa-ter.c (is_replaceable_p): Return false for all
2730         calls.
2731
2732 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
2733
2734         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
2735
2736 2007-10-15  Richard Guenther  <rguenther@suse.de>
2737
2738         * fold-const.c (extract_array_ref): Remove.
2739         (fold_comparison): Handle POINTER_PLUS_EXPR with the
2740         generic address expression comparison folding.  Remove
2741         the folding that used extract_array_ref.
2742
2743 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2744
2745         PR target/33133
2746         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
2747         speculation type of insn can be changed before trying to do that.
2748
2749 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
2750
2751         * dse.c (struct insn_info): Add 'frame_read' field.
2752         (scan_insn): For the call to a const function, set frame_read if
2753         reload has been run.
2754         If the insn reads the frame, kill the frame related stores.
2755         (scan_reads_nospill): Likewise.
2756
2757 2007-10-14  Jason Merrill  <jason@redhat.com>
2758
2759         * tree-eh.c (optimize_double_finally): Don't assume that the
2760         cleanup we're duplicating is only one statement.
2761
2762 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
2763
2764         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
2765         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
2766         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
2767         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
2768         tree-vect-transform.c: Fix comment typos.
2769         * doc/extend.texi: Fix a typo.
2770
2771         * c-common.h: Remove the prototype for c_expand_body.
2772         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
2773         * tree.h: Remove the prototype for fold_build_call_expr.
2774
2775         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2776         Remove.
2777         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
2778
2779 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
2780
2781         * config/rs6000/aix53.h: New file.
2782         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
2783         (TARGET_ALTIVEC_ABI): Same.
2784         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
2785         (TARGET_ALTIVEC_ABI): Delete.
2786         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
2787         stanza defaulting to aix5.3.
2788
2789 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2790
2791         * config/i386/i386.md (SI_REG, DI_REG): New constants.
2792         (strmov): Use defined constants.
2793         (cmpstrnsi): Likewise.
2794         * config/i386/i386.c (decide_alg): Use defined constants.
2795         (ix86_expand_strlen): Likewise.
2796
2797 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
2798
2799         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
2800         * var-tracking.c (micro_operation_def): Update comment on u.loc.
2801         (mode_for_reg_attrs, var_lowpart): New functions.
2802         (add_uses): Consider recording a lowpart of LOC for MO_USE.
2803         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
2804         or copy is known, set LOC to the SET that performs the set, instead
2805         of the destination.
2806         (find_src_status, find_src_set_src): Remove LOC parameter.
2807         Replace INSN with the source value.
2808         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
2809         handling MO_SET and MO_COPY.  Update the calls to find_src_status
2810         and find_src_set_src.
2811
2812 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2813
2814         PR 11001
2815         * config/i386/i386.md (strmov): Check for esi and edi usage.
2816         * config/i386/i386.c (decide_alg): Check whether we can use a
2817         rep prefix and adjust algorithm choice accordingly.
2818         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
2819
2820 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2821
2822         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
2823
2824 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2825
2826         * global.c (build_insn_chain): Formatting fixes.
2827
2828 2007-10-12  Richard Guenther <rguenther@suse.de>
2829
2830         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
2831         combining both operands require either both have single uses
2832         or combining to a constant.
2833
2834 2007-10-12  Richard Guenther  <rguenther@suse.de>
2835
2836         PR middle-end/26198
2837         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
2838         a rhs with side-effects or which is a load.
2839         (forward_propagate_into_cond): Also try combining both operands.
2840
2841 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
2842
2843         PR tree-optimization/33742
2844         * tree-vect-transform.c (vectorizable_operation): Return false
2845         if get_vectype_for_scalar_type for scalar_dest can't be determined.
2846         (vectorizable_call): Same for rhs_type and lhs_type.
2847
2848 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2849
2850         PR tree-optimization/33645
2851         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
2852         pass it to walk_tree.
2853         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
2854         When calling set_is_used on a VAR_DECL, if data is not NULL and
2855         its DECL_UID is in the bitmap, call mark_all_vars_used on its
2856         DECL_INITIAL after clearing the bit in bitmap.
2857         (remove_unused_locals): Adjust mark_all_vars_used callers.
2858         Instead of removing unused global vars from unexpanded_var_list
2859         immediately record them in bitmap, call mark_all_vars_used on
2860         all used global vars from unexpanded_var_list and only purge
2861         global vars that weren't found used even during that step.
2862  
2863 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2864
2865         * gthr-posix.h (__gthread_active_init): Create detached instead of
2866         joinable thread when testing whether threads are active on hppa-hpux.
2867         * gthr-posix95.h (__gthread_active_init): Likewise.
2868
2869 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2870
2871         PR middle-end/33676
2872         * global.c (build_insn_chain): Include insn that occur between
2873         basic blocks.
2874         
2875 2007-10-11  Tom Tromey  <tromey@redhat.com>
2876
2877         * gengtype-yacc.y: Delete.
2878
2879 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
2880
2881         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
2882         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
2883         function_value_32, function_value_64, function_value_ms_64,
2884         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
2885         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
2886         Use new constants.
2887
2888 2007-10-11  Richard Guenther  <rguenther@suse.de>
2889
2890         * gcse.c (hash_scan_set): If the next nonnote insn is in
2891         a different basic block insert the set.
2892
2893 2007-10-11  Richard Guenther  <rguenther@suse.de>
2894
2895         PR middle-end/33724
2896         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
2897         (verify_gimple_expr): Use it to verify pointer-to types for
2898         ADDR_EXPRs.
2899
2900 2007-10-11  Richard Guenther  <rguenther@suse.de>
2901
2902         PR c/33726
2903         * c-typeck.c (build_array_ref): Do not strip qualifiers from
2904         the array element type.
2905
2906 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
2907
2908         PR rtl-optimization/33638
2909         * dse.c (struct insn_info): Remove 'stack_read' field,
2910         add 'stack_pointer_based' field.
2911         (record_store): For a store with non-constant base, record
2912         whether it is stack pointer based.
2913         (scan_insn): For the call to a const function, remove stack
2914         pointer based stores from the list of local active stores.
2915         (scan_reads_nospill): Delete code dealing with const functions.
2916
2917 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2918
2919         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
2920         to HOST_WIDE_INT.
2921         (conflict_p, set_conflict, set_conflicts): Likewise.
2922         * global.c (global_alloc): Likewise.
2923         * ra.h: Update prototypes.
2924
2925 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
2926
2927         * opth-gen.awk: Fixed generation of comment stating the origin
2928           of options.h
2929
2930 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
2931
2932         Revert:
2933         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2934         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2935         and '%}', respectively.
2936
2937         Revert:
2938         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2939         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2940         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2941         and '}'.
2942         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2943         meant to be output.
2944
2945         Revert:
2946         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2947         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2948         syntax for ASSEMBLER_DIALECT.
2949         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2950
2951 2007-10-10  Revital Eres  <eres@il.ibm.com>
2952
2953         * modulo-sched.c (check_nodes_order): Dump the final order of
2954         the nodes.
2955         (get_sched_window): Add dump info.
2956         (calculate_order_params): Dump order params of the nodes.
2957
2958 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2959
2960         PR middle-end/33669
2961         * ra-conflict.c (record_one_conflict_between_regnos, 
2962         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
2963         (global_conflicts): Enhanced incorrect check.
2964         
2965 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
2966
2967         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
2968         if flag_exceptions is not set.
2969         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
2970         assemble_name rather than incorrectly emulating it.
2971
2972         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
2973         friends are removed from G++.
2974
2975 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2976
2977         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
2978         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
2979         enabling them is redundant. Don't check two times for
2980         c_dialect_cxx.
2981         
2982 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
2983
2984         * ra-conflict.c (record_one_conflict_between_regnos): Revert
2985         the last change.
2986         (set_conflicts_for_earlyclobber): Likewise.
2987         (global_conflicts): Likewise.
2988
2989 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2990
2991         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2992         and '%}', respectively.
2993
2994 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2995
2996         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2997         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2998         and '}'.
2999         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
3000         meant to be output.
3001
3002 2007-10-09  Richard Guenther  <rguenther@suse.de>
3003
3004         PR middle-end/33692
3005         * gimplify.c (canonicalize_component_ref): Honor qualifiers
3006         of referenced structure and component.
3007
3008 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
3009
3010         PR middle-end/33669
3011         * ra-conflict.c (record_one_conflict_between_regnos,
3012         set_conflicts_for_earlyclobber, global_conflicts): Improved
3013         logging.
3014         (global_conflicts): Removed incorrect check.
3015
3016 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
3017
3018         PR tree-optimization/33615
3019         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
3020         if the statement might throw.  Fix formatting.
3021
3022 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
3023
3024         PR tree-optimization/33615
3025         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
3026         if the rhs might throw.
3027
3028 2007-10-09  Jan Hubicka  <jh@suse.cz>
3029
3030         * invoke.texi (align-threshold, align-loop-iterations): Document.
3031         * final.c: Include cfgloop.h, params.h
3032         (compute_alignments): Dump decisions and compare them with loop
3033         structure; honor given parameters.
3034         (pass_compute_alignments): New dump file.
3035         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
3036         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
3037
3038 2007-10-09  James E. Wilson  <wilson@specifix.com>
3039
3040         PR tree-optimization/33655
3041         PR middle-end/22156
3042         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
3043         convert it to bitsizetype before size_binop call.
3044
3045 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
3046
3047         PR tree-optimization/33572
3048         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
3049         the absence of a corresponding edge from the exit block.
3050
3051 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
3052
3053         PR middle-end/22156
3054         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
3055         bit-field layout.
3056         (sra_build_assignment): Likewise.  Set up mask depending on
3057         precision, not type.
3058         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
3059         computing bit masks.
3060         (sra_build_elt_assignment): Don't view-convert from signed to
3061         unsigned.
3062         (sra_explode_bitfield_assignment): Use bit-field type if
3063         possible.  Use BYTES_BIG_ENDIAN.
3064
3065 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
3066
3067         PR middle-end/22156
3068         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
3069         the original stmt can throw.
3070         (sra_build_bf_assignment): Fix type mismatch when applying negated
3071         mask.
3072
3073 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
3074
3075         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
3076         '#pragma mark' to be executed at preprocessing time.
3077
3078 2007-10-08  Ollie Wild  <aaw@google.com>
3079
3080         * varasm.c (compare_constant): Removed call to
3081         lang_hooks.expand_constant.
3082         (copy_constants): Removed call to lang_hooks.expand_constant.
3083         (compute_reloc_for_constant): Removed call to
3084         lang_hooks.expand_constant.
3085         (output_addressed_constants): Removed call to
3086         lang_hooks.expand_constant.
3087         (constructor_static_from_elts_p): Removed call to
3088         lang_hooks.expand_constant.
3089         (output_constant): Removed calls to lang_hooks.expand_constant.
3090         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3091         * langhooks-def.h (lhd_return_tree): Removed.
3092         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3093         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3094         * langhooks.c (lhd_return_tree): Removed.
3095
3096 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
3097
3098         * combine.c (setup_incoming_promotions): Ensure that
3099         arguments that have not undergone mode promotions do not
3100         incorrectly get marked as being sign- or zero-extended.
3101
3102 2007-10-08  Richard Guenther  <rguenther@suse.de>
3103
3104         PR middle-end/33693
3105         PR middle-end/33695
3106         PR middle-end/33697
3107         * fold-const.c (fold_binary): Use correct types in folding
3108         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
3109         and building of RROTATE_EXPR.
3110
3111 2007-10-08  Richard Guenther  <rguenther@suse.de>
3112
3113         PR middle-end/33691
3114         PR middle-end/33694
3115         PR middle-end/33696
3116         * fold-const.c (fold_binary): Use the correct types when
3117         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
3118         (fold_binary): Use the correct types when folding
3119         (-A) - B to (-B) - A.
3120         (fold_unary): Use the correct types when folding ~(X).
3121
3122 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3123
3124         * doc/invoke.texi (Wall): fix formatting issues.
3125         
3126 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
3127
3128         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
3129         truncated shift counts.
3130
3131 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
3132
3133         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
3134         syntax for ASSEMBLER_DIALECT.
3135         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
3136
3137 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3138             Nathan Froyd  <froydnj@codesourcery.com>
3139
3140         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
3141         when determining whether to record INCOMING_RETURN_ADDR_RTX.
3142
3143 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3144
3145         Revert:
3146         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3147
3148         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3149         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3150         the function, temporarily point the debug interface to the null one.
3151
3152 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3153
3154         PR tree-optimization/33655
3155         PR middle-end/22156
3156         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
3157         elements.
3158
3159 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3160
3161         PR tree-optimization/33572
3162         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
3163         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
3164         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
3165         return PHI node.
3166         (copy_edges_for_bb): Handle nonlocal label edges.
3167         (make_nonlocal_label_edges): Deleted.
3168         (optimize_inline_calls): Don't call it.
3169
3170 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
3171
3172         * gthr-single.h: Revert last change.
3173
3174 2007-10-05  Michael Matz  <matz@suse.de>
3175
3176         PR middle-end/33667
3177         * lower-subreg.c (decompose_multiword_subregs): Use
3178         validate_unshare_change().
3179
3180 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
3181
3182         * ra-conflict.c: Include "sparseset.h".
3183         (conflicts): Change to HOST_WIDEST_FAST_INT.
3184         (allocnos_live): Redefine variable as a sparseset.
3185         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
3186         Delete macros.
3187         (allocno_row_words): Removed global variable.
3188         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
3189         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
3190         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
3191         (record_one_conflict_between_regnos): Cache allocno values and reuse.
3192         Use set_conflict_p.
3193         (record_one_conflict): Update uses of allocnos_live to use
3194         the sparseset routines.  Use set_conflicts_p.
3195         (mark_reg_store): Likewise.
3196         (set_reg_in_live): Likewise.
3197         (global_conflicts): Update uses of allocnos_live.
3198         Use the new adjacency list to visit an allocno's neighbors
3199         rather than iterating over all possible allocnos.
3200         Call set_conflicts_p to setup conflicts rather than adding
3201         them manually.
3202         * global.c: Comments updated.  
3203         (CONFLICTP): Delete define.
3204         (regno_compare): New function.  Add prototype.
3205         (global_alloc): Sort the allocno to regno mapping according to
3206         which basic blocks the regnos are referenced in.  Modify the
3207         conflict bit matrix to a compressed triangular bitmatrix.
3208         Only allocate the conflict bit matrix and adjacency lists if
3209         we are actually going to allocate something.
3210         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
3211         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
3212         allocno's neighbors rather than iterating over all possible allocnos.
3213         (mirror_conflicts): Removed function.
3214         (dump_conflicts): Iterate over regnos rather than allocnos so
3215         that all dump output will be sorted by regno number.
3216         Use the FOR_EACH_CONFLICT macro.
3217         * ra.h: Comments updated.
3218         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
3219         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
3220         Add prototypes.
3221         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
3222         (adjacency_list_d, adjacency_iterator_d): New types.
3223         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
3224         adjacency_iter_next, regno_basic_block): New static inline functions.
3225         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
3226         (conflict_p): Add function prototype.
3227         * sparseset.h, sparseset.c: New files.
3228         * Makefile.in (OBJS-common): Add sparseset.o.
3229         (sparseset.o): New rule.
3230
3231 2007-10-05  Richard Guenther  <rguenther@suse.de>
3232
3233         PR middle-end/33666
3234         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
3235         to (long long)ptr.
3236
3237 2007-10-05  Michael Matz  <matz@suse.de>
3238
3239         PR inline-asm/33600
3240         * function.c (match_asm_constraints_1): Check for input
3241         being used in the outputs.
3242
3243 2007-10-05  Richard Guenther  <rguenther@suse.de>
3244
3245         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
3246
3247 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
3248
3249         PR target/33635
3250         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
3251         subset checks.  Make the cost of FPR -> FPR moves depend on
3252         mips_mode_ok_for_mov_fmt_p.
3253
3254 2007-10-04  Doug Kwan  <dougkwan@google.com>
3255
3256         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
3257         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3258         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3259         support of conditional variables.
3260         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
3261         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3262         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3263         support of conditional variables.
3264         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
3265         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3266         conditional variables.
3267         * gthr.h: Update comments to document new interface.
3268
3269 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
3270
3271         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
3272         DECL_IGNORED_P.
3273
3274 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3275
3276         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
3277
3278 2007-10-04  Richard Guenther  <rguenther@suse.de>
3279
3280         PR middle-end/33641
3281         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
3282         does not need to be of INTEGER_TYPE.
3283         (verify_gimple_2): New function split out from ...
3284         (verify_gimple_1): ... here.  ICE if there was an error during
3285         verification.
3286
3287 2007-10-04  Michael Matz  <matz@suse.de>
3288
3289         PR rtl-optimization/33653
3290         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
3291         * dse.c (scan_insn): Same.
3292
3293 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3294
3295         * config.gcc: Remove USE_GAS for m68k targets.
3296
3297 2007-10-04  Richard Guenther  <rguenther@suse.de>
3298
3299         PR tree-optimization/33627
3300         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
3301         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
3302         split out from ...
3303         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
3304         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
3305
3306 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3307
3308         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
3309         commands_in_epilogues): Remove variables.
3310         (avr_file_start): Remove unneded initializations of commands_in_file,
3311         commands_in_prologues and commands_in_epilogues variables.
3312         (avr_file_end): Remove dead code.
3313
3314 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3315
3316         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
3317         MOTOROLA is to true.
3318
3319 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
3320
3321         PR target/33635
3322         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
3323         (mips_split_doubleword_move): ...this.
3324         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
3325         use natural endianness for multi-format FPR values.
3326         (mips_split_64bit_move): Rename to...
3327         (mips_split_doubleword_move): ...this and extend to 64-bit words.
3328         Use move_doubleword_fpr* patterns for moves involving FPRs.
3329         (mips_save_reg): Update the call to mips_split_64bit_move.
3330         (mips_secondary_reload_class): Return NO_REGS for any reload of a
3331         nonzero constant into an FPR if the constant can be forced to memory.
3332         * config/mips/mips.md: Update the splitter calls to
3333         mips_split_64bit_move.
3334         (UNSPEC_LOAD_DF_LOW): Rename to...
3335         (UNSPEC_LOAD_LOW): ...this.
3336         (UNSPEC_LOAD_DF_HIGH): Rename to...
3337         (UNSPEC_LOAD_HIGH): ...this.
3338         (UNSPEC_STORE_DF_HIGH): Rename to...
3339         (UNSPEC_STORE_WORD): ...this.
3340         (SPLITF): New mode iterator.
3341         (HALFMODE): New mode attribute.
3342         (movtf): New expander.
3343         (*movtf_internal): New define_insn_and_split.
3344         (move_doubleword_fpr<mode>): New expander.
3345         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
3346         with...
3347         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
3348         (mfhc1<mode>): ...these more general patterns.
3349
3350 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3351
3352         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
3353
3354 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3355
3356         * gcse.c (hash_scan_set): Insert set in insn before note at
3357         the end of basic block.
3358
3359 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
3360
3361         PR tree-optimization/33576
3362         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
3363         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
3364         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
3365         (remove_iv): Declared.
3366         * lambda-code.c (remove_iv): Not static.
3367         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
3368         Don't remove ivs there, save ivs in the buffer.
3369
3370 2007-10-03  Jason Merrill  <jason@redhat.com>
3371
3372         PR c++/15764
3373         * tree-eh.c (same_handler_p): New fn.
3374         (optimize_double_finally): New fn.
3375         (refactor_eh_r): New fn.
3376         (refactor_eh): New fn.
3377         (pass_refactor_eh): New pass.
3378         * tree-pass.h: Declare it.
3379         * passes.c (init_optimization_passes): Add it.
3380
3381 2007-10-03  Doug Kwan  <dougkwan@google.com>
3382         Richard Guenther  <rguenther@suse.de>
3383
3384         PR debug/31899
3385         * dwarf2out.c (reference_to_unused): Disable sanity checking,
3386         be conservative instead.
3387
3388 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3389
3390         PR fortran/26682
3391         * doc/invoke.texi (-fwhole-program): Document that Fortran
3392         doesn't support this option.
3393
3394 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
3395
3396         PR middle-end/33617
3397         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
3398         expand_expr.
3399
3400 2007-10-02  David Daney  <ddaney@avtrex.com>
3401
3402         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
3403         against constant zero.
3404         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
3405         operand.
3406
3407 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
3408
3409         * ra-conflict.c: New file.
3410         * ra.h: New file.
3411         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
3412         usage to DF_LIVE usage.
3413         (reload): Remove reference to df_get_live_top.
3414         * rtlanal.c (subreg_nregs_with_regno): New function.  
3415         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
3416         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
3417         (df_has_eh_preds): Removed.
3418         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
3419         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
3420         bb_has_eh_pred.
3421         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
3422         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
3423         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
3424         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
3425         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
3426         (global_alloc): Turn off rescanning insns after call to
3427         global_conflicts and added call to set_preferences.
3428         (global_conflicts): Moved to ra-alloc.c.
3429         (set_preferences_1, set_preferences): New function.
3430         (mirror_conflicts): Changed types for various variables.
3431         (mark_elimination): Change DF_RA_LIVE
3432         usage to DF_LIVE usage.
3433         (build_insn_chain): Rewritten from scratch and made local.
3434         (print_insn_chain, print_insn_chains): New functions.
3435         (dump_conflicts): Do not print conflicts for fixed_regs.
3436         (rest_of_handle_global_alloc): Turn off insn rescanning.
3437         * hard-reg-set.h: Fixed comment.
3438         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
3439         usage to DF_LIVE usage and delete refs to TOP sets.
3440         (block_alloc): Mark regs as live if they are in the artificial
3441         defs at top of block.
3442         (find_stack_regs): New function.
3443         (rest_of_handle_local_alloc): Changed urec problem to live
3444         problem and do not turn off df rescanning.
3445         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
3446         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
3447         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
3448         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
3449         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
3450         fields in df_ref_flags.  The rest have been renumbered.  
3451         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
3452         at -O1.
3453         * rtl.h (subreg_nregs_with_regno): New function.
3454         * df-problems.c: (df_get_live_out, df_get_live_in,
3455         df_get_live_top): Removed reference to DF_RA_LIVE.
3456         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
3457         df_live_alloc, df_live_reset, df_live_local_finalize,
3458         df_live_free): Make top set only if different from in set.
3459         (df_lr_top_dump, df_live_top_dump): Only print top set if
3460         different from in set.
3461         (df_lr_bb_local_compute): Removed unnecessary check.
3462         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
3463         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
3464         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
3465         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3466         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
3467         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
3468         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
3469         df_urec_add_problem): Removed.
3470         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
3471         bb_has_eh_pred. 
3472         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
3473         * basic_block.h (bb_has_abnormal_pred): New function.
3474         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
3475         usage to DF_LIVE usage.
3476         
3477 2007-10-02  Revital Eres  <eres@il.ibm.com>
3478
3479         * config/rs6000/predicates.md (easy_vector_constant): Return false
3480         for 750CL paired vectors.
3481         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
3482         vector constant.
3483         (vec_initv2sf): Add new description.
3484         (vconcatsf): Likewise.
3485         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
3486         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
3487
3488 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3489
3490         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
3491         sinking the last stmt in a BB.
3492
3493 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3494
3495         PR middle-end/22156
3496         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
3497         (sra_hash_tree): Handle BIT_FIELD_REFs.
3498         (sra_elt_hash): Don't hash bitfld blocks.
3499         (sra_elt_eq): Skip them in parent compares as well.  Handle
3500         BIT_FIELD_REFs.
3501         (build_element_name_1): Handle BIT_FIELD_REFs.
3502         (instantiate_element): Propagate nowarn from parents.  Create
3503         BIT_FIELD_REF for variables that are widened by scalarization.
3504         Gimple-zero-initialize all bit-field variables that are not
3505         part of parameters that are going to be scalarized on entry.
3506         (instantiate_missing_elements_1): Return the sra_elt.
3507         (canon_type_for_field): New.
3508         (try_instantiate_multiple_fields): New.  Infer widest possible
3509         access mode from decl or member type, but clip it at word
3510         size, and only widen it if a field crosses an alignment
3511         boundary.
3512         (instantiate_missing_elements): Use them.
3513         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3514         (scalar_bitfield_p): New.
3515         (sra_build_assignment): Optimize assignments from scalarizable
3516         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
3517         counts.
3518         (REPLDUP): New.
3519         (sra_build_bf_assignment): New.  Optimize assignments to
3520         scalarizable BIT_FIELD_REFs.
3521         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
3522         assignments to full variables.
3523         (generate_copy_inout): Use the new macros and functions.
3524         (generate_element_copy): Likewise.  Handle bitfld differences.
3525         (generate_element_zero): Don't recurse for blocks.  Use
3526         sra_build_elt_assignment.
3527         (generate_one_element_init): Take elt instead of var.  Use
3528         sra_build_elt_assignment.
3529         (generate_element_init_1): Adjust.
3530         (bitfield_overlap_info): New struct.
3531         (bitfield_overlaps_p): New.
3532         (sra_explode_bitfield_assignment): New.  Adjust widened
3533         variables to account for endianness.
3534         (sra_sync_for_bitfield_assignment): New.
3535         (scalarize_use): Re-expand assignment to/from scalarized
3536         BIT_FIELD_REFs.  Explode or sync needed members for
3537         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
3538         (scalarize_copy): Use REPLDUP.
3539         (scalarize_ldst): Move assert before dereference.  Adjust EH
3540         handling.
3541         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3542
3543 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
3544
3545         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
3546         Rename CR_* constants to CMP_*.  Fix spacing.
3547
3548 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3549
3550         PR other/33585
3551         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
3552         to be processed with the special script doc/install.texi2html.
3553         
3554 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3555
3556         * doc/invoke.texi (Wall): List the options enabled by Wall.
3557         (Wstrict-aliasing): Add missing @option.
3558         
3559 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
3560
3561         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
3562         rather than gen_lowpart to change a register from DImode to DFmode.
3563         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
3564         both FROM and TO are integer modes that are no bigger than 4 bytes.
3565         (mips_mode_ok_for_mov_fmt_p): New function.
3566         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
3567         (mips_secondary_reload_class): Tweak formatting and comments.
3568         Use reg_class_subset_p instead of direct comparisons with
3569         classes.  Only allow direct FPR<->FPR moves for modes that
3570         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
3571         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
3572         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
3573         (*movdi_64bit): Likewise.
3574         (*movsi_internal): Likewise.
3575         (*movhi_internal): Likewise.
3576         (*movqi_internal): Likewise.
3577
3578 2007-09-30  Diego Novillo  <dnovillo@google.com>
3579
3580         PR 33593
3581         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
3582         throw an exception.
3583
3584 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
3585
3586         PR tree-optimization/33597
3587         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
3588         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
3589
3590 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
3591
3592         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
3593         instead of variants of (!reload_in_progress && !reload_completed).
3594         (x86_expand_vector_move): Ditto.
3595
3596 2007-09-28  Ollie Wild  <aaw@google.com>
3597
3598         Revert
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-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3618
3619         PR target/33347
3620         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
3621         argument to gen_selb.
3622
3623 2007-09-28  Chao-ying Fu  <fu@mips.com>
3624
3625         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
3626         * doc/libgcc.texi (Fixed-point fractional library routines):
3627         Fix typos for neg and cmp functions.
3628
3629 2007-09-28  Michael Matz  <matz@suse.de>
3630
3631         PR rtl-optimization/33552
3632         * function.c (match_asm_constraints_1): Check for overlap in
3633         inputs and replace all occurences.
3634
3635 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
3636
3637         * config/mips/mips.c (override_options): Fix comment typo.
3638
3639 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
3640
3641         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
3642         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
3643         * config/bfin/t-bfin-linux (crti.o): Don't build.
3644         (crtn.o): Likewise.
3645         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3646         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
3647         (crtn.o): Likewise.
3648         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3649
3650 2007-09-27  Ollie Wild  <aaw@google.com>
3651
3652         * varasm.c (compare_constant): Removed call to
3653         lang_hooks.expand_constant.
3654         (copy_constants): Removed call to lang_hooks.expand_constant.
3655         (compute_reloc_for_constant): Removed call to
3656         lang_hooks.expand_constant.
3657         (output_addressed_constants): Removed call to
3658         lang_hooks.expand_constant.
3659         (constructor_static_from_elts_p): Removed call to
3660         lang_hooks.expand_constant.
3661         (output_constant): Removed calls to lang_hooks.expand_constant.
3662         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3663         * langhooks-def.h (lhd_return_tree): Removed.
3664         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3665         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3666         * langhooks.c (lhd_return_tree): Removed.
3667
3668 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3669
3670         PR middle-end/33436
3671         * expr.c (emit_group_load_1): Split constant double when destination
3672         length is half source length.
3673
3674 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
3675
3676         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
3677         (mips_cpu_info): Add tune_flags.
3678         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
3679         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
3680         Remove end marker.
3681         (override_options): Remove deprecation code.  Use branch-likely
3682         instructions for optimize_size or if the tuning flags do not
3683         suggest otherwise.  Tweak warning.
3684         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
3685
3686 2007-09-27  Matthias Klose  <doko@ubuntu.com>
3687
3688         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
3689         multilib osdirname if it exists.
3690         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
3691
3692 2007-09-27  Ian Lance Taylor  <iant@google.com>
3693
3694         PR tree-optimization/33565
3695         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
3696         assignments of comparisons.
3697         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
3698         parameter.  Change caller.  Defer overflow warnings around call to
3699         fold_binary.
3700         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
3701         TREE_NO_WARNING is set on the statement.
3702         * tree-ssa-forwprop.c
3703         (tree_ssa_forward_propagate_single_use_vars): Don't test
3704         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
3705         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3706
3707 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
3708
3709         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
3710         reduce offset by units of 0x10000 for SPE vector modes or modes
3711         used with E500 double instructions.
3712
3713 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
3714
3715         * simplify-rtx.c (comparison_result): New.
3716         (simplify_const_relational_operation): Use it instead of the five
3717         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
3718         Improve bounds-checking optimizations; remove subsumed POPCOUNT
3719         optimizations.  Extract nonzero_address_p optimizations into a
3720         separate "if" together with optimizations where op1 is const0_rtx.
3721         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
3722         floating-point arguments too when appropriate.  Hoist test for ABS
3723         outside the final switch statement.
3724         * cse.c (fold_rtx): Don't look for an IOR equivalent of
3725         folded_arg0 if we found a constant equivalent.  Remove
3726         transformations done in simplify-rtx.c for "op0 RELOP op0".
3727
3728 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
3729
3730         * builtins.c (expand_builtin, expand_builtin_object_size,
3731         expand_builtin_memory_chk, maybe_emit_chk_warning,
3732         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
3733         for diagnostics.
3734         * expr.c (expand_expr_real_1): Likewise.
3735         * langhooks-def.h (struct diagnostic_info): Add forward decl.
3736         (lhd_print_error_function): Add third argument.
3737         * langhooks.h (struct diagnostic_info): Add forward decl.
3738         (struct lang_hooks): Add third argument to print_error_function.
3739         * diagnostic.h (diagnostic_info): Add abstract_origin field.
3740         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
3741         second argument.
3742         (diagnostic_report_current_function): Likewise.
3743         * toplev.c (announce_function): Pass NULL as second argument to
3744         diagnostic_set_last_function.
3745         * diagnostic.c (diagnostic_report_current_function): Add second
3746         argument, pass it as third argument to lang_hooks.print_error_function.
3747         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
3748         to diagnostic_report_current_function.
3749         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
3750         and message.abstract_origin.
3751         (verbatim): Initialize abstract_origin.
3752         * pretty-print.h (text_info): Add abstract_origin field.
3753         * pretty-print.c (pp_base_format): Handle %K.
3754         * langhooks.c (lhd_print_error_function): Add third argument.  If
3755         diagnostic->abstract_origin, print virtual backtrace.
3756         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
3757         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
3758         (init_dynamic_diag_info): Likewise.
3759
3760 2007-09-26  David Daney  <ddaney@avtrex.com>
3761
3762         PR target/33479
3763         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
3764         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
3765         sync_old_nand<mode>, sync_new_nand<mode>,
3766         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
3767         Update length attributes.
3768         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
3769         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
3770         length attributes.
3771         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
3772         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
3773         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
3774         post-loop sync.
3775
3776 2007-09-26  Richard Guenther  <rguenther@suse.de>
3777
3778         PR tree-optimization/33563
3779         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
3780         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
3781         aggregate stores.
3782         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
3783         get_use_of_stmt_lhs.
3784
3785 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
3786
3787         PR c/25309
3788         * c-common.c (complete_array_type): Diagnose too-large arrays and
3789         set type to error_mark_node.
3790
3791 2007-09-26  Richard Guenther  <rguenther@suse.de>
3792
3793         PR tree-optimization/30375
3794         PR tree-optimization/33560
3795         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
3796         with calls.
3797
3798         Revert
3799         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
3800
3801         * tree-ssa-dse.c (aggregate_vardecl_d): New.
3802         (dse_global_data): Add aggregate_vardecl field.
3803         (dse_possible_dead_store_p): New.
3804         Add prev_defvar variable.
3805         Allow immediate uses and previous immediate uses to differ
3806         if they are setting different parts of the whole.
3807         (get_aggregate_vardecl): New.
3808         (dse_record_partial_aggregate_store): New.
3809         (dse_whole_aggregate_clobbered_p): New.
3810         (dse_partial_kill_p): New.
3811         Call dse_maybe_record_aggregate_store().
3812         When checking whether a STMT and its USE_STMT refer to the
3813         same memory address, check also for partial kills that clobber
3814         the whole.
3815         Move some variable definitions to the block where they are used.
3816         (aggregate_vardecl_hash): New.
3817         (aggregate_vardecl_eq): New.
3818         (aggregate_vardecl_free): New.
3819         (aggregate_whole_store_p): New.
3820         (tree_ssa_dse): Initialize and free aggregate_vardecl.
3821         Mark which aggregate stores we care about.
3822
3823 2007-09-25  DJ Delorie  <dj@redhat.com>
3824
3825         PR target/33551
3826         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
3827         XINT.
3828
3829 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
3830
3831         PR target/33524
3832         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
3833         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
3834         for vector int32 -> int64 conversions.  Don't write beyond the end
3835         of the allocated vector for int32 -> int64 conversions.
3836
3837 2007-09-25  Revital Eres  <eres@il.ibm.com>
3838
3839         * config/rs6000/paired.h (paired_sel): New.
3840         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
3841         (rs6000_expand_ternop_builtin): Pass zero const_double operand
3842         when expanding selv2sf.
3843         * config/rs6000/rs6000.h (rs6000_builtins): Add
3844         PAIRED_BUILTIN_SELV2SF4.
3845
3846 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
3847
3848         PR c/32295
3849         * c-typeck.c (default_conversion): Call require_complete_type
3850         before perform_integral_promotions.
3851         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
3852         (build_c_cast): Call require_complete_type except for casts to
3853         void types.
3854         (convert_for_assignment): Call require_complete_type.
3855
3856 2007-09-25  Revital Eres  <eres@il.ibm.com>
3857
3858         * config/spu/spu.md: Fix doloop pattern.
3859
3860 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
3861
3862         * config/bfin/bfin.c (expand_prologue_reg_save,
3863         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
3864         and ASTAT moved here...
3865         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
3866         ... from here.  New argument ALL; callers changed.
3867         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
3868         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
3869         have the "saveall" attribute.
3870
3871 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
3872
3873         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
3874         bogus target macro.
3875         (INCOMING_REGNO, OUTGOING_REGNO): Define.
3876         * config/mmix/mmix.c (mmix_opposite_regno): New function.
3877         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
3878
3879         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
3880         with REG_P tests before REGNO access.
3881
3882 2007-09-24  DJ Delorie  <dj@redhat.com>
3883
3884         PR target/31482
3885         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
3886         constraint.
3887         (movqicc_<code>_<mode>): Likewise.
3888         (movhicc_<code>_<mode>): Likewise.
3889
3890 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3891
3892         PR target/33184
3893         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
3894         register for reload.
3895
3896 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
3897
3898         PR c++/14688
3899         * config/i386/i386.c (ix86_comp_type_attributes): Check
3900         METHOD_TYPE too.
3901
3902 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3903
3904         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
3905         "move.l %a4,%a4" to produce nops.
3906         * config/m68k/m68k.c (override_options): Reset align options,
3907         if neccessary align macro isn't avaible.
3908
3909 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3910
3911         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
3912
3913 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3914
3915         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
3916         the basic block.
3917         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
3918         reload is completed.
3919         (peephole pattern): Convert most of them to RTL peephole pattern.
3920
3921 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3922
3923         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
3924         (moved from fp compare patterns).
3925         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
3926         Cleanup predicates to relieve reload.
3927         (conditional_trap): Reject conditional trap with fp condition.
3928         * config/m68k/predicates.md (fp_src_operand): New, reject
3929         certain constants early.
3930
3931 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
3932
3933         * final.c (final_scan_insn): Remove accidentally duplicated code.
3934
3935 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3936
3937         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
3938         Allow --with-tune=cell and --with-cpu=cell.
3939
3940 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
3941
3942         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
3943         * config/rs6000/rs6000.opt (swdiv): Change option to ...
3944         (recip): this.
3945         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
3946         function.
3947         (TARGET_BUILTIN_RECIPROCAL): Use it.
3948         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
3949         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
3950         (rs6000_emit_swrsqrtsf): New.
3951         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
3952         rsqrtf. 
3953         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
3954         (divsf3): Remove swdiv support.
3955         (recipsf3): New.
3956         (rsqrtsf2): New.
3957         (rsqrt_internal1): New.
3958         (divdf3): Remove swdiv support.
3959         (reciptdf3): New.
3960
3961 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
3962
3963         PR c++/33506
3964         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
3965         field.
3966         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
3967         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
3968         * tree.c (type_hash_eq): For FUNCTION_TYPE use
3969         lang_hooks.type.type_hash_eq in addition to generic tests.
3970
3971 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
3972         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
3973
3974         * tree-inline.h (eni_weights): Add field target_builtin_cost to
3975         reflect the cost per call to a target specific builtin.
3976         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
3977         call to a target specific builtin, then use target_builtin_call_cost.
3978         (init_inline_once): Initialize target_builtin_call_cost field.
3979
3980 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
3981
3982         PR middle-end/33472
3983         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
3984         complex types.
3985
3986 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
3987
3988         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
3989         * configure: Regenerated.
3990
3991 2007-09-23  Ollie Wild  <aaw@google.com>
3992
3993         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
3994         operand.
3995         (get_pointer_modulus_and_residue): New function.
3996
3997 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3998
3999         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
4000         combine an SC return value into a single register.
4001
4002 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4003
4004         * opth-gen.awk (target_flags_explicit): Declare.
4005         * toplev.h (target_flags_explicit): Delete declaration.
4006         * toplev.c (target_flags): Likewise.
4007         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
4008         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
4009         Never return true for TARGET_MIPS16.
4010         * config/mips/mips.c (mips_llsc): Delete.
4011         (mips_handle_option): Remove -mllsc handling.
4012         (mips_strip_unspec_address): Tweak comment.
4013         * config/mips/mips.opt (mllsc): Use a target mask.
4014
4015 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4016
4017         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
4018         word_mode as well as Pmode.
4019
4020 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4021
4022         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
4023         parameters from word_mode to the subword type if such a truncation
4024         is not a no-op.
4025
4026 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
4027
4028         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
4029         * configure: Regenerated.
4030
4031 2007-09-23  Jan Hubicka  <jh@suse.cz>
4032
4033         * params.def (INLINE_CALL_COST): Set to 12.
4034         * invoke.texi (inline-call-cost): Update default value.
4035
4036 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4037
4038         * config/alpha/alpha.md (movti): Use operand_subword for the split.
4039
4040 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
4041             Revital Eres  <eres@il.ibm.com>
4042
4043         * modulo-sched.c (doloop_register_get): Rewrite the loop which
4044         checks whether the count_reg is found outside the control part.
4045
4046 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
4047
4048         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
4049         instead of checking CALL_EXPR_FN directly to test for builtins.
4050         If error or warning attributes are present, print
4051         error resp. warning.
4052         * c-common.c (handle_error_attribute): New function.
4053         (c_common_attribute_table): Add error and warning
4054         attributes.
4055         * doc/extend.texi: Document error and warning attributes.
4056
4057         * tree.h (block_nonartificial_location): New prototype.
4058         * tree.c (block_nonartificial_location): New function.
4059         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
4060         if artificial attribute is present on abstract inline decl.
4061         * c-common.c (handle_artificial_attribute): New function.
4062         (c_common_attribute_table): Add artificial attribute.
4063         * final.c (override_filename, override_linenum): New variables.
4064         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
4065         and override_linenum if inside of a block inlined from
4066         __attribute__((__artificial__)) function.
4067         (notice_source_line): Honor override_filename and override_linenum.
4068         * doc/extend.texi: Document __attribute__((__artificial__)).
4069         * config/i386/emmintrin.h: Add __artificial__ attribute to
4070         all __always_inline__ functions.
4071         * config/i386/mmintrin.h: Likewise.
4072         * config/i386/tmmintrin.h: Likewise.
4073         * config/i386/mm3dnow.h: Likewise.
4074         * config/i386/pmmintrin.h: Likewise.
4075         * config/i386/ammintrin.h: Likewise.
4076         * config/i386/xmmintrin.h: Likewise.
4077         * config/i386/smmintrin.h: Likewise.
4078         * config/i386/bmmintrin.h: Likewise.
4079         * config/i386/mmintrin-common.h: Likewise.
4080
4081         PR middle-end/28755
4082         * expr.c (expand_constructor): New function.
4083         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
4084         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
4085         CONSTRUCTOR.
4086
4087 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4088
4089         * config/mips/mips.c (dump_constants_1): Generalize to include
4090         fractional and accumulator modes.
4091
4092 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4093
4094         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
4095         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
4096         flags for MIPS16.
4097         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
4098         TARGET_HARD_FLOAT when testing whether -mpaired-single is
4099         supported.
4100         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
4101         TARGET_DSP.
4102         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
4103         TARGET_DSPR2.
4104         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
4105         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
4106         TARGET_HARD_FLOAT.
4107         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
4108         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
4109         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
4110         throughout.
4111         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
4112         TARGET_HAS_DSPR2.
4113         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
4114         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
4115         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
4116
4117 2007-09-22  Jason Merrill  <jason@redhat.com>
4118
4119         PR c++/19407
4120         * attribs.c (lookup_attribute_spec): Split out...
4121         (decl_attributes): From here.
4122         * tree.h: Declare it.
4123
4124 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4125
4126         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
4127
4128 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4129
4130         * tree-inline.c (remap_type_1): Correctly chain variants.
4131
4132 2007-09-22  Richard Guenther  <rguenther@suse.de>
4133
4134         PR tree-optimization/33146
4135         * fold-const.c (fold_binary): Use the original tree
4136         for negating.
4137         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
4138         also changes "sign".
4139
4140 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4141
4142         PR target/32325
4143         * except.c (finish_eh_generation): Call commit_edge_insertions if
4144         there are insns queued on the entry edge.
4145         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
4146         the entry edge.
4147
4148 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4149
4150         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
4151
4152 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
4153
4154         * config/i386/i386.c: Delete trailing whitespace.
4155         * config/i386/i386.h: Ditto.
4156         * config/i386/bmmintrin.h: Ditto.
4157         * config/i386/sync.md: Ditto.
4158         * config/i386/ppro.md: Ditto.
4159         * config/i386/mmx.md: Ditto.
4160         * config/i386/constraints.md: Ditto.
4161         * config/i386/sse.md: Ditto.
4162         * config/i386/athlon.md: Ditto.
4163         * config/i386/i386.md: Ditto.
4164
4165 2007-09-21  Richard Guenther  <rguenther@suse.de>
4166
4167         PR tree-optimization/33508
4168         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
4169         quadratic loop by keeping a bitmap of variables we have
4170         to clobber all subvariables for.
4171         (set_initial_properties): Likewise.
4172
4173 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
4174
4175         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
4176
4177 2007-09-20  Nigel Stephens  <nigel@mips.com>
4178             Chao-ying Fu  <fu@mips.com>
4179
4180         * c-decl.c (finish_declspecs): When _Sat is used without
4181         _Fract or _Accum, set the default type to cts_fract.
4182         This avoids a warning of "type defaults to int".
4183
4184 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4185
4186         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
4187         bit-fields wider than one bit.
4188
4189 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
4190
4191         PR debug/33316
4192         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
4193         DECL_NAME.
4194         * dbxout.c (dbxout_type): Likewise.
4195
4196         PR c/33238
4197         PR c/27301
4198         * gimplify.c (gimplify_vla_decl): New function.
4199         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
4200         Call it.
4201         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
4202
4203 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4204
4205         * doc/invoke.texi (-minterlink-mips16): Document.
4206         * config/mips/mips.opt (minterlink-mips16): New option.
4207         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
4208         -minterlink-mips16
4209
4210 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4211
4212         * doc/extend.texi (Attribute Syntax): Remove old speculative
4213         future direction.
4214
4215 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
4216
4217         * combine.c: Include cgraph.h.
4218         (setup_incoming_promotions): Rework to allow more aggressive
4219         elimination of sign extensions when all call sites of the
4220         current function are known to lie within the current unit.
4221
4222 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4223
4224         * dse.c (find_shift_sequence): No-op rework of control flow.
4225
4226 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
4227
4228         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
4229         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
4230
4231 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4232
4233         * cfgexpand.c (dump_stack_var_partition): Use the correct
4234         index for the offset.
4235
4236 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
4237
4238         * config/mips/sde.h: Switch to GPLv3.
4239
4240 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
4241
4242         * tree-sra.c (decide_block_copy): Decide if there are groups.
4243
4244 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
4245
4246         * config/m68k/m68k.c (output_move_himode): Remove jump table
4247         recognition.
4248         config/m68k/m68k.md (lea): Likewise.
4249         * config/m68k/m68k.c (print_operand_address): Use simple pc
4250         relative addressing.
4251
4252 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4253
4254         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
4255         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
4256         default definition.
4257         (asm_insn_count): Pass template as second argument to it.
4258         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4259         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4260         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4261         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4262         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4263         (sh_insn_length_adjustment): Pass template as second argument to it.
4264         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
4265
4266         * config/bfin/bfin.md (define_asm_attributes): New.
4267
4268 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
4269
4270         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
4271         to tm_file.
4272         * config/bfin/print-sysroot-suffix.sh: New.
4273         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
4274         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4275         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4276         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
4277         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4278         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4279         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
4280         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4281         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4282         (linux-sysroot-suffix.h): New target.
4283         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
4284         (mspecld-anomaly): Likewise.
4285         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
4286         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
4287         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
4288         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
4289         (bfin_si_revision): Declare.
4290         (bfin_workarounds): Declare.
4291         (WA_SPECULATIVE_LOADS): Define.
4292         (ENABLE_WA_SPECULATIVE_LOADS): Define.
4293         (WA_SPECULATIVE_SYNCS): Define.
4294         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
4295         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
4296         (LIB_SPEC): Add %s to the linker scripts.
4297         Use proper linker script for bf522, bf525, bf527,
4298         bf538, bf539, bf542, bf544, bf548, and bf549.
4299         * config/bfin/bfin.c (bfin_si_revision): Define.
4300         (bfin_workarounds): Define.
4301         (struct bfin_cpu): New.
4302         (bfin_cpus): New.
4303         (bfin_handle_option): Handle silicon revision part of -mcpu option.
4304         (override_options): Set bfin_workarounds.
4305         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
4306         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
4307         ENABLE_WA_SPECULATIVE_LOADS.
4308         (bfin_reorg): Likewise.
4309         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
4310         macros for bf522, bf525, bf527, bf538, bf539,
4311         bf542, bf544, bf548, and bf549.
4312         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
4313         Don't define __ID_SHARED_LIB__ when -msep-data.
4314         (TARGET_DEFAULT): Define as 0.
4315         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
4316         * doc/invoke.texi (Blackfin Options): Document silicon
4317         revision part of -mcpu option and it now accepts bf522, bf525,
4318         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
4319
4320 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4321
4322         * alias.c (memory_modified_1): Deconstify.
4323         (memory_modified_in_insn_p): Don't use const_note_stores.
4324         * rtl.h (const_note_stores): Delete.
4325         * rtlanal.c (const_note_stores): Likewise.
4326
4327 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4328
4329         * dse.c (find_shift_sequence): Temporarily revert to forbidding
4330         word shifts.
4331
4332 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4333
4334         PR target/33388
4335         PR target/33397
4336         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
4337         (addsi_small_int): Likewise.
4338         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
4339         (one_cmplsi2): Likewise.
4340         (negsi2): Delete.
4341         (enter_func): Expand insn using hard_frame_pointer_rtx and
4342         stack_pointer_rtx.
4343         (*enter_func): New.
4344         * config/fr30/fr30.c (fr30_expand_prologue): Check for
4345         hard_frame_pointer_rtx instead of using REGNO() check.
4346         Properly sign extend GEN_INT() argument.
4347
4348 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4349
4350         * config/m68k/m68k.c (override_options): Remove USE_GAS,
4351         use %. syntax.
4352         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
4353         alternatives with just jcc.
4354         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
4355         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
4356         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
4357         dbge_hi, dbge_si): Likewise.
4358
4359 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4360
4361         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
4362         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
4363         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
4364         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
4365         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
4366
4367 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
4368
4369         * config/m68k/m68k-devices.def (51qe): New device.
4370         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
4371         to all uses of FL_FOR_isa_c for compatibility.
4372         (all_microarchs): Add cfv1 microarchitecture.
4373         (m68k_handle_option): Handle m51qe option.
4374         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
4375         (TUNE_CFV1): New macro.
4376         (enum uarch_type): Add ucfv1.
4377         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
4378         
4379 2007-09-18  Richard Guenther  <rguenther@suse.de>
4380
4381         PR tree-optimization/31863
4382         * tree-ssa-structalias.c (create_variable_info_for): Always
4383         free the fieldstack.
4384
4385 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
4386
4387         * opts.c (decode_options): Enable vectorization under -O3.
4388
4389 2007-09-18  Richard Guenther  <rguenther@suse.de>
4390
4391         PR tree-optimization/33340
4392         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
4393         SSA_NAMEs that occur in abnormal PHI nodes.
4394
4395 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4396
4397         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
4398         Don't use const_get_call_expr_in.
4399         * tree-gimple.c (const_get_call_expr_in): Delete.
4400         * tree-gimple.h (const_get_call_expr_in): Likewise.
4401
4402 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4403
4404         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
4405         not yet have a basic block.
4406         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
4407
4408 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4409
4410         * config/mips/mips.c (mips_file_start): Add ".previous" directives
4411         to both ".section"s.
4412
4413 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4414
4415         * config/mips/mips.c (mips_output_mi_thunk): Use
4416         mips_function_ok_for_sibcall and const_call_insn_operand
4417         to determine if a direct sibcall is allowed.  Use
4418         mips_classify_symbol to determine a global pointer is needed.
4419
4420 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4421
4422         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
4423
4424 2007-09-17  Chao-ying Fu  <fu@mips.com>
4425             Nigel Stephens  <nigel@mips.com>
4426
4427         * config/fixed-bit.h: New file.
4428         * config/fixed-bit.c: New file.
4429         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
4430
4431 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
4432
4433         * c-format.h (format_kind_info): Add alloc_char field.
4434         * c-format.c (scanf_flag_specs): Add 'm'.
4435         (scanf_flag_pairs): Add 'a', 'm' pair.
4436         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
4437         (format_types_orig): Add alloc_char fields.
4438         (check_format_info_main): Rename aflag to alloc_flag.
4439         Handle fki->alloc_char. modifier after width and before length
4440         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
4441         length modifiers as well.
4442         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
4443
4444         PR middle-end/33423
4445         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
4446         returned by build_call_expr.
4447
4448 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4449
4450         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
4451         NULL for variable-sized records too.
4452         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
4453
4454 2007-09-17  Tom Tromey  <tromey@redhat.com>
4455
4456         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
4457         (c_builtin_function): Likewise.
4458         (grokdeclarator): Likewise.
4459
4460 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
4461
4462         PR rtl-optimization/26449
4463         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
4464         (seq_insns_valid_p): Removed.
4465
4466 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4467
4468         * tree-nomudflap.c (gate_mudflap): New static function.
4469         (pass_mudflap_1): Use it as gate function.
4470         (pass_mudflap_2): Likewise.
4471
4472 2007-09-17  Jan Hubicka  <jh@suse.cz>
4473
4474         PR middle-end/33348
4475         PR target/33406
4476         * loop-invariant.c (move_invariant_reg): Unshare sequence.
4477
4478 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
4479
4480         PR tree-optimization/33319
4481         * tree-vect-analyze.c (vect_same_range_drs): New.
4482         (vect_vfa_range_equal): New.
4483         (vect_is_duplicate_ddr): Removed.
4484         (vect_mark_for_runtime_alias_test): Do not perform marking when
4485         optimizing for size or max_param for alias checking is zero.
4486         Move the function before vect_analyze_data_ref_dependence.
4487         (vect_analyze_data_ref_dependence): Add call to
4488         vect_mark_for_runtime_alias_test in two cases when dependence
4489         is not clear.
4490         (vect_analyze_data_ref_dependences): Do not call to
4491         vect_mark_for_runtime_alias_test.
4492         (vect_prune_runtime_alias_test_list): New.
4493         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
4494         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
4495         Update vec_outside_cost.
4496         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
4497         (vect_create_cond_for_alias_checks): Build the base address of data
4498         reference from DR_GROUP_FIRST_DR.
4499         (vect_loop_versioning): New.
4500         (vect_transform_loop): Add a call to vect_loop_versioning.
4501         Remove factored out code.
4502
4503 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4504
4505         PR middle-end/33273
4506         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
4507         to BLKmode.
4508
4509 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4510
4511         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
4512         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
4513         Fix the call to insn_rtx_cost.  Skip access sizes that require a
4514         real truncation of the store register.  Use convert_move instead
4515         of gen_lowpart when narrowing the result.
4516         (replace_read): Use convert_move instead of gen_lowpart when
4517         narrowing the store rhs.
4518
4519 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4520
4521         * config/mips/mips.md (SHORT): Fix long line.
4522         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
4523         to QImode and HImode.
4524
4525 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4526
4527         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
4528
4529 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
4530
4531         * tree-parloops.c: New file.
4532         * tree-ssa-operands.h (free_stmt_operands): Declare.
4533         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
4534         block.
4535         * tree-pass.h (pass_parallelize_loops): Declare.
4536         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
4537         virtual operands.
4538         (build_omp_regions_1): Allow analysing just a single OMP region and
4539         its subregions.
4540         ( build_omp_regions_root, omp_expand_local): New functions.
4541         (build_omp_regions): Add argument to build_omp_regions_1 call.
4542         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
4543         autoparallelization is run.
4544         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
4545         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
4546         pass_parallelize_loops): New.
4547         * common.opt (ftree-parallelize-loops): New.
4548         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
4549         parallelize_loops): Declare.
4550         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
4551         * Makefile.in (tree-parloops.o): Added.
4552         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
4553         New functions.
4554         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
4555         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
4556         one extra edge as well.
4557         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
4558         Use VEC_free to free doms vector.
4559         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
4560         operands.  Recompute operand caches in the new function.
4561         (move_sese_region_to_fn): Update loop info.
4562         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
4563         * tree-ssa-operands.c (free_stmt_operands): New function.
4564
4565         * doc/passes.texi: Document autoparallelization.
4566         * doc/invoke.texi (-ftree-parallelize-loops): New option.
4567
4568 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4569
4570         PR target/33062
4571         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
4572         TYPE_PRECISION.
4573
4574 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
4575
4576         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
4577         the VEC is not NULL.
4578         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
4579         get_vectype_for_scalar_type succeeded.
4580         (vectorizable_conversion): Likewise.
4581
4582 2007-09-14  Jan Hubicka  <jh@suse.cz>
4583
4584         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
4585         TARGET_64BIT.
4586
4587 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
4588
4589         PR target/33438
4590         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
4591         register when operands[2] equals operands[1].
4592         (remainderxf3): Ditto.
4593
4594 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
4595             Nigel Stephens  <nigel@mips.com>
4596
4597         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
4598         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
4599         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
4600         declaration.
4601         (_Unwind_ForcedUnwind): Likewise.
4602         (_Unwind_Resume): Likewise.
4603         (_Unwind_Resume_or_Rethrow): Likewise.
4604         (_Unwind_Backtrace): Likewise.
4605         (_Unwind_SjLj_RaiseException): Likewise.
4606         (_Unwind_SjLj_ForcedUnwind): Likewise.
4607         (_Unwind_SjLj_Resume): Likewise.
4608         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
4609         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
4610         to definition.
4611         (_Unwind_ForcedUnwind): Likewise.
4612         (_Unwind_Resume): Likewise.
4613         (_Unwind_Resume_or_Rethrow): Likewise.
4614         (_Unwind_Backtrace): Likewise.
4615         * unwind-compat.c (_Unwind_Backtrace): Likewise.
4616         (_Unwind_ForcedUnwind): Likewise.
4617         (_Unwind_RaiseException): Likewise.
4618         (_Unwind_Resume): Likewise.
4619         (_Unwind_Resume_or_Rethrow): Likewise.
4620
4621         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
4622         nomips16 mode when IN_LIBGCC2 with hard float.
4623
4624 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
4625
4626         * config/mips/sdemtk.opt: Update to GPLv3.
4627         * config/mips/sdemtk.h: Likewise.
4628
4629 2007-09-14  Nigel Stephens  <nigel@mips.com>
4630
4631         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
4632         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
4633         for mipsisa32-*-linux*.
4634
4635 2007-09-14  Nigel Stephens  <nigel@mips.com>
4636             David Ung  <davidu@mips.com>
4637             Thiemo Seufer  <ths@mips.com>
4638             Richard Sandiford  <richard@codesourcery.com>
4639
4640         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
4641         * configure.ac: Add a mipssde threading type.
4642         * configure: Regenerate.
4643         * config/mips/sdemtk.h: New file.
4644         * config/mips/t-sdemtk: Likewise.
4645         * config/mips/sdemtk.opt: Likewise.
4646         * gthr-mipssde.h: Likewise.
4647         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
4648         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
4649         (MIPS_ICACHE_SYNC): New macro, split from ...
4650         * config/mips/mips.md (clear_cache): ...here.
4651         * config/mips/mips.c (mips_save_reg_p): Check
4652         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
4653         (build_mips16_function_stub): Use targetm.strip_name_encoding.
4654         (build_mips16_call_stub): Likewise.
4655
4656 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
4657
4658         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
4659
4660 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
4661
4662         PR target/32337
4663         * config/ia64/ia64.c (find_gr_spill): Don't decrement
4664         current_frame_info.n_local_regs.  Don't return emitted local
4665         regs.
4666         (ia64_compute_frame_size): Improve unwind hack to put
4667         RP, PFS, FP in that order by allowing some of the registers
4668         been already emitted, as long as they are emitted to the
4669         desired register.
4670
4671 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4672
4673         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
4674         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
4675         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
4676
4677 2007-09-13  Eric Christopher  <echristo@apple.com>
4678             Kenneth Zadeck <zadeck@naturalbridge.com>
4679
4680         * dse.c (find_shift_sequence): New function.
4681         (replace_read): Add case to remove read if it requires shift.
4682         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
4683         
4684 2007-09-13  Tom Tromey  <tromey@redhat.com>
4685
4686         * c-common.c (fname_as_string): Update.
4687         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
4688         (c_lex_one_token): Update.  Add 'parser' argument.
4689         (c_parser_simple_asm_expr): Update.
4690         (c_parser_attributes): Update.
4691         (c_parser_asm_statement): Update.
4692         (c_parser_asm_operands): Update.
4693         (c_parser_peek_token): Update.
4694         (c_parser_peek_2nd_token): Update.
4695         * c-lex.c (c_lex_string_translate): Remove.
4696         (c_lex_return_raw_strings): Likewise.
4697         (c_lex_with_flags): Added 'lex_flags' argument.
4698         (lex_string): Added 'translate' argument.
4699         * c-pragma.h (c_lex_with_flags): Update.
4700         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
4701         (C_LEX_STRING_NO_TRANSLATE): New define.
4702         (C_LEX_RAW_STRINGS): Likewise.
4703
4704 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4705
4706         From Jie Zhang:
4707         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
4708         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
4709         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
4710         (bfin_init_builtins): Initialize __builtin_bfin_ones,
4711         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
4712         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
4713         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
4714         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
4715         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
4716         (bdesc_1arg): Add __builtin_bfin_ones.
4717         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
4718         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
4719         and __builtin_bfin_csqu_fr16.
4720         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
4721         (ones): New define_insn.
4722         (ssaddhi3_parts): New define_insn.
4723         (sssubhi3_parts): New define_insn.
4724         (flag_mulhi_parts): New define_insn.
4725
4726 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
4727
4728         * common.opt (femit-class-debug-always): Turn off by default.
4729
4730 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4731
4732         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
4733         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
4734
4735 2007-09-13  James E. Wilson  <wilson@specifix.com>
4736
4737         PR tree-optimization/33389
4738         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
4739         then set build_loads before returning.
4740
4741 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
4742             David Ung  <davidu@mips.com>
4743
4744         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
4745         {d}addiu and a negative immediate such that it works with MIPS16
4746         instructions.
4747         
4748 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4749
4750         PR bootstrap/33418
4751         * configure.ac (ld_vers): Support Linux linker.
4752         * configure: Regenerated.
4753
4754 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4755             Sandra Loosemore <sandra@codesourcery.com>
4756
4757         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
4758         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
4759         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
4760         nomips16 into decl attributes.
4761         (TARGET_INSERT_ATTRIBUTES): Override.
4762         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
4763         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
4764         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
4765         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
4766         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
4767         (mips_use_mips16_mode_p): Reimplement as a function that takes
4768         a decl and considers only decl attributes.  If the decl is nested
4769         function, use its parent attributes.
4770         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
4771         instead of SYMBOL_REF_MIPS16_FUNC_P.
4772         (mips_set_mips16_mode): Move call to sorry here from old
4773         mips_use_mips16_mode_p.
4774         (mflip_mips16_entry): New structure.
4775         (mflip_mips16_htab): New variable.
4776         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
4777         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
4778         (mips_merge_decl_attributes): New function.
4779         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
4780         Use mips_use_mips16_mode_p.
4781         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
4782         SYMBOL_REF_MIPS16_FUNC_P.
4783         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
4784
4785 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4786
4787         * c-parser.c (c_parser_struct_declaration): Check for a null return.
4788
4789 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4790
4791         PR driver/33309
4792         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
4793
4794 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
4795             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4796             Tony Linthicum  <tony.linthicum@amd.com>
4797
4798         * tree.h (function_args_iterator): New type to iterate over
4799         function arguments.
4800         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
4801         function arguments providing a pointer to the argument.
4802         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
4803         function arguments providing the argument.
4804         (function_args_iter_init): Inline function to initialize
4805         function_args_iterator.
4806         (function_args_iter_cond_ptr): Inline function to return the next
4807         pointer to hold the argument.
4808         (function_args_iter_cond): Inline function to return the next
4809         argument.
4810         (function_args_iter_cond_next): Advance the function args
4811         iterator.
4812         (stdarg_p): New function, return true if variable argument
4813         function.
4814         (prototype_p): New function, return true if function is
4815         prototyped.
4816         (function_args_count): New function, count the number of arguments
4817         of a function.
4818
4819         * tree.c (stdarg_p): New function, return true if variable
4820         argument function.
4821         (prototype_p): New function, return true if function is
4822         prototyped.
4823
4824         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4825         (TARGET_ROUND): New macro for the round/ptest instructions which
4826         are shared between SSE4.1 and SSE5.
4827         (OPTION_MASK_ISA_ROUND): Ditto.
4828         (OPTION_ISA_ROUND): Ditto.
4829         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4830         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4831
4832         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4833         (-mfused-madd): New switch to give users control over whether the
4834         compiler optimizes to use the multiply/add SSE5 instructions.
4835
4836         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
4837         m_ATHLON_K8_AMDFAM10, and change all uses.
4838         (enum pta_flags): Add PTA_SSE5.
4839         (ix86_handle_option): Turn off 3dnow if -msse5.
4840         (override_options): Add SSE5 support.
4841         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4842         instructions.
4843         (ix86_expand_sse_movcc): Add SSE5 support.
4844         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4845         vector type to the next largest size.
4846         (ix86_expand_sse5_pack): New function to use pperm to pack a
4847         vector type to the next smallest size.
4848         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4849         (IX86_BUILTIN_FMADDSD): Ditto.
4850         (IX86_BUILTIN_FMADDPS): Ditto.
4851         (IX86_BUILTIN_FMADDPD): Ditto.
4852         (IX86_BUILTIN_FMSUBSS): Ditto.
4853         (IX86_BUILTIN_FMSUBSD): Ditto.
4854         (IX86_BUILTIN_FMSUBPS): Ditto.
4855         (IX86_BUILTIN_FMSUBPD): Ditto.
4856         (IX86_BUILTIN_FNMADDSS): Ditto.
4857         (IX86_BUILTIN_FNMADDSD): Ditto.
4858         (IX86_BUILTIN_FNMADDPS): Ditto.
4859         (IX86_BUILTIN_FNMADDPD): Ditto.
4860         (IX86_BUILTIN_FNMSUBSS): Ditto.
4861         (IX86_BUILTIN_FNMSUBSD): Ditto.
4862         (IX86_BUILTIN_FNMSUBPS): Ditto.
4863         (IX86_BUILTIN_FNMSUBPD): Ditto.
4864         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4865         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4866         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4867         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4868         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4869         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4870         (IX86_BUILTIN_PPERM): Ditto.
4871         (IX86_BUILTIN_PERMPS): Ditto.
4872         (IX86_BUILTIN_PERMPD): Ditto.
4873         (IX86_BUILTIN_PMACSSWW): Ditto.
4874         (IX86_BUILTIN_PMACSWW): Ditto.
4875         (IX86_BUILTIN_PMACSSWD): Ditto.
4876         (IX86_BUILTIN_PMACSWD): Ditto.
4877         (IX86_BUILTIN_PMACSSDD): Ditto.
4878         (IX86_BUILTIN_PMACSDD): Ditto.
4879         (IX86_BUILTIN_PMACSSDQL): Ditto.
4880         (IX86_BUILTIN_PMACSSDQH): Ditto.
4881         (IX86_BUILTIN_PMACSDQL): Ditto.
4882         (IX86_BUILTIN_PMACSDQH): Ditto.
4883         (IX86_BUILTIN_PMADCSSWD): Ditto.
4884         (IX86_BUILTIN_PMADCSWD): Ditto.
4885         (IX86_BUILTIN_PHADDBW): Ditto.
4886         (IX86_BUILTIN_PHADDBD): Ditto.
4887         (IX86_BUILTIN_PHADDBQ): Ditto.
4888         (IX86_BUILTIN_PHADDWD): Ditto.
4889         (IX86_BUILTIN_PHADDWQ): Ditto.
4890         (IX86_BUILTIN_PHADDDQ): Ditto.
4891         (IX86_BUILTIN_PHADDUBW): Ditto.
4892         (IX86_BUILTIN_PHADDUBD): Ditto.
4893         (IX86_BUILTIN_PHADDUBQ): Ditto.
4894         (IX86_BUILTIN_PHADDUWD): Ditto.
4895         (IX86_BUILTIN_PHADDUWQ): Ditto.
4896         (IX86_BUILTIN_PHADDUDQ): Ditto.
4897         (IX86_BUILTIN_PHSUBBW): Ditto.
4898         (IX86_BUILTIN_PHSUBWD): Ditto.
4899         (IX86_BUILTIN_PHSUBDQ): Ditto.
4900         (IX86_BUILTIN_PROTB): Ditto.
4901         (IX86_BUILTIN_PROTW): Ditto.
4902         (IX86_BUILTIN_PROTD): Ditto.
4903         (IX86_BUILTIN_PROTQ): Ditto.
4904         (IX86_BUILTIN_PROTB_IMM): Ditto.
4905         (IX86_BUILTIN_PROTW_IMM): Ditto.
4906         (IX86_BUILTIN_PROTD_IMM): Ditto.
4907         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4908         (IX86_BUILTIN_PSHLB): Ditto.
4909         (IX86_BUILTIN_PSHLW): Ditto.
4910         (IX86_BUILTIN_PSHLD): Ditto.
4911         (IX86_BUILTIN_PSHLQ): Ditto.
4912         (IX86_BUILTIN_PSHAB): Ditto.
4913         (IX86_BUILTIN_PSHAW): Ditto.
4914         (IX86_BUILTIN_PSHAD): Ditto.
4915         (IX86_BUILTIN_PSHAQ): Ditto.
4916         (IX86_BUILTIN_FRCZSS): Ditto.
4917         (IX86_BUILTIN_FRCZSD): Ditto.
4918         (IX86_BUILTIN_FRCZPS): Ditto.
4919         (IX86_BUILTIN_FRCZPD): Ditto.
4920         (IX86_BUILTIN_CVTPH2PS): Ditto.
4921         (IX86_BUILTIN_CVTPS2PH): Ditto.
4922         (IX86_BUILTIN_COMEQSS): Ditto.
4923         (IX86_BUILTIN_COMNESS): Ditto.
4924         (IX86_BUILTIN_COMLTSS): Ditto.
4925         (IX86_BUILTIN_COMLESS): Ditto.
4926         (IX86_BUILTIN_COMGTSS): Ditto.
4927         (IX86_BUILTIN_COMGESS): Ditto.
4928         (IX86_BUILTIN_COMUEQSS): Ditto.
4929         (IX86_BUILTIN_COMUNESS): Ditto.
4930         (IX86_BUILTIN_COMULTSS): Ditto.
4931         (IX86_BUILTIN_COMULESS): Ditto.
4932         (IX86_BUILTIN_COMUGTSS): Ditto.
4933         (IX86_BUILTIN_COMUGESS): Ditto.
4934         (IX86_BUILTIN_COMORDSS): Ditto.
4935         (IX86_BUILTIN_COMUNORDSS): Ditto.
4936         (IX86_BUILTIN_COMFALSESS): Ditto.
4937         (IX86_BUILTIN_COMTRUESS): Ditto.
4938         (IX86_BUILTIN_COMEQSD): Ditto.
4939         (IX86_BUILTIN_COMNESD): Ditto.
4940         (IX86_BUILTIN_COMLTSD): Ditto.
4941         (IX86_BUILTIN_COMLESD): Ditto.
4942         (IX86_BUILTIN_COMGTSD): Ditto.
4943         (IX86_BUILTIN_COMGESD): Ditto.
4944         (IX86_BUILTIN_COMUEQSD): Ditto.
4945         (IX86_BUILTIN_COMUNESD): Ditto.
4946         (IX86_BUILTIN_COMULTSD): Ditto.
4947         (IX86_BUILTIN_COMULESD): Ditto.
4948         (IX86_BUILTIN_COMUGTSD): Ditto.
4949         (IX86_BUILTIN_COMUGESD): Ditto.
4950         (IX86_BUILTIN_COMORDSD): Ditto.
4951         (IX86_BUILTIN_COMUNORDSD): Ditto.
4952         (IX86_BUILTIN_COMFALSESD): Ditto.
4953         (IX86_BUILTIN_COMTRUESD): Ditto.
4954         (IX86_BUILTIN_COMEQPS): Ditto.
4955         (IX86_BUILTIN_COMNEPS): Ditto.
4956         (IX86_BUILTIN_COMLTPS): Ditto.
4957         (IX86_BUILTIN_COMLEPS): Ditto.
4958         (IX86_BUILTIN_COMGTPS): Ditto.
4959         (IX86_BUILTIN_COMGEPS): Ditto.
4960         (IX86_BUILTIN_COMUEQPS): Ditto.
4961         (IX86_BUILTIN_COMUNEPS): Ditto.
4962         (IX86_BUILTIN_COMULTPS): Ditto.
4963         (IX86_BUILTIN_COMULEPS): Ditto.
4964         (IX86_BUILTIN_COMUGTPS): Ditto.
4965         (IX86_BUILTIN_COMUGEPS): Ditto.
4966         (IX86_BUILTIN_COMORDPS): Ditto.
4967         (IX86_BUILTIN_COMUNORDPS): Ditto.
4968         (IX86_BUILTIN_COMFALSEPS): Ditto.
4969         (IX86_BUILTIN_COMTRUEPS): Ditto.
4970         (IX86_BUILTIN_COMEQPD): Ditto.
4971         (IX86_BUILTIN_COMNEPD): Ditto.
4972         (IX86_BUILTIN_COMLTPD): Ditto.
4973         (IX86_BUILTIN_COMLEPD): Ditto.
4974         (IX86_BUILTIN_COMGTPD): Ditto.
4975         (IX86_BUILTIN_COMGEPD): Ditto.
4976         (IX86_BUILTIN_COMUEQPD): Ditto.
4977         (IX86_BUILTIN_COMUNEPD): Ditto.
4978         (IX86_BUILTIN_COMULTPD): Ditto.
4979         (IX86_BUILTIN_COMULEPD): Ditto.
4980         (IX86_BUILTIN_COMUGTPD): Ditto.
4981         (IX86_BUILTIN_COMUGEPD): Ditto.
4982         (IX86_BUILTIN_COMORDPD): Ditto.
4983         (IX86_BUILTIN_COMUNORDPD): Ditto.
4984         (IX86_BUILTIN_COMFALSEPD): Ditto.
4985         (IX86_BUILTIN_COMTRUEPD): Ditto.
4986         (IX86_BUILTIN_PCOMEQUB): Ditto.
4987         (IX86_BUILTIN_PCOMNEUB): Ditto.
4988         (IX86_BUILTIN_PCOMLTUB): Ditto.
4989         (IX86_BUILTIN_PCOMLEUB): Ditto.
4990         (IX86_BUILTIN_PCOMGTUB): Ditto.
4991         (IX86_BUILTIN_PCOMGEUB): Ditto.
4992         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4993         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4994         (IX86_BUILTIN_PCOMEQUW): Ditto.
4995         (IX86_BUILTIN_PCOMNEUW): Ditto.
4996         (IX86_BUILTIN_PCOMLTUW): Ditto.
4997         (IX86_BUILTIN_PCOMLEUW): Ditto.
4998         (IX86_BUILTIN_PCOMGTUW): Ditto.
4999         (IX86_BUILTIN_PCOMGEUW): Ditto.
5000         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
5001         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
5002         (IX86_BUILTIN_PCOMEQUD): Ditto.
5003         (IX86_BUILTIN_PCOMNEUD): Ditto.
5004         (IX86_BUILTIN_PCOMLTUD): Ditto.
5005         (IX86_BUILTIN_PCOMLEUD): Ditto.
5006         (IX86_BUILTIN_PCOMGTUD): Ditto.
5007         (IX86_BUILTIN_PCOMGEUD): Ditto.
5008         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
5009         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
5010         (IX86_BUILTIN_PCOMEQUQ): Ditto.
5011         (IX86_BUILTIN_PCOMNEUQ): Ditto.
5012         (IX86_BUILTIN_PCOMLTUQ): Ditto.
5013         (IX86_BUILTIN_PCOMLEUQ): Ditto.
5014         (IX86_BUILTIN_PCOMGTUQ): Ditto.
5015         (IX86_BUILTIN_PCOMGEUQ): Ditto.
5016         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
5017         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
5018         (IX86_BUILTIN_PCOMEQB): Ditto.
5019         (IX86_BUILTIN_PCOMNEB): Ditto.
5020         (IX86_BUILTIN_PCOMLTB): Ditto.
5021         (IX86_BUILTIN_PCOMLEB): Ditto.
5022         (IX86_BUILTIN_PCOMGTB): Ditto.
5023         (IX86_BUILTIN_PCOMGEB): Ditto.
5024         (IX86_BUILTIN_PCOMFALSEB): Ditto.
5025         (IX86_BUILTIN_PCOMTRUEB): Ditto.
5026         (IX86_BUILTIN_PCOMEQW): Ditto.
5027         (IX86_BUILTIN_PCOMNEW): Ditto.
5028         (IX86_BUILTIN_PCOMLTW): Ditto.
5029         (IX86_BUILTIN_PCOMLEW): Ditto.
5030         (IX86_BUILTIN_PCOMGTW): Ditto.
5031         (IX86_BUILTIN_PCOMGEW): Ditto.
5032         (IX86_BUILTIN_PCOMFALSEW): Ditto.
5033         (IX86_BUILTIN_PCOMTRUEW): Ditto.
5034         (IX86_BUILTIN_PCOMEQD): Ditto.
5035         (IX86_BUILTIN_PCOMNED): Ditto.
5036         (IX86_BUILTIN_PCOMLTD): Ditto.
5037         (IX86_BUILTIN_PCOMLED): Ditto.
5038         (IX86_BUILTIN_PCOMGTD): Ditto.
5039         (IX86_BUILTIN_PCOMGED): Ditto.
5040         (IX86_BUILTIN_PCOMFALSED): Ditto.
5041         (IX86_BUILTIN_PCOMTRUED): Ditto.
5042         (IX86_BUILTIN_PCOMEQQ): Ditto.
5043         (IX86_BUILTIN_PCOMNEQ): Ditto.
5044         (IX86_BUILTIN_PCOMLTQ): Ditto.
5045         (IX86_BUILTIN_PCOMLEQ): Ditto.
5046         (IX86_BUILTIN_PCOMGTQ): Ditto.
5047         (IX86_BUILTIN_PCOMGEQ): Ditto.
5048         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
5049         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
5050         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
5051         OPTION_MASK_ISA_ROUND for instructions that are shared between
5052         SSE4.1 and SSE5.
5053         (bdesc_2arg): Ditto.
5054         (bdesc_sse_3arg): Ditto.
5055         (enum multi_arg_type): New enum for describing the various SSE5
5056         intrinsic argument types.
5057         (bdesc_multi_arg): New table for SSE5 intrinsics.
5058         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
5059         (ix86_expand_multi_arg_builtin): New function for creating SSE5
5060         intrinsics.
5061         (ix86_expand_builtin): Add SSE5 intrinsic support.
5062         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
5063         operand instructions.
5064         (ix86_expand_sse5_multiple_memory): New function to split the
5065         second memory reference from SSE5 instructions.
5066         (type_has_variadic_args_p): Delete in favor of stdarg_p.
5067         (ix86_return_pops_args): Use stdarg_p to determine if the function
5068         has variable arguments.
5069         (ix86_setup_incoming_varargs): Ditto.
5070         (x86_this_parameter): Ditto.
5071
5072         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
5073         declaration.
5074         (ix86_expand_sse5_pack): Ditto.
5075         (ix86_sse5_valid_op_p): Ditto.
5076         (ix86_expand_sse5_multiple_memory): Ditto.
5077
5078         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
5079         constant for SSE5 support.
5080         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
5081         (UNSPEC_SSE5_TRUEFALSE): Ditto.
5082         (UNSPEC_SSE5_PERMUTE): Ditto.
5083         (UNSPEC_SSE5_ASHIFT): Ditto.
5084         (UNSPEC_SSE5_LSHIFT): Ditto.
5085         (UNSPEC_FRCZ): Ditto.
5086         (UNSPEC_CVTPH2PS): Ditto.
5087         (UNSPEC_CVTPS2PH): Ditto.
5088         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
5089         (PCOM_TRUE): Ditto.
5090         (COM_FALSE_S): Ditto.
5091         (COM_FALSE_P): Ditto.
5092         (COM_TRUE_S): Ditto.
5093         (COM_TRUE_P): Ditto.
5094         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
5095         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
5096         types.
5097         (memory attribute): Ditto.
5098         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5099         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
5100         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5101         (floor<mode>2): Ditto.
5102         (ceil<mode>2): Ditto.
5103         (btrunc<mode>2): Ditto.
5104         (nearbyintdf2): Ditto.
5105         (nearbyintsf2): Ditto.
5106         (sse_setccsf): Disable if SSE5.
5107         (sse_setccdf): Ditto.
5108         (sse5_setcc<mode>): New support for SSE5 conditional move.
5109         (sse5_pcmov_<mode>): Ditto.
5110
5111         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
5112         (SSEMODEF4): Ditto.
5113         (SSEMODEF2P): Ditto.
5114         (ssemodesuffixf4): New mode attribute for SSE5.
5115         (ssemodesuffixf2s): Ditto.
5116         (ssemodesuffixf2c): Ditto.
5117         (sserotatemax): Ditto.
5118         (ssescalarmode): Ditto.
5119         (sse_maskcmpv4sf3): Disable if SSE5.
5120         (sse_maskcmpv2df3): Ditto.
5121         (sse_vmmaskcmpv4sf3): Ditto.
5122         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
5123         instructions.
5124         (sse5_vmfmadd<mode>4): Ditto.
5125         (sse5_fmsub<mode>4): Ditto.
5126         (sse5_vmfmsub<mode>4): Ditto.
5127         (sse5_fnmadd<mode>4): Ditto.
5128         (sse5_vmfnmadd<mode>4): Ditto.
5129         (sse5_fnmsub<mode>4): Ditto.
5130         (sse5_vmfnmsub<mode>4): Ditto.
5131         (sse5i_fmadd<mode>4): Ditto.
5132         (sse5i_fmsub<mode>4): Ditto.
5133         (sse5i_fnmadd<mode>4): Ditto.
5134         (sse5i_fnmsub<mode>4): Ditto.
5135         (sse5i_vmfmadd<mode>4): Ditto.
5136         (sse5i_vmfmsub<mode>4): Ditto.
5137         (sse5i_vmfnmadd<mode>4): Ditto.
5138         (sse5i_vmfnmsub<mode>4): Ditto.
5139         (mulv16qi3): Add SSE5 support.
5140         (mulv4si3): Ditto.
5141         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
5142         (sse2_mulv4si3): Disable if SSE5.
5143         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
5144         (sse4_1_roundps): Ditto.
5145         (sse4_1_roundsd): Ditto.
5146         (sse4_1_roundss): Ditto.
5147         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
5148         be generated.
5149         (sse_maskcmpsf3): Ditto.
5150         (sse_vmmaskcmpv4sf3): Ditto.
5151         (sse2_maskcmpv2df3): Ditto.
5152         (sse2_maskcmpdf3): Ditto.
5153         (sse2_vmmaskcmpv2df3): Ditto.
5154         (sse2_eq<mode>3): Ditto.
5155         (sse2_gt<mode>3): Ditto.
5156         (sse5_pcmov_<mode>): Add SSE5 support.
5157         (vec_unpacku_hi_v16qi): Ditto.
5158         (vec_unpacks_hi_v16qi): Ditto.
5159         (vec_unpacku_lo_v16qi): Ditto.
5160         (vec_unpacks_lo_v16qi): Ditto.
5161         (vec_unpacku_hi_v8hi): Ditto.
5162         (vec_unpacks_hi_v8hi): Ditto.
5163         (vec_unpacku_lo_v8hi): Ditto.
5164         (vec_unpacks_lo_v8hi): Ditto.
5165         (vec_unpacku_hi_v4si): Ditto.
5166         (vec_unpacks_hi_v4si): Ditto.
5167         (vec_unpacku_lo_v4si): Ditto.
5168         (vec_unpacks_lo_v4si): Ditto.
5169         (sse5_pmacsww): New SSE5 intrinsic insn.
5170         (sse5_pmacssww): Ditto.
5171         (sse5_pmacsdd): Ditto.
5172         (sse5_pmacssdd): Ditto.
5173         (sse5_pmacssdql): Ditto.
5174         (sse5_pmacssdqh): Ditto.
5175         (sse5_pmacsdqh): Ditto.
5176         (sse5_pmacsswd): Ditto.
5177         (sse5_pmacswd): Ditto.
5178         (sse5_pmadcsswd): Ditto.
5179         (sse5_pmadcswd): Ditto.
5180         (sse5_pcmov_<move>): Conditional move support on SSE5.
5181         (sse5_phaddbw): New SSE5 intrinsic insn.
5182         (sse5_phaddbd): Ditto.
5183         (sse5_phaddbq): Ditto.
5184         (sse5_phaddwd): Ditto.
5185         (sse5_phaddwq): Ditto.
5186         (sse5_phadddq): Ditto.
5187         (sse5_phaddubw): Ditto.
5188         (sse5_phaddubd): Ditto.
5189         (sse5_phaddubq): Ditto.
5190         (sse5_phadduwd): Ditto.
5191         (sse5_phadduwq): Ditto.
5192         (sse5_phaddudq): Ditto.
5193         (sse5_phsubbw): Ditto.
5194         (sse5_phsubwd): Ditto.
5195         (sse5_phsubdq): Ditto.
5196         (sse5_pperm): Ditto.
5197         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
5198         (sse5_pperm_zero_v16qi_v8hi): Ditto.
5199         (sse5_pperm_sign_v8hi_v4si): Ditto.
5200         (sse5_pperm_zero_v8hi_v4si): Ditto.
5201         (sse5_pperm_sign_v4si_v2di): Ditto.
5202         (sse5_pperm_sign_v4si_v2di): Ditto.
5203         (sse5_pperm_pack_v2di_v4si): Ditto.
5204         (sse5_pperm_pack_v4si_v8hi): Ditto.
5205         (sse5_pperm_pack_v8hi_v16qi): Ditto.
5206         (sse5_perm<mode>): New SSE5 intrinsic insn.
5207         (rotl<mode>3): Ditto.
5208         (sse5_rotl<mode>3): Ditto.
5209         (sse5_ashl<mode>3): Ditto.
5210         (sse5_lshl<mode>3): Ditto.
5211         (sse5_frcz<mode>2): Ditto.
5212         (sse5s_frcz<mode>2): Ditto.
5213         (sse5_cvtph2ps): Ditto.
5214         (sse5_cvtps2ph): Ditto.
5215         (sse5_vmmaskcmp<mode>3): Ditto.
5216         (sse5_com_tf<mode>3): Ditto.
5217         (sse5_maskcmp<mode>3): Ditto.
5218         (sse5_maskcmp_uns<mode>3): Ditto.
5219         (sse5_maskcmp_uns2<mode>3): Ditto.
5220         (sse5_pcom_tf<mode>3): Ditto.
5221         
5222         * config/i386/predicates.md (const_0_to_31_operand): New predicate
5223         to match 0..31.
5224         (sse5_comparison_float_operator): New predicate to match the
5225         comparison operators supported by the SSE5 com instruction.
5226         (ix86_comparison_int_operator): New predicate to match just the
5227         signed int comparisons.
5228         (ix86_comparison_uns_operator): New predicate to match just the
5229         unsigned int comparisons.
5230
5231         * doc/invoke.texi (-msse5): Add documentation.
5232         (-mfused-madd): Ditto.
5233
5234         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
5235
5236         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
5237         mmintrin-common.h.
5238         (x86_64-*-*): Ditto.
5239
5240         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
5241
5242         * config/i386/bmmintrin.h: New file, provide common x86 compiler
5243         intrinisics for SSE5.
5244
5245         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
5246         mmintrin-common.h.
5247
5248         * config/i386/mmintrin-common.h: New file, to contain common
5249         instructions between SSE4.1 and SSE5.
5250
5251         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
5252         FOREACH_FUNCTION_ARGS to iterate over the argument list.
5253         (gen_regparm_prefix): Ditto.
5254
5255         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
5256         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
5257         prototype_p to determine if a function is prototyped.
5258
5259 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
5260
5261         * config/dfp-bit.c (dfp_conversion_exception): New function.
5262         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
5263         (DFP_TO_INT): Ditto.
5264         (INT_TO_DFP): Ditto.
5265         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
5266
5267 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
5268
5269         PR target/32338
5270         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
5271         before sp restoration even when total_size is 0, but
5272         frame_pointer_needed.
5273
5274 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
5275
5276         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
5277         (xtensa_copy_incoming_a7): Use start_sequence instead of
5278         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
5279         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
5280         of the saveregs sequence.
5281
5282 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
5283
5284         * c-tree.h (grokfield): Add a "tree *" argument.
5285         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
5286         Chain nested decl attributes to it.  Don't call decl_attributes here.
5287         (groktypename): Pass grokdeclarator a pointer to the attribute list.
5288         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
5289         (grokfield): Take a pointer to the decl's attributes and pass
5290         it to grokdeclarator.
5291         * c-parser.c (c_parser_struct_declaration): Update the calls to
5292         grokfield.  Call decl_attributes for anonymous struct and union
5293         fields.
5294
5295 2007-09-12  Jan Hubicka  <jh@suse.cz>
5296
5297         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
5298
5299 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5300
5301         PR tree-optimization/32377
5302         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
5303         between positive and negative dependence distance using DDR_REVERSED_P.
5304
5305 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
5306
5307         PR tree-optimization/33373
5308         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
5309         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
5310
5311 2007-09-12  Jan Hubicka  <jh@suse.cz>
5312
5313         PR target/33393
5314         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
5315         for !SSE_MATH
5316
5317 2007-09-12  Christian Bruel  <christian.bruel@st.com>
5318
5319         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
5320         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
5321         
5322 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5323
5324         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
5325         for oprnd1 if not required.
5326         (vectorizable_operation): Use scalar operand in SLP in case of 
5327         shift with scalar argument.
5328
5329 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5330
5331         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
5332         to 1.
5333
5334 2007-09-11  James E. Wilson  <wilson@specifix.com>
5335
5336         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
5337         TARGET_UNWIND_INFO is defined.
5338         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
5339         after definition.
5340
5341 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5342
5343         * config/sh/sh.c (calc_live_regs): Use
5344         current_function_saves_all_registers instead of
5345         current_function_has_nonlocal_label.
5346         (sh_allocate_initial_value): Likewise.
5347         (sh_get_pr_initial_val): Likewise.
5348         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
5349         * config/sh/sh.md (load_ra): Likewise.
5350
5351 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
5352
5353         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
5354
5355         PR target/33360
5356         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
5357         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
5358
5359 2007-09-12  Sa Liu  <saliu@de.ibm.com>
5360
5361         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
5362         operands to DFmode GE or LE compares.
5363
5364 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
5365
5366         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
5367         REG_CLASS_NAMES): Add P0REGS.
5368         (REGNO_REG_CLASS): Return it where appropriate.
5369         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
5370         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
5371         * doc/md.texi (Blackfin family): Document 'q' constraints.
5372
5373 2007-09-11  Steve Kenton  <skenton@ou.edu>
5374
5375         * pa/linux-unwind.h: Guard with inhibit_libc.
5376         * pa/hpux-unwind.h: Likewise.
5377
5378 2007-09-11  David Daney  <ddaney@avtrex.com>
5379
5380         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
5381         * doc/install.texi: Document new --with-llsc and --without-llsc
5382         options.
5383         * config.gcc: Handle --with-llsc and --without-llsc configure options.
5384         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
5385         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
5386         ISA_HAS_SYNC.
5387         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
5388         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5389         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5390         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5391         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
5392         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
5393         * config/mips/mips.opt (mllsc): New option.
5394         * config/mips/mips.c (mips_llsc): Define variable.
5395         (mips_handle_option): Handle mllsc option.
5396         (override_options): Set mips_print_operand_punct for '|' and '-'.
5397         (print_operand): Add new %| and %- operand codes.
5398         * config/mips/mips.h (mips_llsc_setting): New enum type.
5399         (mips_llsc): Declare.
5400         (OPTION_DEFAULT_SPECS): Add llsc handling.
5401         (GENERATE_SYNC): New macro.
5402         (GENERATE_LL_SC): New macro.
5403         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
5404         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5405         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
5406         in %| and %- operand codes.
5407
5408 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
5409
5410         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
5411         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
5412
5413 2007-09-11  Jason Merrill  <jason@redhat.com>
5414
5415         PR middle-end/27945
5416         * stor-layout.c (layout_decl): Do pack variable size fields.    
5417
5418 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
5419
5420         * config/m68k/predicates.md (movsi_const0_operand,
5421         non_symbolic_call_operand): New predicates.
5422
5423         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
5424         New constraints.
5425         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
5426         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
5427         CW, CZ, CS, Ap and Ac.
5428
5429         * config/m68k/m68k.md (UNSPEC_IB): New constant.
5430         (constraints.md): New include.
5431         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
5432         opx_mem, opy_mem, op_mem, guess, split): New attributes.
5433         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
5434         Specify attributes.
5435         (pushdi): Add split.
5436         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
5437         attributes.  Split tstsi_internal_68020_cf from it.
5438         (tstsi_internal_68020_cf): New pattern.
5439         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
5440         (tst<mode>_cf): Specify attributea.
5441         (cmpsi_cf): Name pattern.  Specify attributes.
5442         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
5443         (pushexthisi_const): Fix to use alternatives.  Specify
5444         attributes.
5445         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
5446         from it.  Fix to use alternatives.  Specify attributes.
5447         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
5448         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
5449         attributes.
5450         (movsf_cf_soft): Specify attributes.
5451         (movdf_cf_soft): Add split.
5452         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
5453         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
5454         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
5455         (truncdfsf2_68881): Name pattern.  Specify attributes.
5456         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
5457         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
5458         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
5459         Specify attributes.
5460         (addsi3_5200): Fix to use alternatives.  Specify attributes.
5461         Add splits.
5462         (add<mode>3_cf, subdi_dishl32): Specify attributes.
5463         (subsi3): Add alternative for subq.l.  Specify attributes.
5464         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
5465         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
5466         attributes.
5467         (umulhisi3): Specify attributes.
5468         (mulhisisi3_z): Name pattern.  Specify attributes.
5469         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
5470         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
5471         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
5472         bsetmemqi): Specify attributes.
5473         (bsetmemqi_ext): Name pattern.  Specify attributes.
5474         (bclrmemqi): Specify attributes.
5475         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
5476         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
5477         attributes.
5478         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
5479         pattern.  Specify attributes.
5480         (jump): Specify attributes.
5481         (tablejump_internal): Name pattern.  Specify attributes.
5482         (call_value): Split into non_symbolic_call_value,
5483         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
5484         alternatives.  Specify attributes.
5485         (non_symbolic_call_value, symbolic_call_value_jsr,
5486         symbolic_call_value_bsr): New patterns.
5487         (nop, return, unlink, indirect_jump): Specify attributes.
5488         (trap): Fix condition.  Specify attributes.
5489         (ib): New pattern.
5490
5491         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
5492         (override_options): Initialize it.  Initialize m68k_sched_cpu.
5493         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
5494         (const_method): Make global, rename to m68k_const_method.
5495         (const_int_cost, output_move_const_into_data_reg): Update.
5496         (output_move_double): Parametrize to emit rtl code, rename to
5497         handle_move_double.
5498         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
5499         emit_movsi): New static functions.
5500         (output_move_double): New function with semantics of old
5501         output_move_double.
5502         (m68k_emit_move_double): New function.
5503         (m68k_sched_cpu): New variable.
5504         (attr_op_type): New enum.
5505         (sched_guess_p): New variable.
5506         (sched_address_type, sched_operand_type, sched_attr_op_type):
5507         New static functions.
5508         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5509         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
5510         (sched_branch_type): New static variable.
5511         (m68k_sched_branch_type): New function.
5512         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
5513         (m68k_symbolic_call_var): Declare.
5514         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
5515         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
5516         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5517         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
5518         Declare.
5519
5520 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
5521
5522         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
5523         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
5524         error if __builtin_va_arg_pack_len () wasn't optimized out during
5525         inlining.
5526         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
5527         with the number of inline's anonymous arguments.
5528         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
5529
5530 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
5531
5532         * fold-const.c (extract_muldiv_1): Do not simplify
5533         var * c * c to var.
5534
5535 2007-09-11  Jan Hubicka <jh@suse.cz>
5536
5537         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
5538         (TARGET_INTER_UNIT_CONVERSIONS): New.
5539         * i386.md (floatsi expanders): Remove redundant check for SImode
5540         source; offload to memory when asked for.
5541         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
5542         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5543         Update conditions;
5544         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
5545         floatsidf2_mixed_memory, floatsidf2_sse_memory
5546         floatdisf2_mixed_memory, floatsisf2_sse_memory,
5547         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
5548
5549 2007-09-11  Jan Hubicka <jh@suse.cz>
5550
5551         * toplev.c (process_options): all frontends now do unit-at-a-time.
5552         * cgraphunit.c: update comments.
5553         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
5554         * c-decl.c (finish_function): use cgraph_add_new_function.
5555         * function.c (expand_function_end): We are always unit-at-a-time.
5556
5557 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5558
5559         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
5560         settings for MIPS16.
5561         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
5562
5563 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5564
5565         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
5566         SYMBOL_FORCE_TO_MEM constants.
5567         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
5568         (mips16_rewrite_pool_refs_info): New structure.
5569         (mips16_rewrite_pool_constant): New function, split out from...
5570         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
5571         mips16_rewrite_pool_refs_info structure rather than a pointer
5572         to a constant pool.  Force force_to_mem_operands into memory.
5573         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
5574         * config/mips/predicates.md (force_to_mem_operand): New predicate.
5575         * config/mips/constraints.md (kf): New constraint.
5576         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
5577         (*movsi_mips16): Likewise.
5578
5579 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5580             Nigel Stephens  <nigel@mips.com>
5581             David Ung  <davidu@mips.com>
5582
5583         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
5584         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
5585         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
5586         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
5587         (mips_zero_extend_cost): New functions.
5588         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
5589         Use the new functions.  Tweak many cost estimates, both here
5590         and in the new subroutines.  Return false when the cost of the
5591         operands has not been calculated.  Check for *clear_upper32.
5592         Check for floating-point multiply-add, reciprocal and rsqrt
5593         patterns.  Handle comparison and rotation codes.
5594
5595 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
5596
5597         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
5598         override default.
5599         * config/i386/i386.c (get_dllimport_decl): Don't strip
5600         FASTCALL_PREFIX.
5601
5602 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5603
5604         PR c/30013
5605         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
5606         declarations to top.
5607         (DFP_TO_BFP): Use for either XFmode or TFmode.
5608         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
5609         of BFP_VIA_TYPE.
5610         * config/dfp-bit.h: Include float.h.
5611         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
5612         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
5613         which doesn't mean the same thing.
5614         (BFP_KIND): Use 4 to mean TFmode.
5615         (BFP_FMT): Specify the number of decimal digits based on the
5616         number of mantissa digits.
5617         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
5618         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
5619         (STR_TO_BFP): Use strtold for XFmode or TFmode.
5620         (TFtype): Define if TFmode is supported.
5621         * doc/libgcc.texi (Decimal float library routines): Document
5622         TF conversion functions.
5623
5624 2007-09-10  Chao-ying Fu  <fu@mips.com>
5625
5626         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
5627         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
5628         (mips_emit_compare): Process fixed-point modes.
5629         (mips_pad_arg_upward): Support fixed-point types.
5630         (override_options): Allow fixed-point modes in accumulators.
5631         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
5632         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
5633         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
5634         (mips_scalar_mode_supported_p): New function to accept fixed-point
5635         modes if the width is not greater than two BITS_PER_WORD.
5636         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
5637         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
5638         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
5639         LONG_LONG_ACCUM_TYPE_SIZE): Define.
5640         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
5641         modes.
5642         ("IMODE"): New mode attribute.
5643         (mips-fixed.md): Include.
5644         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
5645         ACCUM, UACCUM.
5646         * config/mips/mips-fixed.md: New file.
5647
5648 2007-09-11  Ben Elliston  <bje@au.ibm.com>
5649
5650         * config/spu/spu.md: Formatting fixes.
5651
5652 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5653
5654         * config/dfp-bit.c (dfp_unary_func): Delete.
5655         (dfp_unary_op): Delete.
5656         (dfp_binary_op): Use decFloat functions instead of decNumber
5657         functions for binary operations.
5658         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
5659         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
5660         DFP_C_TYPE.
5661         (dfp_compare_op): Use decFloat functions insteadof decNumber
5662         functions for comparisons.
5663         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
5664         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
5665         DFP_C_TYPE.
5666         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
5667         call to dxx_binary_op and decFloat function.
5668         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
5669         calls to dxx_binary_op and decFloat function.
5670         * config/dfp-bit.h: Include decFloat header files.
5671         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
5672         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
5673         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
5674         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
5675
5676 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
5677             Jan Sjodin <jan.sjodin@amd.com>
5678
5679         * tree-vect-analyze.c (vect_analyze_operations): Change
5680         comparison of loop iterations with threshold to less than
5681         or equal to instead of less than. Reduce
5682         min_scalar_loop_bound by one.
5683         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
5684         Change prologue and epilogue iterations estimate to vf/2,
5685         when unknown at compile-time. Change versioning guard
5686         cost to taken_branch_cost. If peeling for alignment is
5687         unknown at compile-time, change peel guard costs to one
5688         taken branch and one not-taken branch per peeled loop.
5689         If peeling for alignment is known but number of scalar loop
5690         iterations is unknown at compile-time, change peel guard
5691         costs to one taken branch per peeled loop. Change the cost
5692         model equation to consider vector iterations as the loop
5693         iterations less the prologue and epilogue iterations.
5694         Change outside vector cost check to less than or equal to
5695         zero instead of equal to zero.
5696         (vect_do_peeling_for_loop_bound): Reduce
5697         min_scalar_loop_bound by one.
5698         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
5699         TARG_COND_NOT_TAKEN_BRANCH_COST.        
5700         * config/i386/i386.h (processor_costs): Add
5701         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
5702         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
5703         vec_align_load_cost, vect_unalign_load_cost,
5704         vec_store_cost, cond_taken_branch_cost,
5705         cond_not_taken_branch_cost.
5706         Define macros for x86 costs.
5707         * config/i386/i386.c:
5708         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
5709         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
5710         scalar_to_vec_cost, vec_align_load_cost, 
5711         vect_unalign_load_cost, vec_store_cost,
5712         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
5713         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
5714         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
5715         core2_cost, generic64_cost, generic32_cost): Set to default
5716         untuned costs.
5717         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
5718         (x86_builtin_vectorization_cost): New.
5719
5720 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5721             Ben Elliston  <bje@au.ibm.com>
5722
5723         * dfp.c: Include decimal128Local.h; 
5724         (dfp_byte_swap): Remove.
5725         (encode_decimal32, decode_decimal32): Don't handle endianness.
5726         (encode_decimal64, decode_decimal64): Ditto.
5727         (encode_decimal128, decode_decimal128): Ditto.
5728         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
5729         (__swap64): Remove.
5730         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
5731         (__swap128): Remove
5732         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
5733         * Makefile.in (DECNUM_H): Add decimal128Local.h.
5734
5735 2007-09-10  David Daney  <ddaney@avtrex.com>
5736
5737         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
5738         define_constants.
5739         (memory_barrier): Rewrote as an insn that clobbers memory.
5740
5741 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5742
5743         * config/mips/mips.c (mips_global_pointer): Check
5744         call_really_used_regs instead of call_used_regs.
5745         (mips_save_reg_p): Likewise.  Save all call-saved registers
5746         if current_function_saves_all_registers.  Fix indentation.
5747         No longer treat $18 as a special case.
5748         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
5749
5750 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5751
5752         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
5753         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
5754         the introductory comment.
5755         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5756         (override_options): Don't test for it.
5757         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5758         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
5759         * config/mips/vr.h: As for config/mips/sde.h.
5760
5761 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5762             Revital Eres  <eres@il.ibm.com>
5763
5764         * target.h (struct gcc_target.sched): New field: sms_res_mii.
5765         (struct ddg): Define.
5766         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
5767         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
5768         * config/spu/spu.c: Include ddg.h.
5769         (TARGET_SCHED_SMS_RES_MII): Define.
5770         (spu_sms_res_mii): New function to calculate mii.
5771         * modulo-sched (res_MII): Use it.
5772         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
5773
5774 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5775
5776         * config/s390/s390.c (s390_dump_pool): Create copy of constant
5777         pool entries since they might hold values that must not be shared.
5778
5779 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
5780
5781         PR target/33369
5782         * config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
5783         Use 'N' operand constraint for op2.
5784         (lshr<mode>3): Ditto.
5785         (ashl<mode>3): Ditto.
5786         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
5787         (vec_shr_<mode>): Ditto.
5788         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
5789         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
5790
5791 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5792
5793         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
5794         Change mode macro in the last real_2expN parameter to uppercase.
5795
5796 2007-09-10  Michael Matz  <matz@suse.de>
5797
5798         * tree-pass.h (pass_cselim): Declare new pass.
5799         * passes.c (init_optimization_passes): Link in pass_cselim.
5800         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
5801         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
5802         cond_store_replacement.
5803         (condstoretemp): New static variable.
5804         (cond_store_replacement): New function.
5805         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
5806         tree_ssa_phiopt_worker.
5807         (struct name_to_bb): New.
5808         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
5809         nt_init_block, nt_fini_block): New static functions.
5810         (seen_ssa_names, nontrap_set): New static variables.
5811         (gate_cselim, pass_cselim): Define new pass.
5812         * common.opt (ftree-cselim): New flag.
5813         * toplev.c (process_options): Set flag_tree_cselim if required.
5814
5815 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
5816
5817         * simplify-rtx.c (simplify_relational_operation_1): For recent
5818         canonicalization, don't recurse if op1 equals both PLUS arguments.
5819
5820 2007-09-09  David Daney  <ddaney@avtrex.com>
5821
5822         * optabs.c (expand_sync_operation):  Use plus insn if minus
5823         CONST_INT_P(val).
5824         (expand_sync_fetch_operation):  Ditto.
5825
5826 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5827
5828         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
5829         of cvtpq2ps.
5830         (*floatsisf2_sse_vector): Likewise.
5831
5832 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
5833
5834         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
5835
5836 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5837
5838         * config/i386/i386.h (ix86_tune_indices): Rename
5839         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
5840         (TARGET_USE_VECTOR_CONVERTS): Updated.
5841         * config/i386/i386.c: Likewise.
5842
5843 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5844             Nigel Stephens <nigel@mips.com>
5845
5846         * doc/invoke.texi (Overall Options):  Add .sx file extension
5847         as a synonym for .S.
5848         * cppspec.c (known_suffixes): Likewise.
5849         * gcc.c (default_compilers): Likewise.
5850
5851 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5852
5853         PR target/30315
5854         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
5855         * simplify-rtx.c (simplify_relational_operation_1): Add the
5856         canonicalization from i386.h.
5857         * doc/md.texi (Canonicalization of Instructions): Document it.
5858
5859 2007-09-09  Jan Hubicka  <jh@suse.cz>
5860             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5861
5862         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
5863         (TARGET_USE_VECTOR_CONVERTS): New.
5864         * i386.md: New post-reload splitters for converting SF to DF and DF to
5865         SF.
5866         (floatsi* expander): Special case vector conversions.
5867         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
5868         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
5869         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
5870         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5871         Disable when doing vector converts.
5872         (floatsi<mode>2_i387): Disable when
5873         * sse.md (vec_dupv2df): Export.
5874         * i386.c (ix86_tune_features): Enable SSE conversions.
5875
5876 2007-09-09  Richard Guenther  <rguenther@suse.de>
5877
5878         * tree-ssa-operands.c (add_virtual_operand): Only mark
5879         stores as has_volatile_ops if alias information is not available.
5880
5881 2007-09-09  Revital Eres  <eres@il.ibm.com>
5882
5883         * doc/contrib.texi: Add myself.
5884
5885 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5886
5887         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
5888         stmt_vinfo_set_outside_of_loop_cost): New functions.
5889         * tree-vect-transform.c (vect_get_cost_fields): Remove.
5890         (vect_model_simple_cost): Call
5891         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
5892         field instead of calling vect_get_cost_fields.
5893         (vect_model_store_cost, vect_model_load_cost): Likewise.
5894
5895 2007-09-09  Revital Eres  <eres@il.ibm.com>
5896
5897         * config/rs6000/rs6000.c (paired_init_builtins): Add const
5898         declaration to bdesc_paired_preds variable.
5899         (paired_expand_builtin): Likewise.
5900
5901 2007-09-09  Revital Eres  <eres@il.ibm.com>
5902
5903         * dbgcnt.def (sms_sched_loop): New counter.
5904         * modulo-sched.c: Use sms_sched_loop instead of
5905         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
5906         perform swing modulo scheduling on.  Include dbgcnt.h.
5907         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
5908         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
5909
5910 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
5911
5912         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
5913         Substitute all uses with ...
5914         (MODEF): New mode iterator.
5915
5916         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
5917         from pre-regalloc define_insn_and_split splitter pattern.
5918         (*fix_trunc<mode>_i387_1): Ditto.
5919         (*fistdi2_1): Ditto.
5920         (*fist<mode>2_1): Ditto.
5921         (frndintxf2_floor): Ditto.
5922         (*fist<mode>2_floor_1): Ditto.
5923         (frndintxf2_ceil): Ditto.
5924         (*fist<mode>2_ceil_1): Ditto.
5925         (frndintxf2_trunc): Ditto.
5926         (frndintxf2_mask_pm): Ditto.
5927
5928         (prologue): Use (const_int 0) as never generated filler insn.
5929         (epilogue): Ditto.
5930         (sibcall_epilogue): Ditto.
5931         (eh_return_si): Ditto.
5932         (eh_return_di): Ditto.
5933
5934         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
5935         using MODEF mode iterator.
5936         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
5937         using MODEF mode iterator.
5938         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
5939         using MODEF mode iterator.
5940         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
5941         Macroize expander using MODEF mode iterator.
5942
5943         (zero_extendsidi2): Remove operand constraints from expander.
5944         (smuldi3_highpart): Ditto.
5945         (indirect_jump): Ditto.
5946         (tablejump): Ditto.
5947         (rsqrtsf2): Ditto.
5948         * config/i386/sse.md (storentv4sf): Ditto.
5949         (storentv2df): Ditto.
5950         (storentv2di): Ditto.
5951         (storentsi): Ditto.
5952         (sse2_cvtpd2ps): Ditto.
5953         (vec_interleave_highv16qi): Ditto.
5954         (vec_interleave_lowv16qi): Ditto.
5955         (vec_interleave_highv8hi): Ditto.
5956         (vec_interleave_lowv8hi): Ditto.
5957         (vec_interleave_highv4si): Ditto.
5958         (vec_interleave_lowv4si): Ditto.
5959         (vec_interleave_highv2di): Ditto.
5960         (vec_interleave_lowv2di): Ditto.
5961         (sse2_maskmovdqu): Ditto.
5962         * config/i386/mmx.md (mmx_maskmovq): Ditto.
5963
5964 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5965
5966         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
5967         (struct _slp_tree, struct _slp_instance): Define new data structures
5968         along macros for their access.
5969         (struct _loop_vec_info): Define new fields: strided_stores,
5970         slp_instances, and slp_unrolling_factor along macros for their access.
5971         (enum slp_vect_type): New.
5972         (struct _stmt_vec_info): Define new field, slp_type, and macros for
5973         its access.
5974         (STMT_VINFO_STRIDED_ACCESS): New macro.
5975         (vect_free_slp_tree): Declare.
5976         (vectorizable_load): Add an argument of type slp_tree.
5977         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
5978         vectorizable_assignment): Likewise.
5979         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
5980         Declare (make extern).
5981         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
5982         (new_loop_vec_info): Likewise.
5983         (destroy_loop_vec_info): Free memory allocated for SLP structures.
5984         * tree-vect-analyze.c: Include recog.h.
5985         (vect_update_slp_costs_according_to_vf): New.
5986         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
5987         functions. For not pure SLP stmts with strided access check that the
5988         group size is power of 2. Update the vectorization factor according to
5989         SLP. Call vect_update_slp_costs_according_to_vf.
5990         (vect_analyze_group_access): New.
5991         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
5992         (vect_free_slp_tree): New functions.
5993         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
5994         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
5995         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
5996         vect_detect_hybrid_slp): Likewise.
5997         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
5998         and vect_detect_hybrid_slp.
5999         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
6000         SLP costs into account.
6001         (vect_get_cost_fields): New function.
6002         (vect_model_simple_cost): Make extern, add SLP parameter and handle
6003         SLP.
6004         (vect_model_store_cost, vect_model_load_cost): Likewise.
6005         (vect_get_constant_vectors): New function.
6006         (vect_get_slp_vect_defs, vect_get_slp_defs,
6007         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
6008         vect_get_vec_defs): Likewise.
6009         (vectorizable_reduction): Don't handle SLP for now.
6010         (vectorizable_call): Don't handle SLP for now. Add argument to
6011         vect_model_simple_cost.
6012         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
6013         get SLPed and vectorized defs). Fix indentation and spacing.
6014         (vectorizable_assignment): Handle SLP.
6015         (vectorizable_induction): Don't handle SLP for now.
6016         (vectorizable_operation): Likewise.
6017         (vectorizable_type_demotion): Add argument to
6018         vect_model_simple_cost.
6019         (vectorizable_type_promotion): Likewise.
6020         (vectorizable_store, vectorizable_load): Handle SLP.
6021         (vectorizable_condition): Don't handle SLP for now.
6022         (vect_transform_stmt): Add a new argument for SLP. Check that there is
6023         no SLP transformation required for unsupported cases. Add SLP
6024         argument for supported cases.
6025         (vect_remove_stores): New function.
6026         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
6027         (vect_transform_loop): Schedule SLP instances.
6028         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
6029
6030 2007-09-09  Andrew Haley  <aph@redhat.com>
6031
6032         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
6033         signed optab.
6034
6035 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
6036
6037         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
6038         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
6039         Similar for what label_refs can go in the JUMP_TARGET field.  Split
6040         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
6041         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
6042         REG_LABEL when replacing an operand with a LABEL_REF for a
6043         non-jump insn.
6044         (subst_reloads): When replacing a LABEL_REG with a register,
6045         instead of generating a REG_LABEL note, assert that there already
6046         is one or that the label is a known target for the insn.
6047         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
6048         note, check the JUMP_LABEL field.  Remove "else" after return.
6049         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
6050         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
6051         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
6052         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
6053         insns.  Iterate over all notes; don't assume there's only one.
6054         * cse.c (recorded_label_ref): Adjust comment to refer to
6055         REG_LABEL_OPERAND.
6056         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
6057         insns, not just NONJUMP_INSN_P.
6058         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
6059         isn't a jump target.
6060         * jump.c (rebuild_jump_labels): Adjust head comment.
6061         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
6062         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
6063         (mark_all_labels): For JUMP_P insns without a target, check if the
6064         the target is noted on the previous nonjump insn.
6065         (mark_jump_label_1): New function, guts from mark_jump_label.
6066         <case IF_THEN_ELSE>: Handle first operand as a non-target when
6067         marking jump target labels.
6068         <case LABEL_REF>: Adjust for whether to generate a
6069         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
6070         For 'E' format rtl, iterate in descending element order.
6071         (delete_related_insns): Handle both REG_LABEL_TARGET and
6072         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
6073         reference count, delete and fallthrough.  Move finding-next-
6074         non-deleted insn last in the function.  Look at all INSN_P insns
6075         for REG_LABEL_OPERAND notes.
6076         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
6077         JUMP.
6078         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
6079         JUMP_LABEL, output the INSN_UID of it.
6080         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
6081         and/or REG_LABEL_TARGET.
6082         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
6083         with jump.c copy by only adding notes for labels actually
6084         referenced in the insn.
6085         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
6086         usage count increment; handle all INSN_P trial insns.
6087         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
6088         notes.
6089         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
6090         REG_LABEL_TARGET and REG_LABEL_OPERAND.
6091         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
6092         REG_LABEL_OPERAND.
6093         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
6094         JUMP_P insns and REG_LABEL_OPERAND everywhere.
6095         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
6096         on all INSN_P insns.
6097         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
6098         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
6099         REG_LABEL_OPERAND notes.
6100         * reload1.c (calculate_needs_all_insns): Adjust comments.
6101         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
6102         * config/alpha/alpha.md (split for load of an address into a
6103         four-insn sequence on Unicos/Mk): Adjust to use
6104         REG_LABEL_OPERAND.
6105         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
6106
6107 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6108
6109         Revert:
6110         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6111         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6112         FOR_BB_INSNS_SAFE instead of for loop.
6113         * cse.c (cse_extended_basic_block): Likewise.
6114         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6115         that the for loop does not invoke NEXT_INSN on a deleted insn.
6116         * function.c (instantiate_virtual_regs): Likewise.
6117         * lower-subreg.c (remove_retval_note): Likewise.
6118         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6119         FOR_BB_INSNS.
6120         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6121         a deleted insn.
6122         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6123         insn, if it's a jump.
6124         (try_redirect_by_replacing_jump): New variable jump_p. Call
6125         tablejump_p before delete_insn_chain.
6126         * reload1.c (reload): New variable next. Make sure that the for
6127         loop does not invoke NEXT_INSN on a deleted insn.
6128         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6129         (delete_output_reload): New variable prev. Make sure the the for
6130         loops do not invoke PREV_INSN on a deleted insn.
6131
6132 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6133
6134         * pa/constraints.md: Remove 'X' from unused letters comment.
6135
6136 2007-09-08  Richard Guenther  <rguenther@suse.de>
6137
6138         * tree-tailcall.c (find_tail_calls): If we don't have aliases
6139         computed check stmt_ann->references_memory instead of counting
6140         virtual operands.
6141  
6142 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
6143
6144         * cse.c (fold_rtx): Use validate_unshare_change() instead of
6145         validate_change() in one more case.
6146
6147 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
6148
6149         PR tree-optimization/32283
6150         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
6151         estimated_loop_iterations.
6152         (determine_use_iv_cost_condition): Decrease cost of expressions
6153         used in iv elimination.
6154
6155 2007-09-08  Richard Guenther  <rguenther@suse.de>
6156
6157         * tree-cfg.c (verify_gimple_expr): Avoid building new
6158         pointer types, use TYPE_POINTER_TO if available instead.
6159
6160 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
6161
6162         PR target/33329
6163         PR rtl-optimization/26449
6164         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
6165         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
6166         split1 pass.
6167         (mulv16qi3): Implement as define_insn_and_split pattern instead of
6168         define_expand.  Split insn in split1 pass.
6169         (mulv2di3): Ditto.
6170
6171 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
6172
6173         PR tree-optimization/33301
6174         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
6175         when relevant.
6176
6177 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
6178
6179         PR tree-optimization/32183
6180         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
6181
6182         * tree-ssa-reassoc.c: Include cfgloop.h.
6183         (is_reassociable_op): Add a loop argument and return true only
6184         for inside loop.
6185         (linearize_expr): Updated.
6186         (should_break_up_subtract): Likewise.
6187         (linearize_expr_tree): Likewise.
6188         (init_reassoc): Call loop_optimizer_init with
6189         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
6190         with CDI_DOMINATORS.
6191         (fini_reassoc): Call loop_optimizer_finalize.
6192
6193 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
6194
6195         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
6196         if there is no i-cache.
6197
6198 2007-09-07  Richard Guenther  <rguenther@suse.de>
6199
6200         Reapply
6201         2007-09-06  Richard Guenther  <rguenther@suse.de>
6202
6203         PR tree-optimization/32586
6204         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6205         folding if nothing changed.
6206         (simplify_unary_expression): New function.  Do tree combining
6207         on conversion like codes.
6208         (try_to_simplify): Call it.
6209
6210 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6211
6212         PR target/33286
6213         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
6214         (__gthread_active,__gthread_start, __gthread_active_init): New.
6215         * gthr-posix95.h: Likewise.
6216
6217 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
6218
6219         * function.h (struct function): Rename calls_unwind_init
6220         to saves_all_registers.
6221         (current_function_saves_all_registers): Renamed from
6222         current_function_calls_unwind_init.
6223         * reload1.c (reload): Set current_function_saves_all_registers.
6224         * except.c (expand_builtin_unwind_init): Likewise.
6225         * config/m68k/m68k.c (m68k_save_reg): Use
6226         current_function_saves_all_registers to save pic register.
6227
6228 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
6229
6230         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
6231         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
6232
6233         Reapply reverted changes:
6234
6235         2007-09-06  Jan Hubicka  <jh@suse.cz>
6236  
6237         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
6238         of real_2expN.
6239
6240         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6241
6242         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6243         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6244
6245         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6246
6247         * optabs.c (expand_float): Convert unsigned integer as signed only
6248         if it provides sufficient accuracy; add mode argument to real_2expN.
6249         (expand_fix): Fix comment typos; extend binary float into mode
6250         wider than destination for converion to unsigned integer; add mode
6251         argument to real_2expN.
6252         * real.c (real_2expN): Add mode argument to special-case decimal
6253         float values.
6254         * real.h (real_2expN): Ditto.
6255         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6256         real_2expN.
6257         (fixed_from_string): Ditto.
6258         (fixed_to_decimal): Ditto.
6259         (fixed_convert_from_real): Ditto.
6260         (real_convert_from_fixed): Ditto.
6261         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6262         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6263         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6264         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6265
6266 2007-09-07  Diego Novillo  <dnovillo@google.com>
6267
6268         * tree-flow.h (const_block_stmt_iterator): Remove.
6269         Update all users to use block_stmt_iterator.
6270         * tree-iterator.h (const_tree_stmt_iterator): Remove.
6271         Update all users to use tree_stmt_iterator.
6272
6273 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
6274
6275         * config/mips/mips.c (mips_set_current_function): Temporarily
6276         make this a no-op to fix bootstrap errors, pending rewrite.
6277
6278 2007-09-07  Jan Hubicka  <jh@suse.cz>
6279
6280         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
6281         in the pass.
6282
6283 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
6284
6285         PR tree-optimization/33299
6286         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
6287         uses for all relevant loop-exit phis, not just the first.
6288
6289 2007-09-07  Richard Guenther  <rguenther@suse.de>
6290
6291         PR middle-end/33330
6292         * tree-ssa-operands.c (access_can_touch_variable): An access
6293         of the form (*p)[0] can touch a variable of same size.
6294
6295 2007-09-07  Jan Hubicka  <jh@suse.cz>
6296
6297         * passes.c (init_optimization_passes): Add simple dce and addressable
6298         passes.
6299         * tree-ssa.c (execute_update_addresses_taken): New function.
6300         (pass_update_address_taken): New.
6301         * tree-ssa-dse.c (execute_simple_dse): New function.
6302         (pass_simple_dse): New.
6303         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
6304
6305 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6306
6307         PR middle-end/33321
6308         * doc/invoke.texi: Fix -Wstrict-overflow= table.
6309
6310 2007-09-07  Richard Guenther  <rguenther@suse.de>
6311
6312         Revert
6313         2007-09-06  Richard Guenther  <rguenther@suse.de>
6314
6315         PR tree-optimization/32586
6316         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6317         folding if nothing changed.
6318         (simplify_unary_expression): New function.  Do tree combining
6319         on conversion like codes.
6320         (try_to_simplify): Call it.
6321
6322 2007-09-07  Richard Guenther  <rguenther@suse.de>
6323             Uros Bizjak  <ubizjak@gmail.com>
6324
6325         PR tree-optimization/32821
6326         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
6327         NULL in the call to set_bb_stmt_list.
6328
6329 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6330
6331         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
6332         float calls here, rather than leaving some to the caller.
6333         Use call_internal_direct and call_value_internal_direct.
6334         * config/mips/mips.md (call_internal_direct): New pattern.
6335         (call_value_internal_direct): Likewise.
6336
6337 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6338
6339         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
6340         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
6341         to 0 for MIPS16.
6342         (override_options): Set mips_base_move_loop_invariants.
6343
6344 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6345
6346         * config/mips/mips.opt (mcode-readable=): Move to keep list
6347         alphabetical.
6348
6349 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6350
6351         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
6352         and -mgpopt options.  Adjust the -G documentation to match.
6353         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
6354         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
6355         function, split out from mips_classify_symbol.  Return false for
6356         !TARGET_LOCAL_SDATA.
6357         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
6358         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
6359         (override_options): Check whether the -mgpopt setting is consistent
6360         with the other flags.
6361         (symbolic_expression_p): Delete.
6362         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
6363         and default_elf_select_rtx_section.
6364         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
6365         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
6366         external data and TARGET_EXTERN_SDATA.
6367
6368 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6369
6370         PR fortran/33303
6371         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
6372
6373 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6374
6375         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6376         FOR_BB_INSNS_SAFE instead of for loop.
6377         * cse.c (cse_extended_basic_block): Likewise.
6378         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6379         that the for loop does not invoke NEXT_INSN on a deleted insn.
6380         * function.c (instantiate_virtual_regs): Likewise.
6381         * lower-subreg.c (remove_retval_note): Likewise.
6382         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6383         FOR_BB_INSNS.
6384         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6385         a deleted insn.
6386         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6387         insn, if it's a jump.
6388         (try_redirect_by_replacing_jump): New variable jump_p. Call
6389         tablejump_p before delete_insn_chain.
6390         * reload1.c (reload): New variable next. Make sure that the for
6391         loop does not invoke NEXT_INSN on a deleted insn.
6392         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6393         (delete_output_reload): New variable prev. Make sure the the for
6394         loops do not invoke PREV_INSN on a deleted insn.
6395
6396 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
6397
6398         * cgraphbuild.c (rebuild_cgraph_edges): Export.
6399         * cgraph.h (rebuild_cgraph_edges): Declare.
6400         * tree-pass.h (pass_expand_omp_ssa): New.
6401         * omp-low.c (find_omp_clause): Export.
6402         (copy_var_decl): Split from omp_copy_decl_2.
6403         (build_omp_barrier): Return the call to emit instead of emitting
6404         it directly.
6405         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
6406         build_omp_barrier.
6407         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
6408         expand_omp_for_generic, expand_omp_for_static_nochunk,
6409         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
6410         Adapted to work on SSA form.
6411         (execute_expand_omp): Do not invalidate dominance information.
6412         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
6413         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
6414         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
6415         a gimple_reg.
6416         (force_gimple_operand): Allow gimplifying code expressions without
6417         value.
6418         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
6419         * common.opt (fopenmp-ssa): New.
6420         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
6421         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
6422         * tree-cfg.c: Include tree-inline.h.
6423         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
6424         (replace_by_duplicate_decl, replace_ssa_name,
6425         mark_virtual_ops_in_region): New functions.
6426         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
6427         to work on SSA form.
6428         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
6429         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
6430         constructs.
6431
6432 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6433
6434         * tree-loop-linear.c: Include obstack.h.
6435         (linear_transform_loops): New obstack lambda_obstack.
6436         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
6437         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
6438         and free afterwards.
6439         * lambda.h (struct obstack): New forward declaration.
6440         (lambda_linear_expression_new): New parameter of type struct
6441         obstack *.
6442         (lambda_loopnest_new): Likewise.
6443         (lambda_loopnest_transform): Likewise.
6444         (lambda_body_vector_new): Likewise.
6445         (lambda_body_vector_compute_new): Likewise.
6446         (gcc_loopnest_to_lambda_loopnest): Likewise.
6447         (lambda_loopnest_to_gcc_loopnest): Likewise.
6448         * lambda-code.c: Include obstack.h.
6449         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
6450         allocation of ret.
6451         (lambda_body_vector_new): Likewise.
6452         (lambda_linear_expression_new): Likewise.
6453         (lambda_lattice_new): Likewise.
6454         (lambda_loopnest_new): Likewise.  Additionally use obstack to
6455         allocate LN_LOOPS(ret).
6456         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
6457         it to lambda_lattice_new.
6458         (lambda_body_vector_compute_new): New parameter lambda_obstack.
6459         Pass it to lambda_body_vector_new.
6460         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
6461         it to lambda_lattice_new.
6462         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
6463         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
6464         (lambda_compute_target_space): Likewise.
6465         (lambda_compute_auxillary_space): New parameter lambda_obstack.
6466         Pass it to lambda_lattice_compute_base and
6467         compute_nest_using_fourieer_motzkin.
6468         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
6469         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
6470         and lambda_lattice_compute_target_space.
6471         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
6472         Pass it to lambda_linear_expression_new.
6473         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
6474         to gcc_tree_to_linear_expression.
6475         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
6476         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
6477         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
6478         Pass it to lambda_body_vector_new and
6479         lambda_body_vector_compute_new.
6480         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
6481         (lambda-code.o): Likewise.
6482
6483 2007-09-06  Chao-ying Fu  <fu@mips.com>
6484
6485         * ginclude/stdfix.h: New file.
6486         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
6487         (convert.o): Add dependence on fixed-value.h.
6488         * c-convert.c (convert): Support FIXED_POINT_TYPE.
6489         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
6490         to define fixed-point constants.
6491         (c_cpp_builtins): Define fixed-point constants.
6492         * convert.c (fixed-value.h): New include.
6493         (convert_to_real): Update comment to include fixed-point.
6494         Support FIXED_POINT_TYPE.
6495         (convert_to_integer): Update comment to include fixed-point.
6496         Support FIXED_POINT_TYPE.
6497         (convert_to_complex): Support FIXED_POINT_TYPE.
6498         (convert_to_fixed): New function.
6499         * convert.h (convert_to_fixed): Declare.
6500         * genopinit.c: Add comment about $Q for only fixed-point modes.
6501         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
6502         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
6503         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
6504         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
6505         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
6506         usneg_optab for fixed-point modes.
6507         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
6508         modes.
6509         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
6510         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
6511         unsigned saturation optabs, when type is saturating.
6512         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
6513         (expand_fixed_convert): New function.
6514         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
6515         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
6516         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
6517         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
6518         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
6519         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
6520         functions.
6521         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
6522         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
6523         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
6524         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
6525         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
6526         satfractuns_optab.
6527         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
6528         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
6529         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
6530         fractuns, satfractuns.
6531         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
6532         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
6533         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
6534         OTI_ssmsub_widen,  OTI_usmsub_widen.
6535         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
6536         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
6537         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
6538         umsub_widen_optab, usmsub_widen_optab): Define.
6539         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
6540         COI_satfractuns.
6541         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
6542         Define.
6543         (expand_fixed_convert): Declare.
6544         * expr.c (convert_move): Support the move of fixed-point modes.
6545         (emit_move_insn_1): Handle fixed-point mode to move via integer.
6546         (categorize_ctor_elements_1): Handle FIXED_CST.
6547         (count_type_elements): Handle FIXED_POINT_TYPE.
6548         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
6549         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6550         Support FIXED_CST.
6551         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
6552         multiply and add/subtract for fixed-point types.
6553         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
6554         mode, we jump to binop directly.
6555         Support FIXED_CONVERT_EXPR.
6556         (do_store_flag): Check FIXED_CST to put a constant second.
6557         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
6558         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6559         (const_vector_from_tree): Support FIXED_CST.
6560         * doc/extend.texi (Fixed-Point): New node.
6561         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
6562         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
6563         satfract, fractuns, satfractuns): Document them.
6564
6565 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
6566
6567         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
6568         addresses into I registers.
6569
6570 2007-09-06  Jan Hubicka  <jh@suse.cz>
6571             Andreas Tobler  <a.tobler@schweiz.org>
6572
6573         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
6574         sharing.
6575         (machopic_legitimize_pic_address): Likewise.
6576
6577 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6578             Jan Hubicka  <jh@suse.cz>
6579
6580         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
6581         instead of ufloat_optab->handlers directly.
6582         (floatdidf2): Likewise.
6583
6584 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
6585
6586         * config/mips/mips.c:  Include diagnostic.h.
6587         (mips_set_current_function): Check errorcount and sorrycount 
6588         before generating RTL.
6589
6590 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6591
6592         PR target/33256
6593         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
6594         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
6595         (print_operand_reloc): Likewise.
6596
6597 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
6598
6599         Revert:
6600
6601         2007-09-06  Jan Hubicka  <jh@suse.cz>
6602  
6603         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6604         real_2expN.
6605
6606         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6607
6608         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6609         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6610
6611         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6612
6613         * optabs.c (expand_float): Convert unsigned integer as signed only
6614         if it provides sufficient accuracy; add mode argument to real_2expN.
6615         (expand_fix): Fix comment typos; extend binary float into mode
6616         wider than destination for converion to unsigned integer; add mode
6617         argument to real_2expN.
6618         * real.c (real_2expN): Add mode argument to special-case decimal
6619         float values.
6620         * real.h (real_2expN): Ditto.
6621         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6622         real_2expN.
6623         (fixed_from_string): Ditto.
6624         (fixed_to_decimal): Ditto.
6625         (fixed_convert_from_real): Ditto.
6626         (real_convert_from_fixed): Ditto.
6627         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6628         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6629         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6630         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6631
6632 2007-09-06  Tom Tromey  <tromey@redhat.com>
6633
6634         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
6635         * c-pch.c (c_common_read_pch): Restore current location after
6636         reading PCH file.
6637         * tree.c (expand_location): Update.
6638         (expr_filename): Changed return type.  Unified the two cases.
6639         (expr_lineno): Likewise.
6640         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
6641         as lvalues.
6642         * toplev.c (line_table): Changed type.
6643         (general_init): Update.
6644         (realloc_for_line_map): New function.
6645         (general_init): Allocate line_table using GC.
6646         * fix-header.c (line_table): Changed type.
6647         (read_scan_file): Update.
6648         (read_scan_file): Update.
6649         * c-ppoutput.c (maybe_print_line): Update.
6650         (print_line): Update.
6651         (cb_line_change): Update.
6652         (cb_define): Update.
6653         (pp_file_change): Update.
6654         * c-opts.c (c_common_init_options): Update.
6655         (finish_options): Update.
6656         (push_command_line_include): Update.
6657         * c-lex.c (cb_line_change): Update.
6658         (cb_def_pragma): Update.
6659         (cb_define): Update.
6660         (cb_undef): Update.
6661         (c_lex_with_flags): Use cpp_get_token_with_location.
6662         * input.h (line_table): Changed type.
6663         (location_from_locus): New macro.
6664         * tree.h (EXPR_FILENAME): No longer an lvalue.
6665         (EXPR_LINENO): Likewise.
6666         (expr_locus, set_expr_locus): Declare separately for
6667         USE_MAPPED_LOCATION.
6668         (expr_filename, expr_lineno): Changed return type.
6669         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
6670         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
6671         (expand_gimple_basic_block): Likewise.
6672         * final.c (final_scan_insn): Use expanded_location.
6673
6674 2007-09-06  Richard Guenther  <rguenther@suse.de>
6675
6676         PR tree-optimization/32586
6677         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6678         folding if nothing changed.
6679         (simplify_unary_expression): New function.  Do tree combining
6680         on conversion like codes.
6681         (try_to_simplify): Call it.
6682         * builtins.c (fold_builtin_cexp): Fold the built expressions.
6683         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
6684
6685 2007-09-06  Jan Hubicka  <jh@suse.cz>
6686
6687         PR target/33318
6688         * cse.c (fold_rtx): Avoid invalid sharing.
6689
6690 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6691
6692         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6693         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6694
6695 2007-09-06  Revital Eres  <eres@il.ibm.com>
6696
6697         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
6698         Fix offsettable memory reference for 750CL.
6699
6700 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
6701
6702         * reload.c (find_reloads_address_1): Try to preserve original
6703         base/index regclass of operands.
6704         * regrename.c (scan_rtx_address): Likewise.
6705         (replace_oldest_value_addr): Likewise.
6706
6707 2007-09-06  Richard Guenther  <rguenther@suse.de>
6708
6709         PR tree-optimization/33302
6710         * domwalk.c (walk_dominator_tree): The exit block is
6711         interesting even if it is not reachable.
6712
6713 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6714
6715         PR middle-end/33306
6716         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
6717
6718 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
6719
6720         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
6721         robustness.
6722
6723 2007-09-05  Ian Lance Taylor  <iant@google.com>
6724
6725         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
6726         when printing.
6727         (dump_generic_node): Likewise.
6728         * print-rtl.c (print_decl_name): Likewise.
6729         * print-tree.c (print_node_brief): Likewise.
6730         (print_node): Likewise.
6731         * Makefile.in (RTL_BASE_H): Add alias.h.
6732         (TREE_H): Likewise.
6733
6734 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
6735
6736         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
6737         Defined.
6738         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
6739         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
6740
6741 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
6742
6743         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
6744         (tm_defines): Define UCLIBC_DEFAULT to 1.
6745         (extra_options): Add linux.opt.
6746         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6747         (CRT_CALL_STATIC_FUNCTION): Likewise.
6748         (NO_IMPLICIT_EXTERN_C): Likewise.
6749         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6750         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
6751         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6752         (ENDFILE_SPEC): Don't define.
6753         (LIB_SPEC): Likewise.
6754         (CRT_CALL_STATIC_FUNCTION): Likewise.
6755         (NO_IMPLICIT_EXTERN_C): Likewise.
6756         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
6757         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6758
6759 2007-09-06  Jan Hubicka  <jh@suse.cz>
6760
6761         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6762         real_2expN.
6763
6764 2007-09-06  Jan Hubicka  <jh@suse.cz>
6765
6766         * opts.c (common_handle_option): Enable inlining functions for
6767         -fprofile-generate.
6768
6769 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
6770
6771         * builtin-attrs.def (ATTR_NONNULL_3): New.
6772         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
6773         ATTR_NOTHROW_NONNULL_##FA.
6774         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
6775         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
6776         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
6777         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
6778         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
6779         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
6780         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
6781         New.
6782         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
6783         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
6784         ATTR_FORMAT_NOTHROW_3_4): Remove.
6785         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
6786         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
6787         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
6788         instead of ATTR_FORMAT_*_*.
6789
6790 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
6791
6792         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
6793         parts re-used for REG_FRAME_RELATED_EXPR.
6794
6795 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6796
6797         * optabs.c (expand_float): Convert unsigned integer as signed only
6798         if it provides sufficient accuracy; add mode argument to real_2expN.
6799         (expand_fix): Fix comment typos; extend binary float into mode
6800         wider than destination for converion to unsigned integer; add mode
6801         argument to real_2expN.
6802         * real.c (real_2expN): Add mode argument to special-case decimal
6803         float values.
6804         * real.h (real_2expN): Ditto.
6805         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6806         real_2expN.
6807         (fixed_from_string): Ditto.
6808         (fixed_to_decimal): Ditto.
6809         (fixed_convert_from_real): Ditto.
6810         (real_convert_from_fixed): Ditto.
6811         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6812         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6813         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6814         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6815
6816 2007-09-05  Ian Lance Taylor  <iant@google.com>
6817
6818         * init-regs.c (initialize_uninitialized_regs): Call
6819         emit_insn_before rather than add_insn_before.
6820
6821 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6822
6823         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
6824         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
6825         * tree-inline.h (copy_body_data): Add call_expr field.
6826         * tree-inline.c (expand_call_inline): Initialize call_expr.
6827         (copy_bb): Append anonymous inline fn arguments to arguments
6828         when inlining a CALL_EXPR_VA_ARG_PACK call.
6829         * builtins.c (expand_builtin): Issue an error if
6830         BUILT_IN_VA_ARG_PACK is seen during expand.
6831         (fold_call_expr, fold_builtin_call_array): Don't fold
6832         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
6833         __builtin_va_arg_pack () call as last argument.
6834         * gimplify.c (gimplify_call_expr): If last argument to a vararg
6835         function is __builtin_va_arg_pack (), decrease number of call
6836         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
6837         * expr.c (expand_expr_real_1): Issue an error if
6838         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
6839         * tree-pretty-print.c (dump_generic_node): Handle printing
6840         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
6841         * doc/extend.texi (__builtin_va_arg_pack): Document.
6842
6843 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
6844
6845         PR tree-optimization/21513
6846         * builtins.c (build_builtin_expect_predicate): New function.
6847         (fold_builtin_expect): Add argument for expected value.
6848         Distribute __builtin_expect over short-circuiting operations.
6849         Fold nested builtin_expects.
6850         (fold_builtin_2): Adjust call to fold_builtin_expect.
6851
6852 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6853
6854         PR web/32965
6855         PR tree-optimization/13756
6856         * doc/invoke.texi (Options That Control Optimization): Document
6857         -ftree-dse.
6858
6859 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
6860
6861         * config/i386/cpuid.h: New file.
6862         * config/i386/driver-i386.c: Include cpuid.h.
6863         (describe_cache): Shrink size and line strings to 100 bytes.
6864         (detect_caches_amd): Return "" for unsupported max_ext_level.
6865         Use __cpuid function.
6866         (detect_caches_intel): Return "" for unsupported max_level.
6867         Use __cpuid function.
6868         (host_detect_local_cpu): Change feature flag variables to
6869         unsigned int.  Initialize only extended feature flag variables.
6870         Use __get_cpuid_max to determine max supported cpuid level.
6871         Use __cpuid function to determine supported features.  Fix
6872         calculation of family id.  Remove is_amd and check signature
6873         directly.  Check for Geode signature.  Handle family 4 id.
6874         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
6875         cpu discovery code to lower part of the function.
6876         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
6877         for sub-architecture.
6878         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
6879         [PROCESSOR_K8]: Add k8-sse3 architecture.
6880         [PROCESSOR_NOCONA]: Remove.
6881         [PROCESSOR_GENERIC64]: Ditto.
6882         * config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
6883         * config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
6884         to check for SSE and FXSAVE support.
6885         * config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
6886         Add -minline-all-stringops.
6887         * config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
6888         (x86_64-*-*): Ditto.
6889
6890 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
6891
6892         * config/bfin/linux-unwind.h: New file.
6893         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
6894         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
6895
6896 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6897
6898         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
6899         * stmt.c: Include alloc-pool.h.
6900         (struct case_node): Remove GTY marker.
6901         (add_case_node): New parameter case_node_pool.  Use it for
6902         allocation of r.
6903         (expand_case): New allocation pool case_node_pool.  Initialize it,
6904         pass to add_case_node and free it.
6905
6906 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6907             David Ung  <davidu@mips.com>
6908             Nigel Stephens <nigel@mips.com>
6909
6910         Add mips16/nomips16 function attributes and -mflip-mips16 option
6911         for testing mixed-mode compilation.
6912
6913         * config/mips/mips.opt (mflip-mips16): New.
6914
6915         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
6916         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
6917
6918         * config/mips/mips.c (mips_base_target_flags): New.
6919         (mips_base_mips16): New.
6920         (mips_base_schedule_insns): New.
6921         (mips_base_reorder_blocks_and_partition): New.
6922         (mips_base_align_loops): New.
6923         (mips_base_align_jumps): New.
6924         (mips_base_align_functions): New.
6925         (mips16_flipper): New.
6926         (mips_attribute_table): Add "mips16" and "nomips16" entries.
6927         (TARGET_SET_CURRENT_FUNCTION): Define.
6928         (mips_mips16_type_p, mips_nomips16_type_p): New.
6929         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
6930         (mips_function_ok_for_sibcall): Make it deal with functions with
6931         mips16 attributes.
6932         (mips_init_split_addresses): New, split out from override_options.
6933         (mips_init_relocs): New, split out from override_options.
6934         (was_mips16_p): New.
6935         (mips_set_mips16_mode): New, split out from override_options.
6936         (mips_set_current_function): New.
6937         (override_options): Add sorry for unsupported mips16/pic
6938         combination.  Remove error for mips16/dsp combination.  Save
6939         base option settings.  
6940         (mips_file_start): Move mips16 mode setting output from here....
6941         (mips_output_function_prologue): ....to here.
6942         (mips_output_mi_thunk): Check for mips16 function.
6943         (build_mips16_function_stub): Don't set .mips16 here.
6944         (build_mips16_call_stub): Likewise.
6945         (mips_expand_builtin): Error in mips16 mode.
6946         (mips_use_mips16_mode_p): New.
6947         (mips_encode_section_info): Check for mips16 function, and set
6948         SYMBOL_REF_FLAGS accordingly.
6949
6950         * doc/extend.texi (Function Attributes): Document new
6951         mips16/nomips16 attributes.
6952         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
6953         (MIPS Options): Document -mflip-mips16.
6954
6955 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6956
6957         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
6958         if we encounter TLS address in MIPS16 mode.
6959         (mips_legitimize_const_move): Check cannot_force_const_mem for
6960         the (const (plus symbol offset)) case; this forces invalid TLS
6961         address in MIPS16 mode to be caught by the above call to sorry.
6962         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
6963         because that now enables emutls, which is not ABI compatible
6964         with native TLS in non-MIPS16 mode.
6965
6966 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6967
6968         Add target hook invoked when cfun changes.
6969
6970         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
6971         * target.h (struct gcc_target): Add set_current_function.
6972         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
6973         (TARGET_INITIALIZER): Add initializer for set_current_function.
6974         * tree.h (push_struct_function): New.
6975         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
6976         * function.h: Here.
6977         (set_cfun): Declare.
6978         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
6979         * function.c: Here.
6980         (push_function_context_to): Use allocate_struct_function
6981         to create null context, not init_dummy_function_start.  Use set_cfun.
6982         (pop_function_context_from): Use set_cfun.
6983         (in_dummy_function): New.
6984         (invoke_set_current_function_hook): New.
6985         (set_cfun): New.
6986         (push_cfun, pop_cfun): Use set_cfun.
6987         (push_struct_function): New.
6988         (allocate_struct_function): Call invoke_set_current_function_hook
6989         before returning.
6990         (prepare_function_start): Don't set cfun here.  Remove unused
6991         argument; fix all callers.
6992         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
6993         push_struct_function.
6994         (init_function_start): Set cfun here.
6995         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
6996         * omp-low.c (create_omp_child_function): Use push_struct_function
6997         and pop_cfun to save/restore state.
6998         (expand_omp_parallel): Remove unused saved_cfun variable.
6999         * cgraphunit.c (ipa_passes): Use set_cfun.
7000         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
7001         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
7002         * matrix-reorg.c (transform_allocation_sites): Likewise.
7003         (matrix_reorg): Use set_cfun.
7004         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
7005         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
7006         assignment to cfun; use set_cfun for the other.
7007         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
7008         (dump_function_to_file): Use push_cfun/pop_cfun here.
7009         * c-decl.c (finish_function): Use set_cfun.
7010
7011 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
7012
7013         * regrename.c (rerename_optimize): Use deferred rescanning and
7014         insert explicit calls to rescan insns when changed.
7015         
7016 2007-09-05  Jan Hubicka  <jh@suse.cz>
7017
7018         * optabs.c (libfunc_entry): Change optab to integer.
7019         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
7020         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
7021         of pointers for hashing.
7022
7023 2007-09-05  Jan Hubicka  <jh@suse.cz>
7024
7025         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
7026         verifier.
7027         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
7028         * see.c (pass_see): Likewise.
7029         * tracer.c (pass_tracer): Likewise.
7030         * postreload-gcse.c (pass_gcse2): Likewise.
7031         * postreload.c (pass_postreload_cse): Likewise.
7032         * mode-switching.c (pass_mode_switching): Likewise.
7033         * modulo-sched.c (pass_sms): Likewise.
7034         * cse.c (cse_insn): Likewise.
7035         * web.c (pass_web): Likweise.
7036         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
7037         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
7038         * loop-init.c (pass_rtl_loop_init): Likewise.
7039         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
7040         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
7041         * global.c (pass_global_alloc): Likewise.
7042         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
7043         pass_if_after_reload): Likewise.
7044         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
7045         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
7046         * regmove.c (pass_regmove): Likewise.
7047         * function.c (pass_thread_prologugues_epilogues): Likewise.
7048         * gcse.c (pass_gcse): Likewise.
7049         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
7050         * lower-subreg.c (pass_lower_subreg2): Likewise.
7051         * bt-load.c (pass_branch_target_load): Likewise.
7052         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7053         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
7054         * combine.c (pass_combine): Likewise.
7055         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
7056         (pass_partition_blocks): Likewise.
7057         * var-tracking.c (pass_variable_track): Likewise.
7058         * reg-stack.c (pass_stack_regs_run): Likewise.
7059         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
7060         * passes.c (pass_postreload): Likewise.
7061         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
7062         * tree-pass.h (TODO_verify_rtl_sharing): New.
7063         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
7064         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
7065         TODO_set_props, TODO_df_finish, TODO_df_verify,
7066         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
7067
7068 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7069
7070         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
7071         fold_real_zero_addition_p, reorder_operands_p,
7072         div_if_zero_remainder, fold_undefer_overflow_warnings,
7073         int_binop_types_match_p, fold_convert_const_int_from_int,
7074         fold_convert_const_int_from_real,
7075         fold_convert_const_int_from_fixed,
7076         fold_convert_const_real_from_real,
7077         fold_convert_const_real_from_fixed,
7078         fold_convert_const_fixed_from_fixed,
7079         fold_convert_const_fixed_from_int,
7080         fold_convert_const_fixed_from_real, maybe_lvalue_p,
7081         fold_checksum_tree, fold_check_failed, print_fold_checksum,
7082         debug_fold_checksum, multiple_of_p): Constify.
7083         * tree-flow-inline.h (get_lineno): Likewise.
7084         * tree-flow.h (get_lineno): Likewise.
7085         * tree-object-size.c (compute_object_offset, addr_object_size,
7086         alloc_object_size, pass_through_call): Likewise.
7087         * tree-pretty-print.c (op_symbol, print_call_name,
7088         print_struct_decl, do_niy): Likewise.
7089         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
7090         debug_fold_checksum): Likewise.
7091
7092 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
7093
7094         PR middle-end/33029
7095         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
7096         note, remove the associated REG_RETVAL note.
7097
7098 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7099
7100         * config.gcc (powerpc*-*-*): Install
7101         spu2vmx.h, vec_types.h, and si2vmx.h headers.
7102         * config/rs6000/spu2vmx.h: New header.
7103         * config/rs6000/si2vmx.h: New header.
7104         * config/rs6000/vec_types.h: New header.
7105
7106 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7107
7108         * varasm.c (initializer_constant_valid_p): Fix comment typo.
7109
7110 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7111
7112         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
7113         not `m' for *ptrp.
7114         (__stdcx): Make asm volatile.
7115         (__stwcx, __stdcx): Return only 0 or 1.
7116
7117 2007-09-05  Jan Hubicka  <jh@suse.cz>
7118
7119         Revert:
7120
7121         2007-09-04  Jan Hubicka  <jh@suse.cz>
7122         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7123
7124         2007-09-04  Richard Guenther  <rguenther@suse.de>
7125         * tree-ssa-operands.c (add_virtual_operand): Only mark
7126         stores as has_volatile_ops if alias information is not available.
7127
7128 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
7129
7130         * config/rs6000/tramp.asm: Include config.h.
7131         Check __PIC__ or __pic__ macro instead of SHARED.
7132
7133         PR rtl-optimization/32300
7134         * see.c (see_copy_insn): New function.
7135         (see_def_extension_not_merged, see_merge_one_use_extension,
7136         see_merge_one_def_extension): Use it.  Avoid changing
7137         PREV_INSN/NEXT_INSN chains directly, insted emit insns
7138         into sequences.  Call df_insn_delete on temporary insns
7139         that won't be emitted into the insn stream.
7140         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
7141         and run df_process_deferred_rescans () before run_fast_dce.
7142
7143         PR tree-optimization/33017
7144         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
7145         recurse for pure or const function calls.
7146
7147 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7148
7149         * c-format.c: Include alloc-pool.h.
7150         (check_format_info_main): New argument fwt_alloc.  Use allocation
7151         pool instead of GC.  Remove GC deallocation code.
7152         (check_format_arg): Create allocation pool, pass it to
7153         check_format_info_main and free it afterwards.
7154         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
7155
7156 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7157
7158         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
7159         Rename count macro arugment for clarity.
7160         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
7161         (__protected_stream_set): Likewise, pass 0.
7162
7163 2007-09-04  Jan Hubicka  <jh@suse.cz>
7164
7165         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7166
7167 2007-09-04  Jan Hubicka  <jh@suse.cz>
7168
7169         * invoke.texi (-finline-small-functions): Document.
7170         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
7171         when deciding what is inlinable.
7172         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
7173         (cgraph_decide_inlining_of_small_function): Handle new flags.
7174         (cgraph_decide_inlining_incrementally): Likewise.
7175         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
7176         * common.opt (finline-small-functions): New.
7177         * Makefile.in (build/gengtype.o-warn): Work around PR29478
7178
7179 2007-09-04  Richard Guenther  <rguenther@suse.de>
7180
7181         * tree-ssa-operands.c (add_virtual_operand): Only mark
7182         stores as has_volatile_ops if alias information is not available.
7183
7184 2007-09-04  Andrew Haley  <aph@redhat.com>
7185
7186         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
7187
7188 2007-09-04  Andrew Haley  <aph@redhat.com>
7189
7190         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
7191         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
7192         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
7193
7194 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
7195
7196         PR c++/14178
7197         * common.opt: Mention ABI version 2 in comment.
7198
7199 2007-09-04  Jan Hubicka  <jh@suse.cz>
7200
7201         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
7202         (libfunc_entry): New structure.
7203         (libfunc_hash): New hashtable.
7204         (hash_libfunc): New function.
7205         (eq_libfunc): New function.
7206         (convert_optab_libfunc): New function.
7207         (optab_libfunc): New function.
7208         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
7209         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
7210         expand_float, expand_fix, new_optab, new_convert_optab):
7211          Update for new libfunc API.
7212         (init_libfunc, init_integral_libfuncs,
7213         init_floating_libfuncs, init_interclass_conv_libfuncs
7214         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
7215         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
7216         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7217         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
7218         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
7219         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
7220         gen_extend_conv_libfunc): New.
7221         (init_one_libfunc): Revamp for hashtables.
7222         (set_conv_libfunc): Likewise.
7223         (init_optabs): Initialize hashtable; use lazy initialization where
7224         possible.
7225         * optabs.h (optab_handlers): Move out of GGC.
7226         (optab, convert_optab): Move out of GGC; add lazy gen info.
7227         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
7228         (optab_libfunc, convert_optab_libfunc): New.
7229         * builtins.c (expand_builtin_powi): Update for new API.
7230         * expr.c (convert_move): Likewise.
7231         * expmed.c (expand_divmod): Likewise.
7232
7233 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7234
7235         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
7236         GOT pointer only if there is a constant pool.  Use the allocated space
7237         for SPE also.
7238
7239 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7240
7241         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
7242         typo for AltiVec.
7243
7244 2007-09-04  Revital Eres  <eres@il.ibm.com>
7245             Richard Guenther  <rguenther@suse.de>
7246             R. Clint Whaley  <whaley@cs.utsa.edu>
7247
7248         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
7249         Document new flags.
7250         * tree-tailcall.c (process_assignment): Use -fassociative-math
7251         when reodering operands of floating-point type.
7252         * fold-const.c (fold_comparison, fold_binary): Use
7253         -fassociative-math and -freciprocal-math instead of
7254         -funsafe-math-optimization flag.
7255         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
7256         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
7257         -freciprocal-math instead of -funsafe-math-optimizations.
7258         * opts.c (set_fast_math_flags): Set -freciprocal-math and
7259         -fassociative-math when -ffast-math is set.
7260         (set_unsafe_math_optimizations_flags): New Function
7261         to set -freciprocal-math and -fassociative-math when
7262         -funsafe-math-optimizations is set.
7263         (common_handle_option): Call it.
7264         * tree-vectorizer.c (vect_is_simple_reduction): Use
7265         -fassociative-math when doing reduction on floats.
7266         * loop-unroll.c (analyze_insn_to_expand_var): Use
7267         -fassociative-math when expanding an accumulator of type float.
7268         * simplify-rtx.c (simplify_binary_operation_1): Use
7269         -fassociative-math and -freciprocal-math when reordeing operands
7270         of floating-point type.
7271         * combine.c (combine_simplify_rtx): Likewise.
7272         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
7273         Likewise.
7274         * common.opt (-fassociative-math, -freciprocal-math): New flags.
7275
7276 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
7277
7278         PR c++/18608
7279         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
7280
7281 2007-09-04  Jan Hubicka  <jh@suse.cz>
7282
7283         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
7284
7285 2007-09-04  Jan Hubicka  <jh@suse.cz>
7286
7287         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
7288         and corresponding MATCH_DUP.
7289
7290 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
7291
7292         PR middle-end/33187
7293         * combine.c (subst): Do not try to simplify X if it represents load
7294         of FP constant from the constant pool via float extension.
7295
7296 2007-09-04  Ben Elliston  <bje@au.ibm.com>
7297
7298         * c-opts.c: Include "tm_p.h".
7299         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
7300
7301 2007-09-04  Richard Guenther  <rguenther@suse.de>
7302
7303         PR tree-optimization/33291
7304         * tree-pretty-print.c (dump_generic_node): Dump all
7305         qualifiers for pointer types, not only first.  Dump
7306         qualifiers for aggregate types as well.
7307         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
7308         use the canonical type for building ARRAY_REFs.
7309         * gimplify.c (canonicalize_addr_expr): Clean up.  The
7310         correct validness check is compatibility of the pointer
7311         types.  Always use the canonical type for building
7312         ARRAY_REFs and ADDR_EXPRs.
7313         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
7314         change that disabled propagation of ADDR_EXPRs into statements
7315         with volatile ops.
7316
7317 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7318
7319         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
7320         (umulsi3_highpart): Make into expanders; existing insns are
7321         now named *[insn]_nov6.  Add stars to existing [insn]_v6
7322         counterparts' names.
7323
7324 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
7325
7326         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
7327         (unprotoize.o): Remove SHLIB_MULTILIB.
7328
7329 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
7330
7331         * doc/extend.texi: Document progmem attribute for AVR.
7332
7333 2007-09-03  Anatoly Sokolov <aesok@post.ru>
7334
7335         PR target/28902
7336         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
7337
7338 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7339
7340         * optabs.c (expand_ffs): Initialize val and defined_at_zero
7341         to avoid warnings.
7342
7343         * optabs.c: Remove unnecessary forward declarations.
7344         (expand_unop_direct): New, broken out of expand_unop.
7345         (expand_doubleword_clz): New.
7346         (expand_ctz): Move above expand_ffs.  Use
7347         start_sequence, end_sequence, add_equal_note, and
7348         expand_unop_direct.  Add more commentary.
7349         (expand_ffs): Try both ctz optab and expand_ctz.
7350         Generate a test and branch if the hardware doesn't give us
7351         a useful value for input zero.  Style improvements similar to
7352         expand_ctz.
7353
7354         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
7355
7356 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7357
7358         * config.gcc: Delete stanza for arm-semi-aof and
7359         armel-semi-aof targets.
7360         * config/arm/arm-protos.h
7361         * config/arm/arm.c
7362         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
7363         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
7364         delete aof_pic_label and remove mention of AOF in comments.
7365         * config/arm/arm.md: Delete patterns used only for AOF assembly.
7366         * config/arm/aof.h
7367         * config/arm/semiaof.h
7368         * config/arm/t-semi: Delete file.
7369
7370 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7371
7372         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
7373         CONST_CAST_BB): New macros for type-specific casts.
7374         (CONST_CAST): Add a TYPE parameter and define it in terms of
7375         CONST_CAST2.
7376
7377         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
7378         * c-lex.c (cb_ident, lex_string): Likewise,
7379         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
7380         * config/i386/i386.c (ix86_function_regparm,
7381         ix86_function_sseregparm): Use CONST_CAST_TREE.
7382         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
7383         CONST_CAST.
7384         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
7385         give_switch, set_multilib_dir): Likewise,
7386         * gengtype-parse.c (string_seq, typedef_name): Likewise,
7387         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
7388         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
7389         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
7390         * prefix.c (update_path): Likewise,
7391         * pretty-print.c (pp_base_destroy_prefix): Likewise,
7392         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
7393         * tree-cfg.c (tree_can_merge_blocks_p,
7394         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
7395         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
7396         * tree.c (build_string): Supply a TYPE for CONST_CAST.
7397         (attribute_list_contained): Use CONST_CAST_TREE.
7398
7399 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
7400
7401         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
7402
7403 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7404
7405         PR middle-end/33290
7406         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
7407         before forcing them into a register.
7408
7409 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7410
7411         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
7412         rather than define_code_macro.
7413
7414 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7415
7416         * gcc.c (xputenv): New function.
7417         (putenv_from_prefixes): Use xputenv instead of putenv.
7418         (process_command): Use xputenv instead of putenv.
7419         (set_collect_gcc_options): Use xputenv instead of putenv.
7420         (main): Use xputenv instead of putenv.
7421
7422 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7423
7424         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
7425         availability of swap instruction.
7426         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
7427
7428 2007-09-03  Revital Eres  <eres@il.ibm.com>
7429
7430         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
7431         Documentation.
7432
7433 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
7434             Ayal Zaks  <zaks@il.ibm.com>
7435             Revital Eres  <eres@il.ibm.com>
7436
7437         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
7438         compute_split_row): New functions.
7439         (ps_unschedule_node): Remove.
7440         (normalize_sched_times): Iterate over the already scheduled
7441         insns instead of the number of nodes.
7442         (MAX_SPLIT_NUM): New definition.
7443         (sms_schedule_by_order): Change the scheduling heuristic to
7444         avoid useless increases of initiation interval ii.
7445         (get_sched_window): Add dump printouts.
7446
7447 2007-09-02  David Daney  <ddaney@avtrex.com>
7448
7449         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
7450         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
7451         (optab, insn): Add more attributes.
7452         (fetchop_bit): New code macro.
7453         (immediate_insn): New code macro attribute.
7454         (sync): Change condition to ISA_HAS_SYNC.
7455         (rdhwr): Change predicate for operand 0 to register_operand.
7456         (memory_barrier): New expand.
7457         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
7458         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
7459         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
7460         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
7461         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
7462         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
7463         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
7464         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
7465         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
7466         
7467 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7468             Hans-Peter Nilsson  <hp@axis.com>
7469
7470         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
7471         Defined to describe availability and behavior of CLZ.
7472         * config/cris/cris.md (clzsi2): Implement using lz instruction.
7473         * config/cris/cris.opt: Tweak comment for "-metrax4".
7474         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
7475         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
7476         (count_leading_zeros): Define.
7477
7478 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7479
7480         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
7481
7482 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
7483
7484         PR c/29237
7485         PR middle-end/33272
7486         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
7487         decayed from array.
7488
7489 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7490
7491         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
7492         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
7493         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
7494         sched-deps.c, sched-int.h, system.h, target.h,
7495         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
7496         tree.def: Fix comment typos.
7497
7498 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7499
7500         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
7501         (override_options): Turn on -mstrict-align on non-ColdFire
7502         targets.
7503         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
7504
7505 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7506
7507         * c-common.c (const_strip_array_types): Delete.
7508         * c-common.h (const_strip_array_types): Likewise.
7509         * emit-rtl.c (const_next_insn, const_previous_insn,
7510         const_next_nonnote_insn, const_prev_nonnote_insn,
7511         const_next_real_insn, const_prev_real_insn,
7512         const_next_active_insn, const_prev_active_insn, const_next_label,
7513         const_prev_label): Delete.
7514         * gimple-low.c (block_may_fallthru): Use expr_last.
7515         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
7516         * rtl.h (const_previous_insn, const_next_insn,
7517         const_prev_nonnote_insn, const_next_nonnote_insn,
7518         const_prev_real_insn, const_next_real_insn,
7519         const_prev_active_insn, const_next_active_insn, const_prev_label,
7520         const_next_label): Delete.
7521         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
7522         * system.h (CONST_CAST): Update comment.
7523         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
7524         (const_first_stmt, const_last_stmt): Delete.
7525         (tree_block_ends_with_condjump_p): Use last_stmt.
7526         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
7527         * tree-iterator.c (const_expr_first, const_expr_last,
7528         const_expr_only): Delete.
7529         * tree.c (const_lookup_attribute): Likewise.
7530         (attribute_list_contained): Use lookup_attribute.
7531         * tree.h (const_lookup_attribute, const_expr_first,
7532         const_expr_last, const_expr_only): Delete.
7533
7534 2007-09-01  Richard Guenther  <rguenther@suse.de>
7535
7536         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
7537         instead of TREE_THIS_VOLATILE.
7538         * tree-ssa-operands.c (add_virtual_operand): Do not set
7539         has_volatile_ops.  Do not check s_ann for NULL.
7540         (get_indirect_ref_operands): Likewise.
7541         (get_expr_operands): Likewise.  For all reference trees
7542         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
7543         check base of reference for TREE_THIS_VOLATILE.
7544
7545 2007-09-01  Richard Guenther  <rguenther@suse.de>
7546
7547         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
7548         between integral types.  Also allow conversions between
7549         pointer types.
7550
7551 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7552
7553         * optabs.c (prepare_float_lib_cmp): Use
7554         libgcc_cmp_return_mode instead of word_mode.
7555         * config/dfp-bit.h: Likewise.
7556         * config/fp-bit.h: Likewise.
7557         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
7558         New function.
7559         (spu_libgcc_shift_count_mode): New function.
7560         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
7561         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
7562
7563 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
7564
7565         * tree-pretty-print.c: Include output.h.
7566         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
7567         HOST_WIDE_INT_PRINT_DEC.
7568         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
7569
7570 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
7571
7572         PR rtl-optimization/33224
7573         * loop-iv.c (latch_dominating_def): Check that the definition belongs
7574         to the analysed region.
7575
7576 2007-08-31  Richard Guenther  <rguenther@suse.de>
7577
7578         * function.c (allocate_struct_function): Do not set
7579         current_function_returns_pointer.
7580         * function.h (struct var_refs_queue): Remove.
7581         (struct simple_obstack_stack): Likewise.
7582         (struct function): Remove fixup_var_refs_queue member.
7583         Remove returns_pointer flag.
7584         (current_function_returns_pointer): Remove define.
7585
7586 2007-08-31  Nick Clifton  <nickc@redhat.com>
7587
7588         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
7589         secondary keys in order to obtain a stable sort.
7590
7591 2007-08-31  Nick Clifton  <nickc@redhat.com>
7592
7593         PR target/33132
7594         * config/m32r/constraints.md: Add W constraint for integer zero.
7595         * config/m32r/m32r.md (get_pc): Use W and i constraints.
7596         Fix length calculation by using alternatives.
7597
7598 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
7599
7600         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
7601         split out from expand_binop.
7602         (avoid_expensive_constant): New function.
7603         (expand_binop_directly): Remove commutative_op argument and
7604         (expand_binop_directly): Remove commutative_op argument and
7605         call cummutative_optab_p instead.  Do not change op0 or op1
7606         when swapping xop0 and xop1.  Apply avoid_expensive_constant
7607         to each argument after potential swapping.  Enforce the
7608         canonical order of commutative operands.
7609         (expand_binop): Use shift_optab_p and commutative_optab_p.
7610         Update the calls to expand_binop_directly.  Only force constants
7611         into registers when widening an operation.  Only swap operands
7612         once a direct expansion has been rejected.
7613         (expand_twoval_binop): Only force constants into registers when
7614         using a direct expansion.
7615
7616 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
7617
7618         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
7619         (sched_analyze_insn): Don't postprocess speculative dependencies when
7620         target has no scheduling.
7621         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
7622         'uninitialized' warning.
7623
7624 2007-08-31  Richard Guenther  <rguenther@suse.de>
7625
7626         * tree.c (build_complex_type): Always set TYPE_NAME for
7627         comples types.
7628
7629 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7630
7631         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
7632         internal macro. Default alignment factor for csect directives, chosen
7633         to match what BIGGEST_ALIGNMENT allows.
7634         (DATA_SECTION_ASM_OP): Use it.
7635         * config/rs6000/rs6000.c
7636         (rs6000_xcoff_output_readonly_section_asm_op):
7637         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
7638         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
7639         
7640 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7641
7642         * dbxout.c (dbxout_block): Move declaration within the first
7643         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
7644         block to include the definition, together with the associated
7645         helpers.
7646
7647 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
7648             Revital Eres  <eres@il.ibm.com>
7649
7650         * doc/invoke.texi (-mpaired): Document flag.
7651         * config.gcc: Include paired.h in powerpc extra_headers and
7652         750cl.h in powerpc-*-linux*paired*.
7653         * config/rs6000/rs6000.opt (-mpaired): New flag.
7654         * config/rs6000/rs6000.c (paired_init_builtins,
7655         paired_expand_builtin, paired_expand_lv_builtin,
7656         paired_expand_stv_builtin, paired_expand_predicate_builtin):
7657         New functions to support the paired single builtin functions.
7658         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
7659         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
7660         single builtins.
7661         (bdesc_paired_preds): New structure for paired predicate
7662         instructions.
7663         (rs6000_expand_builtin): Expand paired single builtins.
7664         (rs6000_init_builtins): Init paired single builtins.
7665         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
7666         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
7667         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
7668         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
7669         (rs6000_vector_mode_supported_p): Support paired vector mode.
7670         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
7671         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
7672         New.
7673         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
7674         (DATA_ALIGNMENT): Likewise.
7675         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
7676         (rs6000_builtins): Add PAIRED builtins.
7677         * config/rs6000/rs6000.md: Include paired.md.
7678         * config/rs6000/paired.h: New.
7679         * config/rs6000/paired.md: New.
7680         * config/rs6000/750cl.h: New.
7681         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
7682
7683 2007-08-30  Ollie Wild  <aaw@google.com>
7684
7685         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
7686         * gcc.c (default_compilers): Add -fno-directives-only to
7687         @assembler-with-cpp.
7688
7689 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
7690
7691         PR middle-end/33211
7692
7693         * regclass.c (initial_fixed_regs): Revert previous change and make
7694         it const again.
7695         (initial_call_used_regs): Likewise.
7696         (initial_call_really_used_regs): Delete, reverting previous addition.
7697         (initial_reg_names): Likewise.
7698         (init_reg_sets): Revert previous change.
7699         (saved_fixed_regs): New.
7700         (saved_call_used_regs): New.
7701         (saved_call_really_used_regs): New.
7702         (saved_reg_names): New.
7703         (save_register_info): New.
7704         (restore_register_info): New.
7705         (init_reg_sets_1): Replace reset of register info with call to
7706         restore_register_info.
7707         * rtl.h (save_register_info): Declare.
7708         * toplev.c (backend_init): Call save_register_info.
7709
7710 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7711
7712         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
7713         from the original statement.
7714
7715 2007-08-30  Chao-ying Fu  <fu@mips.com>
7716
7717         * c-lex.c (interpret_fixed): Declare.
7718         (interpret_float): Process _Fract and _Accum.
7719         (interpret_fixed): New function.
7720         * final.c (output_addr_const): Process CONST_FIXED.
7721         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
7722         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
7723         SS_DIV, US_DIV.
7724         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
7725         US_DIV, US_ASHIFT.
7726         (simplify_immed_subreg): Support CONST_FIXED.
7727         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7728         (simplify_subreg): Support CONST_FIXED.
7729
7730 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7731
7732         * config/rs6000/ppu_intrinsics.h: New file.
7733         * config.gcc (powerpc*-*-* <extra_headers>): Install
7734         ppu_intrinsics.h.
7735
7736 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7737
7738         * cfg.c (dump_flow_info): Change to also print entry and exit
7739         block info.
7740         * print-rtl.c (print_rtl_single): Allow to print rtl with
7741         -fdump-unnumbered.
7742         
7743 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7744
7745         * df-core.h (df_dump_region): New function.
7746         * df.h (df_dump_region): New function.
7747         * loop-invariant.c (find_defs): Add call to df_dump_region.
7748         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
7749         df_dump_region.
7750         
7751 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7752
7753         PR target/33168
7754         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
7755         true if any of the compare_section_name calls returned true,
7756         rather than if any returned false.
7757
7758 2007-08-30  Richard Guenther  <rguenther@suse.de>
7759
7760         PR tree-optimization/33199
7761         * tree-ssa-structalias.c (handle_lhs_call): New function.
7762         (find_func_aliases): In non-IPA mode make sure that for
7763         calls that return a pointer we add a constraint for the
7764         result to point to anything.
7765
7766 2007-08-30  Richard Guenther  <rguenther@suse.de>
7767
7768         * doc/invoke.texi (-mveclibabi): Document new target option.
7769         * config/i386/i386.opt (-mveclibabi): New target option.
7770         * config/i386/i386.c (ix86_veclib_handler): Handler for
7771         vectorization library support.
7772         (override_options): Handle the -mveclibabi option, initialize
7773         the vectorization library handler.
7774         (ix86_builtin_vectorized_function): As fallback call the
7775         vectorization library handler, if set.
7776         (ix86_veclibabi_acml): New static function for ACML ABI style
7777         vectorization support.
7778
7779 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7780
7781         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
7782         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
7783         SImode and update m.  Don't run gen_lowpart_common on arbitrary
7784         memory address, force it to register first.
7785
7786         PR middle-end/32758
7787         * dce.c (dce_process_block): Don't delete setters of
7788         artificially used registers.
7789
7790 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7791
7792         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
7793         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
7794         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
7795
7796 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7797
7798         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
7799         pattern.
7800         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
7801         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
7802
7803 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7804
7805         * system.h: Activate -Wcast-qual as warning-only.
7806
7807 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
7808
7809         PR target/33168
7810         * config/rs6000/rs6000.c (compare_section_name): New function.
7811         (rs6000_elf_in_small_data_p): Compare section prefixes instead
7812         of full name.
7813
7814 2007-08-29  Olivier Hainque  <hainque@adacore.com>
7815
7816         * xcoffout.c: #include debug.h.
7817         * Makefile.in (xcoffout.o): Add debug.h dependency.
7818
7819 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
7820
7821         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7822         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
7823
7824 2007-08-29  Richard Guenther  <rguenther@suse.de>
7825
7826         * tree-pretty-print.c (dump_generic_node): Print
7827         label DECL_UID as D.%u.
7828         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
7829
7830 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7831
7832         * builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
7833         * builtins.def (BUILT_IN_REALLOC): New builtin.
7834
7835 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
7836
7837         PR c++/33194
7838         * tree.c (build_type_attribute_qual_variant): Set canonical types
7839         on the final, unqualified attribute variant before building the
7840         qualified version.
7841
7842 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7843
7844         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
7845         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
7846
7847 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7848
7849         Revert
7850         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7851         * config/bfin/bfin.md (composev2hi): Put operands into vector
7852         with correct order.
7853
7854 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7855
7856         * config/bfin/bfin.md (composev2hi): Put operands into vector
7857         with correct order.
7858
7859 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7860
7861         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
7862         attribute when appropriate.
7863         (bfin_handle_l1_text_attribute): New.
7864         (bfin_handle_l1_data_attribute): New.
7865         (bfin_attribute_table): Add attributes: l1_text, l1_data,
7866         l1_data_A and l1_data_B.
7867         * doc/extend.texi (node Function Attributes): Document l1_text
7868         function attribute.
7869         (Variable Attributes): Add Blackfin subsection. Document l1_data,
7870         l1_data_A and l1_data_B variable attributes.
7871
7872 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
7873
7874         * config/bfin/bfin.opt (minline-plt): Add.
7875         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
7876         call to global functions.
7877         * doc/invoke.texi (Option Summary): Mention -minline-plt.
7878         (Blackfin Options): Document -minline-plt.
7879
7880 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7881
7882         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
7883         given a non-function.
7884         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
7885
7886 2007-08-28  DJ Delorie  <dj@redhat.com>
7887
7888         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
7889
7890 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7891
7892         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
7893
7894 2007-08-28  Richard Guenther  <rguenther@suse.de>
7895
7896         * tree.h (struct tree_function_decl): Increase size of
7897         function_code bitfield.
7898
7899 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7900             Kazu Hirata  <kazu@codesourcery.com>
7901
7902         * config/m68k/linux.h
7903         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
7904         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
7905         (m68k_return_in_memory): New.
7906         * config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
7907         New.
7908
7909 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
7910
7911         PR target/32661
7912         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7913         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
7914         operand) when top VEC_SELECT extracts scalar element.
7915         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
7916         (*vec_extract_v4sf_mem): Ditto.
7917
7918 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
7919
7920         PR middle-end/32370
7921         * passes.c (init_optimization_passes): Move pass_df_finish
7922         after pass_postreload sublist.
7923
7924         PR rtl-optimization/33148
7925         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
7926         (neg (lt X 0)) if X has scalar int mode.
7927
7928         PR debug/32914
7929         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
7930         initializer, use build_vector_from_ctor if possible to create
7931         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
7932         even after this, return NULL.
7933
7934 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7935
7936         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
7937
7938 2007-08-28  Richard Guenther  <rguenther@suse.de>
7939
7940         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
7941         (struct tree_function_decl): Make function_code a bitfield.
7942         Add disregard_inline_limits flag.
7943         * cgraphunit.c (cgraph_process_new_functions): Check
7944         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
7945         (cgraph_preserve_function_body_p): Likewise.
7946         * ipa-inline.c (compute_inline_parameters): Likewise.
7947         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
7948         for GNU C extern inline functions.
7949         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
7950         * tree-inline.c (disregard_inline_limits_p): Remove.
7951         * tree-inline.h (disregard_inline_limits_p): Likewise.
7952         * c-common.c (handle_always_inline_attribute): Set
7953         DECL_DISREGARD_INLINE_LIMITS.
7954         * langhooks.c (add_builtin_function): Verify the function code
7955         fits in the bitfield.
7956
7957 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
7958             Vladimir Yanovsky  <yanov@il.ibm.com>
7959             Revital Eres  <eres@il.ibm.com>
7960             Andrey Belevantsev  <abel@ispras.ru>
7961
7962         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
7963         is set.
7964         * modulo-sched.c: Add documentation regarding do-loop.
7965         (doloop_register_get): Change number of arguments to support
7966         the new do-loop pattern and check whether COUNT_REG has no other
7967         occurences in the loop besides in the control part.
7968         (duplicate_insns_of_cycles): Do not duplicate the insn which
7969         changes count_reg as it is already adjusted.
7970         (generate_prolog_epilog): New argument to support the new
7971         do-loop pattern.  Change the subtract instruction to use
7972         expand_simple_binop.  Call duplicate_insns_of_cycles with new
7973         argument.
7974         (sms_schedule): Call doloop_register_get and
7975         generate_prolog_epilog with new argument.  Do not handle loops
7976         with single sets insns with subreg in their lhs.
7977         * loop-doloop.c (doloop_optimize): Support for another do-loop
7978         pattern.
7979         (doloop_condition_get): Gets an instruction instead of a pattern
7980         and change the return condition when the do-loop pattern is
7981         not parallel.
7982         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
7983         deps when considering to not create edges.
7984
7985 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
7986
7987         * doc/extend.texi (gnu_inline funtion attribute): Document C++
7988         behavior.
7989
7990 2007-08-27  Jason Merrill  <jason@redhat.com>
7991
7992         PR c++/31337
7993         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
7994         zero-sized types after calling gimplify_modify_expr_rhs.
7995
7996 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7997
7998         * regclass.c (init_reg_autoinc): Fix typo.
7999
8000 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
8001         
8002         Fix PR tree-optimization/33173
8003         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
8004
8005 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
8006
8007         PR target/31385
8008         * config/i386/i386.h (VALID_DFP_MODE_P): New.
8009         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
8010         GPR.
8011
8012 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
8013             David Ung  <davidu@mips.com>
8014             Nigel Stephens <nigel@mips.com>
8015
8016         Separate target-specific initialization from general
8017         back-end initialization.
8018
8019         * toplev.c (init_alignments): New, split out from...
8020         (process_options): ...here.
8021         (backend_init_target): New, split out from...
8022         (backend_init): ...here.
8023         (lang_dependent_init_target): New, split out from...
8024         (lang_dependent_init): ...here.
8025         (target_reinit): New.
8026         * toplev.h (target_reinit): Declare.
8027         * expr.c (init_expr_target): Renamed from init_expr_once, since it
8028         now can be called more than once.  Update comments.
8029         * expr.h (init_expr_target): Likewise.
8030         * alias.c (init_alias_target): Renamed from init_alias_once, since it
8031         now can be called more than once.  Explicitly zero
8032         static_reg_base_value.
8033         * emit-rtl.c (init_emit_regs): New, split out from...
8034         (init_emit_once): Here.
8035         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
8036         non-const, so that changes from command-line arguments can overwrite
8037         values provided by the static initializers.
8038         (initial_call_really_used_regs): New, used similarly to the above.
8039         (initial_reg_names): Likewise.
8040         (last_mode_for_init_move_cost): Promoted function-local static to
8041         file-scope static to make it accessible outside init_move_cost.
8042         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
8043         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
8044         reg_names since it is needed for parsing command-line options.
8045         (init_move_cost): Use last_mode_for_init_move_cost instead of
8046         function-local static.
8047         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
8048         call_really_used_regs now.  Reinitialize reg_names.  Also
8049         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
8050         reg_class_superunion.  Clear losing_caller_save_reg_set.
8051         Preserve global registers if called more than once.  Reset
8052         move cost, may_move_in_cost, may_move_out_cost, and
8053         last_mode_for_init_move_cost.
8054         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
8055         can now be invoked more than once.  Update comments.
8056         (init_regs): Update comments.
8057         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
8058         and initial_call_really_used_regs, instead of the non-initial 
8059         variables.  This allows us to save the command-line register settings
8060         after target reinitialization.
8061         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
8062         * rtl.h (init_emit_regs): Declare.
8063         (init_reg_modes_target, init_alias_target): Renamed as described
8064         above.
8065         * reload1.c (init_reload): Update comments.
8066         * optabs.c (init_optabs): Likewise.
8067         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
8068         
8069 2007-08-26  Chao-ying Fu  <fu@mips.com>
8070
8071         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
8072         __typeof().
8073
8074 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8075
8076         * alias.c (memory_modified_1, memory_modified_in_insn_p):
8077         Constify.
8078         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
8079         Likewise.
8080         * bb-reorder.c (copy_bb_p): Likewise.
8081         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
8082         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8083         block_ends_with_condjump_p): Likewise.
8084         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
8085         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8086         block_ends_with_condjump_p): Likewise.
8087         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
8088         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
8089         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
8090         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
8091         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
8092         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
8093         debug_true_const_tree instad of debug_true_tree.
8094         * debug.c (do_nothing_debug_hooks): Likewise.
8095         * debug.h (ignore_block, debug_true_const_tree): Constify.
8096         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
8097         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
8098         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
8099         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
8100         dbx_reg_number, is_based_loc, field_type,
8101         simple_type_align_in_bits, simple_decl_align_in_bits,
8102         simple_type_size_in_bits, field_byte_offset, insert_float,
8103         type_tag, member_declared_type, is_redundant_typedef,
8104         secname_for_decl, is_inlined_entry_point): Likewise.
8105         * emit-rtl.c (const_next_insn, const_previous_insn,
8106         const_next_nonnote_insn, const_prev_nonnote_insn,
8107         const_next_real_insn, const_prev_real_insn,
8108         const_next_active_insn, const_prev_active_insn, const_next_label,
8109         const_prev_label): Likewise.
8110         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
8111         Likewise.
8112         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
8113         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
8114         sched_insn_is_legitimate_for_speculation_p): Likewise.
8115         * jump.c (reversed_comparison_code_parts,
8116         reversed_comparison_code, reversed_comparison, condjump_label):
8117         Likewise.
8118         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
8119         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
8120         Likewise.
8121         * rtl.h (const_previous_insn, const_next_insn,
8122         const_prev_nonnote_insn, const_next_nonnote_insn,
8123         const_prev_real_insn, const_next_real_insn,
8124         const_prev_active_insn, const_next_active_insn, const_prev_label,
8125         const_next_label, modified_between_p, modified_in_p,
8126         const_note_storeskeep_with_call_p, condjump_label,
8127         reversed_comparison, reversed_comparison_code,
8128         reversed_comparison_code_parts, memory_modified_in_insn_p,
8129         stack_regs_mentioned): Likewise.
8130         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
8131         keep_with_call_p): Likewise.
8132         * sched-deps.c (deps_may_trap_p, sched_get_condition,
8133         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
8134         sd_lists_size, sd_lists_empty_p): Likewise.
8135         * sched-int.h (sched_insns_conditions_mutex_p,
8136         haifa_classify_insn, no_real_insns_p,
8137         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
8138         sd_lists_size, sd_lists_empty_p): Likewise.
8139         * sdbout.c (sdb_debug_hooks): Likewise.
8140         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
8141         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
8142         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
8143         Likewise.
8144         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
8145         tree_can_throw_internal): Likewise.
8146         * tree-flow-inline.h (phi_nodes): Likewise.
8147         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
8148         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
8149         * tree-gimple.c (const_get_call_expr_in): Likewise.
8150         * tree-gimple.h (const_get_call_expr_in): Likewise.
8151         * tree.c (const_lookup_attribute, attribute_list_equal,
8152         attribute_list_contained): Likewise.
8153         * tree.h (attribute_list_equal, attribute_list_contained,
8154         const_lookup_attribute): Likewise.
8155         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
8156
8157 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8158
8159         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
8160         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
8161
8162 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8163
8164         PR target/32991
8165         * config/alpha/constraints.md: Delete "svn:mime-type" property
8166         with svn propdel "svn:mime-type".
8167
8168 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8169
8170         PR middle-end/33181
8171         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
8172         non NOTE insn doesn't cross basic block.
8173         (noce_try_abs): Likewise.
8174         (noce_process_if_block): Likewise.
8175
8176 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
8177
8178         PR target/33151
8179         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
8180         operand without auto-inc-dec.
8181         * config/rs6000/rs6000.md (floatsidf2_internal): Use
8182         offsettable_mem_operand.
8183         (floatunssidf2_internal): Same.
8184         (fix_truncdfsi2_internal): Same.
8185         (floatsidf_ppc64): Same.
8186         (floatunssidf_ppc64): Same.
8187         (fix_trunctfsi2_internal): Same.
8188
8189 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8190
8191         PR bootstrap/30620
8192         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
8193         pass defines needed for version.c.
8194
8195 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
8196
8197         * configure.ac (--debug-prefix-map check): Change assembler
8198         version presumed to have feature to 2.18.
8199         * configure: Regenerate.
8200
8201 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8202
8203         * c-common.c (vector_types_convertible_p,
8204         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
8205         self_promoting_args_p): Constify.
8206         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
8207         c_promoting_integer_type_p, self_promoting_args_p,
8208         anon_aggr_type_p, vector_types_convertible_p): Likewise.
8209         * c-decl.c (anon_aggr_type_p): Likewise.
8210         * * c-dump.c (dump_stmt): Likewise.
8211         * c-objc-common.c (has_c_linkage): Likewise.
8212         * c-tree.h (same_translation_unit_p): Likewise.
8213         * c-typeck.c (null_pointer_constant_p,
8214         tagged_types_tu_compatible_p, function_types_compatible_p,
8215         type_lists_compatible_p, lvalue_or_else, lvalue_p,
8216         comptypes_internal, struct tagged_tu_seen_cache,
8217         same_translation_unit_p, alloc_tagged_tu_seen_cache,
8218         c_size_in_bytes): Likewise.
8219         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
8220         hash_ptr, eq_ptr): Likewise.
8221         * langhooks-def.h (lhd_decl_ok_for_sibcall,
8222         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
8223         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
8224         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
8225         Likewise.
8226         * optabs.c (optab_for_tree_code): Likewise.
8227         * optabs.h (optab_for_tree_code): Likewise.
8228         * rtl.h (simplify_rtx): Likewise.
8229         * simplify-rtx.c (simplify_rtx): Likewise.
8230         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
8231         dump_flag, dump_node): Likewise.
8232         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
8233         queue_and_dump_type, dump_flag): Likewise.
8234         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
8235         * tree-pass.h (dump_node): Likewise.
8236         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
8237         supportable_narrowing_operation): Likewise.
8238         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
8239         supportable_narrowing_operation): Likewise.
8240         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
8241         is_negative_overflow_infinity, is_positive_overflow_infinity,
8242         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
8243         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
8244         update_value_range, add_equivalence, ssa_name_nonnegative_p,
8245         ssa_name_nonzero_p, fp_predicate): Likewise.
8246         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
8247         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
8248         ssa_name_nonnegative_p): Likewise.
8249
8250 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
8251
8252         * config.gcc : Add x86_64-elf target.
8253
8254 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
8255
8256         * expr.c (store_expr): Fix order of store_by_pieces arguments.
8257
8258 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
8259             Nigel Stephens <nigel@mips.com>
8260
8261         PR target/11787
8262
8263         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
8264         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
8265         * expr.c (SET_BY_PIECES_P): Define.
8266         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
8267         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
8268         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
8269         store_by_pieces.
8270         * expr.h (SET_RATIO): Define.
8271         (can_store_by_pieces, store_by_pieces): Update prototypes.
8272         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
8273         can_store_by_pieces/store_by_pieces.
8274         (expand_builtin_memcpy_args): Likewise.
8275         (expand_builtin_strncpy): Likewise.
8276         (expand_builtin_memset_args): Likewise.  Also remove special case
8277         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
8278         decide what to do instead.
8279         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
8280         to can_store_by_pieces.
8281
8282         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
8283         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
8284
8285         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
8286         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
8287         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
8288         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
8289         (STORE_BY_PIECES_P): Define.
8290
8291 2007-08-24  Tom Tromey  <tromey@redhat.com>
8292
8293         * varpool.c (varpool_last_needed_node): Fix comment typo.
8294         * c-decl.c (duplicate_decls): Fix comment typo.
8295         (clone_underlying_type): Update comment.
8296
8297 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8298
8299         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
8300         alpha_in_small_data_p, alpha_split_complex_arg,
8301         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8302         Constify.
8303         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
8304         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
8305         Likewise.
8306         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
8307         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8308         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
8309         * config/darwin.c (darwin_binds_local_p): Likewise.
8310         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
8311         Likewise.
8312         * config/i386/i386-protos.h (i386_pe_binds_local_p,
8313         i386_pe_valid_dllimport_attribute_p): Likewise.
8314         * config/i386/i386.c (ix86_function_regparm,
8315         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
8316         x86_can_output_mi_thunk, ix86_mangle_type,
8317         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
8318         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
8319         i386_pe_binds_local_p): Likewise.
8320         * config/ia64/ia64.c
8321         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
8322         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
8323         ia64_invalid_conversion, ia64_invalid_unary_op,
8324         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8325         Likewise.
8326         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
8327         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
8328         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8329         * config/mips/mips.c (mips_use_blocks_for_constant_p,
8330         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
8331         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8332         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
8333         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
8334         * config/pa/pa.c (pa_commutative_p): Likewise.
8335         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
8336         Likewise.
8337         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
8338         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
8339         rs6000_use_blocks_for_constant_p,
8340         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
8341         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8342         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
8343         * config/s390/s390.c (s390_mangle_type,
8344         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
8345         Likewise.
8346         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8347         th_in_small_data_p): Likewise.
8348         * config/sh/sh.c (sh_ms_bitfield_layout_p,
8349         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8350         Likewise.
8351         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
8352         sparc_mangle_type): Likewise.
8353         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
8354         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
8355         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
8356         Likewise.
8357         * hooks.c (hook_bool_mode_const_rtx_false,
8358         hook_bool_mode_const_rtx_true,
8359         hook_bool_const_tree_hwi_hwi_const_tree_false,
8360         hook_bool_const_tree_hwi_hwi_const_tree_true,
8361         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8362         hook_constcharptr_const_tree_null,
8363         hook_constcharptr_const_rtx_null,
8364         hook_constcharptr_const_tree_const_tree_null,
8365         hook_constcharptr_int_const_tree_null,
8366         hook_constcharptr_int_const_tree_const_tree_null): New.
8367         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8368         hook_bool_tree_hwi_hwi_tree_false,
8369         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8370         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8371         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8372         hook_constcharptr_int_tree_null,
8373         hook_constcharptr_int_tree_tree_null): Delete.
8374         (default_can_output_mi_thunk_no_vcall): Constify.
8375         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8376         hook_bool_tree_hwi_hwi_tree_false,
8377         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8378         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8379         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8380         hook_constcharptr_int_tree_null,
8381         hook_constcharptr_int_tree_tree_null): Delete.
8382         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
8383         hook_bool_const_tree_hwi_hwi_const_tree_false,
8384         hook_bool_const_tree_hwi_hwi_const_tree_true,
8385         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8386         hook_constcharptr_const_tree_null,
8387         hook_constcharptr_const_rtx_null,
8388         hook_constcharptr_const_tree_const_tree_null,
8389         hook_constcharptr_int_const_tree_null,
8390         hook_constcharptr_int_const_tree_const_tree_null): New.
8391         (default_can_output_mi_thunk_no_vcall): Constify.
8392         * integrate.c (function_attribute_inlinable_p): Likewise.
8393         * integrate.h (function_attribute_inlinable_p): Likewise.
8394         * jump.c (rtx_renumbered_equal_p): Likewise.
8395         * output.h (decl_readonly_section, categorize_decl_for_section,
8396         default_use_anchors_for_symbol_p, default_binds_local_p,
8397         default_binds_local_p_1): Likewise.
8398         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
8399         Likewise.
8400         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8401         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
8402         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
8403         TARGET_COMP_TYPE_ATTRIBUTES,
8404         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
8405         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
8406         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
8407         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
8408         TARGET_DWARF_CALLING_CONVENTION): Likewise.
8409         * target.h (can_output_mi_thunk, needs_block_p,
8410         first_cycle_multipass_dfa_lookahead_guard_spec,
8411         vector_alignment_reachable, comp_type_attributes,
8412         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
8413         commutative_p, use_blocks_for_constant_p,
8414         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
8415         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
8416         invalid_within_doloop, valid_dllimport_attribute_p,
8417         split_complex_arg, invalid_arg_for_unprototyped_fn,
8418         invalid_conversion, invalid_unary_op, invalid_binary_op):
8419         Likewise.
8420         * targhooks.c (default_invalid_within_doloop,
8421         hook_invalid_arg_for_unprototyped_fn,
8422         default_builtin_vector_alignment_reachable): Likewise.
8423         (hook_bool_rtx_commutative_p): Delete.
8424         (hook_bool_const_rtx_commutative_p): New.
8425         * targhooks.h (default_invalid_within_doloop,
8426         default_builtin_vector_alignment_reachable,
8427         hook_invalid_arg_for_unprototyped_fn): Constify.
8428         (hook_bool_rtx_commutative_p): Delete.
8429         (hook_bool_const_rtx_commutative_p): New.
8430         * varasm.c (bss_initializer_p, decl_default_tls_model,
8431         categorize_decl_for_section, decl_readonly_section,
8432         default_use_anchors_for_symbol_p, default_binds_local_p,
8433         default_binds_local_p_1): Constify.
8434
8435 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8436
8437         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
8438         __NO_BUILTIN if -fno-builtin.
8439
8440 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8441
8442         * config/bfin/bfin.c (print_operand): Report error instead of
8443         ICE for wrong operand.
8444
8445 2007-08-24  Michael Matz  <matz@suse.de>
8446
8447         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
8448
8449 2007-08-24  Richard Guenther  <rguenther@suse.de>
8450
8451         PR middle-end/33166
8452         * tree-ssa.c (useless_type_conversion_p): Split into a
8453         recursive and a non-recursive part.
8454         (useless_type_conversion_p_1): New function.
8455         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
8456         from maybe_fold_offset_to_reference is trivially convertible
8457         to the desired type before doing the simplification.
8458
8459 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8460
8461         * expr.c (store_expr): Optimize initialization of an array
8462         with STRING_CST.
8463         * expr.h (builtin_strncpy_read_str): New prototype.
8464         * builtins.c (builtin_strncpy_read_str): Remove prototype.
8465         No longer static.
8466
8467 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
8468
8469         PR middle-end/33157
8470         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
8471         field when initializing if_info structure.
8472
8473 2007-08-24  Richard Guenther  <rguenther@suse.de>
8474
8475         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
8476         dependencies.
8477         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
8478         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
8479         * tree-inline.c (inlinable_function_p): Fold in common parts of
8480         the cannot_inline_tree_fn langhook.
8481         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
8482         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
8483         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8484         cannot_inline_tree_fn langhook.
8485         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8486         cannot_inline_tree_fn member.
8487
8488 2007-08-24  Richard Guenther  <rguenther@suse.de>
8489
8490         * expr.c (get_inner_reference): Do computation of bitoffset
8491         from offset in a way we can detect overflow reliably.
8492
8493 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8494
8495         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
8496
8497 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8498
8499         * config/bfin/bfin.opt (mfast-fp): Add.
8500         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
8501         libbffastfp override libgcc if -mfast-fp.
8502         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
8503         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
8504         (Blackfin Options): Document -mfast-fp.
8505
8506 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8507
8508         PR tree-optimization/32573
8509         PR middle-end/32946
8510         * tree-data-ref.c (initialize_data_dependence_relation): Clear
8511         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
8512         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
8513         (build_classic_dist_vector): Return false rather than true if
8514         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
8515         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
8516         returned false.  Don't call save_dist_v before calling
8517         build_classic_dist_vector_1.
8518         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
8519         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
8520         DDR_DIR_VECTS vectors.
8521
8522 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
8523
8524         * configure.ac (leb128): Modify sed statement to work with any
8525         binutils version string.
8526         * configure: Regenerate
8527
8528 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8529
8530         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
8531         Wrap in RTX_CODE macro guard.
8532         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
8533         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
8534         arm_mark_dllimport, arm_pe_encode_section_info,
8535         arm_pe_unique_section): Use ISO-C function declarations.
8536         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
8537         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
8538         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
8539         Likewise.
8540         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
8541         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
8542         defining.
8543         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
8544         warnings.
8545         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
8546         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
8547         (register_move_cost): Use ISO-C function declarations.
8548         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
8549         * config/score/score-protos.h (score_declare_object): Add
8550         ATTRIBUTE_PRINTF_4.
8551         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
8552         warnings.
8553         * final.c (profile_function): Avoid empty if-bodies.
8554         
8555         
8556         * calls.c (must_pass_in_stack_var_size,
8557         must_pass_in_stack_var_size_or_pad): Constify.
8558         * config/alpha/alpha-protos.h (function_value): Likewise.
8559         * config/alpha/alpha.c (alpha_return_in_memory,
8560         alpha_pass_by_reference, function_value,
8561         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
8562         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8563         Likewise.
8564         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
8565         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8566         TARGET_PROMOTE_PROTOTYPES): Likewise.
8567         * config/arm/arm-protos.h (arm_return_in_memory,
8568         arm_pad_arg_upward, arm_function_value): Likewise.
8569         * config/arm/arm.c (arm_pass_by_reference,
8570         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
8571         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8572         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
8573         Likewise.
8574         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
8575         * config/avr/avr-protos.h (avr_function_value): Likewise.
8576         * config/avr/avr.c (avr_return_in_memory,
8577         gas_output_limited_string, gas_output_ascii, avr_function_value,
8578         avr_return_in_memory): Likewise.
8579         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
8580         * config/bfin/bfin.c (bfin_pass_by_reference,
8581         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
8582         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
8583         Likewise.
8584         * config/cris/cris.c (cris_pass_by_reference,
8585         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
8586         * config/crx/crx.c (crx_return_in_memory): Likewise.
8587         * config/darwin.c (function_base, machopic_function_base_name):
8588         Likewise.
8589         * config/fr30/fr30.c (fr30_must_pass_in_stack,
8590         TARGET_PROMOTE_PROTOTYPES): Likewise.
8591         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
8592         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
8593         * config/i386/i386-protos.h (ix86_return_in_memory,
8594         ix86_sol10_return_in_memory): Likewise.
8595         * config/i386/i386.c (ix86_function_value,
8596         ix86_function_sseregparm, ix86_must_pass_in_stack,
8597         type_natural_mode, classify_argument, examine_argument,
8598         construct_container, ix86_pass_by_reference, function_value_32,
8599         function_value_64, ix86_function_value_1, return_in_memory_32,
8600         return_in_memory_64, return_in_memory_ms_64,
8601         ix86_return_in_memory, ix86_sol10_return_in_memory,
8602         TARGET_PROMOTE_PROTOTYPES): Likewise.
8603         * config/ia64/ia64-protos.h (ia64_function_value,
8604         ia64_hpux_function_arg_padding): Likewise.
8605         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
8606         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
8607         ia64_hpux_function_arg_padding): Likewise.
8608         * config/iq2000/iq2000-protos.h (function_arg,
8609         iq2000_function_value): Likewise.
8610         * config/iq2000/iq2000.c (iq2000_return_in_memory,
8611         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
8612         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8613         function_arg, iq2000_function_value): Likewise.
8614         * config/m32c/m32c-protos.h (m32c_function_value,
8615         m32c_promote_function_return): Likewise.
8616         * config/m32c/m32c.c (m32c_pass_by_reference,
8617         m32c_promote_prototypes, m32c_promote_function_return,
8618         m32c_function_value): Likewise.
8619         * config/m32r/m32r.c (m32r_return_in_memory,
8620         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8621         m32r_in_small_data_p): Likewise.
8622         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
8623         Likewise.
8624         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
8625         m68hc11_function_arg_padding): Likewise.
8626         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
8627         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
8628         m68k_function_value): Likewise.
8629         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
8630         mcore_function_value): Likewise.
8631         * config/mcore/mcore.c (handle_structs_in_regs,
8632         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8633         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8634         mcore_num_arg_regs, mcore_function_value): Likewise.
8635         * config/mips/mips-protos.h (mips_pad_arg_upward,
8636         mips_function_value): Likewise.
8637         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
8638         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
8639         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8640         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
8641         mips_function_value): Likewise.
8642         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
8643         Likewise.
8644         * config/mmix/mmix.c (mmix_pass_by_reference,
8645         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
8646         mmix_encode_section_info): Likewise.
8647         * config/mn10300/mn10300-protos.h (mn10300_function_value):
8648         Likewise.
8649         * config/mn10300/mn10300.c (mn10300_return_in_memory,
8650         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8651         mn10300_function_value): Likewise.
8652         * config/mt/mt-protos.h (mt_function_value): Likewise.
8653         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
8654         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
8655         * config/pa/pa-protos.h (function_arg_padding, function_value,
8656         pa_return_in_memory): Likewise.
8657         * config/pa/pa.c (pa_pass_by_reference,
8658         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8659         function_arg_padding, function_value, pa_return_in_memory):
8660         Likewise.
8661         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
8662         * config/rs6000/rs6000-protos.h (rs6000_function_value,
8663         function_arg_padding): Likewise.
8664         * config/rs6000/rs6000.c (rs6000_return_in_memory,
8665         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
8666         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
8667         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8668         function_arg_padding, altivec_expand_dst_builtin,
8669         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
8670         altivec_init_builtins, rs6000_common_init_builtins,
8671         rs6000_function_value): Likewise.
8672         * s390/s390-protos.h (s390_function_value): Likewise.
8673         * config/s390/s390.c (s390_function_arg_size,
8674         s390_pass_by_reference, s390_return_in_memory,
8675         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8676         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
8677         * config/score/score-protos.h (score_function_value): Likewise.
8678         * config/score/score.c (score_arg_partial_bytes,
8679         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8680         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
8681         score_pass_by_reference, score_add_offset, score_function_value):
8682         Likewise.
8683         * config/sh/sh-protos.h (sh_attr_renesas_p,
8684         sh_promote_prototypes): Likewise.
8685         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
8686         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
8687         sh_attr_renesas_p): Likewise.
8688         * config/sparc/sparc-protos.h (function_value,
8689         function_arg_padding): Likewise.
8690         * config/sparc/sparc.c (sparc_promote_prototypes,
8691         sparc_return_in_memory, sparc_pass_by_reference,
8692         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8693         function_arg_record_value_2, function_arg_record_value_1,
8694         function_arg_record_value, function_arg_record_value,
8695         function_arg_padding, function_value): Likewise.
8696         * config/spu/spu-protos.h (spu_function_value): Likewise.
8697         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
8698         spu_function_value): Likewise.
8699         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
8700         Likewise.
8701         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
8702         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8703         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8704         Likewise.
8705         * config/v850/v850.c (v850_return_in_memory,
8706         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
8707         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
8708         * config/xtensa/xtensa.c (xtensa_return_in_msb,
8709         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8710         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8711         Likewise.
8712         * explow.c (promote_mode, hard_function_value): Likewise.
8713         * expr.h (hard_function_value, promote_mode): Likewise.
8714         * function.c (aggregate_value_p): Likewise.
8715         * hooks.c (hook_bool_const_tree_true): New.
8716         * hooks.h (hook_bool_const_tree_true): New.
8717         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
8718         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
8719         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8720         TARGET_RETURN_IN_MSB): Likewise.
8721         * target.h (promote_function_args, promote_function_return,
8722         promote_prototypes, return_in_memory, return_in_msb,
8723         pass_by_reference, must_pass_in_stack, callee_copies,
8724         function_value): Likewise.
8725         * targhooks.c (default_return_in_memory,
8726         hook_pass_by_reference_must_pass_in_stack,
8727         hook_callee_copies_named,
8728         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8729         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8730         default_function_value): Likewise. 
8731         * targhooks.h (default_return_in_memory,
8732         hook_pass_by_reference_must_pass_in_stack,
8733         hook_callee_copies_named,
8734         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8735         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8736         default_function_value): Likewise.
8737         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
8738         (equiv_class_label_hash, equiv_class_label_eq): Constify.
8739         * tree-vectorizer.c (bb_in_loop_p): Likewise.
8740         * tree.c (needs_to_live_in_memory): Likewise.
8741         * tree.h (struct tree_type, needs_to_live_in_memory,
8742         aggregate_value_p, must_pass_in_stack_var_size,
8743         must_pass_in_stack_var_size_or_pad): Likewise.
8744         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
8745         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
8746         lookup_filename): Likewise.
8747
8748 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8749
8750         PR target/17390
8751         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
8752         fake fcomi i387 instruction for !TARGET_CMOVE.
8753         (ix86_expand_branch): Expand natural sequence with one jump for
8754         all targets, not only TARGET_CMOVE.
8755         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
8756         pattern to implement fake fcomi sequence.  Split instruction after
8757         reload to correct compare sequences.
8758         (*cmpfp_xf_cc): Ditto.
8759         (*cmpfp_<mode>_cc): Ditto.
8760         (*cmpfp_u_cc): Ditto.
8761         (*cmpfp_<mode>_cc): Ditto.
8762
8763 2007-08-23  Richard Guenther  <rguenther@suse.de>
8764
8765         * tree-pretty-print.c (dump_generic_node): Annotate
8766         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
8767
8768 2007-08-23  Richard Guenther  <rguenther@suse.de>
8769
8770         * builtins.c (expand_builtin_mathfn): Wrap argument in
8771         save_expr directly instead of re-building the call.
8772         (expand_builtin_mathfn_2): Likewise.
8773         (expand_builtin_mathfn_3): Likewise.
8774         (expand_builtin_interclass_mathfn): Likewise.
8775         (expand_builtin_int_roundingfn): Set arg.
8776         (expand_builtin_int_roundingfn_2): Likewise.
8777
8778 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
8779
8780         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
8781         *sse_nand<mode>3, *sse_xor<mode>3): New.
8782
8783 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8784
8785         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
8786         * config/i386/i386.c (print_operand): Handle ';' code.  Output
8787         semicolon for TARGET_MACHO.
8788         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
8789         emit semicolon after 'lock' prefix.
8790         (sync_double_compare_and_swap<mode>): Ditto.
8791         (*sync_double_compare_and_swapdi_pic): Ditto.
8792         (*sync_compare_and_swap_cc<mode>): Ditto.
8793         (sync_double_compare_and_swap_cc<mode>): Ditto.
8794         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8795         (sync_old_add<mode>): Ditto.
8796         (sync_add<mode>): Ditto.
8797         (sync_sub<mode>): Ditto.
8798         (sync_ior<mode>): Ditto.
8799         (sync_and<mode>): Ditto.
8800         (sync_xor<mode>): Ditto.
8801
8802 2007-08-22  Chao-ying Fu  <fu@mips.com>
8803
8804         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
8805         in DEF_RTL_EXPR.
8806         (copy_rtx): Handle CONST_FIXED.
8807         (rtx_equal_p): Likewise.
8808         * rtl.h (fixed_value.h): New include.
8809         (rtx_def): Add a new field of fixed_value to u.
8810         (XCNMPFV): Define for accessing fixed_value.
8811         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
8812         Define.
8813         * rtl.def (CONST_FIXED): New constant.
8814         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
8815         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
8816         US_ASHIFT): New codes.
8817         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
8818         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
8819         unsigned_fract_convert, unsigned_sat_fract): Document them.
8820         * varasm.c (assemble_integer): Extend to support fixed-point constants
8821         by using different machine classes.
8822         (decode_addr_const): Handle FIXED_CST.
8823         (const_hash_1): Likewise.
8824         (compare_constant): Likewise.
8825         (copy_constant): Likewise.
8826         (const_rtx_hash_1): Handle CONST_FIXED.
8827         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8828         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8829         MODE_VECTOR_UACCUM.
8830         (initializer_constant_valid_p): Handle FIXED_CST.
8831         (output_constant): Support FIXED_POINT_TYPE.
8832         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
8833         * cse.c (hash_rtx): Support CONST_FIXED.
8834         (exp_equiv_p): Likewise.
8835         (cannon_reg): Likewise.
8836         (fold_rtx): Likewise.
8837         (equiv_constant): Likewise.
8838         (cse_process_notes_1): Likewise.
8839         (count_reg_usage): Likewise.
8840         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
8841         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
8842         (wrap_constant): Check CONST_FIXED.
8843         (cselib_hash_rtx): Support CONST_FIXED.
8844         (cselib_subst_to_values): Likewise.
8845         * df-scan.c (df_uses_record): Likewise.
8846         * gcse.c (want_to_gcse_p): Likewise.
8847         (oprs_unchanged_p): Likewise.
8848         (oprs_not_set_p): Likewise.
8849         (compute_transp): Likewise.
8850         (extract_mentioned_regs_helper): Likewise.
8851         * genemit.c (gen_exp): Likewise.
8852         * local-alloc.c (equiv_init_varies_p): Likewise.
8853         (contains_replace_regs): Likewise.
8854         (memref_referenced_p): Likewise.
8855         * loop-invariant.c (check_maybe_invariant): Likewise.
8856         (hash_invariant_expr_1): Likewise.
8857         (invariant_expr_equal_p): Likewise.
8858         * postreload-gcse.c (oprs_unchanged_p): Likewise.
8859         * regclass.c (reg_scan_mark_refs): Likewise.
8860         * regrename.c (scan_rtx): Likewise.
8861         * resource.c (mark_referenced_resources): Likewise.
8862         (mark_set_resources): Likewise.
8863         * rtlanal.c (rtx_unstable_p): Likewise.
8864         (rtx_varies_p): Likewise.
8865         (count_occurrences): Likewise.
8866         (reg_mentioned_p): Likewise.
8867         (modified_between_p): Likewise.
8868         (modified_in_p): Likewise.
8869         (volatile_insn_p): Likewise.
8870         (volatile_refs_p): Likewise.
8871         (side_effects_p): Likewise.
8872         (may_trap_p_1): Likewise.
8873         (inequality_comparisons_p): Likewise.
8874         (computed_jump_p_1): Likewise.
8875         (commutative_operand_precedence): Likewise.
8876         * sched-deps.c (sched_analyze_2): Likewise.
8877         * sched-vis.c (print_value): Likewise.
8878         * reload.c (operands_match_p): Likewise.
8879         (subst_reg_equivs): Likewise.
8880         * reload1.c (eliminate_regs_1): Likewise.
8881         (elimination_effects): Likewise.
8882         (scan_paradoxical_subregs): Likewise.
8883         * alias.c (rtx_equal_for_memref_p): Likewise.
8884         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
8885         * emit-rtl.c (const_fixed_htab): New hash table.
8886         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
8887         Declare.
8888         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
8889         const_fixed_from_fixed_value): New functions.
8890         (verify_rtx_sharing): Handle CONST_FIXED.
8891         (copy_rtx_if_shared_1): Likewise.
8892         (reset_used_flags): Likewise.
8893         (set_used_flags): Likewise.
8894         (copy_insn_1): Likewise.
8895         (init_emit_once): Create const_fixed_htab.
8896         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
8897
8898 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
8899
8900         PR tree-optimization/32949
8901         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
8902         before failing for ivs with non-constant step.
8903
8904 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
8905
8906         * doc/md.texi (Iterators): Renamed from Macros.  All contents
8907         changed to reflect rename of respectively define_code_macro and
8908         define_mode_macro to define_code_iterator and define_mode_iterator.
8909         (Mode Iterators, Code Iterators): Similar.
8910         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
8911         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
8912         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
8913         (initialize_iterators, find_iterator, check_code_iterator)
8914         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
8915         (read_mapping, read_rtx_1): Similar.
8916         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
8917         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
8918         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
8919         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
8920         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
8921         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
8922         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
8923         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
8924         config/rs6000/sync.md, config/rs6000/rs6000.md,
8925         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
8926         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
8927         config/vax/vax.md, config/bfin/bfin.md: Similar.
8928
8929 2007-08-22  David Daney  <ddaney@avtrex.com>
8930
8931         * doc/install.texi (Testing): Mention testing on a simulator.
8932
8933 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
8934
8935         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
8936
8937         * doc/libgcc.texi (Decimal float library routines): Fix formatting
8938         and rearrange floating point conversion functions into different
8939         categories.
8940
8941 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
8942
8943         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
8944         dfa_post_advance_cycle): New scheduler hooks.
8945         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8946         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
8947         new hooks.
8948         (TARGET_SCHED): Use them.
8949         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8950         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
8951         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
8952
8953         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
8954         function to facilitate debugging.
8955         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
8956         (output_insn_has_dfa_reservation_p): New static function to output
8957         insn_has_dfa_reservation_p ().
8958         (write_automata): Use it.
8959         * genattr.c (main): Output declaration for
8960         insn_has_dfa_reservation_p ().
8961
8962 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
8963             Richard Guenther <rguenther@suse.de>
8964         
8965         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
8966         * simplify_rtx (simplify_binary_operation_1): Likewise.
8967                 
8968 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8969
8970         PR rtl-optimization/32557
8971         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
8972         of REGNO (mws->mw_reg).
8973
8974 2007-08-22  Richard Guenther  <rguenther@suse.de>
8975
8976         PR middle-end/33007
8977         * builtins.c (expand_builtin_int_roundingfn): Replace call
8978         argument wrapped with SAVE_EXPR directly.
8979         (expand_builtin_int_roundingfn_2): Likewise.
8980
8981 2007-08-22  Richard Guenther  <rguenther@suse.de>
8982
8983         * tree-inline.c (inlinable_function_p): Restore disregarding
8984         inline limits for GNU extern inline functions.
8985
8986 2007-08-22  Richard Guenther  <rguenther@suse.de>
8987
8988         PR middle-end/32563
8989         * tree.c (host_integerp): Treat sizetype as signed as it is
8990         sign-extended.
8991
8992 2007-08-21  Ian Lance Taylor  <iant@google.com>
8993
8994         PR tree-optimization/33134
8995         * tree-vrp.c (adjust_range_with_scev): Call
8996         set_value_range_to_value.
8997
8998 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8999
9000         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
9001         prototype.
9002         
9003 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
9004
9005         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
9006         whitespace.
9007
9008 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
9009
9010         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
9011         cases to set eight bytes at a time.
9012         (expand_block_move): Likewise.
9013         
9014 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
9015
9016         PR debug/32610
9017         * dwarf2out.c (gen_decl_die): Don't call
9018         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
9019
9020 2007-08-21  Paul Brook  <paul@codesourcery.com>
9021             Nathan Sidwell  <nathan@codesourcery.com>
9022             Mark Mitchell  <mark@codesourcery.com>
9023             Joseph Myers  <joseph@codesourcery.com>
9024
9025         * configure.ac: Add --with-pkgversion and --with-bugurl.
9026         * configure: Regenerate.
9027         * doc/install.texi: Document them.
9028         * version.c (version_string): Remove VERSUFFIX.
9029         (VERSUFFIX): Remove.
9030         (pkgversion_string): New.
9031         (bug_report_url): Do not hard-code initializer.
9032         * version.h (pkgversion_string): Declare.
9033         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
9034         Define.
9035         (version.o): Define PKGVERSION and BUGURL.
9036         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
9037         (%.pod): Define BUGURL.
9038         * gcc.c (process_command, main): Use pkgversion_string.
9039         * toplev.c (compile_file, print_version): Likewise.
9040         * protoize.c (main): Likewise.
9041         * gcov.c (print_version): Likewise.  Update copyright date.
9042         * gcov-dump.c (print_version): Likewise.  Update copyright date.
9043         * mips-tdump.c (main): Likewise.  Update copyright date.
9044         * mips-tfile.c (main): Likewise.  Update copyright date.
9045         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
9046         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
9047         shorten description.
9048         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
9049         * doc/gccint.texi: Likewise.
9050         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
9051         Update copyright date.
9052
9053 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
9054
9055         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
9056         (ix86_expand_strlensi_unroll_1): Ditto.
9057         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
9058         (ix86_expand_carry_flag_compare): Update comment.
9059
9060 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
9061
9062         PR middle-end/32912
9063         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
9064         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
9065
9066 2007-08-21  Richard Guenther  <rguenther@suse.de>
9067
9068         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
9069
9070 2007-08-21  Richard Guenther  <rguenther@suse.de>
9071
9072         PR middle-end/33122
9073         * fold-const.c (fold_binary): Remove index +p PTR folding.
9074         Fix types of POINTER_PLUS_EXPR generated by folding of
9075         (PTR +p B) +p A.
9076
9077 2007-08-20  Chao-ying Fu  <fu@mips.com>
9078
9079         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
9080         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
9081         RID_ONEWAY, so that it can be checked in declspecs_add_type.
9082         (c_common_fixed_point_type_for_size): Declare.
9083         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
9084         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
9085         (c_token_starts_declspecs): Likewise.
9086         (c_parser_declspecs): Likewise.
9087         (c_parser_attributes): Likewise.
9088         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
9089         (c_declspecs): Add saturating_p.
9090         * c-decl.c (build_null_declspecs): Initialize saturating_p.
9091         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
9092         _Sat.  Handle RID_SAT.
9093         Avoid using void, bool, char, int, float, double, _Decimal32,
9094         _Decimal64, _Decimal128, and complex with _Sat.
9095         Handle RID_FRACT and RID_ACCUM.
9096         Make sure _Sat is used with _Fract or _Accum.
9097         (finish_declspecs): Handle cts_fract and cts_accum.
9098         * c-common.c (fixed-value.h): New include.
9099         (constant_expression_warning): Handle FIXED_CST.
9100         (overflow_warning): Likewise.
9101         (warnings_for_convert_and_check): Likewise.
9102         (c_common_fixed_point_type_for_size): New.
9103         (c_common_type_for_mode): Handle fixed-point modes to
9104         return various saturating/non-saturating, signed/unsigned types.
9105         (c_common_signed_or_unsigned_type): Support fixed-point types.
9106         (shorten_compare): Check fixed-point zero.
9107         Handle FIXED_POINT_TYPE.
9108         (c_common_truthvalue_conversion): Handle FIXED_CST.
9109         Handle FIXED_POINT_TYPE.
9110         (c_common_nodes_and_builtins): Record builtin types for fixed-point
9111         types.
9112         (handle_mode_attribute): Handle fixed-point modes.  Need to check
9113         if the signness of base type and fixed-point modes are consistent.
9114         (handle_vector_size_attribute): Handle fixed-point modes.
9115         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
9116         (warn_for_div_by_zero): Check fixed-point zero.
9117         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
9118         a common fixed-point type based on fbit, ibit, sign, and saturation.
9119         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
9120         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
9121         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
9122         (convert_for_assignment): Support FIXED_POINT_TYPE.
9123         (digest_init): Handle FIXED_POINT_TYPE.
9124         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
9125         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
9126         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
9127         GE_EXPR, LT_EXPR, GT_EXPR.
9128         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
9129         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
9130         * target.h (gcc_target): Add fixed_point_supported_p.
9131         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
9132         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
9133         (default_fixed_point_supported_p): Define.
9134         * targhooks.h (default_fixed_point_supported_p): Declare.
9135         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
9136         * doc/install.texi (Configuration): Add --enable-fixed-point.
9137         * configure.ac (--enable-fixed-point): New to enable fixed-point
9138         arithmetic extension to C.  For mips targets, we enable it by default.
9139         * configure, config.in: Regenerate.
9140
9141 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
9142
9143         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
9144
9145 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
9146
9147         * dwarf2out.c (text_section_used): Move declaration outside ifdef
9148         DWARF2_DEBUGGING_INFO.
9149         (cold_text_section_used): Same.
9150         (cold_text_section): Same.
9151
9152 2007-08-20  Richard Guenther  <rguenther@suse.de>
9153
9154         * c-typeck.c (convert_for_assignment): Use the type of
9155         the member for the initialization.
9156
9157 2007-08-20  Richard Guenther  <rguenther@suse.de>
9158
9159         * c-objc-common.c (c_disregard_inline_limits): Remove.
9160         * c-objc-common.h (c_disregard_inline_limits): Likewise.
9161         * cgraphunit.c (cgraph_process_new_functions): Call
9162         disregard_inline_limits_p.
9163         (cgraph_preserve_function_body_p): Likewise.
9164         * ipa-inline.c (compute_inline_parameters): Likewise.
9165         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
9166         Remove.
9167         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
9168         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9169         disregard_inline_limits langhook.
9170         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
9171         Remove.
9172         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9173         disregard_inline_limits langhook.
9174         * tree-inline.c (disregard_inline_limits_p): New function.
9175         * tree-inline.h (disregard_inline_limits_p): Declare.
9176
9177 2007-08-20  Richard Guenther  <rguenther@suse.de>
9178
9179         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
9180         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
9181         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9182         auto_var_in_fn_p langhook.
9183         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
9184         move ...
9185         * tree.c (auto_var_in_fn_p): ... here.
9186         (find_var_from_fn): Call auto_var_in_fn_p directly.
9187         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9188         auto_var_in_fn_p langhook.
9189         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
9190         (copy_body_r): Likewise.
9191         (self_inlining_addr_expr): Likewise.
9192         * tree.h (auto_var_in_fn_p): Declare.
9193
9194 2007-08-20  Richard Guenther  <rguenther@suse.de>
9195
9196         * tree.c (WALK_SUBTREE): Call walk_tree_1.
9197         (walk_type_fields): Take lh parameter.
9198         (walk_tree): Rename to ...
9199         (walk_tree_1): ... this.  Do not call the walk_subtrees
9200         langhook but the now passed callback.  Pass lh on recursion.
9201         (walk_tree_without_duplicates): Rename to ...
9202         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
9203         and call walk_tree_1.
9204         * tree.h (walk_tree_lh): New typedef.
9205         (walk_tree_1): Declare.
9206         (walk_tree_without_duplicates_1): Likewise.
9207         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
9208         (walk_tree_without_duplicates): New define to
9209         walk_tree_without_duplicates_1 with NULL lh parameter.
9210         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
9211         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
9212         langhook.
9213         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
9214         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
9215         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
9216         initializer.
9217
9218 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9219
9220         PR middle-end/30564
9221         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
9222         code in front of the compacting of basic blocks.
9223         Move the folding of statements inbetween the cgraph checking
9224         and compacting of basic blocks.
9225
9226 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9227            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
9228
9229         PR target/32522
9230         * config/alpha/alpha.c (va_list_skip_additions): Check for
9231         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
9232         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
9233         PLUS_EXPR when checking ap.__base.
9234         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
9235         when doing addition on pointer types.  Use size_int instead of
9236         build_int_cst.
9237         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
9238         ptr_type in the second operand.
9239
9240 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9241
9242         PR target/33115
9243         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
9244
9245 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9246
9247         PR middle-end/32940
9248         * cfgexpand.c  (expand_one_register_var): Mark pointer
9249         DECL_ARTIFICIAL as REG_POINTER also.
9250         * stmt.c (expand_decl): Likewise.
9251
9252 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
9253
9254         Fix PR 32772
9255         Fix PR 32716
9256         Fix PR 32328
9257         Fix PR 32303
9258
9259         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
9260         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
9261         on_worklist argument and avoid adding things to worklist multiple
9262         times.
9263         (add_to_worklist): Ditto.
9264         (mark_aliases_call_clobbered): Mark entire structure clobbered if
9265         single SFT is clobbered.
9266         (set_initial_properties): Ditto.
9267         (compute_call_clobbered): Update for changes to function
9268         arguments.
9269         (create_overlap_variables_for): Always create SFT for offset 0.
9270         (create_structure_vars): Handle PHI's, since we are in SSA form at
9271         this point.
9272         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
9273         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
9274         TARGET_MEM_REF.
9275         (add_vars_for_offset): Figure out aliases from access + points-to.
9276         (add_virtual_operand): Use add_vars-for_offset.
9277         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
9278         (add_call_clobber_ops): Remove makes_clobbering_call set.
9279         (get_expr_operands): Always pass through the INDIRECT_REF
9280         reference.
9281         * tree-ssa-structalias.c (struct constraint_graph): Remove
9282         variables member.
9283         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
9284         address_taken, pt_used, number_incoming.
9285         (FIRST_ADDR_NODE): Removed.
9286         (merge_graph_nodes): Remove broken code for the moment.
9287         (init_graph): New function.
9288         (build_pred_graph): Remove code to init_graph.
9289         Add location equivalence support.
9290         (struct scc_info): Rename roots to deleted.
9291         (scc_visit): Ditto.
9292         (init_scc_info): Ditto
9293         (init_topo_info): Use graph->size.
9294         (compute_topo_order): Ditto.
9295         (do_da_constraint): Removed.
9296         (do_sd_constraint): Remove calls to find().
9297         set_union_with_increment should always get 0 as last arg here.
9298         (do_complex_constraint): Replace do_da_constraint with assert.
9299         Stop calling find.
9300         (struct equiv_class_label): New.
9301         (pointer_equiv_class_table): Ditto.
9302         (location_equiv_class_table): Ditto.
9303         (equiv_class_label_hash): Ditto.
9304         (equiv_class_label_eq): Ditto
9305         (equiv_class_lookup): Ditto.
9306         (equiv_class_ladd): Ditto.
9307         (pointer_equiv_class): Ditto.
9308         (location_equiv_class): Ditto.
9309         (condense_visit): Rename and rewrite from label_visit to do only
9310         SCC related stuff for HU.
9311         (label_visit): Do HU work for HU.
9312         (perform_var_substitution): Update to do HU and location
9313         equivalence.
9314         (free_var_substitution_info): Update to free HU and location
9315         equivalence structures.  */
9316         (find_equivalent_node): Update for pointer but not location
9317         equivalence.
9318         (unite_pointer_equivalences): New function.
9319         (move_complex_constraints): Rewrite to only do moving.
9320         (rewrite_constraints): Split out of move_complex_constraints.
9321         (solve_graph): Use graph->size.
9322         (process_constraint_1): Add from_call argument, use it.
9323         Split *a = &b into two constraints.
9324         (process_constraint): Use new process_constraint_1.
9325         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
9326         (get_constraint_for): Handle non-pointer integers properly.
9327         Remove code that used to handle structures.
9328         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
9329         with unknown addends.
9330         (handle_rhs_call): New function.
9331         (find_func_aliases): Use handle_rhs_call.
9332         (set_uids_in_ptset): Add an assert.
9333         (set_used_smts): Fix bug in not considering unified vars.
9334         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
9335         (compute_points_to_sets): Update for other function changes.
9336         (delete_points_to_sets): Ditto.
9337         (ipa_pta_execute): Ditto.
9338         (pass_ipa_pta): We need to update SSA after ipa_pta.
9339         
9340 2007-08-19  Jan Hubicka  <jh@suse.cz>
9341
9342         * i386.md: Replace "rim" and "mri" constraints by "g".
9343
9344 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
9345
9346         * dwarf2out.c (text_section_used, cold_text_section_used,
9347         cold_text_section, dwarf2out_note_section_used): New.
9348         (dwarf2out_init): Initialize cold_text_section.
9349         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
9350         dwarf2out_note_section_used.
9351         (size_of_aranges): Only count entry for text section if it was
9352         used.  Count entry for cold text section if it was used.
9353         (output_aranges): Only output entries for text section and cold
9354         text section if they were used.
9355
9356 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9357
9358         * tree-pretty-print.c (debug_generic_expr): Add a comment about
9359         the function.
9360         (debug_generic_stmt): Likewise.
9361         (debug_tree_chain): Likewise.
9362
9363 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9364
9365         * tree-data-refs.c (split_constant_offset): Expose.
9366         * tree-data-refs.h (split_constant_offset): Add declaration.
9367
9368         * tree-vectorizer.h (dr_alignment_support): Renamed
9369         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
9370         Added a new value dr_explicit_realign.
9371         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
9372         dr_offset, dr_step, and dr_aligned_to, along with new access
9373         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
9374         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
9375         STMT_VINFO_DR_ALIGNED_TO.
9376
9377         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
9378         documentation.
9379         In case of outer-loop vectorization with non-fixed misalignment - use
9380         the dr_explicit_realign scheme instead of the optimized realignment
9381         scheme.
9382         (new_stmt_vec_info): Initialize new fields.
9383
9384         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
9385         'nested_in_vect_loop' case. Change verbosity level.
9386         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
9387         Don't fail on zero step in the outer-loop for loads.
9388         (vect_analyze_data_refs): Call split_constant_offset to calculate
9389         base, offset and init relative to the outer-loop.
9390
9391         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
9392         BSI function argument with a new function argument - at_loop.
9393         Simplify the condition that determines STEP. Takes additional argument
9394         INV_P. Support outer-loop vectorization (handle the
9395         nested_in_vect_loop case), including zero step in the outer-loop. Call
9396         vect_create_addr_base_for_vector_ref with additional argument.
9397         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
9398         Updated function documentation. Handle the 'nested_in_vect_loop' case.
9399         Fixed and simplified calculation of step.
9400         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
9401         of bsi, and with additional argument. Call bump_vector_ptr with
9402         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
9403         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
9404         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
9405         when the realignment setup needs to take place inside the loop.
9406         Support the dr_explicit_realign scheme. Allow generating the optimized
9407         realignment scheme for outer-loop vectorization. Added documentation.
9408         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
9409         the 'nested_in_vect_loop' case, including loads that are invariant in
9410         the outer-loop and the realignment schemes. Handle the case when the
9411         realignment setup needs to take place inside the loop. Call
9412         vect_setup_realignment with additional arguments.  Call
9413         vect_create_data_ref_ptr with additional argument and with loop instead
9414         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
9415         (vect_gen_niters_for_prolog_loop): Call
9416         vect_create_addr_base_for_vector_ref with additional arguments.
9417         (vect_create_cond_for_align_checks): Likewise.
9418         (bump_vector_ptr): Updated to support the new dr_explicit_realign
9419         scheme: takes additional argument bump; argument ptr_incr is now
9420         optional; updated documentation.
9421         (vect_init_vector): Takes additional argument (bsi). Use it, if
9422         available, to insert the vector initialization.
9423         (get_initial_def_for_induction): Pass additional argument in call to
9424         vect_init_vector.
9425         (vect_get_vec_def_for_operand): Likewise.
9426         (vect_setup_realignment): Likewise.
9427         (vectorizable_load): Likewise.
9428
9429 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9430
9431         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
9432         as argument instead of struct loop.
9433         (nested_in_vect_loop_p): New function.
9434         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
9435         vect_used_in_outer.
9436         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
9437         from other phis in the loop.
9438         (destroy_loop_vec_info): Add additional argument to declaration.
9439
9440         * tree-vectorizer.c (supportable_widening_operation): Also check if
9441         nested_in_vect_loop_p (don't allow changing the order in this case).
9442         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
9443         of struct loop. Call nested_in_vect_loop_p and don't require
9444         flag_unsafe_math_optimizations if it returns true.
9445         (new_stmt_vec_info): When setting def_type for phis differentiate 
9446         loop-header phis from other phis.
9447         (bb_in_loop_p): New function.
9448         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
9449         just update their loop_vinfo.  Order of BB traversal now matters -
9450         call dfs_enumerate_from with bb_in_loop_p.
9451         (destroy_loop_vec_info): Takes additional argument to control whether
9452         stmt_vinfo of the loop stmts should be destroyed as well.
9453         (vect_is_simple_reduction): Allow the "non-reduction" use of a
9454         reduction stmt to be defines by a non loop-header phi.
9455         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
9456
9457         * tree-vect-transform.c (vectorizable_reduction): Call
9458         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
9459         (vectorizable_call): Likewise.
9460         (vectorizable_conversion): Likewise.
9461         (vectorizable_operation): Likewise.
9462         (vectorizable_type_promotion): Likewise.
9463         (vectorizable_type_demotion): Likewise.
9464         (vectorizable_store): Likewise.
9465         (vectorizable_live_operation): Likewise.
9466         (vectorizable_reduction): Likewise. Also pass loop_info to
9467         vect_is_simple_reduction instead of loop.
9468         (vect_init_vector): Call nested_in_vect_loop_p.
9469         (get_initial_def_for_reduction): Likewise.
9470         (vect_create_epilog_for_reduction): Likewise.
9471         (vect_init_vector): Check which loop to work with, in case there's an
9472         inner-loop.
9473         (get_initial_def_for_inducion): Extend to handle outer-loop
9474         vectorization. Fix indentation.
9475         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
9476         In the case vect_induction_def get the vector def from the induction
9477         phi node, instead of calling get_initial_def_for_inducion.
9478         (get_initial_def_for_reduction): Extend to handle outer-loop 
9479         vectorization.
9480         (vect_create_epilog_for_reduction): Extend to handle outer-loop
9481         vectorization.
9482         (vect_transform_loop): Change assert to just skip this case.  Add a
9483         dump printout.
9484         (vect_finish_stmt_generation): Add a couple asserts.
9485
9486         (vect_estimate_min_profitable_iters): Multiply
9487         cost of inner-loop stmts (in outer-loop vectorization) by estimated
9488         inner-loop bound.
9489         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
9490         this is an inner-loop reduction in outer-loop vectorization.
9491
9492         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
9493         Same code as what used to be vect_analyze_scalar_cycles, only with
9494         additional argument loop, and loop_info passed to
9495         vect_is_simple_reduction instead of loop.
9496         (vect_analyze_scalar_cycles): Code factored out into
9497         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
9498         Updated documentation.
9499         (analyze_operations): Check for inner-loop loop-closed exit-phis during
9500         outer-loop vectorization that are live or not used in the outerloop,
9501         cause this requires special handling.
9502         (vect_enhance_data_refs_alignment): Don't consider versioning for
9503         nested-loops.
9504         (vect_analyze_data_refs): Check that there are no datarefs in the
9505         inner-loop.
9506         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
9507         and vect_used_in_outer_by_reduction cases.
9508         (process_use): Also consider the case of outer-loop stmt defining an
9509         inner-loop stmt and vice versa.
9510         (vect_analyze_loop_1): New function.
9511         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
9512         loops.  Call vect_analyze_loop_1.
9513         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
9514         been vectorized.  Call destroy_loop_vec_info with additional argument.
9515
9516         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
9517         in the inner-loop when doing outer-loop vectorization. Add
9518         documentation and printout.
9519         (vect_recog_dot_prod_pattern): Likewise. Also add check for
9520         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
9521
9522 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
9523
9524         * tree-affine.h (print_aff): New prototype.
9525         (debug_aff): Likewise.
9526         * tree-affine.c (print_aff): New function.
9527         (debug_aff): Likewise.
9528
9529 2007-08-18  Paul Brook  <paul@codesourcery.com>
9530             Joseph Myers  <joseph@codesourcery.com>
9531
9532         * common.opt (-fdebug-prefix-map=): New option.
9533         * opts.c: Include debug.h.
9534         (common_handle_option): Handle -fdebug-prefix-map.
9535         * final.c: Include ggc.h.
9536         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
9537         remap_debug_filename): New.
9538         * Makefile.in (final.o, opts.o): Update dependencies.
9539         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
9540         * configure.ac: Check for assembler --debug-prefix-map support.
9541         * configure, config.in: Regenerate.
9542         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
9543         (ASM_DEBUG_SPEC): Include ASM_MAP.
9544         * doc/install.texi (--with-debug-prefix-map): Document.
9545         * doc/invoke.texi (-fdebug-prefix-map): Document.
9546         * dbxout.c (dbxout_init, dbxout_start_source_file,
9547         dbxout_source_file): Call remap_debug_filename.
9548         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
9549         dwarf2out_start_source_file, dwarf2out_finish): Call
9550         remap_debug_filename.
9551         (file_table_relative_p): Do not check d->emitted_number.
9552         * toplev.c (output_file_directive): Call remap_debug_filename.
9553         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
9554         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
9555
9556 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9557
9558         * loop-invariant.c (find_invariants_to_move): Add missing macro
9559         argument.
9560
9561 2007-08-17  Tom Tromey  <tromey@redhat.com>
9562
9563         * tree.h (struct tree_label_decl): Removed old "java" fields.
9564
9565 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
9566             Nigel Stephens  <nigel@mips.com>
9567
9568         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
9569         Treat -mno-data-in-code and -mcode-xonly as aliases for
9570         -mcode-readable=no and -mcode-readable=pcrel respectively.
9571         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
9572         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
9573         (MULTILIB_DIRNAMES): Update accordingly.
9574
9575 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
9576
9577         * Makefile.in (version.o): Depend on $(REVISION) only if
9578         REVISION_s is defined.
9579
9580 2007-08-17  Sa Liu  <saliu@de.ibm.com>
9581             Ulrich Weigand  <uweigand@de.ibm.com>
9582
9583         PR middle-end/32970
9584         * tree.c (reconstruct_complex_type): For a pointer to a vector,
9585         use build_qualified_type to retain qualifiers of the base type.
9586
9587 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
9588
9589         * config/score/score.md : Update pattern tablejump.
9590         * config/score/score.c : Update score_initialize_trampoline 
9591         function.
9592         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
9593         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
9594         * doc/contrib.texi: Add my entry.
9595
9596 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
9597
9598         * Makefile.in (REVISION): New.
9599         (REVISION_c): New.
9600         (REVISION_s): New.
9601         (version.o): Also depend on $(REVISION). Add
9602         -DREVISION=$(REVISION_s).
9603
9604         * version.c (version_string): Add REVISION.
9605
9606 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
9607
9608         * tree-eh.c (lower_try_finally_onedest): Reset the locus
9609         of GOTO that's relocated to a different block.
9610
9611 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9612
9613         * c-common.c (const_strip_array_types): New.
9614         * c-common.h (lang_missing_noreturn_ok_p): Delete.
9615         (const_strip_array_types): New.
9616         * c-objc-common.c (c_disregard_inline_limits,
9617         c_warn_unused_global_decl): Constify.
9618         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
9619         c_vla_type_p, c_incomplete_type_error): Likewise.
9620         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
9621         * hooks.c (hook_bool_const_tree_false): New.
9622         * hooks.h (hook_bool_const_tree_false): Likewise.
9623         * langhooks-def.h (lhd_warn_unused_global_decl,
9624         lhd_incomplete_type_error, lhd_expr_size,
9625         lhd_tree_inlining_disregard_inline_limits,
9626         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9627         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
9628         * langhooks.c (lhd_warn_unused_global_decl,
9629         lhd_incomplete_type_error,
9630         lhd_tree_inlining_disregard_inline_limits,
9631         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9632         lhd_expr_size): Likewise.
9633         * langhooks.h (lang_hooks_for_tree_inlining,
9634         lang_hooks_for_tree_dump, lang_hooks_for_types,
9635         lang_hooks_for_decls, lang_hooks): Likewise.
9636         * pointer-set.c (pointer_set_t, pointer_set_create,
9637         pointer_set_contains, insert_aux, pointer_set_insert,
9638         pointer_set_traverse, pointer_map_t, pointer_map_create,
9639         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
9640         Likewise.
9641         * pointer-set.h (pointer_set_contains, pointer_set_insert,
9642         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
9643         pointer_map_traverse): Likewise.
9644         * predict.c (assert_is_empty): Likewise.
9645         * tree-affine.c (free_name_expansion): Likewise.
9646         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
9647         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
9648         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
9649
9650 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
9651
9652         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
9653         field.
9654         (destroy_loop_vec_info): Add call to VEC_free.
9655         * tree-vectorizer.h (may_alias_ddrs): Define.
9656         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
9657         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
9658         Change reporting to dump.
9659         (vect_is_duplicate_ddr): New.
9660         (vect_mark_for_runtime_alias_test): New.
9661         (vect_analyze_data_ref_dependences) Add call to
9662         vect_mark_for_runtime_alias_test.
9663         (vect_enhance_data_refs_alignment): Define local variable
9664         vect_versioning_for_alias_required, don't perform
9665         peeling for alignment if versioning for alias is
9666         required.
9667         (vect_enhance_data_refs_alignment): Use
9668         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
9669         PARAM_VECT_MAX_VERSION_CHECKS.
9670         * tree-vect-transform.c
9671         (vect_create_cond_for_alias_checks): New.
9672         (vect_transform_loop): Add call to
9673         vect_create_cond_for_alias_checks.
9674         (vect_vfa_segment_size): New.
9675         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
9676         Rename.
9677         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
9678         * doc/invoke.texi
9679         (vect-max-version-for-alignment-checks): Document.
9680         (vect-max-version-for-alias-checks): Document.
9681         (vect-max-version-checks): Remove.
9682
9683 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
9684
9685         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
9686         the same line as the instruction for all asm dialects.
9687         (*rep_movsi): Ditto.
9688         (*rep_movsi_rex64): Ditto.
9689         (*rep_movqi): Ditto.
9690         (*rep_movqi_rex64): Ditto.
9691         (*rep_stosdi_rex64): Ditto.
9692         (*rep_stossi): Ditto.
9693         (*rep_stossi_rex64): Ditto.
9694         (*rep_stosqi): Ditto.
9695         (*rep_stosqi_rex64): Ditto.
9696         (*cmpstrnqi_nz_1): Ditto.
9697         (*cmpstrnqi_nz_rex_1): Ditto.
9698         (*cmpstrnqi_1): Ditto.
9699         (*cmpstrnqi_rex_1): Ditto.
9700         (*strlenqi_1): Ditto.
9701         (*strlenqi_rex_1): Ditto.
9702         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
9703         prefix on the same line as the instruction for all asm dialects.
9704         (sync_double_compare_and_swap<mode>): Ditto.
9705         (*sync_double_compare_and_swapdi_pic): Ditto.
9706         (*sync_compare_and_swap_cc<mode>): Ditto.
9707         (sync_double_compare_and_swap_cc<mode>): Ditto.
9708         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
9709         (sync_old_add<mode>): Ditto.
9710         (sync_add<mode>): Ditto.
9711         (sync_sub<mode>): Ditto.
9712         (sync_ior<mode>): Ditto.
9713         (sync_and<mode>): Ditto.
9714         (sync_xor<mode>): Ditto.
9715
9716 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
9717
9718         PR middle-end/32897
9719         * reload.c (find_reloads): Check that the memory returned by
9720         find_reloads_toplev was not the result of forcing a constant
9721         to memory.
9722         (find_reloads_toplev): Always use simplify_gen_subreg to get
9723         the subreg of a constant.  If the result is also a constant,
9724         but not a legitimate one, force it into the constant pool
9725         and reload its address.
9726
9727 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
9728
9729         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
9730         POPCOUNT.
9731
9732 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
9733
9734         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
9735         directive for the current vector ABI.
9736
9737 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
9738
9739         PR target/32963
9740         * caller-save.c (reg_save_code): Set invalide status on restore code.
9741         
9742 2007-08-15  Diego Novillo  <dnovillo@google.com>
9743
9744         * tree-ssa-alias.c (compute_memory_partitions): Use
9745         alias_bitmap_obstack to allocate bitmaps.
9746         (reset_alias_info): Factor out of init_alias_info.
9747         Mark all name tags not associated to an SSA name for renaming.
9748         (init_alias_info): Call it.
9749         (create_name_tags): Tidy.  Add comments.
9750         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
9751
9752 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9753
9754         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
9755         scheduler dependencies.
9756
9757 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9758
9759         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
9760         "register_operand".
9761         (*iorsi_1_zext): Likewise.
9762         (*iorsi_1_zext_imm): Likewise.
9763         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
9764         with "rm"/"xm" constraint.
9765         (sse2_vmsqrtv2df2): Likewise.
9766
9767 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
9768
9769         PR middle-end/33074
9770         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
9771         REG_LIBCALL note.
9772
9773 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
9774
9775         * tree-pass.h (PROP_pta): Removed.
9776         (TODO_rebuild_alias): New.
9777         (pass_may_alias): Removed.
9778         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
9779         aliasing if we changed something.
9780         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
9781         SSA internally.
9782         (pass_may_alias): Removed.
9783         (create_structure_vars): Return TODO_rebuild_alias.
9784         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
9785         * tree-sra.c (tree_sra): Only rebuild aliasing if something
9786         changed.
9787         (tree_sra_early): We never affect aliasing right now.
9788         * tree-flow.h (compute_may_aliases): New prototype.
9789         * passes.c: Remove pass_may_alias from the passes.
9790         (execute_function_todo): Support TODO_rebuild_alias.    
9791
9792 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
9793
9794         * i386.c: (legitimize_address): Move dllimported variable check
9795         infront of legitimizing pic address of CONST symbols.
9796
9797 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
9798
9799         PR tree-optimization/32941
9800         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
9801         (goto_queue_cmp): Remove.
9802         (find_goto_replacement): Change search method.
9803         (maybe_record_in_goto_queue): Add assert.
9804         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
9805         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
9806
9807 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9808
9809         * alias.c (component_uses_parent_alias_set): Constify.
9810         * alias.h (component_uses_parent_alias_set): Likewise.
9811         * cfgrtl.c (print_rtl_with_bb): Likewise.
9812         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
9813         mpz_get_double_int): Likewise.
9814         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
9815         mpz_get_double_int): Likewise.
9816         * expr.c (is_aligning_offset, undefined_operand_subword_p,
9817         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
9818         Likewise.
9819         * expr.h (safe_from_p): Likewise.
9820         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
9821         Likewise.
9822         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
9823         zero_sized_type, goa_lhs_expr_p): Likewise.
9824         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
9825         * rtl.h (print_rtl_with_bb): Likewise.
9826         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
9827         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
9828         * tree-flow-inline.h (bb_stmt_list): Constify.
9829         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
9830         cbsi_stmt): New.
9831         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
9832         const_first_stmt, const_last_stmt): New.
9833         (block_may_fallthru, empty_block_p): Constify.
9834         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
9835         EXPR_ONLY_BODY): New.
9836         (expr_first, expr_last, expr_only): Use macro for body.
9837         (const_expr_first, const_expr_last, const_expr_only): New.
9838         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
9839         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
9840         ctsi_prev, ctsi_stmt): New.
9841         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
9842         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
9843         * tree-ssa-loop-niter.c (loop_only_exit_p,
9844         derive_constant_upper_bound): Likewise.
9845         * tree-ssa-phiopt.c (empty_block_p): Likewise.
9846         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
9847         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
9848         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
9849         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
9850         * tree.c (get_type_static_bounds): Likewise.
9851         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
9852         (get_type_static_bounds): Constify.
9853
9854 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9855
9856         PR target/30315
9857         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
9858         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
9859         (*<addsub><mode>3_cc_overflow): New.
9860         (*add<mode>3_cconly_overflow): New.
9861         (*sub<mode>3_cconly_overflow): New.
9862         (*<addsub>si3_zext_cc_overflow): New.
9863         * config/i386/predicates.md (fcmov_comparison_operator): Accept
9864         CCCmode for LTU, GTU, LEU and GEU.
9865         (ix86_comparison_operator): Likewise.
9866         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
9867         * config/i386/i386.c (put_condition_code): Support CCCmode.
9868         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
9869         or MINUS expressions.
9870
9871 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
9872
9873         PR c/30428
9874         * c-typeck.c (build_binary_op): Disallow vector float types with
9875         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
9876
9877 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
9878
9879         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
9880         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
9881         (dep_def): New typedef.
9882         (init_dep_1, sd_debug_dep): Declare functions.
9883         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
9884         (debug_dep_links): Remove.
9885         (struct _deps_list): New field 'n_links'.
9886         (DEPS_LIST_N_LINKS): New macro.
9887         (FOR_EACH_DEP_LINK): Remove.
9888         (create_deps_list, free_deps_list, delete_deps_list): Remove
9889         declaration.
9890         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
9891         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9892         (copy_deps_list_change_con, move_dep_link): Ditto.
9893         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
9894         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
9895         'dep_count'.
9896         (INSN_BACK_DEPS): Remove.
9897         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
9898         New macros.
9899         (INSN_DEP_COUNT): Remove.
9900         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
9901         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
9902         Declare global variables.
9903         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
9904         (add_forw_dep, compute_forward_dependences): Remove declarations.
9905         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
9906         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9907         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
9908         functions.
9909         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
9910         New constants.
9911         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
9912         (sd_list_types_def): New typedef.
9913         (sd_next_list): Declare function.
9914         (struct _sd_iterator): New type.
9915         (sd_iterator_def): New typedef.
9916         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
9917         functions.
9918         (FOR_EACH_DEP): New cycle wrapper.
9919         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
9920         Declare functions.
9921         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
9922         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
9923         Ditto.
9924
9925         * sched-deps.c (init_dep_1): Make global.
9926         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
9927         constants.
9928         (dump_dep): New static function.
9929         (dump_dep_flags): New static variable.
9930         (sd_debug_dep): New function.
9931         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
9932         the list.
9933         (move_dep_link): Use remove_from_deps_list (), instead of
9934         detach_dep_link ().
9935         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
9936         (dep_link_is_detached_p): New static function.
9937         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
9938         instead.
9939         (dn_pool, dl_pool): New alloc_pools.
9940         (dn_pool_diff, dl_pool_diff): New static variables.
9941         (create_dep_node, delete_dep_node): New static function.
9942         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
9943         (deps_list_empty_p): Make it static.  Use 'n_links' field.
9944         (deps_pools_are_empty_p): New static function.
9945         (alloc_deps_list, delete_deps_list): Remove.
9946         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
9947         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9948         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
9949         (forward_dependency_cache): Remove.
9950         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
9951         'back' from the names.  Change signature to use dep_t instead of
9952         equivalent quad.
9953         (add_back_dep): Ditto.  Make global.
9954         (check_dep_status): Rename to check_dep ().
9955         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
9956         New functions.
9957         (sd_finish_insn): Ditto.
9958         (sd_find_dep_between_no_cache): New static function.
9959         (sd_find_dep_between): New function.
9960         (ask_dependency_caches, set_dependency_caches): New static functions.
9961         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
9962         (add_or_update_dep_1): Separate pieces of functionality into
9963         ask_dependency_caches (), update_dependency_caches (),
9964         change_spec_dep_to_hard (), update_dep ().
9965         (get_back_and_forw_lists): New static function.
9966         (sd_add_dep): Separate setting of dependency caches into
9967         set_dependency_caches ().
9968         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
9969         New functions.
9970         (sd_delete_dep): Ditto.
9971         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
9972         (dump_lists): New static function.
9973         (sd_debug_lists): New debug function.
9974         (delete_all_dependences, fixup_sched_groups): Update to use
9975         sd_* infrastructure.
9976         (sched_analyze_2): Create data-speculative dependency only if
9977         data-speculation is enabled.
9978         (sched_analyze_insn): If insn cannot be speculative, make all its
9979         dependencies non-speculative.
9980         (sched_analyze): Use sd_init_insn ().
9981         (add_forw_dep, compute_forward_dependencies): Remove.
9982         (delete_dep_nodes_in_back_deps): New static function.
9983         (sched_free_deps): New function.
9984         (init_dependency_caches): Init alloc_pools.
9985         (extend_depedency_caches): Update after removing of
9986         forward_dependency_cache.
9987         (free_dependency_caches): Ditto.  Free alloc_pools.
9988         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
9989         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
9990         Ditto.
9991         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9992         (add_dependence): Use init_dep ().
9993         (get_dep_weak_1): New static function.
9994         (get_dep_weak): Move logic to get_dep_weak_1 ().
9995         (dump_ds): New static function moved from haifa-sched.c:
9996         debug_spec_status ().
9997         (debug_ds): New debug function.
9998         (check_dep_status): Rename to check_dep ().  Update to check whole
9999         dependencies.
10000
10001         * haifa-sched.c (spec_info): Make global.
10002         (added_recovery_block_p): Rename to
10003         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
10004         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
10005         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
10006         to use new interfaces.
10007         (ok_for_early_queue_removal): Ditto.
10008         (schedule_block): Initialize logical uids of insns emitted by the
10009         target.
10010         (sched_init): Initialize new variable.
10011         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
10012         interfaces.
10013         (extend_global): Initialize insn data.
10014         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
10015         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
10016         new interfaces.
10017         (add_to_speculative_block): Update to use new interfaces.
10018         (create_recovery_block): Set new variables.
10019         (create_check_block_twin, fix_recovery_deps): Update to use new
10020         interfaces.
10021         (sched_insn_is_legitimate_for_speculation_p): New function.
10022         (speculate_insn): Move checking logic to
10023         sched_insn_is_legitimate_for_speculation_p ().
10024         (sched_remove_insn): Finalize sched-deps information of instruction.
10025         (clear_priorities, add_jump_dependencies): Update to use new
10026         interfaces.
10027         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
10028         
10029         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
10030         to use new interfaces.
10031         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
10032         (new_ready): Try to use control speculation only if it is available.
10033         (add_branch_dependences): Update to use new interfaces.
10034         (compute_block_backward_dependences): Rename to
10035         compute_block_dependences ().  Call
10036         targetm.sched.dependencies_evaluation_hook ().
10037         (free_block_dependencies): New static function.
10038         (debug_dependencies): Update to use new interfaces.
10039         (schedule_region): Remove separate computation of forward dependencies.
10040         Move call of targetm.sched.dependencies_evaluation_hook () to
10041         compute_block_dependences ().  Free dependencies at the end of
10042         scheduling the region.
10043
10044         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
10045         new interfaces.
10046         (add_deps_for_risky_insns): Ditto.
10047         (schedule_ebb): Remove separate computation of forward dependencies.
10048         Free dependencies at the end of scheduling the ebb.
10049
10050         * ddg.c (create_ddg_dependence): Update to use new interfaces.
10051         (build_intra_loop_deps): Ditto.  Remove separate computation of
10052         forward dependencies.  Free sched-deps dependencies.
10053
10054         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
10055         to use new interfaces.
10056         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
10057
10058         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
10059         new interfaces.
10060         (is_costly_group): Ditto.
10061
10062 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10063
10064         * alias.c (rtx_equal_for_memref_p): Constify.
10065         * basic-block.h (const_edge, const_basic_block): New.
10066         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
10067         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
10068         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
10069         probably_never_executed_bb_p, edge_probability_reliable_p,
10070         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
10071         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
10072         Likewise.
10073         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
10074         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
10075         Likewise.
10076         * cfganal.c (flow_active_insn_p, forwarder_block_p,
10077         flow_nodes_print, dfs_enumerate_from): Likewise.
10078         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
10079         control_flow_insn_p, count_basic_blocks): Likewise.
10080         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
10081         get_loop_body_with_size, loop_exit_edge_p): Likewise.
10082         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
10083         average_num_loop_insns, loop_exit_edge_p,
10084         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
10085         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
10086         average_num_loop_insns, seq_cost): Likewise.
10087         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
10088         * dominance.c (dominated_by_p): Likewise.
10089         * emit-rtl.c (validate_subreg): Likewise.
10090         * except.c (can_throw_internal, can_throw_external): Likewise.
10091         * except.h (can_throw_internal, can_throw_external): Likewise.
10092         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
10093         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
10094         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
10095         simple_mem, store_ops_ok, load_kills_store, find_loads,
10096         store_killed_in_insn, store_killed_after, store_killed_before,
10097         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
10098         Likewise.
10099         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
10100         noce_mem_write_may_trap_or_fault_p): Likewise.
10101         * pointer-set.c (pointer_set_contains, pointer_map_contains):
10102         Likewise.
10103         * pointer-set.h (pointer_set_contains, pointer_map_contains):
10104         Likewise.
10105         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
10106         probably_cold_bb_p, probably_never_executed_bb_p,
10107         edge_probability_reliable_p, br_prob_note_reliable_p,
10108         can_predict_insn_p): Likewise.
10109         * regclass.c (reg_set_to_hard_reg_set): Likewise.
10110         * resource.c (return_insn_p): Likewise.
10111         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
10112         Likewise.
10113         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
10114         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
10115         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
10116         verify_gimple_modify_stmt): Likewise.
10117         * tree-chrec.c (is_not_constant_evolution,
10118         is_multivariate_chrec_rec, is_multivariate_chrec,
10119         chrec_contains_symbols, chrec_contains_undetermined,
10120         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
10121         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
10122         eq_evolutions_p, scev_direction): Likewise.
10123         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
10124         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
10125         chrec_contains_symbols_defined_in_loop,
10126         chrec_contains_undetermined, tree_contains_chrecs,
10127         evolution_function_is_affine_multivariate_p,
10128         evolution_function_is_univariate_p, chrec_zerop,
10129         evolution_function_is_constant_p, evolution_function_is_affine_p,
10130         evolution_function_is_affine_or_constant_p,
10131         tree_does_not_contain_chrecs, chrec_type): Likewise.
10132         * tree-data-ref.c (tree_fold_divides_p,
10133         object_address_invariant_in_loop_p, dr_may_alias_p,
10134         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
10135         same_access_functions, constant_access_functions,
10136         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
10137         Likewise.
10138         * tree-flow.h (scev_direction): Likewise.
10139         * tree-gimple.c (is_gimple_stmt): Likewise.
10140         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
10141         Likewise.
10142         * tree-pretty-print.c (op_prio): Likewise.
10143         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
10144         analyzable_condition, backedge_phi_arg_p): Likewise.
10145         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
10146         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
10147         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
10148         Likewise.
10149
10150 2007-08-13  Dan Hipschman  <dsh@google.com>
10151
10152         PR c/32953
10153         * c-format.c (check_format_arg): Move check for zero-length
10154         format strings below the check for unterminated strings.
10155
10156 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
10157
10158         PR C/30427
10159         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
10160         types.
10161
10162 2007-08-13  Nick Clifton  <nickc@redhat.com>
10163
10164         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
10165
10166 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10167
10168         PR fortran/32860
10169         * c-format.c (gcc_gfc_length_specs): New array.
10170         (gcc_gfc_char_table): Add unsigned specifier, and references to
10171         the l length modifier.
10172         (format_types_orig): Use the new gcc_gfc_length_specs.
10173
10174 2007-08-12  Sa Liu  <saliu@de.ibm.com>
10175
10176         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
10177         and with REG_RETVAL note after split.
10178
10179 2007-08-11  David Daney  <ddaney@avtrex.com>
10180
10181         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
10182         as ATTRIBUTE_UNUSED.
10183
10184 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
10185             Segher Boessenkool  <segher@kernel.crashing.org>
10186
10187         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
10188         HAVE_LOCAL_CPU_DETECT not defined.
10189
10190 2007-08-11  Jan Hubicka  <jh@suse.cz>
10191
10192         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
10193         (cgraph_process_new_functions): Honor previous value of
10194         disregard_inline_limits.
10195         * ipa-inline.c (compute_inline_parameters): Likewise.
10196
10197 2007-08-11  Ian Lance Taylor  <iant@google.com>
10198
10199         * alias.h (alias_set_type): Define new type.
10200         (ALIAS_SET_MEMORY_BARRIER): Use it.
10201         * rtl.h: Include alias.h.
10202         (struct mem_attrs): Use alias_set_type.
10203         * tree.h: Include alias.h
10204         (struct tree_type): Use alias_set_type.
10205         (struct tree_struct_field_tag): Likewise.
10206         (struct tree_decl_common): Likewise.
10207         * alias.c (struct alias_set_entry): Use alias_set_type.
10208         (get_alias_set_entry, alias_set_subset_of): Likewise.
10209         (alias_sets_conflict_p): Likewise.
10210         (alias_sets_must_conflict_p): Likewise.
10211         (objects_must_conflict_p): Likewise.
10212         (get_alias_set, new_alias_set): Likewise.
10213         (record_alias_subset, record_component_aliases): Likewise.
10214         (varargs_set, frame_set): Change to alias_set_type.
10215         (get_varargs_alias_set): Use alias_set_type.
10216         (get_frame_alias_set): Likewise.
10217         * builtins.c (setjmp_alias_set): Change to alias_set_type.
10218         * dse.c (struct store_info): Use alias_set_type.
10219         (struct read_info, struct clear_alias_mode_holder): Likewise.
10220         (clear_alias_set_lookup, canon_address): Likewise.
10221         (record_store, check_mem_read_rtx): Likewise.
10222         (dse_record_singleton_alias_set): Likewise.
10223         (dse_invalidate_singleton_alias_set): Likewise.
10224         * emit-rtl.c (get_mem_attrs): Likewise.
10225         (set_mem_attributes_minus_bitpos): Likewise.
10226         (set_mem_alias_set): Likewise.
10227         * expr.c (store_constructor_field, store_field): Likewise.
10228         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
10229         * langhooks.c (lhd_get_alias_set): Likewise.
10230         * langhooks-def.h (lhd_get_alias_set): Likewise.
10231         * reload1.c (alter_reg): Likewise.
10232         * tree-flow.h (struct fieldoff): Likewise.
10233         * tree-ssa-alias.c (struct alias_map_d): Likewise.
10234         (may_alias_p, get_smt_for, create_sft): Likewise.
10235         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
10236         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
10237         (merge_smts_into): Likewise.
10238         * varasm.c (const_alias_set): Likewise.
10239         * c-common.c (strict_aliasing_warning): Likewise.
10240         (c_common_get_alias_set): Likewise.
10241         * dse.h (dse_record_singleton_alias_set): Update declaration.
10242         (dse_invalidate_singleton_alias_set): Likewise.
10243         * emit-rtl.h (set_mem_alias_set): Likewise.
10244         * c-common.h (c_common_get_alias_set): Likewise.
10245         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
10246         * print-tree.c (print_node): Likewise.
10247         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
10248         alias_set_type.
10249         (alpha_setup_incoming_varargs): Use alias_set_type.
10250         * config/i386/i386.c (setup_incoming_varargs_64): Use
10251         alias_set_type.
10252         (setup_incoming_varargs_ms_64): Likewise.
10253         (ix86_GOT_alias_set): Likewise.
10254         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
10255         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
10256         (set): Change to alias_set_type.
10257         (get_TOC_alias_set): Use alias_set_type.
10258         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
10259         declaration.
10260         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
10261         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
10262         alias_set_type.
10263         (struct_value_alias_set): Likewise.
10264         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
10265
10266 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10267
10268         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
10269         * config/vxworks.h (TARGET_VXWORKS): Override.
10270         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
10271         "mips" if TARGET_VXWORKS.
10272
10273 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10274
10275         * calls.c (avoid_likely_spilled_reg): New function.
10276         (expand_call): Use it.
10277
10278 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10279
10280         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
10281
10282 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
10283
10284         * config/mips/predicates.md (const_call_insn_operand): Invoke
10285         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
10286
10287 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
10288
10289         PR target/33042
10290         * config/rs6000/driver-rs6000.c: Include link.h.
10291         Use ElfW instead of wordsize-specif typedef.
10292
10293 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10294
10295         * system.h (CONST_CAST): New.
10296         * c-decl.c (c_make_fname_decl): Use it.
10297         * c-lex.c (cb_ident, lex_string): Likewise.
10298         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10299         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
10300         give_switch, set_multilib_dir): Likewise.
10301         * gengtype-parse.c (string_seq, typedef_name): Likewise.
10302         * passes.c (execute_one_pass): Likewise.
10303         * prefix.c (update_path): Likewise.
10304         * pretty-print.c (pp_base_destroy_prefix): Likewise.
10305         * tree.c (build_string): Likewise.
10306
10307 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10308
10309         * tree-flow-inline.h (is_exec_stmt): Remove.
10310         (is_label_stmt): Remove.
10311         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
10312         is_label_stmt.
10313
10314 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
10315
10316         * lower-subreg.c (resolve_shift_zext): Don't adjust
10317         src_reg_num for wordmode operands.
10318
10319 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
10320             David Ung  <davidu@mips.com>
10321
10322         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
10323         (TARGET_SCHED_REORDER2): Define.
10324         (mips_maybe_swap_ready): New.
10325         (mips_last_74k_agen_insn): New.
10326         (mips_74k_agen_init): New.
10327         (mips_74k_agen_reorder): New function to group loads and stores
10328         in the ready queue.
10329         (mips_sched_init): New.  
10330         (mips_sched_reorder): Don't do initialization here.  Call
10331         mips_74k_agen_reorder.
10332         (mips_variable_issue): Call mips_74k_agen_init.
10333
10334 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10335
10336         * tree-flow-inline.h (get_filename): Remove.
10337
10338 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
10339
10340         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
10341         argument.
10342         (mips_fetch_insns): Delete in favor of...
10343         (mips_load_store_insns): ...this new function.
10344         * config/mips/mips.c (mips_address_insns): Add a boolean argument
10345         to say whether multiword moves _might_ be split.
10346         (mips_fetch_insns): Delete in favor of...
10347         (mips_load_store_insns): ...this new function.
10348         (mips_rtx_costs): Update the call to mips_address_insns.
10349         (mips_address_cost): Likewise.
10350         * config/mips/mips.md (length): Use mips_load_store_insns instead
10351         of mips_fetch_insns.
10352         * config/mips/constraints.md (R): Use mips_address_insns rather
10353         than mips_fetch_insns.  Assume that the move never needs to be split.
10354
10355 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10356
10357         * config/mips/mips.opt (mhard-float, msoft-float): Make these
10358         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
10359         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
10360         * config/mips/mips.h (mips16_hard_float): Delete.
10361         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
10362         definitions, and replace with....
10363         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
10364         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
10365         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
10366         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
10367         (override_options): Replace MASK_SOFT_FLOAT references with
10368         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
10369         and mips16_hard_float when TARGET_MIPS16.
10370         
10371 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10372
10373         PR c/32796
10374         * c-typeck.c (build_binary_op): Check for non pointer types before
10375         calling int_fits_type_p.
10376
10377 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10378
10379         PR middle-end/32813
10380         * fold-const.c (omit_one_operand): Return only the ommitted expression
10381         if the result is an empty statement.
10382         (pedantic_omit_one_operand): Likewise.
10383
10384 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
10385
10386         * c-typeck.c (readonly_error): Improve error for assignment.
10387         
10388         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
10389         expression. 
10390         (pp_c_expression): Ditto.
10391
10392 2007-08-09  Simon Baldwin  <simonb@google.com>
10393
10394         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
10395         break that was preventing simplify_associative_operation() for xor.
10396
10397 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10398             Nigel Stephens  <nigel@mips.com>
10399
10400         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
10401         Document change in interpretation of value from boolean to
10402         tri-state integer.
10403         * optabs.c (expand_ffs, expand_ctz): New functions to compute
10404         ffs and ctz using clz.
10405         (expand_unop): Call them.
10406         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
10407         result value.
10408         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
10409         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
10410         enable the new ffs expansion on this target.
10411
10412 2007-08-09  Jan Hubicka  <jh@suse.cz>
10413
10414         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
10415         (expand_ternary_op): Likewise.
10416         (expand_vec_shift_expr): Likewise.
10417         (expand_binop_directly): Likewise.
10418         (expand_binop): Likewise.
10419         (sign_expand_binop): Likewise.
10420         (expand_twoval_unop): Likewise.
10421         (expand_twoval_binop): Likewise.
10422         (expand_twoval_binop_libfunc): Likewise.
10423         (widen_clz): Likewise.
10424         (widen_bswap): Likewise.
10425         (expand_parity): Likewise.
10426         (expand_unop): Likewise.
10427         (expand_abs_nojump): Likewise.
10428         (expand_copysign): Likewise.
10429         (emit_no_conflict_block): Likewise.
10430         (emit_libcall_block): Likewise.
10431         (can_compare_p): Likewise.
10432         (prepare_cmp_insn): Likewise.
10433         (emit_cmp_and_jump_insn_1): Likewise.
10434         (prepare_float_lib_cmp): Likewise.
10435         (emit_conditional_add): Likewise.
10436         (gen_add2_insn): Likewise.
10437         (have_add2_insn): Likewise.
10438         (gen_sub2_insn): Likewise.
10439         (have_sub2_insn): Likewise.
10440         (can_extend_p): Likewise.
10441         (can_fix_p): Likewise.
10442         (can_float_p): Likewise.
10443         (expand_float): Likewise.
10444         (expand_fix): Likewise.
10445         (expand_sfix_optab): Likewise.
10446         (new_optab): Likewise.
10447         (new_convert_optab): Likewise.
10448         (init_libfuncs): Likewise.
10449         (init_interclass_conv_libfuncs): Likewise.
10450         (init_intraclass_conv_libfuncs): Likewise.
10451         (set_conv_libfunc): Likewise.
10452         (init_optabs): Likewise.
10453         (debug_optab_libfuncs): Likewise.
10454         (gen_cond_trap): Likewise.
10455         * optabs.h (optab_handler, convert_optab_hanlder): New.
10456         * genopinit.c: Update optabs generation table.
10457         * reload.c (find_reloads_address_1): Use optabs accestors.
10458         * builtins.c (expand_builtin_mathfn): Likewise.
10459         (expand_builtin_mathfn_2): Likewise.
10460         (expand_builtin_mathfn_3): Likewise.
10461         (expand_builtin_interclass_mathfn): Likewise.
10462         (expand_builtin_sincos): Likewise.
10463         (expand_builtin_cexpi): Likewise.
10464         (expand_builtin_powi): Likewise.
10465         (expand_builtin_strlen): Likewise.
10466         * dojump.c (do_jump): Likewise.
10467         * expr.c (convert_move): Likewise.
10468         (move_by_pieces): Likewise.
10469         (move_by_pieces_ninsns): Likewise.
10470         (can_store_by_pieces): Likewise.
10471         (store_by_pieces_1): Likewise.
10472         (emit_move_via_integer): Likewise.
10473         (emit_move_complex): Likewise.
10474         (emit_move_ccmode): Likewise.
10475         (emit_move_insn_1): Likewise.
10476         (emit_single_push_insn): Likewise.
10477         (store_constructor): Likewise.
10478         (expand_expr_real_1): Likewise.
10479         (do_store_flag): Likewise.
10480         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
10481         (enumerate_modes): Likewise.
10482         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10483         (supportable_widening_operation): Likewise.
10484         (supportable_narrowing_operation): Likewise.
10485         * expmed.c (store_bit_field_1): Likewise.
10486         (extract_bit_field_1): Likewise.
10487         (expand_mult_highpart_optab): Likewise.
10488         (expand_smod_pow2): Likewise.
10489         (expand_divmod): Likewise.
10490         (emit_store_flag): Likewise.
10491         * tree-vect-patterns.c
10492         (vect_pattern_recog_1): Likewise.
10493         * tree-ssa-loop-prefetch.c
10494         (nontemporal_store_p): Likewise.
10495         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
10496         (vect_create_epilog_for_reduction): Likewise.
10497         (vectorizable_reduction): Likewise.
10498         (vectorizable_operation): Likewise.
10499         (vect_strided_store_supported): Likewise.
10500         (vectorizable_store): Likewise.
10501         (vect_strided_load_supported): Likewise.
10502         (vectorizable_load): Likewise.
10503         * combine.c (simplify_comparison): Likewise.
10504         * tree-vect-generic.c
10505         (type_for_widest_vector_mode): Likewise.
10506         (expand_vector_operations_1): Likewise.
10507         * config/spu/spu.c (spu_expand_mov): Likewise.
10508         (spu_emit_vector_compare): Likewise.
10509         * config/rs6000/rs6000.c
10510         (rs6000_emit_vector_compare): Likewise.
10511         * stmt.c (add_case_node): Likewise.
10512         * reload1.c (gen_reload):
10513
10514 2007-08-09  Michael Matz  <matz@suse.de>
10515
10516         * tree.h (fixed_zerop): Declare as taking a const_tree.
10517         * tree.c (fixed_zerop): Take a const_tree.
10518
10519 2007-08-09  Ira Rosen  <irar@il.ibm.com>
10520
10521         * tree-vect-transform.c (vectorizable_store): Remove call to
10522         copy_virtual_operands() and call mark_symbols_for_renaming() for
10523         the created vector store.
10524         (vect_setup_realignment): Don't call copy_virtual_operands() and
10525         update_vuses_to_preheader(). 
10526         (vectorizable_load): Don't call copy_virtual_operands(). 
10527         (update_vuses_to_preheader): Remove.
10528
10529 2007-08-08  Chao-ying Fu  <fu@mips.com>
10530
10531         * tree.def (FIXED_POINT_TYPE): New type.
10532         (FIXED_CST): New constant.
10533         (FIXED_CONVERT_EXPR): New expr.
10534         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
10535         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
10536         * tree.h (struct tree_base): Add saturating_flag.
10537         Remove one bit of spare for saturating_flag.
10538         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
10539         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
10540         FIXED_POINT_TYPE_P): Define.
10541         (TYPE_SATURATING): Define.
10542         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
10543         (struct tree_fixed_cst): New.
10544         (TYPE_IBIT, TYPE_FBIT): Define.
10545         (tree_node): Add fixed_cst.
10546         (enum tree_index): Add new enumeration values of
10547         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
10548         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
10549         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
10550         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
10551         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
10552         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
10553         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
10554         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
10555         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
10556         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
10557         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
10558         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
10559         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
10560         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
10561         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
10562         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
10563         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
10564         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
10565         (sat_short_fract_type_node, sat_fract_type_node,
10566         sat_long_fract_type_node, sat_long_long_fract_type_node,
10567         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
10568         sat_unsigned_long_fract_type_node,
10569         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
10570         fract_type_node, long_fract_type_node, long_long_fract_type_node,
10571         unsigned_short_fract_type_node, unsigned_fract_type_node,
10572         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
10573         sat_short_accum_type_node, sat_accum_type_node,
10574         sat_long_accum_type_node, sat_long_long_accum_type_node,
10575         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
10576         sat_unsigned_long_accum_type_node,
10577         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
10578         accum_type_node, long_accum_type_node, long_long_accum_type_node,
10579         unsigned_short_accum_type_node, unsigned_accum_type_node,
10580         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
10581         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
10582         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
10583         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
10584         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
10585         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
10586         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
10587         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
10588         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
10589         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
10590         sat_uda_type_node, sat_uta_type_node): New macro.
10591         (make_fract_type, make_accum_type): Declare.
10592         (make_signed_fract_type, make_unsigned_fract_type,
10593         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
10594         make_signed_accum_type, make_unsigned_accum_type,
10595         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
10596         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
10597         make_or_reuse_sat_signed_fract_type,
10598         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
10599         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
10600         make_or_reuse_sat_unsigned_accum_type): New macro.
10601         (fixed_zerop): Declare.
10602         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
10603         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10604         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10605         LONG_LONG_ACCUM_TYPE_SIZE): Define.
10606         * treestruct.def: Add TS_FIXED_CST.
10607         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
10608         (tree.o): Likewise.
10609         (tree-dump.o): Likewise.
10610         (print-tree.o): Likewise.
10611         (tree-pretty-print.o): Likewise.
10612         (fold-const.o): Likewise.
10613         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
10614         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
10615         (is_gimple_min_invariant): Handle FIXED_CST.
10616         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
10617         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
10618         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10619         (layout_type): Handle FIXED_POINT_TYPE.
10620         (make_fract_type, make_accum_type): New functions.
10621         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
10622         * tree-dump.c (fixed-value.h): New include.
10623         (dump_fixed): New function.
10624         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
10625         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
10626         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
10627         * tree-pretty-print.c (fixed-value.h): New include.
10628         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
10629         FIXED_CONVERT_EXPR.
10630         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
10631         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
10632         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
10633         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
10634         for non-saturating fixed-point types.
10635         (reassociate_bb): Likewise.
10636         * emit-rtl.c (fixed-value.h): New include.
10637         (fconst0, fconst1): New array.
10638         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
10639         * tree-vect-generic.c expand_vector_operation): Support
10640         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
10641         MODE_VECTOR_UACCUM.
10642         (type_for_widest_vector_mode): Add one parameter for the 
10643         saturating flag.
10644         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
10645         vector mode.
10646         Pass the satp parameter to type_for_mode for fixed-point types.
10647         (expand_vector_operations_1): Pass the saturating flag to
10648         type_for_widest_vector_mode.
10649         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
10650         and MODE_VECTOR_UACCUM.
10651         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
10652         (vectorizable_condition): Likewise.
10653         * tree.c (fixed-value.h): New include.
10654         (tree_code_size): Support FIXED_CST.
10655         (build_fixed): New function.
10656         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
10657         (fixed_zerop): New function.
10658         (tree_node_structure): Support FIXED_CST.
10659         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
10660         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
10661         (type_hash_eq): Handle FIXED_POINT_TYPE.
10662         (simple_cst_equal): Support FIXED_CST.
10663         (iterative_hash_expr): Handle FIXED_CST.
10664         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
10665         (get_narrower): Likewise.
10666         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
10667         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
10668         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
10669         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
10670         nodes.
10671         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
10672         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10673         (initializer_zerop): Support FIXED_CST.
10674         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
10675         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
10676         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
10677         (is_base_type): Handle FIXED_POINT_TYPE.
10678         (add_type_attribute): Handle FIXED_POINT_TYPE.
10679         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
10680         * print-tree.c (fixed-value.h): New include.
10681         (print_node_brief): Support FIXED_CST.
10682         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
10683         * c-pretty-print.c (fixed-value.h): New include.
10684         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
10685         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
10686         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
10687         Support fixed-point types for inner items in VECTOR_TYPE.
10688         (pp_c_direct_declarator): Likewise.
10689         (pp_c_declarator): Likewise.
10690         (pp_c_fixed_constant): New function.
10691         (pp_c_constant): Handle FIXED_CST.
10692         (pp_c_primary_expression): Likewise.
10693         (pp_c_expression): Likewise.
10694         * fold-const.c (fixed-value.h): New include.
10695         (negate_expr_p): Return true for FIXED_CST.
10696         (fold_negate_expr): Support FIXED_CST.
10697         (split_tree): Support FIXED_CST.
10698         (const_binop): Support FIXED_CST.
10699         (fold_convert_const_int_from_fixed): New function to convert from
10700         fixed to int.
10701         (fold_convert_const_real_from_fixed): New function to convert from
10702         fixed to real.
10703         (fold_convert_const_fixed_from_fixed): New function to convert from
10704         fixed to another fixed.
10705         (fold_convert_const_fixed_from_int): New function to convert from
10706         int to fixed.
10707         (fold_convert_const_fixed_from_real): New function to convert from
10708         real to fixed.
10709         (fold_convert_const): Support conversions from fixed to int, from
10710         fixed to real, from fixed to fixed, from int to fixed, and from real
10711         to fixed.
10712         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
10713         (operand_equal_p): Support FIXED_CST.
10714         (make_range): For fixed-point modes, we need to pass the
10715         saturating flag as the 2nd parameter.
10716         (tree_swap_operands_p): Handle FIXED_CST.
10717         (fold_plusminus_mult_expr): For fract modes, we cannot generate
10718         constant 1.
10719         (fold_unary): Support FIXED_CONVERT_EXPR.
10720         (fold_binary): Handle FIXED_CST.
10721         Make sure the type is not saturating, before associating operations.
10722         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
10723         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
10724         (fold_negate_const): Support FIXED_CST.
10725         (fold_relational_const): Support FIXED_CST.
10726         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
10727         (gimplify_expr): Handle FIXED_CST.
10728         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
10729         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
10730         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
10731         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
10732         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10733         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10734         LONG_LONG_ACCUM_TYPE_SIZE.
10735         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
10736         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
10737         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
10738         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
10739         MODE_ACCUM, and MODE_UACCUM.
10740         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
10741         fixed-point types to disable reduction.
10742         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
10743
10744 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
10745
10746         * config/rs6000/x-rs6000: New file.
10747         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
10748         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
10749         (EXTRA_SPEC_FUNCTIONS): Define.
10750         (HAVE_LOCAL_CPU_DETECT): Define.
10751         (CC1_CPU_SPEC): Define.
10752         * config/rs6000/driver-rs6000.c: New file.
10753         * config/rs6000/aix.h (CC1_SPEC): Define.
10754         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
10755         * config.host: Add x-rs6000 to host_xmake_file if host and target
10756         are rs6000 or powerpc.
10757
10758 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
10759
10760         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
10761
10762 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10763             Sandra Loosemore  <sandra@codesourcery.com>
10764             Chao-ying Fu  <fu@mips.com>
10765             Nigel Stephens  <nigel@mips.com>
10766             David Ung  <davidu@mips.com>
10767
10768         * doc/invoke.texi (-mcode-readable): Document.
10769         * config/mips/mips.opt (mcode-readable): New option.
10770         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
10771         * config/mips/mips.h (mips_code_readable_setting): New enum.
10772         (mips_code_readable): Declare.
10773         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
10774         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
10775         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
10776         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
10777         boiler-plate comments.
10778         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10779         * config/mips/mips.c (mips_code_readable): New variable.
10780         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
10781         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
10782         context and -mcode-readable setting to restrict the use of
10783         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
10784         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
10785         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
10786         (mips_blocks_for_constant_p): Only return false for
10787         TARGET_MIPS16_PCREL_LOADS.
10788         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
10789         for MIPS16.  Handle SYMBOL_32_HIGH.
10790         (mips_const_insns): Allow HIGHs for MIPS16 too.
10791         (mips_unspec_address_offset): New function, split out from...
10792         (mips_unspec_address): ...here.
10793         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
10794         16-bit symbolic constants.  Assert approropiate conditions for
10795         using the "la" and "dla" macros.
10796         (mips_handle_option): Handle -mcode-readable=.
10797         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
10798         Set up mips_lo_relocs[SYMBOL_32_HIGH].
10799         (mips_strip_unspec_address): New function, split out from...
10800         (print_operand_reloc): ...here.
10801         (print_operand): Pass constants through mips_strip_unspec_address.
10802         (print_operand_address): Likewise.
10803         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
10804         (mips_select_rtx_section): Remove MIPS16 handling.
10805         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
10806         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
10807         (mips16_lay_out_constants): Do nothing unless
10808         TARGET_MIPS16_PCREL_LOADS.
10809         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
10810         * config/mips/mips.md: Split HIGHs for MIPS16.
10811         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10812
10813 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10814
10815         * config/mips/mips-protos.h (mips_emit_move): Declare.
10816         * config/mips/mips.c (mips_emit_move): New function.
10817         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
10818         (mips_legitimize_const_move): Likewise.
10819         (mips_legitimize_move): Likewise.
10820         (mips_split_64bit_move): Likewise.
10821         (mips_restore_gp): Likewise.
10822         (mips_load_call_address): Likewise.
10823         (mips_emit_fcc_reload): Likewise.
10824         (mips_set_return_address): Likewise.
10825         (mips_block_move_straight): Likewise.
10826         (mips_block_move_loop): Likewise.
10827         (mips_setup_incoming_varargs): Likewise.
10828         (mips_save_reg): Likewise.
10829         (mips_expand_prologue): Likewise.
10830         (mips_restore_reg): Likewise.
10831         (mips_expand_epilogue): Likewise.
10832         (mips_output_mi_thunk): Likewise.
10833         (build_mips16_call_stub): Likewise.
10834         (mips_builtin_branch_and_move): Likewise.
10835         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
10836         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
10837         (fixuns_truncdfdi2): Likewise.
10838         (fixuns_truncsfsi2): Likewise.
10839         (fixuns_truncsfdi2): Likewise.
10840         (loadgp_absolute): Likewise.
10841         (builtin_setjmp_setup): Likewise.
10842         (builtin_longjmp): Likewise.
10843         (untyped_call): Likewise.
10844
10845 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10846
10847         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
10848         an "rtx *" argument.  Return a bool.
10849         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
10850         values and return true if they can be split.  Take the same kind of
10851         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
10852         and store the lo_sum there if nonnull.  Use the symbol type to
10853         determine whether a $gp or HIGH is needed.
10854         (mips_legitimize_address): Update call to mips_split_symbol and
10855         simplify accordingly.
10856         (mips_legitimize_const_move): Likewise.
10857         * config/mips/mips.md: In the combine define_split,
10858         check mips_split_symbol instead of splittable_symbolic_operand.
10859         Update use of mips_split_symbol in the generator code.
10860         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
10861
10862 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10863
10864         * config/mips/mips.c (mips_symbolic_address_p): Delete.
10865         (mips_symbol_insns_1): New function, split out from...
10866         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
10867         and stores separately from load addresses.
10868         (mips_classify_address): Replace uses of mips_symbolic_address_p
10869         with uses of mips_symbol_insns.
10870         (mips_address_insns): Update calls to mips_symbol_insns.
10871         (mips_const_insns): Likewise.
10872         (mips_legitimize_address): Likewise.
10873
10874 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10875
10876         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
10877         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
10878         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
10879         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
10880         non-call contexts if TARGET_MIPS16.
10881         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
10882         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
10883         code for SYMBOL_ABSOLUTE.
10884         (mips_symbol_insns): Likewise.
10885
10886 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10887
10888         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
10889         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
10890         (mips_symbolic_constant_p): Likewise.  Update the call to
10891         mips_classify_symbol.
10892         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
10893         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
10894         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
10895         (print_operand_reloc): Add a context argument.  Update the call to
10896         mips_symbolic_constant_p.
10897         (print_operand): Update the calls to print_operand_reloc.
10898         (print_operand_address): Use print_operand_reloc rather than
10899         print_operand.
10900         (mips_rewrite_small_data_p): Add a context argument.  Update the call
10901         to mips_symbolic_constant_p.
10902         (mips_small_data_pattern_1): Make DATA the containing mem.
10903         Update the call to mips_rewrite_small_data_p.
10904         (mips_rewrite_small_data_1): Likewise.
10905         (mips_use_anchors_for_symbol_p): Update the call to
10906         mips_symbolic_constant_p.
10907         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10908         (splittable_symbolic_operand): Likewise.
10909         (move_operand): Likewise.
10910         (absolute_symbolic_operand): Likewise.
10911         (got_disp_operand): Likewise.
10912         (got_page_ofst_operand): Likewise.
10913
10914 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10915
10916         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
10917         (SYMBOL_ABSOLUTE): ...this.
10918         (SYMBOL_SMALL_DATA): Rename to...
10919         (SYMBOL_GP_RELATIVE): ...this.
10920         (SYMBOL_CONSTANT_POOL): Rename to...
10921         (SYMBOL_PC_RELATIVE): ...this.
10922         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
10923         (mips_symbolic_address_p, mips_symbol_insns, override_options)
10924         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
10925         after above changes.
10926         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10927         (general_symbolic_operand): Rename to...
10928         (absolute_symbolic_operand): ...this.
10929         * config/mips/mips.md: Update after above changes.
10930
10931 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
10932             Revital Eres  <eres@il.ibm.com>
10933
10934         * ddg.c (print_ddg): Add dump information.
10935         * modulo-sched.c (print_node_sched_params): Add parameter and
10936         verbosity.
10937         (calculate_maxii): Remove function.
10938         (undo_generate_reg_moves): Likewise.
10939         (undo_permute_partial_schedule): Likewise.
10940         (kernel_number_of_cycles): Likewise.
10941         (MAXII_FACTOR): New definition to calculate the upper bound of II.
10942         (sms_schedule): Use it.  Remove profitability checks.
10943         (sms_schedule_by_order): Fix order of nodes within the cycle.
10944
10945 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10946
10947         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
10948         -profile option, add pie support.
10949         (ENDFILE_SPEC): New spec.
10950         * config/gnu.h (LIB_SPEC): Add -profile option.
10951
10952 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10953
10954         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
10955         * config/gnu.h (LIB_SPEC): Likewise.
10956
10957 2007-08-07  Yaz Saito  <saito@google.com>
10958             Ian Lance Taylor  <iant@google.com>
10959
10960         * common.opt (finstrument-functions-exclude-function-list): New
10961         option.
10962         (finstrument-functions-exclude-file-list): New option.
10963         * opts.c (char_p): Define and DEF_VEC.
10964         (flag_instrument_functions_exclude_functions): New static
10965         variable.
10966         (flag_instrument_functions_exclude_files): New static variable.
10967         (add_instrument_functions_exclude_list): New static function.
10968         (flag_instrument_functions_exclude_p): New function.
10969         (common_handle_option): Handle new options.
10970         * flags.h (flag_instrument_functions_exclude_p): Declare.
10971         * gimplify.c (gimplify_function_tree): Call
10972         flag_instrument_functions_exclude_p.
10973         * doc/invoke.texi (Option Summary): Mention new options.
10974         (Code Gen Options): Document new options.
10975
10976 2007-08-07  Ian Lance Taylor  <iant@google.com>
10977
10978         PR rtl-optimization/32776
10979         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
10980         (resolve_use): Likewise.
10981         (decompose_multiword_subregs): Remove "changed" local variable.
10982
10983 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
10984
10985         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
10986         * configure: Regenerate.
10987         * config.in: Regenerate.
10988         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
10989         spec string.
10990
10991 2007-08-07  Ian Lance Taylor  <iant@google.com>
10992
10993         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
10994         note, just delete the insn.
10995
10996 2007-08-07  Andreas Schwab  <schwab@suse.de>
10997
10998         PR bootstrap/32973
10999         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
11000         struct definition.
11001
11002 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
11003
11004         * lower-subreg.c (resolve_subreg_use): Remove assertion.
11005         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
11006         (decompose_multiword_subregs): Use the functions above to decompose
11007         multiword shifts and zero-extends.
11008
11009 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11010
11011         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
11012         "assemble" descriptions which were swapped.
11013
11014 2007-08-06  Chao-ying Fu  <fu@mips.com>
11015
11016         * fixed-value.h: New file.
11017         * fixed-value.c: New file.
11018         * Makefile.in (OBJS-common): Add fixed-value.o.
11019         (fixed-value.o): New rule.
11020         (GTFILES): Add fixed-value.h.
11021         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
11022         to compare a.low and b.low.
11023         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
11024
11025 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11026             Daniel Jacobowitz  <dan@codesourcery.com>
11027
11028         PR target/31868
11029         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
11030         tmake_file.
11031         (x86_64-*-netbsd*): Likewise.
11032         (x86_64-*-linux*): Likewise.
11033         (x86_64-*-kfreebsd*-gnu): Likewise.
11034         (x86_64-*-knetbsd*-gnu): Likewise.
11035         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
11036
11037         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
11038
11039         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
11040         Add -fno-asynchronous-unwind-tables.
11041
11042         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
11043         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
11044         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
11045         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
11046         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
11047
11048 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11049
11050         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
11051         (TARGET_C_MODE_FOR_SUFFIX): New.
11052
11053 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11054
11055         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
11056
11057 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11058
11059         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
11060
11061 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11062
11063         * config/i386/i386.md: Check TARGET_ macros and optimize_size
11064         before checking function returns in conditional expressions.
11065
11066 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
11067
11068         PR pch/13676
11069         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
11070
11071 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11072
11073         PR middle-end/32988
11074         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
11075         for INTEGRAL_TYPE_P.
11076
11077 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
11078
11079         * configure.ac: Remove --enable-checking=df from default settings.
11080         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
11081         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
11082         if the parameter is true.
11083         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
11084         DF_VERIFY_SCHEDULED flag is true.
11085         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
11086         (df_finish_pass): Adjust prototype.
11087         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
11088         true.
11089
11090         * see.c (pass_see): Add TODO_df_verify.
11091         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
11092         * global.c (rest_of_handle_global_alloc): Schedule verification
11093         after the pass.
11094         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
11095         before the pass.
11096         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
11097         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
11098         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
11099
11100         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
11101         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
11102         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
11103
11104 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
11105             Revital Eres <eres@il.ibm.com>
11106
11107         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
11108         flag.
11109         * ddg.c (create_ddg_dependence): Rename to...
11110         (create_ddg_dep_from_intra_loop_link): This.  Do not check
11111         for interloop edges.  Do not create anti dependence edge when
11112         a true dependence edge exists in the opposite direction and
11113         -fmodulo-sched-allow-regmoves is set.
11114         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
11115         (add_cross_iteration_register_deps): Create anti dependence edge
11116         when -fno-modulo-sched-allow-regmoves is set.
11117         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
11118
11119 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
11120
11121         * config/arm/arm.md (movsi): Add braces.
11122
11123 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11124
11125         PR middle-end/32780
11126         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
11127         operands for the folding of "A - (A & B)" into "~B & A"; cast them
11128         to type.
11129
11130 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
11131
11132         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
11133         state accessor functions.
11134         * cfgloopmanip.c (remove_path, create_preheaders,
11135         force_single_succ_latches, fix_loop_structure): Ditto.
11136         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11137         tree_duplicate_loop_to_header_edge): Ditto.
11138         * cfgloopanal.c (mark_irreducible_loops): Ditto.
11139         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
11140         Ditto.
11141         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
11142         cleanup_tree_cfg): Ditto.
11143         * tree-cfg.c (tree_merge_blocks): Ditto.
11144         * cfgloop.c (rescan_loop_exit, record_loop_exits,
11145         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
11146         loop_preheader_edge, single_exit): Ditto.
11147         (flow_loops_find): Do not clear loops->state.
11148         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
11149         loops_state_clear): New functions.
11150
11151 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11152
11153         PR middle-end/32399
11154         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
11155         when adding to the base and convert ELT to sizetype instead of type.
11156
11157 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11158
11159         PR middle-end/32304
11160         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
11161         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
11162
11163 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11164
11165         PR middle-end/32935
11166         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
11167          correct type the negate expression.
11168
11169 2007-08-03  Jan Hubicka  <jh@suse.cz>
11170
11171         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
11172         stack boundary.
11173
11174 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
11175
11176         * config/rs6000/rs6000.c (struct processor_cost): Change
11177         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
11178         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
11179         information.
11180         (rios1_costs, rios2_cost): Correct cache line size.
11181         (rs6000_override_options): Set l2-cache-size parameter.
11182
11183 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11184             Diego Novillo  <dnovillo@google.com>
11185
11186         PR 31521
11187         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
11188         if the range includes 0.
11189
11190 2007-08-03  Ben Elliston  <bje@au.ibm.com>
11191
11192         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
11193         mode to unspec expressions to silence a warning from the generator
11194         programs.
11195         
11196 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
11197
11198         * config/ia64/constraints.md ("U"): Make constraint vector only.
11199
11200 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11201
11202         PR middle-end/25446
11203         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
11204         always_inline attribute on the function decl.
11205
11206 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11207
11208         PR middle-end/25445
11209         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
11210         if we are compiling with -fPIC.
11211
11212 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
11213             Nigel Stephens  <nigel@mips.com>
11214
11215         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
11216         Define for MIPS32 and MIPS64.
11217
11218 2007-08-02  Nick Clifton  <nickc@redhat.com>
11219
11220         * config/host-hpux.c: Change copyright header to refer to version
11221         3 of the GNU General Public License and to point readers at the
11222         COPYING3 file and the FSF's license web page.
11223         * config/alpha/predicates.md, config/alpha/vms-ld.c,
11224         config/alpha/linux.h, config/alpha/alpha.opt,
11225         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
11226         config/alpha/vms-unwind.h, config/alpha/ev4.md,
11227         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
11228         config/alpha/alpha.h, config/alpha/sync.md,
11229         config/alpha/openbsd.h, config/alpha/alpha.md,
11230         config/alpha/alpha-modes.def, config/alpha/ev5.md,
11231         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
11232         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
11233         config/alpha/constraints.md, config/alpha/osf.h,
11234         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
11235         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
11236         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
11237         config/frv/frv-asm.h, config/frv/frv-protos.h,
11238         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
11239         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
11240         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
11241         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
11242         config/s390/s390.opt, config/s390/s390-modes.def,
11243         config/s390/fixdfdi.h, config/s390/constraints.md,
11244         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
11245         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
11246         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
11247         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
11248         config/m32c/prologue.md, config/m32c/m32c.abi,
11249         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
11250         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
11251         config/m32c/t-m32c, config/m32c/m32c-modes.def,
11252         config/m32c/jump.md, config/m32c/shift.md,
11253         config/m32c/m32c-protos.h, config/libgloss.h,
11254         config/spu/spu-protos.h, config/spu/predicates.md,
11255         config/spu/spu-builtins.h, config/spu/spu.c,
11256         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
11257         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
11258         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
11259         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
11260         config/sparc/hypersparc.md, config/sparc/predicates.md,
11261         config/sparc/linux.h, config/sparc/sp64-elf.h,
11262         config/sparc/supersparc.md, config/sparc/cypress.md,
11263         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
11264         config/sparc/niagara.md, config/sparc/sparc.md,
11265         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
11266         config/sparc/sparc.opt, config/sparc/sync.md,
11267         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
11268         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
11269         config/sparc/sparc.c, config/sparc/little-endian.opt,
11270         config/sparc/sysv4-only.h, config/sparc/sparc.h,
11271         config/sparc/linux64.h, config/sparc/freebsd.h,
11272         config/sparc/sol2.h, config/sparc/rtemself.h,
11273         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
11274         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
11275         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
11276         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
11277         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
11278         config/m32r/linux.h, config/m32r/constraints.md,
11279         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
11280         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
11281         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
11282         config/i386/i386.md, config/i386/netware-crt0.c,
11283         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
11284         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
11285         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
11286         config/i386/sol2.h, config/i386/constraints.md,
11287         config/i386/netware-libgcc.c, config/i386/sysv5.h,
11288         config/i386/predicates.md, config/i386/geode.md,
11289         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
11290         config/i386/freebsd64.h, config/i386/vxworksae.h,
11291         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
11292         config/i386/rtemself.h, config/i386/netbsd-elf.h,
11293         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
11294         config/i386/netware.h, config/i386/i386-modes.def,
11295         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
11296         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
11297         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
11298         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
11299         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
11300         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
11301         config/i386/xm-mingw32.h, config/i386/linux64.h,
11302         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
11303         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
11304         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
11305         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
11306         config/i386/cygwin2.c, config/i386/i386-protos.h,
11307         config/i386/sync.md, config/i386/openbsd.h,
11308         config/i386/host-mingw32.c, config/i386/i386-aout.h,
11309         config/i386/nto.h, config/i386/biarch64.h,
11310         config/i386/i386-coff.h, config/i386/freebsd.h,
11311         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
11312         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
11313         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
11314         config/darwin-protos.h, config/linux.opt, config/sol2.c,
11315         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
11316         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
11317         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
11318         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
11319         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
11320         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
11321         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
11322         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
11323         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
11324         config/sh/superh64.h, config/sh/rtemself.h,
11325         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
11326         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
11327         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
11328         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
11329         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
11330         config/avr/predicates.md, config/avr/constraints.md,
11331         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
11332         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
11333         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
11334         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
11335         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
11336         config/c4x/c4x-modes.def, config/c4x/rtems.h,
11337         config/c4x/predicates.md, config/c4x/c4x.h,
11338         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
11339         config/xtensa/predicates.md, config/xtensa/xtensa.c,
11340         config/xtensa/linux.h, config/xtensa/xtensa.h,
11341         config/xtensa/elf.h, config/xtensa/xtensa.md,
11342         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
11343         config/xtensa/xtensa-protos.h, config/dbx.h,
11344         config/stormy16/predicates.md, config/stormy16/stormy16.md,
11345         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
11346         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
11347         config/host-solaris.c, config/fr30/fr30.h,
11348         config/fr30/predicates.md, config/fr30/fr30-protos.h,
11349         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
11350         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
11351         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
11352         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
11353         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
11354         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
11355         config/host-linux.c, config/interix3.h, config/cris/cris.c,
11356         config/cris/predicates.md, config/cris/linux.h,
11357         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
11358         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
11359         config/cris/aout.opt, config/cris/cris-protos.h,
11360         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
11361         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11362         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
11363         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
11364         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
11365         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
11366         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
11367         config/chorus.h, config/mn10300/mn10300.c,
11368         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
11369         config/mn10300/mn10300.h, config/mn10300/linux.h,
11370         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
11371         config/mn10300/mn10300.md, config/ia64/predicates.md,
11372         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
11373         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
11374         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
11375         config/ia64/freebsd.h, config/ia64/ia64.md,
11376         config/ia64/ia64-modes.def, config/ia64/constraints.md,
11377         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
11378         config/gofast.h, config/rtems.h, config/sol2-10.h,
11379         config/m68k/predicates.md, config/m68k/m68k.md,
11380         config/m68k/linux.h, config/m68k/m68k-modes.def,
11381         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
11382         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
11383         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
11384         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
11385         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
11386         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
11387         config/m68k/constraints.md, config/m68k/rtemself.h,
11388         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
11389         config/m68k/uclinux.h, config/rs6000/power4.md,
11390         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
11391         config/rs6000/linux.h, config/rs6000/eabi.h,
11392         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
11393         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
11394         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
11395         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
11396         config/rs6000/windiss.h, config/rs6000/603.md,
11397         config/rs6000/aix41.h, config/rs6000/cell.md,
11398         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
11399         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
11400         config/rs6000/darwin.md, config/rs6000/darwin64.h,
11401         config/rs6000/default64.h, config/rs6000/7xx.md,
11402         config/rs6000/darwin.opt, config/rs6000/spe.md,
11403         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
11404         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
11405         config/rs6000/7450.md, config/rs6000/linux64.h,
11406         config/rs6000/constraints.md, config/rs6000/440.md,
11407         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
11408         config/rs6000/rs6000.c, config/rs6000/aix52.h,
11409         config/rs6000/rs6000.h, config/rs6000/power6.md,
11410         config/rs6000/predicates.md, config/rs6000/altivec.md,
11411         config/rs6000/aix64.opt, config/rs6000/rios1.md,
11412         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
11413         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
11414         config/rs6000/darwin7.h, config/rs6000/dfp.md,
11415         config/rs6000/linux64.opt, config/rs6000/sync.md,
11416         config/rs6000/vxworksae.h, config/rs6000/power5.md,
11417         config/rs6000/lynx.h, config/rs6000/biarch64.h,
11418         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
11419         config/rs6000/eabispe.h, config/rs6000/e500.h,
11420         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
11421         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
11422         config/rs6000/aix.h, config/rs6000/vxworks.h,
11423         config/rs6000/40x.md, config/rs6000/aix51.h,
11424         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
11425         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
11426         config/arc/arc.h, config/mcore/mcore-elf.h,
11427         config/mcore/mcore-protos.h, config/mcore/predicates.md,
11428         config/mcore/mcore.md, config/mcore/mcore.c,
11429         config/mcore/mcore.opt, config/mcore/mcore.h,
11430         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
11431         config/score/predicates.md, config/score/score-version.h,
11432         config/score/score-protos.h, config/score/misc.md,
11433         config/score/elf.h, config/score/score.c, config/score/mac.md,
11434         config/score/score7.md, config/score/score.h,
11435         config/score/score-conv.h, config/score/score-mdaux.c,
11436         config/score/score.md, config/score/score.opt,
11437         config/score/score-modes.def, config/score/score-mdaux.h,
11438         config/score/mul-div.S, config/arm/uclinux-elf.h,
11439         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
11440         config/arm/symbian.h, config/arm/linux-elf.h,
11441         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
11442         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
11443         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
11444         config/arm/strongarm-pe.h, config/arm/arm.h,
11445         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
11446         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
11447         config/arm/arm-modes.def, config/arm/linux-eabi.h,
11448         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
11449         config/arm/arm-cores.def, config/arm/arm-protos.h,
11450         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
11451         config/arm/wince-pe.h, config/arm/neon.md,
11452         config/arm/constraints.md, config/arm/neon.ml,
11453         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
11454         config/arm/arm.opt, config/arm/arm926ejs.md,
11455         config/arm/predicates.md, config/arm/iwmmxt.md,
11456         config/arm/arm_neon.h, config/arm/unknown-elf.h,
11457         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
11458         config/arm/neon-testgen.ml, config/arm/arm.md,
11459         config/arm/xscale-coff.h, config/arm/pe.c,
11460         config/arm/arm-generic.md, config/arm/pe.h,
11461         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
11462         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
11463         config/arm/strongarm-elf.h, config/arm/cirrus.md,
11464         config/arm/netbsd-elf.h, config/arm/vxworks.h,
11465         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
11466         config/pa/predicates.md, config/pa/pa64-hpux.h,
11467         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
11468         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
11469         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
11470         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
11471         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
11472         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
11473         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
11474         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
11475         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
11476         config/pa/pa64-regs.h, config/pa/pa-modes.def,
11477         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
11478         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
11479         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
11480         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
11481         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
11482         config/mips/linux64.h, config/mips/elforion.h,
11483         config/mips/constraints.md, config/mips/generic.md,
11484         config/mips/predicates.md, config/mips/4300.md,
11485         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
11486         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
11487         config/mips/5k.md, config/mips/vr4120-div.S,
11488         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
11489         config/mips/mips-protos.h, config/mips/6000.md,
11490         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
11491         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
11492         config/mips/mips-modes.def, config/mips/vr.h,
11493         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
11494         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
11495         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
11496         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
11497         config/vax/openbsd1.h, config/vax/netbsd.h,
11498         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
11499         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
11500         config/h8300/rtems.h, config/h8300/predicates.md,
11501         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
11502         config/h8300/h8300.md, config/h8300/h8300.opt,
11503         config/h8300/coff.h, config/h8300/h8300-protos.h,
11504         config/v850/v850.md, config/v850/predicates.md,
11505         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
11506         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
11507         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
11508         config/mmix/mmix.h, config/mmix/predicates.md,
11509         config/mmix/mmix-protos.h, config/mmix/mmix.md,
11510         config/mmix/mmix.c, config/mmix/mmix.opt,
11511         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
11512         config/bfin/rtems.h, config/bfin/bfin-modes.def,
11513         config/bfin/predicates.md, config/bfin/bfin-protos.h,
11514         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
11515         Likewise.
11516
11517 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
11518
11519         * emit-rtl.c (reset_used_decls): Rename to...
11520         (set_used_decls): ...this.  Set the used flag rather than clearing it.
11521         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
11522         DECL_RTLs rather than resetting them.
11523
11524 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
11525
11526         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
11527
11528 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11529
11530         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
11531         argument to find_reloads_address.
11532
11533 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
11534
11535         PR tree-optimization/32919
11536         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
11537         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
11538         (coalesce_ssa_name): Call it.
11539
11540 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11541             David Ung  <davidu@mips.com>
11542
11543         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
11544         (__mips16_unorddf2, __mips16_floatunsidf): New.
11545         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
11546         above functions.
11547         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
11548
11549 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11550
11551         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
11552         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
11553         * tree.h (OMP_SECTIONS_CONTROL): New macro.
11554         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
11555         * omp-low.c (get_ws_args_for, determine_parallel_type,
11556         expand_omp_for_generic, expand_omp_for_static_nochunk,
11557         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
11558         Work with more precise CFG.
11559         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
11560         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
11561         OMP_CONTINUE.
11562         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
11563         * gimple-low.c (lower_stmt): Ditto.
11564         * tree-inline.c (estimate_num_insns_1): Ditto.
11565         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
11566         (OMP_SECTIONS_SWITCH): New.
11567         * tree-cfgcleanup.c (cleanup_omp_return): New.
11568         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
11569         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
11570         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
11571         (tree_redirect_edge_and_branch): Handle omp constructs.
11572
11573         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
11574         with three arguments.
11575
11576 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11577
11578         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
11579         in loop closed ssa.
11580
11581 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11582
11583         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
11584         the loop structures may need fixing.
11585         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
11586         New functions.
11587         (cleanup_tree_cfg_loop): Removed.
11588         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
11589         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
11590         instead of running cleanup_tree_cfg_loop.
11591         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
11592         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
11593         (tree_predictive_commoning): Declaration changed.
11594         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
11595
11596 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11597
11598         * doc/invoke.texi (l1-cache-size): Update documentation.
11599         (l2-cache-size): Document.
11600         * params.h (L2_CACHE_SIZE): New macro.
11601         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
11602         that L1_CACHE_SIZE is in kB now.
11603         (L2_CACHE_SIZE_BYTES): New macro.
11604         (tree_ssa_prefetch_arrays): Show size in kB.
11605         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
11606         and l2_cache_size fields.
11607         * config/i386/driver-i386.c (describe_cache): Detect cache size
11608         in kB.
11609         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
11610         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
11611         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
11612         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
11613         (override_options): Set l1-cache-size and l2-cache-size to default
11614         values if not specified otherwise.
11615         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
11616         (PARAM_L2_CACHE_SIZE): New.
11617
11618 2007-08-01  Nigel Stephens  <nigel@mips.com>
11619             David Ung  <davidu@mips.com>
11620             Thiemo Seufer  <ths@mips.com>
11621             Chris Dearman  <chris@mips.com>
11622             Richard Sandiford  <richard@codesourcery.com>
11623
11624         * config.gcc (mips*-sde-elf*): New stanza.
11625         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
11626         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
11627         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
11628         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
11629         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
11630         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
11631         to tmake_file.
11632         * config/mips/sde.h: New file.
11633         * config/mips/t-libgcc-mips16: Likewise.
11634         * config/mips/t-sde: Likewise.
11635         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
11636         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
11637         _MIPS_FPSET and _MIPS_SZINT.
11638         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
11639         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
11640         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
11641         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
11642         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11643         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11644         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
11645         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
11646         _MIPS_SZPTR and _MIPS_FPSET.
11647         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
11648         architecture is specified.
11649         (MIPS_32BIT_OPTION_SPEC): New macro.
11650
11651 2007-07-31  Dan Hipschman  <dsh@google.com>
11652
11653         * gcc.c (end_going_arg): New function.
11654         (do_spec_2): Use it.
11655         (do_spec_1): Use it.
11656
11657 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11658
11659         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
11660         only if ENABLE_CHECKING is defined.
11661
11662 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
11663
11664         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
11665         df_ru_add_problem, df_ru_get_bb_info): Removed.
11666         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
11667         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
11668         df_ru_free_bb_info, df_ru_alloc,
11669         df_ru_bb_local_compute_process_def,
11670         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
11671         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
11672         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
11673         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
11674         df_ru_add_problem): Removed.
11675
11676 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11677
11678         PR target/32847
11679         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
11680         (casesi32p, casesi64p): Likewise.
11681         (casesi): Adjust for above.
11682
11683 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
11684
11685         * mode-switching.c (create_pre_exit): Don't search past calls.
11686
11687 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
11688
11689         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
11690
11691 2007-07-31  Revital Eres  <eres@il.ibm.com>
11692
11693         * ddg.c (add_deps_for_def): Rename to...
11694         (add_cross_iteration_register_deps): This.  Change implementation
11695         to use only reaching def and def-use chains to construct the
11696         inter loop dependencies.
11697         (add_deps_for_use): Remove function.
11698         (build_inter_loop_deps): Call add_cross_iteration_register_deps
11699         function to build the inter loop dependencies.
11700         * modulo-sched.c (sms_schedule): Build only
11701         reaching def and def-use chains for the propose of the ddg
11702         construction.
11703
11704 2007-07-31  Julian Brown  <julian@codesourcery.com>
11705
11706         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
11707         New define_insns. Use correct RTL.
11708         (vec_set<mode>): Write as expander.
11709
11710 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
11711
11712         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
11713         to an unallocated space.
11714
11715 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
11716
11717         * tree-data-ref.c
11718         (split_constant_offset): Enable split_constant_offset to extract
11719         constants from other statements.
11720         * tree-vect-transform.c
11721         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
11722         to a temp var. Force base_offset to be simple.
11723
11724 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
11725
11726         * df-scan.c (df_scan_verify): Remove artificial limit on
11727         the number of blocks for verification.
11728         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
11729         df_simulate_defs): Avoid unnecessary insn checking for defs.
11730
11731 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
11732
11733         * config/m68k/lb1sf68.asm (FUNC): New macro.
11734         (__mulsi3): Use it.
11735         (__udivsi3): Likewise.
11736         (__divsi3): Likewise.
11737         (__umodsi3): Likewise.
11738         (__modsi3): Likewise.
11739         (__subdf3): Likewise.
11740         (__adddf3): Likewise.
11741         (__muldf3): Likewise.
11742         (__divdf3): Likewise.
11743         (__negdf2): Likewise.
11744         (__cmpdf2): Likewise.
11745         (__subsf3): Likewise.
11746         (__addsf3): Likewise.
11747         (__mulsf3): Likewise.
11748         (__divsf3): Likewise.
11749         (__negsf2): Likewise.
11750         (__cmpsf2): Likewise.
11751         (__eqdf2): Likewise.
11752         (__nedf2): Likewise.
11753         (__gtdf2): Likewise.
11754         (__gedf2): Likewise.
11755         (__ltdf2): Likewise.
11756         (__ledf2): Likewise.
11757         (__eqsf2): Likewise.
11758         (__nesf2): Likewise.
11759         (__gtsf2): Likewise.
11760         (__gesf2): Likewise.
11761         (__ltsf2): Likewise.
11762         (__lesf2): Likewise.
11763
11764 2007-07-30  Ollie Wild  <aaw@google.com>
11765
11766         * c-ppoutput.c (print_lines_directives_only): New function.
11767         (scan_translation_unit_directives_only): New function.
11768         (preprocess_file): Add call to scan_translation_unit_directives_only.
11769         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
11770         (sanitize_cpp_opts): Add default flag_dump_macros setting for
11771         -fdirectives-only.  Add errors for -fdirectives-only conflict with
11772         -Wunused-macros and -traditional.
11773         (finish_options): Add builtin macro initialization for
11774         -fdirectives-only + -fpreprocessed.
11775         * c.opt (fdirectives-only): New.
11776         * doc/cppopts.texi (fdirectives-only): New.
11777
11778 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11779
11780         * alias.c (record_set, memory_modified_1): Constify.
11781         * bt-load.c (note_btr_set): Likewise.
11782         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
11783         * combine.c (set_nonzero_bits_and_sign_copies,
11784         expand_field_assignment, record_dead_and_set_regs_1,
11785         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
11786         likely_spilled_retval_1): Likewise.
11787         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
11788         frv_io_handle_set): Likewise.
11789         * config/mips/mips.c (mips_sim_record_set,
11790         vr4130_true_reg_dependence_p_1): Likewise.
11791         * config/mt/mt.c (insn_dependent_p_1): Likewise.
11792         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
11793         * config/sh/sh.c (flow_dependent_p_1): Likewise.
11794         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
11795         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
11796         * ddg.c (mark_mem_store): Likewise.
11797         * df-problems.c (df_urec_mark_reg_change): Likewise.
11798         * function.c (update_epilogue_consts): Likewise.
11799         * gcse.c (record_set_info, record_last_set_info,
11800         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
11801         reg_clear_last_set): Likewise.
11802         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
11803         Likewise.
11804         * jump.c (reversed_comparison_code_parts): Likewise.
11805         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
11806         reg_is_set): Likewise.
11807         * loop-iv.c (mark_altered): Likewise.
11808         * mode-switching.c (reg_becomes_live): Likewise.
11809         * optabs.c (no_conflict_move_test): Likewise.
11810         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
11811         Likewise.
11812         * postreload.c (reload_combine_note_store, move2add_note_store):
11813         Likewise.
11814         * regmove.c (flags_set_1): Likewise.
11815         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
11816         Likewise.
11817         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
11818         Likewise. 
11819         * resource.c (update_live_status): Likewise.
11820         * rtl.h (set_of, note_stores): Likewise.
11821         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
11822         note_stores, parms_set): Likewise.
11823         * sched-rgn.c (sets_likely_spilled_1): Likewise.
11824         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
11825         Likewise. 
11826         * var-tracking.c (count_stores, add_stores): Likewise.
11827
11828 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11829
11830         * alias.c (mems_in_disjoint_alias_sets_p,
11831         fixed_scalar_and_varying_struct_p, aliases_everything_p,
11832         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
11833         write_dependence_p, mems_in_disjoint_alias_sets_p,
11834         read_dependence, true_dependence, canon_true_dependence,
11835         anti_dependence, output_dependence): Constify.
11836         * combine.c (extended_count): Likewise.
11837         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
11838         * cselib.c (get_value_hash, references_value_p,
11839         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
11840         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
11841         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
11842         * function.c (contains, prologue_epilogue_contains,
11843         sibcall_epilogue_contains): Likewise. 
11844         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
11845         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
11846         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
11847         reg_or_subregno): Likewise.
11848         * recog.c (asm_noperands): Likewise.
11849         * reload1.c (function_invariant_p): Likewise.
11850         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
11851         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
11852         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
11853         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
11854         true_regnum, reg_or_subregno, condjump_in_parallel_p,
11855         extended_count, prologue_epilogue_contains,
11856         sibcall_epilogue_contains, function_invariant_p, true_dependence,
11857         canon_true_dependence, read_dependence, anti_dependence,
11858         output_dependence): Likewise.
11859         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
11860
11861 2007-07-30  Julian Brown  <julian@codesourcery.com>
11862
11863         * config/arm/neon.md (V_ext): New mode attribute.
11864         (neon_vget_lane<mode>): Replace with define_expand.
11865         (neon_vget_lane<mode>_sext_internal)
11866         (neon_vget_lane<mode>_zext_internal): New define_insns for double
11867         and quad precision vectors.
11868         (neon_vget_lanedi): Add bounds check. Remove dead comment.
11869         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
11870         have typeless 32-bit result.
11871
11872 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11873
11874         PR tree-opt/32527
11875         * tree-affine.h (aff_tree): The type of rest is sizetype for types
11876         of pointers.
11877         * tree-affine.c (aff_combination_scale): If type is a pointer type,
11878         use sizetype for rest.
11879         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
11880         (aff_combination_convert): Don't convert rest for pointer types.
11881
11882 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11883
11884         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
11885
11886         * tree-ssa-alias.c: Add alloc-pool.h.
11887         (init_alias_info): Free alias_bitmap_obstack.
11888         (delete_alias_info): Call delete_mem_ref_stats.
11889         (get_mem_sym_stats_for): Use alloc_pool.
11890         (init_mem_ref_stats): Do not delete mem_ref_stats here.
11891         (delete_mem_sym_stats): Removed.
11892         
11893 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
11894
11895         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
11896         functions cannot be represented as classical distance vectors.
11897
11898 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11899
11900         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
11901         * builtins.c (validate_arg, builtin_mathfn_code,
11902         validate_arglist): Likewise.
11903         * calls.c (call_expr_flags): Likewise.
11904         * combine.c (reg_nonzero_bits_for_combine,
11905         reg_num_sign_bit_copies_for_combine, get_last_value,
11906         reg_truncated_to_mode): Likewise.
11907         * emit-rtl.c (subreg_lowpart_p): Likewise.
11908         * expr.c (highest_pow2_factor_for_target,
11909         categorize_ctor_elements_1, categorize_ctor_elements,
11910         count_type_elements, contains_packed_reference,
11911         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
11912         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
11913         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
11914         native_encode_int, native_encode_real, native_encode_complex,
11915         native_encode_vector, native_encode_expr, native_interpret_int,
11916         native_interpret_real, native_interpret_complex,
11917         native_interpret_vector, native_interpret_expr): Likewise.
11918         * function.c (use_register_for_decl): Likewise.
11919         * gimplify.c (get_name): Likewise.
11920         * langhooks-def.h (lhd_return_null_const_tree): New.
11921         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
11922         * langhooks.c (lhd_return_null_const_tree): New.
11923         * langhooks.h (lang_get_callee_fndecl): Constify.
11924         * output.h (constructor_static_from_elts_p): Likewise.
11925         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
11926         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
11927         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
11928         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
11929         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
11930         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
11931         * rtlhooks-def.h (reg_nonzero_bits_general,
11932         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
11933         Likewise. 
11934         * rtlhooks.c (reg_num_sign_bit_copies_general,
11935         reg_nonzero_bits_general, reg_truncated_to_mode_general):
11936         Likewise. 
11937         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
11938         * stor-layout.c (mode_for_size_tree): Likewise.
11939         * tree-ssa-loop-im.c (memref_eq): Likewise.
11940         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
11941         * tree.c (contains_placeholder_p, type_list_equal,
11942         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
11943         Likewise. 
11944         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
11945         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
11946         contains_placeholder_p, contains_packed_reference,
11947         get_callee_fndecl, operand_equal_for_phi_arg_p,
11948         warn_if_unused_value, is_body_block, native_encode_expr,
11949         native_interpret_expr, fold_convertible_p, operand_equal_p,
11950         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
11951         validate_arglist, simple_cst_equal, type_list_equal,
11952         use_register_for_decl, call_expr_flags, get_name,
11953         highest_pow2_factor): Likewise.
11954         (const_call_expr_arg_iterator_d,
11955         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
11956         first_const_call_expr_arg, more_const_call_expr_args_p,
11957         FOR_EACH_CONST_CALL_EXPR_ARG): New.
11958         * varasm.c (constructor_static_from_elts_p): Constify.
11959
11960 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
11961
11962         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
11963         config/arm/neon-schedgen.ml, config/arm/neon.ml,
11964         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
11965         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
11966         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
11967         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
11968         spelling conventions.
11969         * doc/invoke.texi: Follow spelling conventions.
11970
11971 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
11972             Revital Eres  <eres@il.ibm.com>
11973
11974         * modulo-sched.c (sms_schedule): Avoid loops which includes
11975         auto-increment instructions.
11976
11977 2007-07-28  Richard Guenther  <rguenther@suse.de>
11978
11979         PR middle-end/32920
11980         * fold-const.c (fold_cond_expr_with_comparison): Convert
11981         operand zero of MIN/MAX_EXPR to correct type.
11982
11983 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11984
11985         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
11986         flags_from_decl_or_type): Constify.
11987         * gcc.c (do_spec_1): Likewise.
11988         * print-tree.c (dump_addr, print_node_brief): Likewise.
11989         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
11990         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
11991         tree_purge_all_dead_eh_edges): Likewise.
11992         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
11993         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
11994         Likewise. 
11995         * tree.c (expr_location, expr_has_location, expr_locus,
11996         expr_filename, expr_lineno, get_inner_array_type,
11997         fields_compatible_p): Likewise.
11998         * tree.h (get_inner_array_type, fields_compatible_p,
11999         expr_location, expr_has_location, expr_locus, expr_filename,
12000         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
12001         setjmp_call_p, alloca_call_p): Likewise.
12002
12003 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
12004
12005         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
12006         TV_FLOW_INSENSITIVE.
12007
12008         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
12009         TV_CALL_CLOBBER.
12010         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
12011         (compute_flow_insensitive_aliasing): Ditto for
12012         TV_FLOW_INSENSITIVE.    
12013
12014 2007-07-27  Jan Hubicka  <jh@suse.cz>
12015
12016         * config/i386/i386.c (register_move_cost): Remove accidentally
12017         comitted #if 0 block.
12018
12019         * attribs.c: Include hashtab.h
12020         (attribute_hash): New.
12021         (substring): New structure.
12022         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
12023         New function.
12024         (init_attributes): Initialize attribute hash.
12025         (decl_attributes): Use attribute hash.
12026         * Makefile.in (attribs.c): Depend on hashtab.h.
12027
12028 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
12029
12030         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
12031
12032 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
12033
12034         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
12035         __mips_dspr2 and __mips_dsp_rev macros.
12036         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
12037
12038 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
12039         
12040         * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
12041
12042 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
12043
12044         PR middle-end/32749
12045         
12046         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
12047         and the updating of the live and do_not_gen sets.
12048         (df_note_bb_compute): Added updating of live and do_not_gen sets
12049         for regular defs so that the case of clobber inside conditional
12050         call is processed correctly.
12051         
12052 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
12053
12054         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
12055         operands with compatible type.
12056
12057 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
12058
12059         * expr.h (store_bit_field): Don't return a value.
12060         * expmed.c (check_predicate_volatile_ok): New function.
12061         (store_bit_field_1): New function, extracted from store_bit_field.
12062         Take a fallback_p argument and return true if the operation succeeded.
12063         Only use store_fixed_bit_field if fallback_p.  Don't recompute
12064         mode_for_extraction; use op_mode instead.  Try forcing memories
12065         into registers if the insv expander fails.
12066         (store_bit_field): Use store_bit_field_1 with fallback_p true.
12067         Don't return a value.
12068         (convert_extracted_bit_field): New function, extracted from
12069         store_bit_field.
12070         (extract_bit_field_1): Likewise.  Take a fallback_p argument
12071         and return NULL if the operation succeeded.  Only use
12072         extract_fixed_bit_field if fallback_p.  Only calculate one
12073         extraction mode.  Combine code for extv and extzv.  Try forcing
12074         memories into registers if the ext(z)v expander fails.
12075         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
12076
12077 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12078
12079         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
12080         into bitfields.
12081         (df_ref): Likewise.  Put regno with other integer fields.
12082
12083 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12084
12085         * df.h (df_mw_hardreg): Remove "loc" field.
12086         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
12087         local variable.
12088         * df-problems.c (df_whole_mw_reg_unused_p): New function,
12089         split out from df_set_unused_notes_for_mw.  Return false for
12090         partial references.  Assert that mw_reg is a REG when returning true.
12091         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12092         (df_whole_mw_reg_dead_p): New function, split out from
12093         df_set_dead_notes_for_mw.  Return false for partial references.
12094         Assert that mw_reg is a REG when returning true.
12095         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12096         Remove redundant bitmap check.
12097
12098 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
12099
12100         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
12101         ($(T)crtend.o): Likwise.
12102         ($(T)crtbeginS.o): Likwise.
12103         ($(T)crtendS.o): Likwise.
12104         ($(T)crtfastmath.o): Likwise.
12105
12106 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
12107
12108         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
12109         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
12110         * basic-block.h (struct control_flow_graph): Added x_dom_computed
12111         and x_n_bbs_in_dom_tree fields.
12112
12113 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
12114
12115         PR tree-optimization/32087
12116         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
12117         Do not call scale_bbs_frequencies_int with prob of zero.
12118
12119 2007-07-26  Julian Brown  <julian@codesourcery.com>
12120
12121         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
12122         (neon_element_bits): Add prototypes.
12123         * config/arm/arm.c (bounds_check, neon_lane_bounds)
12124         (neon_const_bounds, neon_element_bits): New functions.
12125         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
12126         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
12127         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
12128         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
12129         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
12130         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
12131         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
12132         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
12133         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
12134         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
12135         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
12136         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
12137         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
12138
12139 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
12140
12141         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
12142         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
12143
12144 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
12145             Julian Brown  <julian@codesourcery.com>
12146
12147         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
12148         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
12149         * config/arm/cortex-a8.md: New.
12150         * config/arm/cortex-a8-neon.md: New.
12151         * config/arm/neon-schedgen.ml: New.
12152         * config/arm/neon.md (vqh_mnem): New.
12153         (neon_type): New.
12154         (Is_float_mode): New.
12155         (Scalar_mul_8_16): New.
12156         (Is_d_reg): New.
12157         (V_mode_nunits): New.
12158         (All instruction patterns): Annotate with neon_type attribute
12159         values.
12160         * config/arm/arm.md: Include cortex-a8.md.
12161         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
12162         values.
12163         Annotate instruction patterns accordingly.
12164         (generic_sched): Do not use generic scheduling for Cortex-A8.
12165         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
12166
12167 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
12168
12169         * fold-const.c (fold_read_from_constant_string): Use
12170         build_int_cst_type.
12171         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
12172
12173 2007-07-26  Nick Clifton  <nickc@redhat.com>
12174
12175         * tree-ssa-operands.h: Change copyright header to refer to version
12176         3 of the GNU General Public License and to point readers at the
12177         COPYING3 file and the FSF's license web page.
12178         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
12179         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
12180         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
12181         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
12182         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
12183         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
12184         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
12185         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
12186         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
12187         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
12188         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
12189         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
12190         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
12191         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
12192         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
12193         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
12194         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
12195         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
12196         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
12197         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
12198         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
12199         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
12200         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
12201         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
12202         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
12203         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
12204         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
12205         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
12206         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
12207         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
12208         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
12209         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
12210         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
12211         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
12212         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
12213         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
12214         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
12215         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
12216         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
12217         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
12218         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
12219         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
12220         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
12221         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
12222         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
12223         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
12224         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
12225         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
12226         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
12227         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
12228         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
12229         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
12230         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
12231         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
12232         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
12233         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
12234         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
12235         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
12236         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
12237         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
12238         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
12239         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
12240         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
12241         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
12242         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
12243         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
12244         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
12245         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
12246         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
12247         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
12248         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
12249         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
12250         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
12251         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
12252         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
12253         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
12254         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
12255         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
12256         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
12257         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
12258         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
12259         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
12260         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
12261         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
12262         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
12263         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
12264         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
12265         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
12266         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
12267         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
12268         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
12269         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
12270         vecprim.h, basic-block.h, tree-ssa-structalias.c,
12271         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
12272         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
12273         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
12274         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
12275         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
12276         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
12277         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
12278         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
12279         convert.c, convert.h, langhooks-def.h, reload1.c,
12280         tree-ssa-operands.c: Likewise.
12281
12282 2007-07-26  Jan Hubicka  <jh@suse.cz>
12283
12284         * tree-ssa-live.c: Include debug.h and flags.h.
12285         (mark_scope_block_unused): New function.
12286         (remove_unused_scope_block_p): New function.
12287         (remove_unused_locals): Remove unused blocks too.
12288
12289 2007-07-25  Ian Lance Taylor  <iant@google.com>
12290
12291         * combine.c (combine_max_regno): Remove.  Remove all uses.
12292         (struct reg_stat_struct): Rename from struct reg_stat.
12293         (reg_stat_type): Define, and declare VECs.
12294         (reg_stat): Change from pointer to VEC.  Change all uses.
12295         (combine_split_insns): New static function.
12296         (try_combine, find_split_point): Call it instead of split_insns.
12297
12298 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12299
12300         * cfghooks.c (split_block): Fix the information about loop latch.
12301
12302 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12303
12304         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
12305
12306 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12307
12308         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12309         Scan the new edge for loop exit info.
12310
12311 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
12312
12313         * config/darwin.c: Include debug.h.
12314
12315 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12316
12317         PR target/32218
12318         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
12319
12320 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12321
12322         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
12323         (HARD_REGNO_MODE_OK): Ditto.
12324         (MODES_TIEABLE_P): Ditto.
12325         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
12326         (CLASS_MAX_NREGS): Ditto.
12327         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
12328         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
12329         (divdf3_internal_thr): Removed.
12330         * config/ia64/div.md: New file.
12331         * config/ia64/constraints.md: Add H constraint.
12332
12333 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12334
12335         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
12336         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
12337         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
12338         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
12339         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
12340         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
12341         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
12342         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
12343         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
12344         dump_sbitmap_file, debug_sbitmap, popcount_table,
12345         sbitmap_popcount): Constify.
12346         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
12347         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
12348         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
12349         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
12350         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
12351         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
12352         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
12353         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
12354         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
12355         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
12356         sbitmap_popcount, sbitmap_verify_popcount): Constify.
12357
12358 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12359
12360         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
12361         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
12362         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
12363         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
12364         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
12365         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
12366         bitmap_intersect_p, bitmap_intersect_compl_p,
12367         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12368         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
12369         Constify.
12370         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
12371         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
12372         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
12373         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
12374         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12375         debug_bitmap, debug_bitmap_file, bitmap_print,
12376         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
12377         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
12378
12379 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
12380
12381         * config/darwin.c (darwin_override_options): Additional fix for
12382         debug info formats that don't support var tracking.
12383
12384 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12385
12386         * cselib.c (entry_and_rtx_equal_p): Constify.
12387         * gengtype.c (output_mangled_typename, write_types, write_local):
12388         Likewise.
12389         * gengtype.h (const_type_p): New.
12390         * see.c (eq_descriptor_extension, hash_descriptor_extension):
12391         Constify.
12392         * tlink.c (scan_linker_output): De-constify.
12393         * tree-ssa-loop-im.c (memref_eq): Constify.
12394         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
12395         (shared_bitmap_hash, shared_bitmap_eq): Constify.
12396
12397 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12398
12399         * c-common.c (fname_as_string, c_type_hash): Constify.
12400         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12401         * cgraph.c (edge_hash, edge_eq): Likewise.
12402         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
12403         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
12404         reg_attrs_htab_eq): Likewise.
12405         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
12406         Likewise.
12407         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
12408         const_decl_t, const_state_t, const_automata_list_el_t): New.
12409         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
12410         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
12411         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
12412         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
12413         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
12414         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
12415         compare_max_occ_cycle_nums, out_state_arcs_num,
12416         compare_transition_els_num, units_cmp, state_reservs_cmp):
12417         Constify.
12418         * genmodes.c (cmp_modes): Likewise.
12419         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
12420         * gimplify.c (compare_case_labels): Likewise.
12421         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
12422         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
12423         * matrix-reorg.c (mtt_info_hash): Likewise.
12424         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
12425         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
12426         (htab_hash_bucket, htab_hash_elem): Constify.
12427         * tree-browser.c (TB_parent_eq): Likewise.
12428         * tree-scalar-evolution.c (hash_scev_info): Likewise.
12429         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
12430         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
12431         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
12432         Constify.
12433         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
12434         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
12435         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
12436         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
12437         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
12438         New.
12439         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
12440         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
12441         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
12442         * tree-ssa-threadupdate.c (redirection_data_hash,
12443         redirection_data_eq): Likewise. 
12444         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
12445         * tree-ssa.c (var_ann_eq): Likewise.
12446         * tree-vrp.c (compare_case_labels): Likewise.
12447         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
12448         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
12449         tree_not_check_failed, tree_class_check_failed,
12450         tree_range_check_failed, tree_not_class_check_failed,
12451         omp_clause_check_failed, omp_clause_range_check_failed,
12452         tree_contains_struct_check_failed, tree_operand_check_failed):
12453         Likewise. 
12454         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
12455         tree_not_check_failed, tree_class_check_failed,
12456         tree_range_check_failed, tree_not_class_check_failed,
12457         tree_operand_check_failed, omp_clause_operand_check_failed,
12458         tree_operand_length): Likewise. 
12459         * var-tracking.c (const_variable): New.
12460         (variable_htab_hash, variable_htab_eq): Constify.
12461         * varasm.c (const_desc_hash): Likewise.
12462
12463 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12464
12465         * expr.c (handled_component_p): Constify.
12466         * fold-const.c (fit_double_type): Likewise.
12467         * real.h (real_value_from_int_cst): Likewise.
12468         * tree-flow-inline.h (gimple_in_ssa_p,
12469         gimple_aliases_computed_p, gimple_addressable_vars,
12470         gimple_call_clobbered_vars, gimple_referenced_vars,
12471         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
12472         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
12473         may_aliases, end_readonly_imm_use_p, has_zero_uses,
12474         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
12475         is_label_stmt, is_global_var, phi_ssa_name_p,
12476         factoring_name_p, is_call_clobbered, tree_common_ann,
12477         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
12478         unmodifiable_var_p, array_ref_contains_indirect_ref,
12479         ref_contains_array_ref, lookup_subvars_for_var,
12480         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
12481         gimple_mem_ref_stats): Likewise.
12482         * tree-flow.h (tree_common_ann, var_ann, function_ann,
12483         may_aliases, is_exec_stmt, is_label_stmt,
12484         ref_contains_array_ref, array_ref_contains_indirect_ref,
12485         var_can_have_subvars, overlap_subvar, is_call_clobbered,
12486         unmodifiable_var_p): Likewise.
12487         * tree-gimple.c (is_gimple_min_invariant): Likewise.
12488         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
12489         * tree.c (type_hash_list, attribute_hash_list, tree_size,
12490         cst_and_fits_in_hwi, real_value_from_int_cst,
12491         build_real_from_int_cst, integer_zerop, integer_onep,
12492         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
12493         tree_floor_log2, real_zerop, real_onep, real_twop,
12494         real_minus_onep, really_constant_p, purpose_member, chain_member,
12495         list_length, fields_length, int_size_in_bytes, bit_position,
12496         int_bit_position, byte_position, int_byte_position, expr_align,
12497         array_type_nelts, tree_node_structure,
12498         type_contains_placeholder_1, iterative_hash_pointer,
12499         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
12500         tree_map_base_eq, type_hash_list, type_hash_eq,
12501         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
12502         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
12503         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12504         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
12505         int_fits_type_p, get_containing_scope, decl_function_context,
12506         decl_type_context, omp_clause_operand_check_failed,
12507         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
12508         * tree.h (omp_clause_operand_check_failed, tree_size,
12509         build_real_from_int_cst, array_type_nelts, purpose_member,
12510         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
12511         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12512         is_attribute_p, check_qualified_type, expr_align,
12513         int_size_in_bytes, bit_position, int_bit_position, byte_position,
12514         int_byte_position, list_length, fields_length, initializer_zerop,
12515         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
12516         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
12517         tree_node_structure, handled_component_p, get_containing_scope,
12518         decl_function_context, decl_type_context, real_zerop,
12519         type_num_arguments, fit_double_type, really_constant_p,
12520         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
12521         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
12522         real_twop, real_minus_onep, int_cst_value): Likewise.
12523
12524 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12525
12526         * cfglayout.c (insn_scope, insn_line): Constify.
12527         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
12528         const_double_htab_hash, const_double_htab_eq,
12529         mem_attrs_htab_hash): Likewise.
12530         * loop-iv.c (biv_eq): Likewise.
12531         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
12532         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
12533         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
12534         Likewise. 
12535         * rtl-error.c (location_for_asm, diagnostic_for_asm,
12536         error_for_asm, warning_for_asm, _fatal_insn,
12537         _fatal_insn_not_found): Likewise. 
12538         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
12539         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
12540         rtl_check_failed_type2, rtl_check_failed_code1,
12541         rtl_check_failed_code2, rtl_check_failed_code_mode,
12542         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
12543         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
12544         rtl_check_failed_type2, rtl_check_failed_code1,
12545         rtl_check_failed_code2, rtl_check_failed_code_mode,
12546         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
12547         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
12548         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
12549         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
12550         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
12551         rtx_unstable_p, get_integer_term, get_related_value,
12552         offset_within_block_p, reg_mentioned_p, count_occurrences,
12553         reg_referenced_p, reg_used_between_p, no_labels_between_p,
12554         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
12555         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
12556         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
12557         find_constant_src, find_reg_fusage, find_regno_fusage,
12558         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
12559         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
12560         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
12561         computed_jump_p, auto_inc_p, in_expr_list_p,
12562         remove_node_from_expr_list, loc_mentioned_in_p,
12563         label_is_jump_target_p, reversed_comparison_code_parts,
12564         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
12565         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
12566         print_inline_rtx): Likewise.
12567         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
12568         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
12569         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
12570         get_integer_term, get_related_value, offset_within_block_p,
12571         count_occurrences, reg_mentioned_p, no_labels_between_p,
12572         reg_used_between_p, reg_referenced_p, single_set_2,
12573         multiple_sets, set_noop_p, refers_to_regno_p,
12574         reg_overlap_mentioned_p, dead_or_set_p,
12575         covers_regno_no_parallel_p, covers_regno_p,
12576         dead_or_set_regno_p, find_reg_note, find_regno_note,
12577         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
12578         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
12579         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
12580         side_effects_p, may_trap_p_1, may_trap_p,
12581         may_trap_after_code_motion_p, may_trap_or_fault_p,
12582         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
12583         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
12584         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
12585         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
12586         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
12587         Likewise. 
12588         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
12589         warning_for_asm): Likewise.
12590         * tree.h (print_rtl): Likewise.
12591         * varasm.c (get_pool_mode): Likewise.
12592
12593 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12594
12595         * c-lex.c (c_lex_with_flags, lex_string): Constify.
12596         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
12597         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12598         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
12599         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
12600         * ddg.c (compare_sccs): Likewise.
12601         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
12602         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
12603         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
12604         decimal_do_fix_trunc, decimal_real_to_integer,
12605         decimal_real_to_integer2, decimal_real_maxval): Likewise.
12606         * dse.c (const_group_info_t): New.
12607         (invariant_group_base_eq, invariant_group_base_hash): Constify.
12608         * dwarf2out.c (const_dw_die_ref): New.
12609         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
12610         * tree-browser.c (TB_parent_eq): Likewise.
12611         * unwind-dw2-fde.c (__register_frame_info_bases,
12612         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
12613         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
12614         Likewise.
12615         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
12616         * unwind-dw2.c (uw_frame_state_for): Likewise.
12617         * value-prof.c (histogram_hash, histogram_eq): Likewise.
12618         * value-prof.h (const_histogram_value): New.
12619
12620 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
12621
12622         * config/mips/mips.c (machine_function): Add
12623         initialized_mips16_gp_pseudo_p.
12624         (mips16_gp_pseudo_reg): Do not emit the initialization of
12625         mips16_gp_pseudo_rtx when being called from the gimple cost-
12626         calculation routines; emit it on the first use outside those
12627         routines.
12628
12629 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12630
12631         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
12632         New.
12633         
12634         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
12635         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
12636         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
12637         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
12638         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
12639         Preserve const-ness of parameters through use of __typeof(),
12640         also constify and tidy.
12641         
12642         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
12643         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
12644         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
12645         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
12646         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
12647         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
12648         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
12649         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
12650         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
12651
12652 2007-07-25  Julian Brown  <julian@codesourcery.com>
12653             Mark Shinwell  <shinwell@codesourcery.com>
12654
12655         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
12656         (alpha_mangle_type): This.
12657         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12658         (TARGET_MANGLE_TYPE): Define this instead.
12659         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
12660         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
12661         (arm_init_neon_builtins): Fix comment.
12662         (arm_mangle_map_entry): New.
12663         (arm_mangle_map): New.
12664         (arm_mangle_type): New.
12665         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
12666         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
12667         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12668         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12669         (TARGET_MANGLE_TYPE): Define this instead.
12670         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
12671         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
12672         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12673         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12674         (TARGET_MANGLE_TYPE): Define this instead.
12675         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
12676         to...
12677         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
12678         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12679         (TARGET_MANGLE_TYPE): Define this instead.
12680         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
12681         (s390_mangle_type): This.
12682         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12683         (TARGET_MANGLE_TYPE): Define this instead.
12684         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
12685         (sparc_mangle_type): This.
12686         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12687         (TARGET_MANGLE_TYPE): Define this instead.
12688         * cp/mangle.c (write_type): Call mangle_type target hook on all
12689         types before mangling.  Use original type, not main variant, as
12690         argument.
12691         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
12692         (TARGET_MANGLE_TYPE): This.
12693         * target.h (gcc_target): Rename mangle_fundamental_type to
12694         mangle_type.
12695         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
12696         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
12697
12698 2007-07-25  Julian Brown  <julian@codesourcery.com>
12699             Paul Brook  <paul@codesourcery.com>
12700             Joseph Myers  <joseph@codesourcery.com>
12701             Mark Shinwell  <shinwell@codesourcery.com>
12702
12703         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
12704         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
12705         (with_fpu): Allow --with-fpu=neon.
12706         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12707         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12708         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
12709         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
12710         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
12711         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
12712         (neon_emit_pair_result_insn, neon_disambiguate_copy)
12713         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
12714         (output_move_neon): Add prototypes.
12715         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
12716         (all_fpus): Add FPUTYPE_NEON.
12717         (fp_model_for_fpu): Add NEON field.
12718         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
12719         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
12720         in registers.
12721         (arm_legitimate_address_p): Don't support fancy addressing for NEON
12722         structure moves.
12723         (thumb2_legitimate_address_p): Likewise.
12724         (neon_valid_immediate): Recognize and prepare constants suitable for
12725         NEON instructions.
12726         (neon_immediate_valid_for_move): New function. Recognize and prepare
12727         immediates for NEON move instructions.
12728         (neon_immediate_valid_for_logic): New function. Recognize and
12729         prepare immediates for NEON logic instructions.
12730         (neon_output_logic_immediate): New function. Create asm string
12731         suitable for outputting immediate logic instructions.
12732         (neon_pairwise_reduce): New function. Implement reduction using
12733         pairwise operations.
12734         (neon_expand_vector_init): New function. Expand a (possibly
12735         non-constant) vector initialization.
12736         (neon_vector_mem_operand): New function. Memory operands supported
12737         for quad-word loads/stores to/from ARM or NEON registers. Don't
12738         allow base+offset addressing for core regs.
12739         (neon_struct_mem_operand): New function. Valid mems for NEON
12740         structure moves.
12741         (coproc_secondary_reload_class): Enable NEON registers to be loaded
12742         from neon_vector_mem_operand addresses without a secondary register.
12743         (add_minipool_forward_ref): Handle >8-byte minipool entries.
12744         (add_minipool_backward_ref): Likewise.
12745         (dump_minipool): Likewise.
12746         (push_minipool_fix): Likewise.
12747         (output_move_quad): New function. Output quad-word moves, loads and
12748         stores using ARM registers.
12749         (output_move_vfp): Add support for vectors in VFP (NEON) D
12750         registers.
12751         (output_move_neon): Output a NEON load/store to/from a quadword
12752         register.
12753         (arm_print_operand): Implement new codes:
12754         - 'c' for unadorned integers (without a # sign).
12755         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
12756         mode.
12757         - 'e', 'f' for the low and high D parts of a NEON Q register.
12758         - 'q' outputs a NEON Q register.
12759         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
12760         - 'T' prints NEON opcode features from a coded bitmask.
12761         - 'F' is similar to T, but signed/unsigned codes both print as
12762         'i'.
12763         - 't' is similar to T, but 'u' is printed instead of 'p'.
12764         - 'O' prints 'r' if NEON instruction should perform rounding (as
12765         specified by bitmask), else prints nothing.
12766         - '#' is a punctuation character to stop operand numbers from
12767         running together with following digits in the assembler
12768         strings for instructions (when using mode attributes).
12769         (arm_assemble_integer): Handle extra NEON vector modes. Permute
12770         constant vectors in big-endian mode, where necessary.
12771         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
12772         Handle EI, OI, CI, XI modes.
12773         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
12774         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
12775         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
12776         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
12777         (neon_builtin_type_bits): Add enumeration, one bit for each vector
12778         type.
12779         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
12780         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
12781         to turn v8qi, etc. into bits defined above.
12782         (neon_itype): New enumeration. Classifications of NEON builtins.
12783         (neon_builtin_datum): Define struct. Contains information about
12784         a single builtin (with multiple modes).
12785         (CF): Define helper macro for...
12786         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
12787         modes.
12788         (neon_builtin_data): New array. Define information about builtins
12789         for use during initialization/expansion.
12790         (arm_init_neon_builtins): New function.
12791         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
12792         true.
12793         (neon_builtin_compare): New function.
12794         (locate_neon_builtin_icode): New function. Find an insn code for a
12795         builtin given a function code for that builtin. Also return type of
12796         builtin (NEON_BINOP, NEON_UNOP etc.).
12797         (builtin_arg): New enumeration. Types of arguments for builtins.
12798         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
12799         Takes a variable argument list of builtin_arg types, terminated by
12800         NEON_ARG_STOP.
12801         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
12802         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
12803         (neon_emit_pair_result_insn): New function. Support returning pairs
12804         of vectors via a pointer.
12805         (neon_disambiguate_copy): New function. Set up operands for a
12806         multi-word copy such that registers do not get clobbered.
12807         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
12808         ARM_BUILTIN_NEON_BASE.
12809         (arm_file_start): Set float-abi attribute for NEON.
12810         (arm_vector_mode_supported_p): Enable NEON vector modes.
12811         (arm_mangle_map_entry): New.
12812         (arm_mangle_map): New.
12813         (arm_mangle_vector_type): New.
12814         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
12815         when appropriate.
12816         (TARGET_NEON): New macro. Target supports NEON.
12817         (fputype): Add FPUTYPE_NEON.
12818         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
12819         for vectorization based on command-line arg.
12820         (NEON_REGNO_OK_FOR_NREGS): Define.
12821         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
12822         (VALID_NEON_STRUCT_MODE): Define.
12823         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
12824         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
12825         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
12826         (consttable_16): Add pattern for outputting 16-byte minipool
12827         entries.
12828         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
12829         vec-common.md).
12830         (vec-common.md, neon.md): Include md files.
12831         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
12832         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
12833         (memory_constraint "Ut", "Un", "Us"): Define.
12834         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
12835         (MMX_char): New mode attribute.
12836         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
12837         (*add<mode>3_iwmmxt): New insn pattern.
12838         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
12839         (*sub<mode>3_iwmmxt): New insn pattern.
12840         (mulv4hi3): Rename to...
12841         (*mulv4hi3_iwmmxt): This.
12842         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
12843         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
12844         (uminv4hi3, uminv2si3): Remove. Replace with...
12845         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
12846         (*umin<mode>3_iwmmxt): These.
12847         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
12848         (ashr<mode>3_iwmmxt): This new pattern.
12849         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
12850         (lshr<mode>3_iwmmxt): This new pattern.
12851         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
12852         (ashl<mode>3_iwmmxt): This new pattern.
12853         * config/arm/neon-docgen.ml: New file. Generate documentation for
12854         intrinsics.
12855         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
12856         * config/arm/arm_neon.h: New (autogenerated).
12857         * config/arm/neon-testgen.ml: New file. Generate NEON tests
12858         automatically.
12859         * config/arm/neon.md: New file. Define NEON instructions.
12860         * config/arm/neon.ml: New file. Abstract description of NEON
12861         instructions, used to generate arm_neon.h header, documentation and
12862         tests.
12863         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
12864         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
12865         support.
12866         * doc/extend.texi (ARM Built-in Functions): Rename and remove
12867         extraneous comma.
12868         (ARM NEON Intrinsics): New subsection.
12869         * doc/arm-neon-intrinsics.texi: New (autogenerated).
12870
12871 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
12872
12873         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
12874         prototype.
12875
12876 2007-07-24  Jan Hubicka  <jh@suse.cz>
12877
12878         * regclass.c (move_table): New type.
12879         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
12880         (init_move_cost): Break out from ...
12881         (init_reg_sets_1): ... here; simplify computation of
12882         have_regs-of_mode and contains_reg_of_mode.
12883         (record_reg_classes): Unswitch internal loops.
12884         (copy_cost): Trigger lazy initialization of move cost
12885         (record_address_regs): Likewise.
12886
12887 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
12888
12889         * config/darwin.c (darwin_override_options): Don't force on
12890         flag_var_tracking_uninit when no debug info is requested.
12891
12892 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12893
12894         * cfgloop.c (init_loops_structure): New function.
12895         (flow_loops_find): Create root of the loop tree unconditionally.
12896
12897 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
12898
12899         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
12900
12901 2007-07-24  Jan Hubicka  <jh@suse.cz>
12902
12903         * caller-save.c: Include ggc.h, gt-caller-save.h
12904         (reg_save_code, reg_restore_code): Rename to ...
12905         (cached_reg_save_code, cached_reg_restore_code): ... those.
12906         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
12907         (reg_save_code, reg_restore_code): New functions.
12908         (init_caller_save): Do not intialize
12909         reg_save_code/reg_restore_code tables.
12910         * Makefile.in: (gt-caller-save.h): New.
12911
12912 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12913
12914         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
12915         with the mode of the original operand instead of
12916         integer_one_node.
12917
12918 2007-07-23  Jan Hubicka  <jH@suse.cz>
12919
12920         * i386.c (ix86_secondary_memory_needed): Break out to...
12921         (inline_secondary_memory_needed): ... here.
12922         (ix86_memory_move_cost): Break out to ...
12923         (inline_memory_move_cost): ... here; add support for IN value of 2 for
12924         maximum of input and output; fix handling of Q_REGS on 64bit.
12925         (ix86_secondary_memory_needed): Microoptimize.
12926
12927 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
12928
12929         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
12930         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
12931         stmts_from_loop, known_dependences_p, build_rdg): New.
12932         * tree-data-ref.h: Depends on graphds.h.
12933         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
12934         (build_rdg): Declared.
12935         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
12936
12937 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
12938
12939         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
12940         ccp_min_invariant.
12941
12942 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
12943             Jakub Jelinek  <jakub@redhat.com>
12944
12945         PR middle-end/PR28690
12946         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
12947         EQ compares.
12948         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
12949         and MEM_POINTER operands over REG and MEM operands.
12950         (swap_commutative_operands_p): Change return value to bool.
12951         * rtl.h: Update the corresponding prototype.
12952         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
12953         instead of gen_rtx_PLUS.
12954         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
12955         value to bool.  Change function arguments to rtx's and update code
12956         to match.
12957         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
12958         calls to match the new declaration.
12959         * simplify-rtx.c (simplify_associative_operation): Don't
12960         reorder simplify_binary_operation arguments.
12961
12962 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12963
12964         * config/mips/mips.c (override_options): Use mips_costs to derive
12965         the default branch cost.
12966         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
12967         than mips_costs.
12968         * config/mips/mips.opt (mbranch-cost=): New option.
12969         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
12970
12971 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12972
12973         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
12974         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
12975         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
12976         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
12977
12978 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12979
12980         * config/mips/constraints.md (ks): New constraint.
12981         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
12982         (*add<mode>3_mips16): ...here.
12983
12984 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
12985
12986         * optabs.h (enum optab_index): Add new OTI_signbit.
12987         (signbit_optab): Define corresponding macro.
12988         (enum insn_code signbit_optab[]): Remove array.
12989         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
12990         (expand_copysign_absneg): If back end provides signbit insn, use it
12991         instead of bit operations on floating point argument.
12992         * builtins.c (enum insn_code signbit_optab[]): Remove array.
12993         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
12994         for availability of signbit insn.
12995
12996         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
12997         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
12998         SSE mode is not active.
12999         (isinf<mode>2): Disable for mfpmath=sse,387.
13000
13001 2007-07-22  Ben Elliston  <bje@au.ibm.com>
13002
13003         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
13004         `class' parameter.
13005         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
13006
13007 2007-07-20  Richard Guenther  <rguenther@suse.de>
13008
13009         * tree-cfg.c (verify_expr): COND_EXPRs can have any
13010         integral typed condition.
13011         * tree-ssa.c (useless_type_conversion_p): Do not preserve
13012         booleanness.  Only preserve conversions from a non-base
13013         type to a base type, not in general between types with
13014         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
13015         * tree.def (COND_EXPR): Document that the condition
13016         can be of any integral type.
13017
13018 2007-07-20  Nigel Stephens  <nigel@mips.com>
13019             Richard Sandiford  <richard@codesourcery.com>
13020
13021         * config/mips/mips.h (mips_dwarf_regno): Declare.
13022         (DBX_REGISTER_NUMBER): Remove redundant brackets.
13023         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
13024         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
13025         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
13026         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
13027         (REG_CLASS_NAMES): Update accordingly.
13028         * config/mips/mips.c (mips_dwarf_regno): New array.
13029         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
13030         (mips_subword): Remove special handling for accumulator registers.
13031         (override_options): Initiailize mips_dwarf_regno.  Remove use
13032         of ACC_HI_REG_P.
13033         (mips_swap_registers): New function.
13034         (mips_conditional_register_usage): Swap accumulator registers
13035         around if TARGET_LITTLE_ENDIAN.
13036         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
13037         * config/mips/constraints.md (h, l): Use the endianness to choose
13038         between MD0_REG and MD1_REG.
13039         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
13040         alternative-dependent template.
13041
13042 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
13043
13044         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
13045         no_new_pseudos.
13046
13047 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
13048
13049         * function.c (thread_prologue_and_epilogue_insns): Fix exit
13050         predecessor fallthru flags.
13051
13052 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
13053
13054         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
13055         of compare to the same type.
13056         * cfgloopmanip.c (add_loop): Update information about loop exits.
13057         (loop_version): Remove the innermost loop requirement.
13058         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
13059         to sizetype for pointers.
13060
13061 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13062
13063         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
13064         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
13065         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
13066
13067         * config/dfp-bit.c: Empty for TFmode conversions.
13068
13069 2007-07-18  Caroline Tice  <ctice@apple.com>
13070         
13071         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
13072         and handle them correctly; check that src is not NULL before
13073         trying to use it.
13074         (find_src_set_src): Likewise.
13075         
13076 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
13077         
13078         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
13079         (struct alignment_context, init_alignment_context): New.
13080         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
13081         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
13082         (XCHAL_HAVE_S32C1I): Likewise.
13083         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
13084         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
13085         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
13086         (ATOMIC, HQI): New macros.
13087         (memory_barrier, *memory_barrier): New.
13088         (sync_lock_releasesi): New.
13089         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
13090         (sync_lock_test_and_set<mode>): New.
13091         (sync_<atomic><mode>): New.
13092         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
13093         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
13094         (xtensa_expand_atomic): New.
13095         
13096 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13097
13098         PR target/30652
13099
13100         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
13101         transformation for builtin ISNORMAL.
13102         (expand_builtin): Handle BUILT_IN_ISNORMAL.
13103         * builtins.def (BUILT_IN_ISNORMAL): New.
13104         * doc/extend.texi: Document isnormal.
13105
13106 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13107
13108         PR target/30652
13109
13110         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
13111         optabs infrastructure.  Provide generic implementation for
13112         FINITE/ISFINITE.
13113         (expand_builtin): Handle FINITE/ISFINITE.
13114         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
13115         (fold_builtin_1): Likewise.
13116
13117         * builtins.def (BUILT_IN_ISFINITE): New.
13118
13119         * doc/extend.texi: Document isfinite.
13120
13121 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13122
13123         PR target/30652
13124         PR middle-end/20558
13125
13126         * builtins.c (expand_builtin_interclass_mathfn): Provide a
13127         generic fallback for isinf.
13128         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
13129         calculation code ...
13130         * real.c (get_max_float): ... to here.
13131         * real.h (get_max_float): New.
13132
13133 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13134
13135         PR middle-end/32668
13136
13137         * builtin-attrs.def (ATTR_TYPEGENERIC,
13138         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
13139
13140         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
13141         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
13142         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
13143         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
13144
13145         * c-common.c (handle_type_generic_attribute): New.
13146         (c_common_attribute_table): Add "type generic".
13147
13148         * c-typeck.c (convert_arguments): Handle "type generic" functions.
13149
13150 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
13151
13152         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
13153         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
13154         properly.
13155
13156 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13157
13158         PR target/32808
13159         * config/cris/cris.c (cris_print_index): Don't use XEXP before
13160         checking that the operand is an expression.
13161
13162 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
13163             Danny Smith  <dannysmith@users.sourceforge.net>
13164
13165         PR/other 30335
13166         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
13167         file mapping object in local namespace if Windows version later
13168         than NT4
13169
13170 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13171
13172         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
13173         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
13174         arm_cannot_force_const_mem.
13175         (arm_cannot_force_const_mem): New function.
13176         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
13177         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
13178         of arm_tls_referenced_p.
13179         * config/arm/arm.md (movsi): Split out-of-section constants when
13180         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
13181         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
13182
13183 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13184
13185         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
13186
13187 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13188
13189         * config/mips/mips.md (*extendqihi2): Convert the destination
13190         to SImode.
13191
13192 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13193
13194         * config/pa/fptr.c: Update license header.
13195         * config/pa/milli64.S: Likewise.
13196
13197 2007-07-17  Nick Clifton  <nickc@redhat.com>
13198
13199         * COPYING_v3: New file.  Contains version 3 of the GNU General
13200         Public License.
13201         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
13202         Lesser General Public License.
13203         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
13204         the GNU General Public License.
13205
13206 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
13207
13208         PR rtl-optimization/32773
13209         * cfglayout.c (force_one_exit_fallthru): New function.
13210         (cfg_layout_finalize): Use it.
13211
13212 2007-07-16  Richard Guenther  <rguenther@suse.de>
13213             Uros Bizjak  <ubizjak@gmail.com>
13214
13215         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
13216         before forcing it to gimple operand.
13217
13218 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13219             David Ung  <davidu@mips.com>
13220
13221         * config/mips/mips.h (TUNE_24K): Define.
13222         (TUNE_MACC_CHAINS): Add TUNE_24K.
13223         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
13224         imadd.
13225         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
13226         (r74k_int_madd): .. this new reservation.
13227         (define_bypass): Fixed bypasses for r74k_int_madd to use
13228         mips_linked_madd_p.
13229         * config/mips/24k.md (define_bypass): Define new
13230         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
13231
13232 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13233             Nigel Stephens  <nigel@mips.com>
13234
13235         * config/mips/mips.md: Include 20kc.md.
13236         * config/mips/20kc.md: New file.
13237         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
13238         (mips_adjust_cost): Tweak for 20Kc.
13239         (mips_issue_rate): Likewise.
13240         * config/mips/mips.h (TUNE_20KC): Define.
13241
13242 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
13243
13244         * config/rs6000/rs6000.c (struct processor_cost): Add
13245         cache_line_size, l1_cache_lines, and simultaneous_prefetches
13246         fields.
13247         (*_cost): Add cache information.
13248         (rs6000_override_options): Set cache parameters.
13249
13250 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13251
13252         PR bootstrap/3456
13253         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
13254         * doc/install.texi (mips-sgi-irix6): pthread support works now.
13255
13256 2007-07-16  Paul Brook  <paul@codesourcery.com>
13257
13258         PR target/32753
13259         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
13260         (cirrus_thumb2_movsi_insn): Ditto.
13261
13262 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
13263
13264         * config/rs6000/darwin-fallback.c (interpret_libc): Change
13265         CR2_REGNO to R_CR2.
13266
13267 2007-07-15  Andrew Haley  <aph@redhat.com>
13268
13269         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
13270         before looking in the context.
13271
13272 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13273
13274         PR middle-end/32398
13275         PR middle-end/32769
13276         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
13277         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
13278         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
13279         (pa_output_function_prologue): Use rp_saved and
13280         current_function_is_leaf to generate .CALLINFO statement.
13281         (hppa_expand_prologue): Set rp_saved.
13282         (hppa_expand_epilogue): Use rp_saved.
13283         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
13284         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
13285
13286 2007-07-14  Dirk Mueller  <dmueller@suse.de>
13287
13288         * omega.c (coalesce): Fix memory leak on early exit.
13289         * matrix-reorg.c (check_allocation_function): Likewise.
13290         * tree-vect-transform.c (vect_get_new_vect_var): free result
13291         of concat().
13292         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
13293         pass pointer to edge vector
13294         (partition_hot_cold_basic_blocks): Fix memory leak.
13295         * collect2.c (prefix_from_string): Free temporary storage.
13296         * reload1.c (fixup_abnormal_edges): Free sbitmap.
13297
13298 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
13299
13300         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
13301         (DO_GLOBAL_DTORS_BODY): Likewise.
13302
13303 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
13304             Nigel Stephens  <nigel@mips.com>
13305
13306         * config/mips/mips.c (mips_classify_symbol): Don't return
13307         SYMBOL_SMALL_DATA for constant pool addresses if
13308         TARGET_EMBEDDED_DATA is true.
13309
13310 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
13311
13312         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
13313         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
13314         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
13315         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
13316         __builtin_ia32_storehps, __builtin_ia32_storelps,
13317         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
13318         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
13319         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
13320         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
13321         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
13322         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
13323         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
13324         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
13325         using def_builtin_const.
13326
13327 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
13328
13329         PR tree-optimization/32705
13330         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
13331         (simplify_binary_expression): Use SSA_VAL consistently.
13332
13333 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
13334
13335         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
13336         (SPEFSCR_REGNO): Delete definition.
13337         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
13338         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13339         * config/rs6000/rs6000.h: Do not define *_REGNO.
13340         LINK_REGISTER_REGNUM -> LR_REGNO.
13341         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13342         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
13343         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13344         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
13345         R_VRSAVE, R_VSCR. Use them.
13346         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
13347         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
13348         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
13349         * config/rs6000/aix.h: Define R_LR.  Use it.
13350         
13351 2007-07-13  Caroline Tice  <ctice@apple.com>
13352         
13353         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
13354         flag_var_tracking is explicitly turned off (i.e. when variable
13355         tracking is not feasible); otherwise, turn flag_var_tracking on when
13356         flag_var_tracking_uninit is on.
13357         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
13358         note definitions, to allow recording of initialization status in the
13359         notes.
13360         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
13361         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
13362         determine if two note locations are equal.
13363         (output_loc_list): Don't output list entries whose start & end labels
13364         are the same.
13365         (reg_loc_descriptor): Add parameter for initialization status; pass it
13366         to other loc descriptor functions.
13367         (one_reg_loc_descriptor): Add parameter for initialization status;
13368         check its value and add DW_OP_GNU_uninit to returned loc descr if
13369         appropriate.
13370         (multiple_reg_loc_descriptor): Add parameter for initialization
13371         status;
13372         pass init status argument to other loc descriptor functions; check
13373         value of intialization parameter and add DW_OP_GNU_uninit to returned
13374         loc descr if appropriate.
13375         (based_loc_descr): Add parameter for initialization status; add new
13376         variable for return value; check value of initialization parameter and
13377         add DW_OP_GNU_uninit to returned loc descr if appropriate.
13378         (concatn_mem_loc_descriptor): Add parameter for initialization status;
13379         pass init status argument to other loc descriptor functions; check
13380         value of intialization parameter and add DW_OP_GNU_uninit to returned
13381         loc descr if appropriate.
13382         (mem_loc_descriptor): Likewise.
13383         (concat_loc_descriptor): Likewise.
13384         (concatn_loc_descriptor): Likewise.
13385         (loc_descriptor): Add parameter for initialization status; pass it as
13386         argument to other loc descriptor function calls.
13387         (loc_descriptor_from_tree_1): Add appropriate initialization status
13388         to loc descriptor function calls.
13389         (add_location_or_const_value_attribute): Get initialization status
13390         from VAR_LOCATION note; add initialization status to loc descriptor
13391         function calls.
13392         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
13393         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
13394         status is uninitialized, add "[uninint]" to output.
13395         * common.opt (fvar-tracking-uninit): New option, similar to
13396         fvar-tracking, to turn on tracking of uninitialized variables; creates
13397         a new global flag, flag_var_tracking_uninit.
13398         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
13399         (enum var_init_status): New type, for var initialization status field.
13400         * var-tracking.c (struct location_chain_def): Two new fields, init,
13401         for initialization status, and set_src for the assignment value expr.
13402         (unshare_variable): New parameter for initialization status;
13403         initialize new init and set_src fields.
13404         (var_reg_set): New parameters for initialization status and value;
13405         pass them to set_variable_part.
13406         (var_mem_set): Likewise.
13407         (get_init_value): New function.
13408         (var_reg_delete_and_set): New initialization status & value
13409         parameters; add call to get_init_value if status is unknown; pass new
13410         parameters to clobber_variable_part and var_reg_set.
13411         (var_mem_delete_and_set): Likewise.
13412         (var_reg_delete): Pass null set_src value to clobber_variable_part.
13413         (var_mem_delete): Likewise.
13414         (variable_union): Pass status to unshare_variable; initialize new init
13415         and set_src fields. If flag_var_tracking_uninit is not set, force
13416         status to initialized.
13417         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
13418         used later to get the set_src value.
13419         (find_src_status): New function.
13420         (find_src_set_src): New function.
13421         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
13422         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
13423         MO_SET, get set_src value and pass it to var_reg_delete_and_set
13424         and var_mem_delete_and_set.
13425         (dump_variable): Print out "[uninit]" if appropriate.
13426         (set_variable_part): Add new initialization and set_src parameters;
13427         pass status to unshare_variable; set node->init and node- >set_src
13428         fields and modify slot in hash table appropriately; save the init and
13429         set_src values if appropriate and assign to the new node.
13430         (clobber_variable_part): New set_src parameter; if two nodes have
13431         same variable and same location but different set_src (assignment)
13432         values, clobber old node.
13433         (delete_variable_part): Pass init status to unshare_variable.
13434         (emit_note_insn_var_location): Add initialized var; assign var's init
13435         status to new 'initialized'; pass new init status field to calls to
13436         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
13437         status to initialized.
13438         (emit_notes_in_bb): Pass initialization status to calls to
13439         var_reg_set, var_mem_set, var_reg_delete_and_set and
13440         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
13441         var_reg_delete_and_set and var_mem_delete_and_set; call
13442         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
13443         make up for change in add_stores.
13444         (vt_add_function_parameters): Add status to calls to
13445         set_variable_part.
13446         * config/darwin.c (darwin_override_options): Turn on uninitialized
13447         tracking automatically, if var_tracking is on and the system is
13448         10.5 or higher.
13449         
13450 2007-07-13  Sa Liu  <saliu@de.ibm.com>
13451
13452         * config.gcc: Add options for arch and tune on SPU.
13453         * config/spu/predicates.md: Add constant operands 0 and 1.
13454         * config/spu/spu-builtins.def: Add builtins for double precision 
13455         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
13456         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
13457         spu_testsv.
13458         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
13459         a CELLEDP target.
13460         * config/spu/spu-protos.h: Add new function prototypes. 
13461         * config/spu/spu.c (spu_override_options): Check options -march and
13462         -mtune.
13463         (spu_comp_icode): Add comparison code for DFmode and vector mode.
13464         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
13465         mode comparison.
13466         (spu_const_from_int): New.  Create a vector constant from 4 ints.
13467         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
13468         (spu_emit_vector_compare): New.  Emit vector compare.
13469         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
13470         * config/spu/spu.h: Add options -march and -mtune.  Define processor
13471         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
13472         CANONICALIZE_COMPARISON.
13473         * config/spu/spu.md: Add new insns for double precision compare
13474         and double precision vector compare.  Add vcond and smax/smin patterns
13475         to enable DFmode vector conditional expression.
13476         * config/spu/spu.opt: Add options -march and -mtune.
13477         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
13478         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
13479         both CELL and CELLEDP targets: spu_testsv.
13480         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
13481         values.
13482
13483 2007-07-13  Richard Guenther  <rguenther@suse.de>
13484
13485         PR tree-optimization/32721
13486         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
13487         TREE_THIS_VOLATILE on the folded reference.
13488         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
13489         if the array reference has TREE_THIS_VOLATILE set.
13490
13491 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
13492
13493         PR other/32188
13494         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
13495
13496 2007-07-13  Andreas Schwab  <schwab@suse.de>
13497
13498         * gengtype-lex.l: Allow declarations to be indented.
13499
13500 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13501
13502         * ginclude/tgmath.h: New.
13503         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
13504         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
13505         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
13506         * configure: Regenerate.
13507
13508 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13509
13510         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
13511         correct index when setting register save state for xd
13512         registers.
13513
13514 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13515
13516         * config/sh/sh.c (mark_use): Remove.
13517
13518 2007-07-12  Paul Brook  <paul@codesourcery.com>
13519
13520         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
13521         reg does not overlap return value.
13522
13523 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
13524
13525         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
13526         (set_expression_vuses): Ditto.
13527         (init_pre): Initialize expression_vuses.
13528
13529 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13530
13531         * config/i386/sse.md (storentdf, storentsf): New.
13532
13533 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13534
13535         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
13536         FUNCTION_DECL.
13537         * tree.c (build_decl_stat): Move code from here...
13538         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
13539         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
13540         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
13541         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
13542         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
13543         FUNCTION_BOUNDARY.
13544
13545 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13546             Devang Patel  <dpatel@apple.com>
13547
13548         PR tree-optimization/25413
13549         * targhooks.c (default_builtin_vector_alignment_reachable): New.
13550         * targhooks.h (default_builtin_vector_alignment_reachable): New.
13551         * tree.h (contains_packed_reference): New.
13552         * expr.c (contains_packed_reference): New.
13553         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
13554         (vect_enhance_data_refs_alignment): Call
13555         vector_alignment_reachable_p.
13556         * target.h (vector_alignment_reachable): New builtin.
13557         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
13558         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
13559         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
13560
13561 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13562
13563         * target.h (builtin_vectorization_cost): Add new target builtin.
13564         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
13565         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
13566         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
13567         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
13568         uninitialized variables.
13569         * tree-vect-transform.c (cost_for_stmt): New function.
13570         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
13571         using cost 1 for all scalar stmts. Be less conservative when
13572         estimating the number of prologue/epulogue iterations. Call
13573         targetm.vectorize.builtin_vectorization_cost. Return
13574         min_profitable_iters-1.
13575         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
13576         initialization cost instead of TARG_VEC_STMT_COST. Use
13577         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
13578         epilogue code. Fix epilogue cost computation.
13579         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
13580         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
13581         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
13582         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
13583         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
13584         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
13585
13586 2007-07-12  Richard Guenther  <rguenther@suse.de>
13587
13588         * gimplify.c (gimplify_conversion): Make sure that the result
13589         from maybe_fold_offset_to_reference is trivially convertible
13590         to the desired type before doing the simplification.
13591         (gimplify_expr): Likewise.
13592         * fold-const.c (fold_binary): Use the correct types for
13593         building the simplified expression.
13594
13595 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13596
13597         PR rtl-optimization/32729
13598         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
13599         that fallthru to exit.
13600
13601 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13602
13603         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
13604         (symDTPOFF2reg): Likewise.
13605
13606 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
13607
13608         PR tree-optimization/32663
13609         
13610         * tree.h (VALUE_HANDLE_VUSES): Remove.
13611         (struct tree_value_handle): Remove vuses.
13612
13613         * tree-vn.c (create_value_handle_for_expr): Don't set
13614         VALUE_HANDLE_VUSES. 
13615
13616         * tree-ssa-pre.c (expression_vuses): New.
13617         (alloc_expression_id): Set up expression_vuses.
13618         (get_expression_vuses): New.
13619         (set_expression_vuses): Ditto.
13620         (clear_expression_ids): Modify for expression_vuses.
13621         (phi_translate_1): Ditto.
13622         (phi_translate_set): Ditto.
13623         (value_dies_in_block_x): Ditto
13624         (valid_in_sets): Ditto.
13625         (add_to_sets): Ditto.
13626         (find_existing_value_expr): Ditto.
13627         (create_value_handle_for_expr): Ditto.
13628         (make_values_for_stmt): Ditto.
13629         (vuse_equiv): Remove.
13630
13631 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
13632
13633         * Makefile.in (mostlyclean): Remove object files.
13634
13635 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13636
13637         * toplev.c (no_new_pseudos): Deleted.
13638         * rtl.h (no_new_pseudos): Deleted.
13639         * tree-pass.h (pass_no_new_pseudos): Deleted. 
13640         * passes.c (pass_no_new_pseudos): Deleted.
13641         * final.c (rest_of_clean_state): Removed no_new_pseudos.
13642         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
13643         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
13644         reload_completed.
13645         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
13646         * rtlhooks.c (gen_lowpart_general): Ditto.
13647         * optabs.c (prepare_operand): Ditto.
13648         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
13649         no_new_pseudos.
13650         * modulo-sched.c (rest_of_handle_sms): Ditto.
13651         * see.c (rest_of_handle_see): Ditto.
13652         * ifcvt.c (if_convert): Ditto.
13653         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
13654         reload_completed.
13655         * init-regs.c (gate_initialize_regs): Deleted set of
13656         no_new_pseudos.
13657         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
13658         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
13659         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
13660         
13661 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13662
13663         PR target/32661
13664         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
13665         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
13666         (*vec_extractv2di_1_rex64): New insn pattern.
13667
13668 2007-07-11  David Daney  <ddaney@avtrex.com>
13669
13670         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
13671         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
13672         for SIGNAL_UNWIND_RETURN_COLUMN.
13673         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
13674         (DWARF_FRAME_REGNUM): Rewrite.
13675         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
13676
13677 2007-07-11  Nick Clifton  <nickc@redhat.com>
13678
13679         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
13680         delta and use gen_int_mode in place of GET_INT instead.
13681
13682 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13683
13684         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
13685         and letter field.
13686
13687 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
13688
13689         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
13690         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
13691         types or not.
13692         * params.h (VERIFY_CANONICAL_TYPES): Remove.
13693         (USE_CANONICAL_TYPES): New.
13694         * doc/invoke.texi (verify-canonical-types): Remove.
13695         (use-canonical-types): Add.
13696
13697 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
13698
13699         * config/spu/spu.c (spu_optimization_options): Remove setting of
13700         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
13701         (spu_override_options): Move it here.
13702
13703 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
13704
13705         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
13706         * config/mips/mips.c (mips_cpu_info_table): Mention
13707         MIPS_ISA_LEVEL_SPEC in the comment.
13708
13709 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13710
13711         PR tree-optimization/32713
13712         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
13713
13714 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
13715
13716         PR middle-end/30482
13717         * c-opts.c (c_common_post_options): Do not change flag_complex_method
13718         conditional to flag_isoc99.
13719         (c_common_init_options): Do it here, unconditionally.
13720
13721 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13722
13723         PR tree-optimization/32589
13724         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
13725         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
13726         * tree-ssa-propagate.c (valid_gimple_expression_p): New
13727         predicate, extracted from...
13728         (set_rhs): ...here.  Call it for the expression on entry.
13729         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
13730         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
13731         (simplify_binary_expression): Use valid_gimple_expression_p
13732         to validate the simplification.
13733         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
13734
13735 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
13736
13737         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
13738         DWARF2_DEBUG on 32 bit target too.
13739         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
13740
13741 2007-07-11  Nick Clifton  <nickc@redhat.com>
13742
13743         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
13744         version for 64-bit hosts.
13745
13746 2007-07-10  David Daney  <ddaney@avtrex.com>
13747
13748         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
13749         predicate.
13750         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
13751         call.
13752         * config/mips/mips.c (mips_expand_synci_loop): New function.
13753         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
13754         (UNSPEC_RDHWR): Same.
13755         (UNSPEC_SYNCI): Same.
13756         (UNSPEC_SYNC): Same.
13757         (clear_cache): New expand.
13758         (sync): New insn.
13759         (synci): Same.
13760         (rdhwr): Same.
13761         (clear_hazard): Same.
13762         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
13763         function.
13764         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
13765         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
13766
13767 2007-07-10  Ian Lance Taylor  <iant@google.com>
13768
13769         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
13770         no_new_pseudos.
13771
13772 2007-07-10  David Daney  <ddaney@avtrex.com>
13773
13774         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
13775         * builtins.c (expand_builtin___clear_cache): New function.
13776         (expand_builtin): Call expand_builtin___clear_cache for
13777         BUILT_IN_CLEAR_CACHE case.
13778         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
13779         * doc/md.texi (clear_cache): Document new instruction pattern.
13780         * testsuite/gcc.dg/builtins-64.c: New test.
13781
13782 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
13783
13784         * config/cris/cris.md ("movsi"): Fix typo in last change.
13785
13786 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
13787
13788         PR 32617
13789         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
13790         FUNCTION_DECLs.
13791         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
13792         * varasm.c (assemble_start_function): Honor DECL_ALIGN
13793         for FUNCTION_DECLs.  Don't use align_functions_log if
13794         DECL_USER_ALIGN.
13795         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
13796         even for FUNCTION_DECLs.
13797         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
13798         FUNCTION_DECLs.
13799         * tree.h (DECL_ALIGN): Update for new location of 'align'.
13800         (DECL_FUNCTION_CODE): Update for new location and name of
13801         'function_code'.
13802         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
13803         (struct tree_decl_common): Move 'align' and 'off_align' out
13804         of union, ensure they're still on a 32-bit boundary.  Remove
13805         other fields in union 'u1'.
13806         (struct tree_function_decl): Add field 'function_code' replacing
13807         'u1.f' in tree_decl_common.
13808         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
13809         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
13810         (Variable Attributes): Cross-reference 'aligned' attribute
13811         to Function Attributes.
13812         * flags.h (force_align_functions_log): Delete.
13813         * toplev.c (force_align_functions_log): Delete.
13814
13815 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
13816
13817         PR target/32708
13818         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
13819         (*vec_concatv2di_rex): New insn pattern.
13820
13821 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13822
13823         PR target/32538
13824         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
13825
13826 2007-07-10  Ian Lance Taylor  <iant@google.com>
13827
13828         Replace no_new_pseudos in backends.
13829         * rtl.h (can_create_pseudo_p): Define.
13830         * config/darwin.c (machopic_indirect_data_reference): Use
13831         can_create_pseudo_p () instead of no_new_pseudos.
13832         (machopic_indirect_data_reference): Likewise.
13833         (machopic_legitimize_pic_address): Likewise.
13834         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
13835         (alpha_emit_set_const_1): Likewise.
13836         (alpha_emit_set_const): Likewise.
13837         (alpha_emit_conditional_move): Likewise.
13838         (alpha_split_conditional_move): Likewise.
13839         * config/alpha/alpha.md (various splitters): Likewise.
13840         (movti): Likewise.
13841         * config/arm/arm.c (legitimize_pic_address): Likewise.
13842         (arm_load_pic_register): Likewise.
13843         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
13844         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
13845         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
13846         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
13847         * config/cris/cris.md (movsi): Likewise.
13848         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
13849         (symGOTOFF2reg_hilo): Likewise.
13850         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
13851         * config/h8300/h8300.md (insv, extzv): Likewise.
13852         * config/i386/i386.c (ix86_expand_move): Likewise.
13853         (ix86_expand_vector_move): Likewise.
13854         (ix86_prepare_fp_compare_args): Likewise.
13855         (ix86_expand_carry_flag_compare): Likewise.
13856         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
13857         (tls_dynamic_gnu2_combine_32): Likewise.
13858         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
13859         * config/ia64/ia64.c (ia64_expand_move): Likewise.
13860         (ia64_expand_movxf_movrf): Likewise.
13861         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
13862         (m32c_split_move): Likewise.
13863         (m32c_expand_insv): Likewise.
13864         * config/m68k/m68k.md (movsi): Likewise.
13865         * config/mips/mips.c (mips_force_temporary): Likewise.
13866         (mips_split_symbol): Likewise.
13867         (mips_move_integer): Likewise.
13868         (mips_legitimize_const_move): Likewise.
13869         * config/mn10300/mn10300.md (movsi): Likewise.
13870         * config/pa/pa.c (emit_move_sequence): Likewise.
13871         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
13872         (rs6000_got_register): Likewise.
13873         (create_TOC_reference): Likewise.
13874         (rs6000_machopic_legitimize_pic_address): Likewise.
13875         * config/rs6000/rs6000.md (add<mode>3): Likewise.
13876         (various splitters): Likewise.
13877         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
13878         (movsi_got): Likewise.
13879         * config/s390/s390.c (emit_symbolic_move): Likewise.
13880         * config/s390/s390.md (movhi, movqi): Likewise.
13881         (load_multiple, store_multiple): Likewise.
13882         * config/score/score.c (score_force_temporary): Likewise.
13883         * config/sh/sh.c (prepare_move_operands): Likewise.
13884         (prepare_cbranch_operands): Likewise.
13885         (emit_fpu_switch): Likewise.
13886         (fpscr_set_from_mem): Likewise.
13887         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
13888         (adddi3, subsi3): Likewise.
13889         (various splitters): Likewise.
13890         (divsi_inv_fp_combine): Likewise.
13891         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
13892         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
13893         (sne): Likewise.
13894         * config/sh/predicates.md (xor_operand): Likewise.
13895         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
13896         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
13897         (movdi_pic_label_ref): Likewise.
13898         * config/spu/spu.c (spu_split_immediate): Likewise.
13899         * config/alpha/alpha.md (various splitters): Remove test
13900         !no_new_pseudos || reload_completed.
13901         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
13902         no_new_pseudos.
13903         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
13904         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13905         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13906         * config/score/score.c (th_output_mi_thunk): Likewise.
13907         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
13908         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13909
13910 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13911
13912         PR rtl-optimization/32664
13913         * mode-switching.c (create_pre_exit): Skip barrier insns.
13914
13915 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13916
13917         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
13918         force_gimple_operand_bsi.
13919         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
13920         rewrite_use_compare): Ditto.
13921         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
13922         Ditto.
13923         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
13924         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
13925         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
13926         * tree-profile.c (prepare_instrumented_value,
13927         tree_gen_interval_profiler, tree_gen_pow2_profiler,
13928         tree_gen_one_value_profiler, tree_gen_ic_profiler,
13929         tree_gen_ic_func_profiler, tree_gen_average_profiler,
13930         tree_gen_ior_profiler): Ditto.
13931         * tree-ssa-reassoc.c (negate_value): Ditto.
13932         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
13933         Use force_gimple_operand_bsi.
13934         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
13935         * tree-if-conv.c (add_to_dst_predicate_list,
13936         find_phi_replacement_condition): Ditto.
13937         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
13938         Call mark_symbols_for_renaming for new statements.
13939         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
13940
13941 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13942
13943         * cfghooks.c (remove_edge): New function.
13944         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
13945         loop exit rescans.
13946         * cfghooks.h (remove_edge): Declare.
13947         * cfg.c (remove_edge): Renamed to remove_edge_raw.
13948         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
13949
13950 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
13951
13952         * optabs.h: Added declaration for signbit_optab.  
13953         * optabs.c: (init_optabs): Added initialization for signbit_optab.
13954         * genoptinit.c (optabs): Added entry for signbit insns.  
13955         * builtins.c (expand_builtin_signbit): Added code to use a signbit
13956         insn, if available.  
13957         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
13958         * config/s390/s390.md (signbit<mode>2): New expander.  
13959
13960 2007-07-09  Richard Guenther  <rguenther@suse.de>
13961
13962         PR middle-end/32698
13963         * fold-const.c (fold_plusminus_mult_expr): Move constant
13964         arguments second to allow decomposing.
13965
13966 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
13967
13968         Revert:
13969         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13970         PR debug/23551
13971         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13972         Disregard DECL_FROM_INLINE.
13973
13974 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13975
13976         PR target/27855
13977         * doc/invoke.texi: Add ftree-reassoc flag.
13978         * common.opt (ftree-reassoc): New flag.
13979         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
13980         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
13981
13982 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13983
13984         PR tree-optimization/32681
13985         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
13986         saved in second_edge->aux when first_bb is a loop header.
13987
13988 2007-07-09  Jan HUbicka  <jh@suse.cz>
13989
13990         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
13991
13992 2007-07-09  Richard Guenther  <rguenther@suse.de>
13993
13994         * c-decl.c (start_function): Do not promote return type.
13995
13996 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
13997
13998         * function.c (do_warn_unused_parameter): Do not warn if
13999         TREE_NO_WARNING is set.
14000
14001 2007-07-08  Andreas Schwab  <schwab@suse.de>
14002
14003         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
14004
14005 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
14006
14007         Revert this patch:
14008         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
14009
14010         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
14011         apply to assembly language, too.
14012         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
14013
14014 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
14015
14016         Revert (note the sccvn portions are *not* reverted)
14017         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
14018
14019         Fix PR tree-optimization/23488
14020
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-07 Eric Weddington  <eweddington@cso.atmel.com>
14042
14043         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
14044         the constraint description.
14045         * doc/md.texi: Update documentation of AVR constraints.
14046
14047 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
14048
14049         * auto-inc-dec.c, config/arm/arm.c,
14050         config/m32r/constraints.md, config/mips/mips.md,
14051         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
14052         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
14053         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
14054         typos.  Follow spelling conventions.
14055         * doc/invoke.texi, doc/rtl.texi: Fix typos.
14056
14057         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
14058         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
14059
14060         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
14061         realloc_vuse): Remove.
14062         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
14063         and realloc_vuse.
14064
14065 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
14066
14067         Fix PR tree-optimization/23488
14068
14069         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
14070         (try_to_simplify): Ditto.
14071         (visit_use): Ditto.
14072         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
14073         handles.
14074         * tree-flow-inline.h (get_value_handle): Ditto.
14075         * tree-ssa-pre.c (decl_vh_map): New.
14076         (decl_node_pool): New.
14077         (can_value_number_operation): Support DECL_P.
14078         (can_PRE_operation): Ditto.
14079         (create_expression_by_pieces): Ditto.
14080         (find_existing_value_expr): Modify to differnetiate between
14081         addressing and top level.
14082         (create_value_handle_for_expr): Handle DECL's.
14083         (poolify_tree): Ditto.
14084         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
14085         (make_values_for_stmt): Handle DECL's properly.
14086         (init_pre): Reorg to not init useless things during FRE.
14087         (fini_pre): Ditto.
14088         * tree-flow.h: Include pointer-set.h.
14089         (decl_vh_map): Declare.
14090         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
14091                 
14092 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
14093
14094         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
14095         apply to assembly language, too.
14096         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
14097
14098 2007-07-06  Ian Lance Taylor  <iant@google.com>
14099             Zack Weinberg  <zackw@panix.com>
14100
14101         PR middle-end/32441
14102         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
14103
14104 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14105
14106         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
14107         (prefetch): Likewise if "pref" would be used.
14108
14109 2007-07-06  Josh Conner  <jconner@apple.com>
14110
14111         PR middle-end/32602
14112         PR middle-end/32603
14113         * calls.c (store_one_arg): Handle arguments which are partially
14114         on the stack when detecting argument overlap.
14115
14116 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
14117
14118         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
14119         chosen during find_reloads.
14120
14121 2007-07-06  Richard Guenther  <rguenther@suse.de>
14122
14123         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
14124         TYPE_ARG_TYPES for verification of argument types.  Use
14125         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
14126         parameters as variable arguments.
14127
14128 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
14129
14130         * libgcc2.h (word_type): Type definition removed.
14131         (cmp_return_type, shift_count_type): Type definitions added.
14132         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14133         replaced with shift_count_type.
14134         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14135         cmp_return_type.
14136         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
14137         changed from word_type to Wtype.
14138         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14139         replaced with shift_count_type.
14140         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14141         cmp_return_type.
14142         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
14143         and libgcc_shift_count attribute added.
14144         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
14145         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
14146         (TARGET_INITIALIZER): New target hooks added.
14147         * targhooks.c (default_libgcc_cmp_return_mode,
14148         default_libgcc_shift_count_mode): Default implementations for the new
14149         target hooks added.
14150         * targhooks.h (default_libgcc_cmp_return_mode,
14151         default_libgcc_shift_count_mode): Function prototypes added.
14152         * target.h (struct gcc_target): Fields for the new target hooks added.
14153         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
14154         as library call.
14155         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
14156         library call.
14157
14158         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
14159         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
14160
14161         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
14162         s390_libgcc_shift_count_mode): Functions added.
14163         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
14164         Target hooks defined.
14165
14166 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14167
14168         * config/mips/mips.c (compute_frame_size): Restore the original
14169         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
14170         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
14171         Document why the difference is needed.
14172
14173 2007-07-06  Richard Guenther  <rguenther@suse.de>
14174
14175         * c-common.c (boolean_increment): Use correctly typed
14176         constant.
14177
14178 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14179
14180         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
14181         the topmost argument register is not also included in the save mask.
14182         (mips16e_collect_argument_save_p): Take a pointer to the argument
14183         register, rather than a pointer to the number of arguments.
14184         (mips16e_collect_argument_saves): Only include argument saves
14185         that aren't in the register mask.
14186
14187 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
14188
14189         PR rtl-optimization/32450
14190         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
14191         to ensure that instructions are not moved into the prologue when
14192         profiling is on.  Remove unused prologue_end variable.
14193         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
14194         as a scheduling barrier.
14195
14196 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
14197
14198         PR debug/23551
14199         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
14200         Disregard DECL_FROM_INLINE.
14201
14202 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
14203
14204         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
14205         IORing with a constant.
14206
14207 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
14208
14209         PR rtl-optimization/32475
14210         * df-scan.c (df_def_record_1): Add a use of the stack pointer
14211         for every definition of the stack pointer.
14212
14213 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
14214
14215         * arm.c (vfp3_const_double_index): Copy signed results of
14216         REAL_VALUE_TO_INT into unsigned vars.
14217
14218 2007-07-05  Richard Guenther  <rguenther@suse.de>
14219
14220         PR middle-end/32639
14221         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
14222         FUNCTION_TYPE.
14223         * tree-ssa.c (useless_type_conversion_p): Check canonical
14224         types early.
14225
14226 2007-07-05 Anatoly Sokolov <aesok@post.ru>
14227
14228         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
14229         zero_extendhisi2): Change to define_insn_and_split. 
14230         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
14231
14232 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
14233
14234         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
14235         pass_match_asm_constraints): New.
14236         * passes.c (init_optimization_passes): Add new pass.
14237         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
14238         * function.h (struct function): Add has_asm_statement bit.
14239         (current_function_has_asm_statement): New.
14240         * tree-pass.h (pass_match_asm_constraints): New.
14241
14242 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
14243
14244         * config/mips/mips.c (mips_file_start): Avoid declaration
14245         after code.
14246
14247 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14248
14249         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
14250
14251 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
14252
14253         * rtl.def (NOTE): Change print format string to print
14254         operand 5 as a note insn name.
14255
14256 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14257             David Ung  <davidu@mips.com>
14258
14259         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
14260         * doc/invoke.texi: (MIPS Options): Document them.
14261
14262 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14263             David Ung  <davidu@mips.com>
14264
14265         Add support for SmartMIPS ASE.
14266
14267         * optabs.c (expand_binop_directly): New, broken out from...
14268         (expand_binop): Here.  Make it try rotating in the other
14269         direction even when the second operand isn't constant.
14270         * config/mips/mips.md (*lwxs): New.
14271         * config/mips/mips.opt (msmartmips): New.
14272         * config/mips/mips.c (mips_lwxs_address_p): New.
14273         (mips_rtx_costs): Make it recognize scaled indexed addressing.
14274         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
14275         __mips_smartmips when compiling for TARGET_SMARTMIPS.
14276         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
14277         (ISA_HAS_LWXS): New.
14278         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
14279         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
14280         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
14281         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
14282         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
14283         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
14284         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
14285
14286 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14287
14288         * tree-vectorizer.c (new_loop_vec_info): Initialize
14289         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14290         * tree-vectorizer.h (_loop_vec_info): Added new filed
14291         min_profitable_iters.
14292         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
14293         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
14294         * tree-vect-analyze.c (vect_analyze_operations): Set
14295         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14296         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
14297         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
14298         Fix calculation of peel_iters_prologue. Move consideration of epilogue
14299         and prologue cost to after they are computed.
14300         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
14301         TARG_VEC_STMT_COST.
14302         (vect_model_simple_cost): Takes additional argument dt. Consider cost
14303         of creating vectors from scalars according to dt.
14304         (vect_model_store_cost): Likewise.
14305         (vectorizable_call): Use dt array instead of scalar dt. Call
14306         vect_model_simple_cost with additional argument dt.
14307         (vectorizable_assignment): Likewise.
14308         (vectorizable_operation): Likewise.
14309         (vectorizable_type_demotion): Likewise.
14310         (vectorizable_type_promotion): Likewise.
14311         (vectorizable_store): Use dt array instead of scalar dt. Call
14312         vect_model_store_cost with additional argument dt.
14313         (vect_do_peeling_for_loop_bound): Don't call
14314         vect_estimate_min_profitable_iters. Instead, lookup
14315         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
14316         "may not be profitable".
14317
14318 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14319
14320         PR testsuite/32014
14321         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
14322         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
14323         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
14324         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
14325
14326 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
14327
14328         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
14329         addressing modes cheaper.
14330
14331 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
14332
14333         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
14334         (dw_ranges_struct): Rename block_num to num.  Adjust.
14335         (dw_ranges_by_label_struct): New.
14336         (ranges_by_label, ranges_by_label_allocated,
14337         ranges_by_label_in_use): New variables.
14338         (add_ranges_num): Factored most of the code out of...
14339         (add_ranges): ... this one.  Rewrite in terms of the former.
14340         (add_ranges_by_labels): New.
14341         (output_ranges): Output by-label ranges.
14342         (dwarf2out_finish): Output range for multiple-section
14343         compile_unit.  Output standard DW_AT_low_pc in addition to
14344         unexpected DW_AT_entry_pc.
14345
14346 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
14347
14348         PR tree-optimization/32604
14349         PR tree-optimization/32606
14350
14351         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
14352         (compute_antic_safe): Removed.
14353         (ANTIC_SAFE_LOADS): Ditto.
14354         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
14355         (execute_pre): Don't call compute_antic_safe.
14356         (vuse_equiv): New function.
14357         (make_values_for_stmt): Use it
14358         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
14359         not always true.
14360
14361 2007-07-04 Anatoly Sokolov <aesok@post.ru>
14362
14363         PR target/31331
14364         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
14365         rather than a decl. 
14366         (avr_attribute_table): Make "naked" attribute apply to function types
14367         rather than to decls.
14368         (avr_handle_fntype_attribute): New function.
14369
14370 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
14371
14372         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
14373         after \.
14374
14375 2007-07-04  David Ung  <davidu@mips.com>
14376             Joseph Myers  <joseph@codesourcery.com>
14377
14378         * config/mips/mips.md (type): Add logical, signext and move.
14379         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
14380         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
14381         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
14382         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
14383         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
14384         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
14385         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
14386         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
14387         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
14388         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
14389         movv2sf_hardfloat_64bit): Use the new types.
14390         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
14391         *movdf_softfloat, *movdf_mips16): Use "multi".
14392         (extendqihi2): Replace with a define_expand.
14393         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
14394         Based on extend<SHORT:mode><GPR:mode>2 patterns.
14395         * config/mips/74k.md (r74k_int_logical): New reservation and
14396         bypasses.
14397         (r74k_int_arith): Remove "slt".
14398         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
14399         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
14400         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
14401         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
14402         reservations for "arith".
14403
14404 2007-07-04  Richard Guenther  <rguenther@suse.de>
14405
14406         * tree-ssa.c (useless_type_conversion_p): Add handling for
14407         scalar float and vector types.  Only call the types_compatible_p
14408         langhook for aggregate types as last resort.  Follow the
14409         rules.
14410
14411 2007-07-04  Richard Guenther  <rguenther@suse.de>
14412
14413         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
14414         the same as NOP_EXPR.
14415
14416 2007-07-04  Nick Clifton  <nickc@redhat.com>
14417
14418         * target.h (struct gcc_target): Add target_help field.
14419         * target-def.h (TARGET_HELP): New.
14420         (TARGET_INITIALIZER): Use TARGET_HELP.
14421         * opts.c (command_handle_option): Invoke target_help function, if
14422         defined, when the user has specified --target-help on the command
14423         line.
14424         * doc/invoke.texi: Mention that --target-help might print
14425         additional information.
14426         * doc/tm.texi: Document TARGET_HELP hook.
14427
14428         * arm.c (TARGET_HELP): Override default definition.
14429         (arm_target_help): New - display a wrapped list of cores and
14430         architectures supported.
14431
14432 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14433
14434         * config/v850/v850.c (expand_prologue): Make sure
14435         GEN_INT() argument is sign extended rather than zero extended.
14436         (expand_epilogue): Likewise.
14437         (output_move_double): Delete.
14438         * config/v850/v850-protos.h (output_move_double): Delete.
14439         * config/v850/v850.md (movdi): Delete.
14440         (*movdi_internal): Delete.
14441         (movdf): Delete.
14442         (*movdf_internal): Delete.
14443
14444 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14445
14446         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
14447         unless compiling RTP PIC.
14448
14449 2007-07-04  Richard Guenther  <rguenther@suse.de>
14450
14451         PR tree-optimization/32482
14452         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
14453         original ssa name if we didn't find a shift expression.
14454         Fix shift constant for bit zero test.
14455
14456 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14457
14458         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
14459
14460 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14461
14462         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
14463         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
14464         * config/arm/vxworks.h (ASM_SPEC): Delete.
14465         (SUBTARGET_EXTRA_ASM_SPEC): Define.
14466
14467 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14468
14469         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
14470         (DDR_REVERSED_P): New.
14471         * tree-data-ref.c (initialize_data_dependence_relation,
14472         build_classic_dist_vector): Set DDR_REVERSED_P.
14473
14474 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14475
14476         PR middle-end/32457
14477         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
14478         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14479         init_omega_for_ddr_1): Use non conservative number of iterations
14480         estimations.
14481         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
14482         (analyze_siv_subscript): Remove FIXME and reinitialization of 
14483         last_conflicts to chrec_dont_know.
14484         * testsuite/gfortran.dg/vect/pr32457.f90: New.
14485
14486 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14487
14488         * tree.c (maybe_canonicalize_argtypes): Improve description.
14489
14490 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14491
14492         * tree.c (maybe_canonicalize_argtypes): New.
14493         (build_function_type): Set canonical type.
14494         (build_method_type_directly): Ditto.
14495         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
14496         properly.
14497
14498 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14499
14500         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
14501         like PLUS_EXPR.
14502         (rewrite_use_nonlinear_expr): Likewise.
14503
14504 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
14505
14506         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
14507
14508 2007-07-04  Ben Elliston  <bje@au.ibm.com>
14509
14510         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
14511         of this file.
14512
14513         * c-objc-common.c (c_types_compatible_p): Fix indentation.
14514
14515         * doc/tm.texi (Run-time Target): Capitalise "CPU".
14516         (Exception Handling): Likewise.
14517
14518 2007-07-03  Jan Hubicka  <jh@suse.cz>
14519
14520         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
14521
14522 2007-07-03  Eric Christopher  <echristo@apple.com>
14523
14524         * doc/cppopts.texi: Add conflicting option note to -dM.
14525         * doc/invoke.texi: Add note about possible conflicts with
14526         -E for -dCHARS and note that -dM will not produce
14527         any results if there is no machine dependent reorg.
14528         
14529 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14530
14531         * tree.h (DECL_ALIGN): Back out previous change.
14532
14533 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
14534
14535         * configure.ac: Test for .dtprelword support on MIPS.
14536         * configure, config.in: Regenerate.
14537         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
14538         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14539
14540 2007-07-03  Julian Brown  <julian@codesourcery.com>
14541
14542         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
14543         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
14544         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
14545         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
14546         capability.
14547         (all_fpus): Add FPUTYPE_VFP3.
14548         (fp_model_for_fpu): Add VFPv3 field.
14549         (arm_rtx_costs_1): Give cost to VFPv3 constants.
14550         (vfp3_const_double_index): New function. Return integer index of
14551         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
14552         isn't suitable.
14553         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
14554         and argument represents a valid RTX for a VFPv3 constant.
14555         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
14556         two instructions.
14557         (vfp_emit_fstmd): Similar, for fstmd.
14558         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
14559         constants, represented as integer indices.
14560         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
14561         VFP_REGNO_OK_FOR_DOUBLE macros.
14562         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
14563         (arm_file_start): Set float-abi attribute for VFPv3, and output
14564         correct ".fpu" assembler directive.
14565         (arm_dbx_register_numbering): Add FIXME.
14566         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
14567         (fputype): Add FPUTYPE_VFP3.
14568         (FIXED_REGISTERS): Add 32 registers for D16-D31.
14569         (CALL_USED_REGISTERS): Likewise.
14570         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
14571         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
14572         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
14573         (D7_VFP_REGNUM): New.
14574         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
14575         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
14576         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
14577         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
14578         (REG_ALLOC_ORDER): Adjust for VFPv3.
14579         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
14580         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
14581         VFP_LO_REGS, VFP_HI_REGS.
14582         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
14583         (IS_VFP_CLASS): Define macro.
14584         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
14585         IS_VFP_CLASS.
14586         (REGISTER_MOVE_COST): Likewise.
14587         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
14588         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
14589         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
14590         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
14591         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
14592         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
14593         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
14594         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
14595         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
14596         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
14597         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
14598         where appropriate for single-word registers.
14599         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
14600         As above. Fix type attributes.
14601         * config/arm/constraints.md (register_contraint "t"): Define.
14602         (register_constraint "w"): Change to D0-D15, or D0-D31 for
14603         VFPv3/NEON.
14604         (register_constraint "x"): Define.
14605         (constraint "Dv"): Define.
14606
14607 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14608
14609         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
14610
14611 2007-07-03  Tom Tromey  <tromey@redhat.com>
14612
14613         * c-parser.c (objc_pq_context): Removed.
14614         (objc_need_raw_identifier): Likewise.
14615         (c_parser) <objc_pq_context>: New field.
14616         <objc_need_raw_identifier>: Likewise.
14617         (OBJC_NEED_RAW_IDENTIFIER): Removed.
14618         (c_lex_one_token): Update.
14619         (c_parser_objc_protocol_definition): Update.
14620         (c_parser_objc_method_definition): Update.
14621         (c_parser_objc_methodproto): Update.
14622         (c_parser_declspecs): Update.
14623
14624 2007-07-03  David Ung  <davidu@mips.com>
14625
14626         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
14627
14628 2007-07-03  David Ung  <davidu@mips.com>
14629             Richard Sandiford  <richard@codesourcery.com>
14630
14631         * doc/invoke.texi: Document -march=74kf3_2.
14632         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
14633         (TUNE_74K): Check for it.
14634         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
14635         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
14636         * config/mips/mips.md (cpu): Add 74kf3_2.
14637         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
14638         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
14639         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
14640         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
14641         74kf3_2 to the CPU list.
14642         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
14643         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
14644         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
14645         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
14646         (r74kf3_2_fxfer_from_c1): New insn reservations.
14647
14648 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
14649             David Ung  <davidu@mips.com>
14650
14651         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
14652         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
14653         and 74k[fx].  Document aliases for the new options.
14654         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
14655         (PROCESSOR_24KF2_1): ...this.
14656         (PROCESSOR_24KX): Rename to...
14657         (PROCESSOR_24KF1_1): ...this.
14658         (PROCESSOR_74KF): Rename to...
14659         (PROCESSOR_74KF2_1): ...this.
14660         (PROCESSOR_74KX): Rename to...
14661         (PROCESSOR_74KF1_1): ...this.
14662         (TUNE_74K): Update PROCESSOR_* names.
14663         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
14664         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
14665         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
14666         (mips_rtx_cost_data): Update processor names in comments.
14667         (mips_issue_rate): Update PROCESSOR_* names.
14668         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
14669         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
14670         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
14671         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
14672         Update cpu attribute names.
14673         (r24k_fpu_iss): Rename this reservation to...
14674         (r24kf2_1_fpu_iss): ...this and update all uses.
14675         (r24kx_fpu_iss): Rename this reservation to...
14676         (r24kf1_1_fpu_iss): ...this and update all uses.
14677         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
14678         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
14679         Update cpu attribute names.
14680
14681 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14682
14683         * config/m32r/constraints.md: New file.
14684         * config/m32r/m32r.c: Include tm-constrs.h.
14685         (small_data_operand): Use satisfies_constraint_* instead of macro.
14686         (addr24_operand, gen_compare): Likewise.
14687         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
14688         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
14689         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
14690         EXTRA_CONSTRAINT): Likewise.
14691         * config/m32r/m32r.md: Include constraints.md.
14692         (*movsi_insn): Use satisfies_constraint_* instead of macro.
14693         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
14694         * config/m32r/predicates.md (conditional_move_operand): Likewise.
14695         (two_insn_const_operand, int8_operand, uint16_operand,
14696         reg_or_int16_operand, reg_or_uint16_operand,
14697         reg_or_cmp_int16_operand, cmp_int16_operand,
14698         seth_add3_operand): Likewise.
14699
14700 2007-07-03  Eric Christopher  <echristo@gmail.com>
14701
14702         * libgcc2.h: Conditionally declare __bswapsi2 and
14703         __bswapdi2.
14704         
14705 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14706
14707         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
14708         defined.
14709
14710 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14711
14712         PR target/28307
14713         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
14714         (__gthrw_pragma): Provide default definition.
14715         (__gthrw2): Use it.
14716         * gthr-posix.c (__gthrw_pragma): Define.
14717
14718 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
14719
14720         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
14721         before declaring inequality.
14722
14723 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14724
14725         * combine.c (recog_for_combine): Log the success or failure of
14726           matching new insn patterns against the machine description in
14727           detailed dumps.
14728
14729 2007-07-03  Revital Eres  <eres@il.ibm.com>
14730
14731         * ddg.c (print_sccs): New function.
14732         (check_sccs): New function.
14733         (create_ddg_all_sccs): Use it.
14734         * ddg.h (print_sccs): Declare.
14735         * modulo-sched.c (sms_order_nodes): Call print_sccs.
14736
14737 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
14738
14739         * targhooks.h (default_mode_for_suffix): New function declaration.
14740         * targhooks.c (default_mode_for_suffix): New default target hook.
14741         * target.h (struct c): New structure in the targetm struct.
14742         (mode_for_suffix): New target hook as part of struct c.
14743         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
14744         default_mode_for_suffix.
14745         (TARGET_C): New define.
14746         * c-lex.c: Include "target.h".
14747         (interpret_float): Use targetm.c.mode_for_suffix to determine
14748         the mode for a given non-standard suffix.
14749         Makefile.in (c-lex.o): Depend on $(TARGET_H).
14750
14751         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
14752         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
14753
14754         * doc/extend.texi (Floating Types): New node.  Document __float80 and
14755         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
14756
14757 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14758
14759         PR target/32506
14760         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
14761         predicate instead of target_operand.
14762         (divsi3_i1_media, divsi3_media_2): Likewise.
14763
14764 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
14765
14766         * tree.h (alias_sets_might_conflict_p): Rename into
14767         alias_sets_must_conflict_p.
14768         * alias.c (alias_sets_might_conflict_p): Likewise.
14769         (alias_sets_conflict_p): Use it.
14770         (objects_must_conflict_p): Likewise.
14771         * c-common.c (strict_aliasing_warning): Adjust.
14772
14773 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14774
14775         * rtlhooks.c (gen_lowpart_if_possible): Check for
14776         invalid subreg before calling gen_lowpart_SUBREG.
14777
14778 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
14779
14780         * config/darwin9.h: Add copyright notice.
14781         (LINK_COMMAND_SPEC): Add comment.
14782         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
14783         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
14784         DARWIN_LIBSYSTEM_HAS_UNWIND.
14785
14786 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14787
14788         PR libgomp/32468
14789         * omp-low.c (check_combined_parallel): New function.
14790         (lower_omp_parallel): Call it via walk_stmts, set
14791         OMP_PARALLEL_COMBINED if appropriate.
14792         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
14793         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
14794         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
14795         don't consider it as combined parallel.
14796
14797 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14798
14799         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
14800         (gcc_tooldir): Likewise.
14801         * configure: Regenerate.
14802         * Makefile.in (libsubdir_to_prefix): New variable, based on the
14803         old configure.ac gcc_tooldir setting.
14804         (prefix_to_exec_prefix): New variable.
14805         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
14806         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
14807
14808 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
14809
14810         Fix PR tree-optimization/32583
14811         Fix PR tree-optimization/32584
14812         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
14813         (phi_translate_set): Use phi_translate directly now.
14814         (make_values_for_stmt): Don't value number RHS if we already know
14815         it is constant.
14816
14817 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
14818             Jim Wilson <wilson@specifix.com>
14819
14820         PR target/31684
14821         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
14822         copy_insn.
14823
14824 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
14825             Richard Sandiford  <richard@codesourcery.com>
14826             Nigel Stephens  <nigel@mips.com>
14827
14828         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
14829         (mips16e_output_save_restore): Declare.
14830         (mips16e_save_restore_pattern_p): Likewise.
14831         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
14832         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
14833         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
14834         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
14835         (BITSET_P): New global macro, extracted from...
14836         (mips_for_each_saved_reg): ...here.
14837         (mips16e_save_restore_info): New struct.
14838         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
14839         (mips16e_save_restore_regs): New variable.
14840         (mips_split_plus, mips16e_find_first_register): New functions.
14841         (mips16e_mask_registers): New function.
14842         (compute_frame_size): Expand the commentary before the function.
14843         Enforce the MIPS16e save and restore register range restrictions.
14844         Pad the general register save area at the low end.
14845         (mips16e_save_restore_reg, mips16e_build_save_restore)
14846         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
14847         (mips16e_output_save_restore, mips16e_collect_propagate_value)
14848         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
14849         New functions.
14850         (mips_expand_prologue, mips_expand_epilogue): Handle
14851         GENERATE_MIPS16E_SAVE_RESTORE.
14852         * config/mips/mips.md (*mips16e_save_restore): New pattern.
14853
14854 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
14855
14856         PR tree-optimization/31966
14857         PR tree-optimization/32533
14858         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
14859         "basic_block" description as its third argument.  Update function
14860         calls to get destination bb from "edge" argument.  Save "cond" into
14861         aux field of the edge.  Update prototype for changed arguments.
14862         (if_convertible_loop_p): Clear aux field of incoming edges if bb
14863         contains phi node.
14864         (find_phi_replacement_condition): Operate on incoming edges, not
14865         on predecessor blocks.  If there is a condition saved in the
14866         incoming edge aux field, AND it with incoming bb predicate.
14867         Return source bb of the first edge.
14868         (clean_predicate_lists): Clean aux field of outgoing node edges.
14869         (tree_if_conversion): Do not initialize cond variable. Move
14870         variable declaration into the loop.
14871         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
14872         initializations of new_stmt, arg0 and arg1 variables.
14873
14874 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14875
14876         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
14877         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
14878
14879 2007-07-02  Richard Guenther  <rguenther@suse.de>
14880
14881         * tree-ssa.c (useless_type_conversion_p): Document
14882         future intent as defining the middle-end type system.
14883         Re-structure to call langhook last, group by type class,
14884         mark questionable parts.
14885
14886 2007-07-02  Richard Guenther  <rguenther@suse.de>
14887
14888         * tree-flow.h (types_compatible_p): Declare.
14889         * tree-ssa.c (types_compatible_p): New function.
14890         * ipa-type-escape.c (discover_unique_type): Use
14891         types_compatible_p instead of lang_hooks.types_compatible_p.
14892         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
14893         * tree-vn.c (expressions_equal_p): Likewise.
14894         * tree.c (fields_compatible_p): Likewise.
14895         * tree-ssa-dom.c (avail_expr_eq): Likewise.
14896         (cprop_operand): Use useless_type_conversion_p instead of
14897         lang_hooks.types_compatible_p.
14898         * tree-inline.c (setup_one_parameter): Likewise.
14899         (declare_return_variable): Likewise.
14900         * tree-nrv.c (tree_nrv): Likewise.
14901         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14902         (maybe_fold_offset_to_component_ref): Likewise.
14903         (maybe_fold_offset_to_reference): Likewise.
14904         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14905         (merge_alias_info): Likewise.
14906         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14907         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14908         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
14909         * tree-tailcall.c (find_tail_calls): Likewise.
14910         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
14911         * gimplify.c (canonicalize_addr_expr): Likewise.
14912         (fold_indirect_ref_rhs): Likewise.
14913         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
14914         (cpt_same_type): Likewise.
14915         (check_pointer_types_r): Swap parameters to cpt_same_type
14916         where appropriate.
14917         * fold-const.c (fold_convert): Revert fix for PR15988.
14918         * tree-inline.c (setup_one_parameter): Instead fix it here by
14919         using fold_build1 instead of fold_convert and checking for
14920         error_mark_node.  Convert only if the conversion is necessary.
14921
14922 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
14923
14924         * configure.ac: Check for .gnu_attribute on Power.
14925         * configure: Regenerate.
14926         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
14927         attribute for floating-point ABI.
14928
14929 2007-07-02  Ira Rosen  <irar@il.ibm.com>
14930
14931         PR tree-optimization/32230
14932         PR tree-optimization/32477
14933         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
14934         address is a constant.
14935
14936 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14937
14938         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
14939         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
14940         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
14941         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
14942         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
14943         64-bit targets.  Add support for *-elfoabi*.
14944         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
14945         different settings if $(tm_defines) does not select the EABI.
14946         (MULTILIB_EXCLUSIONS): Define in those circumstances.
14947         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
14948         (MIPS_ARCH_OPTION_SPEC): Likewise.
14949         (MIPS_ISA_LEVEL_SPEC): Likewise.
14950         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
14951         * config/mips/elfoabi.h: New file.
14952
14953 2007-07-02  Richard Guenther  <rguenther@suse.de>
14954
14955         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
14956         (useless_type_conversion_p): ... this.
14957         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
14958         (useless_type_conversion_p): ... this.
14959         * builtins.c (fold_builtin_memory_op): Rename
14960         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
14961         * tree-cfg.c (verify_expr): Likewise.
14962         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
14963         * tree-ssa-ccp.c (ccp_fold): Likewise.
14964         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14965         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
14966         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14967         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
14968         * tree-ssa-pre.c (eliminate): Likewise.
14969         * tree-ssa.c (delete_tree_ssa): Likewise.
14970         (tree_ssa_useless_type_conversion): Likewise.
14971         * tree.c (build2_stat): Likewise.
14972
14973 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14974
14975         Fix PR tree-optimization/32571
14976         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
14977         simplifying them.
14978
14979 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14980
14981         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
14982         and other expected operations explicitly, change default to
14983         gcc_unreachable. 
14984
14985 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14986
14987         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
14988         PARALLEL.
14989         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
14990         (tls_load_dot_plus_eight): Move the label number into the unspec.
14991         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
14992
14993 2007-07-01  Andreas Schwab  <schwab@suse.de>
14994
14995         * dwarf2out.c (initial_return_save): Define only if used.
14996
14997 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
14998
14999         Unreverting Richard's Revert of:
15000
15001         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15002
15003         * dce.c (deletable_insn_p_1): New function, split out from...
15004         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15005         specially, not those inside PARALLELs.  Remove BODY argument
15006         and adjust recursive call accordingly.
15007         (prescan_insns_for_dce): Update call to delete_insn_p.
15008
15009 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
15010             Revital Eres  <eres@il.ibm.com>
15011
15012         * ddg.c (create_ddg_all_sccs): Fix missed
15013         initialization of scc_nodes.
15014
15015 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
15016
15017         PR middle-end/32559
15018         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
15019         X + ~X to 1 only for INTEGRAL_TYPE_P type.
15020
15021 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
15022
15023         * configure.ac: Check for .gnu_attribute on MIPS.
15024         * configure, config.in: Regenerate.
15025         * config/mips/mips.c (mips_file_start): If supported, output
15026         attribute for floating-point ABI.
15027
15028 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
15029
15030         PR target/32433
15031         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
15032         (ffs_cmove): New expander to expand using ctz pattern.
15033         (*ffs_cmove): Remove pattern.
15034         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
15035         (ffsdi2): Expand using ctz pattern.
15036         (*ffs_rex64): Remove pattern.
15037
15038 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15039
15040         PR rtl-optimization/32296
15041         * pa.md (return): Delete pattern.
15042         (return_internal): Remove "(const_int 1)" from pattern.
15043         (epilogue): Use return_internal pattern for trivial returns.
15044         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
15045         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
15046
15047 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
15048
15049         * tree-ssa-pre.c (is_exception_related): New function
15050         (can_value_number_operation): Use it.
15051
15052 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
15053         
15054         Fix PR tree-optimization/32540
15055         Fix PR tree-optimization/31651
15056
15057         * tree-ssa-sccvn.c: New file.
15058
15059         * tree-ssa-sccvn.h: Ditto.
15060         
15061         * tree-vn.c: Include tree-ssa-sccvn.h
15062         (val_expr_paid_d): Removed.
15063         (value_table): Ditto.
15064         (vn_compute): Ditto.
15065         (val_expr_pair_hash): Ditto.
15066         (val_expr_pair_expr_eq): Ditto.
15067         (copy_vuses_from_stmt): Ditto.
15068         (vn_delete): Ditto.
15069         (vn_init): Ditto.
15070         (shared_vuses_from_stmt): Ditto.
15071         (print_creation_to_file): Moved up.
15072         (sort_vuses): Ditto.
15073         (sort_vuses_heap): Ditto.
15074         (set_value_handle): Make non-static.
15075         (make_value_handle): Ditto.
15076         (vn_add): Rewritten to use sccvn lookups.
15077         (vn_add_with_vuses): Ditto.
15078         (vn_lookup): Ditto (and second argument removed).
15079         (vn_lookup_with_vuses): Ditto.
15080         (vn_lookup_or_add): Ditto (and second argument removed);
15081         (vn_lookup_or_add_with_vuses): Ditto.
15082         (vn_lookup_with_stmt): New.
15083         (vn_lookup_or_add_with_stmt): Ditto.
15084         (create_value_handle_for_expr): Ditto.
15085
15086         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
15087         (seen_during_translate): New function.
15088         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
15089         (phi_trans_add): Ditto.
15090         (constant_expr_p): FIELD_DECL is always constant.
15091         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
15092         Use constant_expr_p.
15093         Avoid infinite recursion on mutually valued expressions.
15094         Change callers of vn_lookup_or_add.
15095         (phi_translate): New function.
15096         (compute_antic_safe): Allow phi nodes.
15097         (create_component_ref_by_pieces): Update for FIELD_DECL change.
15098         (find_or_generate_expression): Rewrite slightly.
15099         (create_expression_by_pieces): Updated for vn_lookup_or_add
15100         change.
15101         Update VN_INFO for new names.
15102         (insert_into_preds_of_block): Update for new names.
15103         (add_to_exp_gen): New function.
15104         (add_to_sets): Use vn_lookup_or_add_with_stmt.
15105         (find_existing_value_expr): Rewrite to changed vn_lookup.
15106         (create_value_expr_from): Ditto, and use add_to_exp_gen.
15107         (try_look_through_load): Removed.
15108         (try_combine_conversion): Ditto.
15109         (get_sccvn_value): New function.
15110         (make_values_for_phi): Ditto.
15111         (make_values_for_stmt): Ditto.
15112         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
15113         SCCVN.
15114         (init_pre): Update for SCCVN changes.
15115         (fini_pre): Ditto.
15116         (execute_pre): Ditto.
15117
15118         * tree-flow.h (make_value_handle): Declare.
15119         (set_value_handle): Ditto.
15120         (sort_vuses_heap): Ditto.
15121         (vn_lookup_or_add_with_stmt): Ditto.
15122         (vn_lookup_with_stmt): Ditto.
15123         (vn_compute): Remove.
15124         (vn_init): Ditto.
15125         (vn_delete): Ditto.
15126         (vn_lookup): Update arguments.
15127
15128         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
15129         (tree-vn.o): Ditto.
15130         (tree-ssa-sccvn.o): New.
15131         (OBJS-common): Add tree-ssa-sccvn.o
15132         
15133 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15134
15135         PR c/4076
15136         * c-typeck.c (build_external_ref): Don't mark as used if called
15137         from itself.
15138         * calls.c (rtx_for_function_call): Likewise.
15139         
15140 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
15141
15142         Revert:
15143
15144         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15145
15146         * dce.c (deletable_insn_p_1): New function, split out from...
15147         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15148         specially, not those inside PARALLELs.  Remove BODY argument
15149         and adjust recursive call accordingly.
15150         (prescan_insns_for_dce): Update call to delete_insn_p.
15151
15152 2007-06-30  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15153
15154         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
15155         (try_combine): Move potential calls to undo_all() so they happen
15156         before we commit to using the combined insns.
15157
15158 2007-06-30  Jan Hubicka  <jh@suse.cz>
15159
15160         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
15161         code.
15162
15163 2007-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
15164
15165         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
15166         (cgraph_remove_unreachable_nodes): Likewise.
15167         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
15168         * ipa-inline.c (update_caller_keys): Cast according to the coding
15169         conventions.
15170         (cgraph_decide_recursive_inlining): Likewise.
15171         (cgraph_decide_inlining_of_small_function): Likewise.
15172         (try_inline): Likewise.
15173         (cgraph_decide_inlining_incrementally): Likewise.
15174         * ipa-pure-const.c (get_function_state): Likewise.
15175         (scan_function): Likewise.
15176         (analyze_function): Likewise.
15177         (static_execute): Likewise.
15178         * ipa-reference.c (scan_for_static_refs): Likewise.
15179         (merge_callee_local_info): Likewise.
15180         (analyze_function): Use type safe memory macros.
15181         (static_execute): Likewise. Cast according to the coding conventions.
15182         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
15183         conventions.
15184         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
15185         names.
15186         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
15187         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
15188         variable names.
15189
15190 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15191
15192         PR middle-end/30024
15193         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
15194         for complex modes (both int and real).
15195
15196 2007-06-29  Jan Hubicka  <jh@suse.cz>
15197
15198         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
15199
15200 2007-06-29  Jan Hubicka  <jh@suse.cz>
15201
15202         PR middle-end/32372
15203         * cse.c (cse_insn): Avoid invalid sharing in between register note and
15204         the insn pattern.
15205
15206 2007-06-29  Anatoly Sokolov <aesok@post.ru>
15207
15208         PR target/32335
15209         * config/avr/avr.c: Include dataflow header file.
15210         (expand_prologue): Adjust for prologue insn change.
15211         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
15212         inside a insn.
15213
15214 2007-06-29  Richard Guenther  <rguenther@suse.de>
15215
15216         PR middle-end/32493
15217         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
15218         during type verification.
15219
15220 2007-06-29  Jan Hubicka  <jh@suse.cz>
15221
15222         * recog.c (validate_change_rtx_1): Unshare TO argument.
15223
15224 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
15225
15226         PR tree-optimization/24659
15227         * tree-vect-transform.c (vectorizable_call): Handle
15228         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
15229
15230         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
15231         * config/i386/i386.c (enum ix86_builtins)
15232         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
15233         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
15234         description.
15235         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
15236         const using def_builtin_const.
15237         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
15238         input operands in the same modes as the result.
15239         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
15240
15241 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
15242
15243         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
15244         (df_set_dead_notes_for_mw): Likewise.
15245
15246 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15247
15248         * c-common.c (pointer_int_sum): Do the negation in sizetype.
15249
15250 2007-06-28  DJ Delorie  <dj@redhat.com>
15251
15252         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
15253
15254 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
15255
15256         * doc/invoke.texi (C++ Dialect Options): Document
15257         fvisibility-ms-compat.
15258         * c.opt (fvisibility-ms-compat): New.
15259
15260 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15261
15262         PR tree-opt/32417
15263         * tree-affine.c (aff_combination_add_elt): Handle
15264         pointer addition specially.
15265
15266 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
15267
15268         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
15269         decl is non-external for AIX ABI.
15270
15271 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
15272
15273         * config/rs6000/predicates.md (current_file_function_operand):
15274         Ensure the symbol is non-external for AIX ABI.
15275
15276 2007-06-28  Nick Clifton  <nickc@redhat.com>
15277
15278         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
15279         (fdce, fdse, fpredictive-commoning): Likewise.
15280
15281 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
15282
15283         PR other/31400
15284         * gcc.c (process_command): Recognize the new -static-libgfortran
15285         option.
15286
15287 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15288
15289         PR target/32418
15290         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
15291         Use a call clobbered hard reg instead of a pseudo reg.
15292
15293 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15294
15295         * config/sh/sh.md (load_gbr): Use correct operand constraint.
15296
15297 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15298
15299         PR target/32479
15300         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
15301         REG_LIBCALL and REG_RETVAL notes.
15302         (divsi3, mulsi3): Likewise.
15303         (mulhisi3): Likewise.  Use emit_libcall_block.
15304         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
15305
15306 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
15307
15308         PR rtl-optimization/32481
15309         * combine.c (adjust_for_new_dest): Rescan the changed insn.
15310
15311 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15312
15313         * dce.c (deletable_insn_p_1): New function, split out from...
15314         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15315         specially, not those inside PARALLELs.  Remove BODY argument
15316         and adjust recursive call accordingly.
15317         (prescan_insns_for_dce): Update call to delete_insn_p.
15318
15319 2007-06-27  Richard Guenther  <rguenther@suse.de>
15320
15321         PR middle-end/32492
15322         * tree.h (fold_convertible_p): Declare.
15323         * fold-const.c (fold_convertible_p): New function.
15324         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
15325         instead of lang_hooks.types_compatible_p.
15326
15327 2007-06-26  Jan Hubicka  <jh@suse.cz>
15328
15329         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
15330         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
15331         early use validate_unshare_change.
15332         (reload_combine): Likewise.
15333         * recog.c (change_t): New field unshare.
15334         (validate_change_1): Rename from validate_change; add argument unshare.
15335         (validate_change): Turn into wrapper of validate_change_1; update
15336         prototype for bools.
15337         (validate_unshare_change): New.
15338         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
15339         calls of df_insn_rescan.
15340         * recog.h (validate_change): Replace ints by bools.
15341         (validate_unshare_change): Declare.
15342
15343 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
15344
15345         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
15346         
15347 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
15348
15349         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
15350
15351 2007-06-25  Jan Hubicka  <jh@suse.cz>
15352
15353         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
15354         uninlinable call.
15355         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
15356         cgraph_decide_inlining_incrementally): Move uninlinability checks to
15357         places other call site specific checks are performed.
15358
15359 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15360
15361         PR tree-opt/32421
15362         * tree-vect-transform.c (vectorizable_operation): Convert
15363         POINTER_PLUS_EXPR over to PLUS_EXPR.
15364
15365 2007-06-25  Chao-ying Fu  <fu@mips.com>
15366
15367         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
15368         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
15369         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
15370         Document GET_MODE_IBIT, and GET_MODE_FBIT.
15371
15372         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
15373         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15374         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
15375         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
15376         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
15377         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
15378         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
15379         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
15380         ALL_FIXED_POINT_MODE_P): New define.
15381         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15382         MODE_UACCUM.
15383         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
15384
15385         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
15386         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15387         MODE_VECTOR_UACCUM): New mode classes.
15388
15389         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
15390         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
15391         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
15392         USA, UDA, and UTA.
15393
15394         * genmodes.c (struct mode_data): Add ibit and fbit fields.
15395         (blank_mode): Initialize ibit and fbit.
15396         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
15397         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15398         MODE_UACCUM.
15399         (new_adjust): Change required_class to required_class_from and
15400         required_class_to for testing within a range.
15401         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15402         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15403         MODE_VECTOR_UACCUM.
15404         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
15405         (make_fixed_point_mode): New.
15406         (_ADD_ADJUST): Change C to C1 and C2.
15407         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
15408         use a range for machine classes.
15409         (ADJUST_IBIT, ADJUST_FBIT): New.
15410         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
15411         CONST_MODE_FBIT.
15412         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
15413         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15414         Emit adjustment for ibit and fbit.
15415         (emit_mode_ibit, emit_mode_fbit): New.
15416         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
15417
15418 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
15419
15420         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
15421         as the source of the set.
15422
15423 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
15424
15425         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
15426         FP_REGNO_P): Use IN_RANGE.
15427         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
15428         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
15429         (DATA_REG_P): Use DATA_REGNO_P.
15430         (FP_REG_P): Use FP_REGNO_P.
15431         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
15432         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
15433         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
15434
15435 2007-06-24  Jan Hubicka  <jh@suse.cz>
15436
15437         PR middle-end/30563
15438         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
15439
15440 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
15441
15442         PR middle-end/32461
15443         * fold-const.c (fold_binary): Strip nops of operand 0
15444         of BIT_NOT_EXPR before calling operand_equal_p.
15445         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
15446         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
15447
15448 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
15449
15450         * doc/extend.texi: Document that dllimport and dllexport imply
15451         default visibility.
15452         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
15453         imported or exported declaration, including type declarations.
15454         * c-common.c (handle_visibility_attribute): Check for conflicts
15455         with dllimport/dllexport.
15456         (c_determine_visibility): Handle dllimport/dllexport as an
15457         explicit visibility atttribute.
15458
15459 2007-06-23  Richard Guenther  <rguenther@suse.de>
15460
15461         PR tree-optimization/16876
15462         PR middle-end/29478
15463         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
15464         for CALL_EXPRs.
15465         * tree-inline.c (initialize_inlined_parameters): Do not call
15466         lang_hooks.tree_inlining.convert_parm_for_inlining.
15467         * cgraphbuild.c (initialize_inline_failed): Set inline failed
15468         reason for mismatched types.
15469         * gimplify.c (gimplify_call_expr): Verify the call expression
15470         arguments match the called function type signature.  Otherwise
15471         mark the call expression to be not considered for inlining
15472         using CALL_CANNOT_INLINE_P flag.
15473         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
15474         edges call expression.
15475         (cgraph_decide_inlining_of_small_function): Likewise.
15476         (cgraph_decide_inlining): Likewise.
15477         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
15478         Remove define.
15479         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
15480         * c-typeck.c (c_convert_parm_for_inlining): Remove.
15481         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
15482         Remove declaration.
15483         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
15484         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
15485         Remove.
15486         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
15487         convert_parm_for_inlining member.
15488
15489 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
15490
15491         PR target/31152
15492         * arm.md (negscc): Match the correct operand for optimized LT0 test.
15493         Remove optimization for GT.
15494
15495 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
15496
15497         PR middle-end/32437
15498         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
15499         is a PARALLEL.
15500         (prescan_insns_for_dce): Add extra parameter.
15501         
15502 2007-06-23  Jan Hubicka  <jh@suse.cz>
15503
15504         PR middle-end/31541
15505         * gimplify.c (mark_addressable): New function.
15506         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
15507
15508 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15509
15510         PR middle-end/32374
15511         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
15512
15513 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15514
15515         PR target/32413
15516         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
15517         moves between MMX/SSE registers to at least 8 units to prevent
15518         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
15519
15520 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15521
15522         * config/i386/i386.c (override_options): Correct x86_sahf
15523         setting condition.
15524
15525 2007-06-21  David Daney  <ddaney@avtrex.com>
15526
15527         PR target/32406
15528         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
15529         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
15530         (exception_receiver): Renamed to ...
15531         (nonlocal_goto_receiver): ... this.
15532
15533 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
15534
15535         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
15536         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
15537         partial register accesses.
15538
15539 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
15540
15541         * fold-const.c (debug_fold_checksum): Move it under
15542         ENABLE_FOLD_CHECKING.
15543
15544 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15545
15546         PR middle-end/20623
15547         * tree.h (debug_fold_checksum): Declared.
15548         * fold-const.c (build_fold_addr_expr_with_type_1): New.
15549         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
15550         build_fold_addr_expr_with_type_1.
15551         (fold_addr_expr, debug_fold_checksum): New.
15552         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
15553         (fold_unary, fold_comparison, split_address_to_core_and_offset):
15554         Use fold_addr_expr.
15555         
15556 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15557
15558         PR tree-optimization/19590
15559         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
15560         of scev is a constant.
15561
15562 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
15563
15564         * df-problems.c (df_note_bb_compute): Made computation of live
15565         info consistent with df_lr.
15566
15567 2007-06-21  Richard Guenther  <rguenther@suse.de>
15568
15569         PR tree-optimization/32453
15570         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
15571         for pointer anti-range.
15572
15573 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
15574
15575         * config/i386/i386.c (processor_target_table): Increase maximum
15576         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
15577         default 64bit.
15578
15579         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
15580         byte alignment if > 8 byte alignment is preferred.
15581         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
15582
15583 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
15584
15585         PR tree-optimization/31866
15586         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
15587         if ASM_EXPR's input is not a SSA_NAME.
15588
15589         PR middle-end/32362
15590         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
15591         but decl is a global var, instead return decl.
15592         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
15593         even for is_global_var decls, if they are private in some outer
15594         context.
15595
15596 2007-06-21  Richard Guenther  <rguenther@suse.de>
15597
15598         PR tree-optimization/32451
15599         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
15600
15601 2007-06-21  Christian Bruel  <christian.bruel@st.com>
15602
15603         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
15604         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
15605         (push_regs): Changed saving order or banked registers.
15606         (sh_expand_epilogue): Likewise.
15607         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
15608         (FIRST_BANKED_REG): Likewise.
15609         (LAST_BANKED_REG): Likewise.
15610         * config/sh/sh.md (banked) New attribute.
15611         (in_delay_slot): Check banked attribute.
15612         
15613 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
15614
15615         PR tree-optimization/32075
15616         * tree-data-ref.c (subscript_dependence_tester_1, 
15617         analyze_miv_subscript, analyze_overlapping_iterations,
15618         add_distance_for_zero_overlaps, build_classic_dist_vector,
15619         subscript_dependence_tester_1, analyze_overlapping_iterations,
15620         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
15621         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
15622         to evolution_function_is_affine_multivariate_p.
15623
15624 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
15625
15626         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
15627
15628 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15629
15630         PR target/32335
15631         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
15632         for TARGET_A16.
15633         * config/m32c/prologue.md (epilogue_exitd_16): New.
15634         (epilogue_reit_16): New.
15635         (epilogue_exitd): Rename to epilogue_exitd_24.
15636         (epilogue_reit): Rename to epilogue_reit_24.
15637
15638 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
15639             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15640
15641         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
15642         New counters.
15643         * haifa-sched.c (queue_to_ready): Don't requeue next insn
15644         if dbg_cnt (sched_insn) reaches the limit.
15645         (choose_ready): New parameter INSN_PTR and new return value.
15646         (schedule_block): Handle dbg_cnt (sched_insn). Handle
15647         the new return value from choose_ready.
15648         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
15649         (rest_of_handle_global_alloc): New global_alloc_at_func.
15650
15651 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
15652
15653         PR tree-optimization/25737
15654         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
15655         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
15656         * tree-flow.h (struct fieldoff): Add new field alias_set.
15657         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
15658         argument addressable_type.  Set alias_set of fieldoff.
15659         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
15660         (create_overlap_variables_for): Pass alias_set from fieldoff to
15661         create_sft.
15662         * alias.c (get_alias_set): Use alias_set from SFT if set.
15663
15664 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
15665
15666         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
15667         of a variable as an unsigned HOST_WIDE_INT integer.
15668
15669 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
15670
15671         PR rtl-optimization/32405
15672         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
15673
15674 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
15675
15676         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
15677
15678         PR middle-end/31959
15679         * builtins.c: Include diagnostic.h.
15680         (expand_builtin_expect): Make gcc_assert more permissive.
15681         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
15682
15683         PR inline-asm/32109
15684         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
15685         and !allows_mem.
15686
15687         PR middle-end/32285
15688         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
15689         if ACCUMULATE_OUTGOING_ARGS.
15690
15691 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15692
15693         * config/m68hc11/m68hc11.c: Include dataflow header file.
15694         (m68hc11_reorg): Port to dataflow.
15695
15696 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15697
15698         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
15699         (struct df_problem.free_blocks_on_set_blocks): New field.
15700         (struct dataflow.optional_p): New field.
15701         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15702         (df_live_set_all_dirty): New function.
15703         * df-scan.c (df_scan_alloc): Initialize optional_p.
15704         (problem_SCAN): Initialize free_blocks_on_set_blocks.
15705         * df-core.c (df_set_blocks): Removed use of
15706         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
15707         df_problem.free_blocks_on_set_blocks to determine which blocks are
15708         recycled.
15709         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
15710         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
15711         uses dataflow.optional_p to determine if problem should be
15712         deleted.
15713         (rest_of_handle_df_initialize): Only start live problem if 
15714         -02 or above.
15715         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15716         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
15717         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
15718         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
15719         problem_NOTE): Initialize free_blocks_on_set_blocks.
15720         (df_lr_bb_local_compute): Recompute luids if df_live problem is
15721         not active.
15722         (df_live_set_all_dirty, df_note_alloc): New function.
15723         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
15724         df_get_live_*.
15725         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
15726         * postreload.c (reload_combine): Ditto.
15727         * cse.c (cse_extended_basic_block): Ditto.
15728         * regmove.c (mark_flags_life_zones): Ditto.
15729         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
15730         erase_matching_seqs): Ditto.
15731         * bt-load.c (compute_defs_uses_and_gen): Ditto.
15732         * integrate (allocate_initial_values): Ditto.
15733         * combine.c (reg_dead_at_p): Ditto.
15734         * resource.c (mark_target_live_regs): Ditto.
15735         * sched-rgn.c (check_live_1, update_live_1): Ditto.
15736         * config/sh/sh.c (find_r0_life_regions): Ditto.
15737         * global.c (rest_of_handle_global_alloc): Only add back df_live
15738         for -O > 1.
15739         * local-alloc.c (rest_of_handle_local_alloc): Only remove
15740         df_live for -O > 1.
15741         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
15742         df_get_live_*.
15743         (if_convert): Make sure df_live is there at -O == 1.
15744         (pass_if_after_combine): Cleanup flags.
15745         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
15746         is there at -O == 1.
15747         
15748 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
15749
15750         * config/arm/arm.c (arm_get_frame_offsets): Set
15751         offsets->locals_base to avoid negative stack size.
15752         (thumb1_expand_prologue): Assert on negative stack size.
15753
15754 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
15755
15756         PR tree-optimization/32367
15757         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
15758         of the chrec has no evolution in that loop.
15759         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
15760
15761 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
15762
15763         * config/xtensa/xtensa.c: Include "df.h".
15764         (xtensa_builtin_saveregs): Use adjust_address instead of
15765         change_address.
15766         (xtensa_va_start): Invoke make_tree with sizetype for
15767         expand_builtin_saveregs and then convert the result to a pointer.
15768         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
15769         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
15770         Subtract argument size from index value as integers and then use
15771         POINTER_PLUS_EXPR to add the result to the array address.
15772         
15773 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15774
15775         PR target/32335
15776         * config/m32c/m32c.c: Include dataflow header file.
15777         (m32c_emit_prologue): Adjust for prologue insn change.
15778         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
15779         once inside a PARALLEL. Assume frame size passed in operand 0
15780         includes space to save the fb register.
15781         (prologue_enter_24): Likewise.
15782         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
15783
15784 2007-06-19  David Daney  <ddaney@avtrex.com
15785
15786         PR target/32313
15787         * config/mips/mips.md (cprestore): Mark $gp as used.
15788
15789 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15790
15791         PR target/32369
15792         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
15793         (frv_ifcvt_modify_insn): Likewise.
15794
15795 2007-06-19  Richard Guenther  <rguenther@suse.de>
15796
15797         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
15798         only handle positive offsets that fit in a HOST_WIDE_INT.
15799
15800 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
15801
15802         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
15803         result of rsqrt insn for zero input argument to avoid NaN.
15804
15805 2007-06-19  Richard Guenther  <rguenther@suse.de>
15806
15807         PR middle-end/31950
15808         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
15809
15810 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
15811
15812         PR tree-optimization/32353
15813         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
15814
15815 2007-06-19  Nick Clifton  <nickc@redhat.com>
15816
15817         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
15818
15819 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15820
15821         PR target/32389
15822         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
15823         * config/i386/i386.c (assign_386_stack_local): Assert that
15824         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
15825         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
15826         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
15827         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
15828
15829 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
15830
15831         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
15832
15833 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
15834
15835         PR rtl-optimization/32321
15836         * gcse.c (replace_store_insn): Update the note before
15837         calling emit_insn_after.
15838
15839 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
15840
15841         PR middle-end/32355
15842         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
15843         cse_main.
15844         * df-problems.c (df_note_bb_compute): Fix dumping info.
15845         
15846 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
15847
15848         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
15849         insn with emit_jump_insn.
15850
15851 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15852
15853         PR tree-optimization/32383
15854         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
15855         * targhooks.h (default_builtin_reciprocal): Update prototype.
15856         * target.h (struct gcc_target): Update builtin_reciprocal.
15857         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
15858         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
15859         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
15860         when fndecl is in BUILT_IN_MD class.
15861         (execute_convert_to_rsqrt): Ditto.
15862
15863         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
15864         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
15865         Convert BUILT_IN_SQRTF code only  when md_fn is false.
15866
15867 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15868
15869         * bt-load.c (move_btr_def): Fix the order of arguments
15870         to validate_replace_rtx.
15871
15872 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
15873
15874         * config/m68k/m68k-devices.def: Add 54450..54455.
15875
15876 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
15877
15878         PR rtl-optimization/32366
15879         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
15880         FLOAT_EXTEND]: Prevent non-scalar modes from entering
15881         significand_size.
15882
15883 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15884
15885         PR middle-end/32349
15886         * modulo-sched (generate_reg_moves): Added rescan parameter and if
15887         this is true, rescan insn being modified.
15888         (sms_schedule): Added rescan parameter.
15889         (rest_of_handle_sms): Moved freeing of dominance info to before
15890         getting out of cfg_layout.
15891         
15892 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
15893
15894         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
15895         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
15896         appropriate.
15897
15898         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
15899         FL_CF_EMAC from the entry for isac.
15900
15901         * config/m68k/predicates.md (const_call_operand): Adjust comment.
15902         (const_sibcall_operand): New.
15903         (sibcall_operand): Use it.
15904         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
15905         (m68k_isas): ISAC does not imply FPU or EMAC.
15906         (override_options): Add ISA_C logic for symbolic jump & call.
15907
15908 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
15909
15910         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
15911         return mode from the builtin itself.
15912         (sparc_fold_builtin): Fix cast of zero constant.
15913
15914 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15915
15916         * targhooks.c (default_builtin_reciprocal): New default target hook.
15917         * targhooks.h (default_builtin_reciprocal): Add prototype.
15918         * hooks.c (hook_tree_tree_bool_null): Remove hook.
15919         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
15920         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
15921         default_builtin_reciprocal.
15922
15923 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15924
15925         PR middle-end/31723
15926         * hooks.c (hook_tree_tree_bool_null): New hook.
15927         * hooks.h (hook_tree_tree_bool_null): Add prototype.
15928         * tree-pass.h (pass_convert_to_rsqrt): Declare.
15929         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
15930         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
15931         and convert it to reciprocal a*rfunc(b).
15932         (execute_convert_to_rsqrt): New function.
15933         (gate_convert_to_rsqrt): New function.
15934         (pass_convert_to_rsqrt): New pass definition.
15935         * target.h (struct gcc_target): Add builtin_reciprocal.
15936         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
15937         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
15938         TARGET_BUILTIN_RECIPROCAL.
15939         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
15940
15941         * config/i386/i386.h (TARGET_RECIP): New define.
15942         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
15943         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15944         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15945         and not optimizing for size.
15946         (*rcpsf2_sse): New insn pattern.
15947         (*rsqrtsf2_sse): Ditto.
15948         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15949         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15950         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15951         and not optimizing for size.
15952         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
15953         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15954         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15955         and not optimizing for size.
15956         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
15957         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15958         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15959         and not optimizing for size.
15960         (*sse_rsqrtv4sf2): Do not export.
15961         (sqrtv4sf2): Ditto.
15962         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15963         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15964         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15965         and not optimizing for size.
15966         (sqrtv4sf2): Ditto.
15967         * config/i386/i386.opt (mrecip): New option.
15968         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
15969         (ix86_emit_swsqrtsf): Ditto.
15970         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
15971         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
15972         builtin definition.
15973         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
15974         ix86_expand_unop1_builtin.
15975         (ix86_emit_swdivsf): New function.
15976         (ix86_emit_swsqrtsf): Ditto.
15977         (ix86_builtin_reciprocal): New function.
15978         (TARGET_BUILTIN_RECIPROCAL): Use it.
15979         (ix86_vectorize_builtin_conversion): Rename from
15980         ix86_builtin_conversion.
15981         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
15982         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
15983         "i386 and x86_64 Options" section.
15984         (Intel 386 and AMD x86_64 Options): Document -mrecip.
15985
15986 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
15987             Zdenek Dvorak <dvorakz@suse.cz>
15988             Richard Guenther  <rguenther@suse.de>
15989             Kaz Kojima  <kkojima@gcc.gnu.org>
15990
15991         * tree-vrp.c (compare_values_warnv): Convert val2 to
15992         the type of val1.
15993         (extract_range_from_assert): Create
15994         POINTER_PLUS_EXPR for pointer types.
15995         (extract_range_from_binary_expr): Handle
15996         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
15997         for pointer types.
15998         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
15999         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
16000         POINTER_PLUS_EXPR as PLUS_EXPR.
16001         (number_of_iterations_lt_to_ne):
16002         For pointer types, use sizetype when
16003         creating MINUS_EXPR/PLUS_EXPRs.
16004         (assert_loop_rolls_lt): For pointer types, use sizetype when
16005         creating MINUS_EXPR/PLUS_EXPRs.
16006         (number_of_iterations_le): Likewise.
16007         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
16008         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
16009         like PLUS_EXPR and MINUS_EXPR.
16010         * tree-pretty-print.c (dump_generic_node): Handle
16011         POINTER_PLUS_EXPR.
16012         (op_prio): Likewise.
16013         (op_symbol_1): Likewise.
16014         * optabs.c (optab_for_tree_code): Likewise.
16015         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
16016         specially.
16017         * tree-tailcall.c (process_assignment): Mention
16018         POINTER_PLUS_EXPR in a TODO comment.
16019         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
16020         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
16021         not used with a pointer and an integer type.
16022         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
16023         increment using chrec_convert_rhs instead of chrec_convert.
16024         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
16025         PLUS_EXPR except for the right hand side's type will be
16026         sizetype.
16027         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
16028         (fold_used_pointer_cast): Kill.
16029         (pointer_offset_p): Kill.
16030         (fold_used_pointer): Kill.
16031         (pointer_used_p): Kill.
16032         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
16033         call fold_used_pointer.
16034         (instantiate_parameters_1): Convert the increment
16035         using chrec_convert_rhs instead of chrec_convert.
16036         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
16037         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
16038         instead of PLUS_EXPR.
16039         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
16040         PLUS_EXPR for pointers.
16041         (std_gimplify_va_arg_expr): Likewise.
16042         (fold_builtin_memory_op): Likewise.
16043         (fold_builtin_strstr): Likewise.
16044         (fold_builtin_strchr): Likewise.
16045         (fold_builtin_strrchr): Likewise.
16046         (fold_builtin_strpbrk): Likewise.
16047         (expand_builtin_memory_chk): Likewise.
16048         (fold_builtin_memory_chk): Likewise.
16049         (std_expand_builtin_va_start): Use
16050         sizetype for the call to make_tree and then convert
16051         to the pointer type.
16052         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
16053         instead of PLUS_EXPR for adding to a pointer.
16054         (std_gimplify_va_arg_expr): Use fold_build2 for
16055         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
16056         the operands to sizetype first and then cast the BIT_AND_EXPR
16057         back to the pointer type.
16058         * fold-const.c (build_range_check): Handle pointer types
16059         specially.
16060         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
16061         of PLUS_EXPR's. Make sure the offset is converted to
16062         sizetype.
16063         (try_move_mult_to_index): Strip the NOPs from the offset.
16064         Remove code argument and replace all uses with PLUS_EXPR.
16065         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
16066         specially. Don't use a pointer type for MINUS_EXPR.
16067         (fold_unary): Handle for (T1)(X op Y),
16068         only p+ as that is the only as that can be handled for
16069         binary operators now.
16070         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
16071         POINTER_PLUS_EXPR.
16072         <case PLUS_EXPR>: Add folding of PTR+INT into
16073         PTR p+ INT.
16074         Don't call try_move_mult_to_index.
16075         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
16076         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
16077         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
16078         Don't call try_move_mult_to_index.
16079         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
16080         (tree_expr_nonzero_p): Likewise.
16081         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
16082         of PLUS_EXPR for the complex expression folding.
16083         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
16084         first chrec is a pointer type, then the second should
16085         be sizetype and not the first's type.
16086         For POINTER_PLUS_EXPR, use a different right hand side type.
16087         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16088         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
16089         different right hand side type.
16090         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16091         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
16092         instead of PLUS_EXPR.
16093         When either operand is zero, convert the other operand.
16094         (chrec_apply): Use chrec_convert_rhs
16095         on the argument x instead of chrec_convert.
16096         (reset_evolution_in_loop): For pointer types, the new_evol
16097         should be sizetype.
16098         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
16099         different right hand side type.
16100         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16101         (chrec_convert_rhs): New function.
16102         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
16103         different right hand side type.
16104         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16105         * tree-chrec.h (chrec_convert_rhs): New prototype.
16106         (build_polynomial_chrec): For pointer types, the right hand
16107         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
16108         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
16109         Remove subtraction case as it is always addition now.
16110         Make sure the offset is converted to sizetype.
16111         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
16112         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
16113         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
16114         PLUS_EXPR in pointer type.
16115         Handle POINTER_PLUS_EXPR.
16116         (tree_to_aff_combination): Likewise.
16117         (force_expr_to_var_cost): Likewise.
16118         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
16119         instead of PLUS_EXPR for pointers.
16120         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
16121         instead of PLUS_EXPR of pointer types.
16122         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
16123         as PLUS_EXPR.
16124         (check_va_list_escapes): Likewise.
16125         (check_all_va_list_escapes): Likewise.
16126         * dwarf2out.c (loc_descriptor_from_tree_1):
16127         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
16128         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
16129         (string_constant): Likewise.
16130         * tree-ssa-address.c (tree_mem_ref_addr): When adding
16131         the offset to the base, use POINTER_PLUS_EXPR.
16132         (add_to_parts): Convert the index to sizetype.
16133         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
16134         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
16135         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
16136         Offset only holds something for PLUS_EXPR.
16137         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
16138         a PLUS_EXPR.
16139         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
16140         and not PLUS_EXPR.
16141         (analyze_accesses_for_modify_stmt): Likewise.
16142         Remove comment about the type being integral type as it is
16143         wrong now.
16144         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
16145         PLUS_EXPR.
16146         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
16147         and not PLUS_EXPR.
16148         Correct the type which the artimentic is done in (is now
16149         sizetype).
16150         Reindent one loop.
16151         * tree-data-ref.c (split_constant_offset): Handle
16152         POINTER_PLUS_EXPR
16153         * tree-affine.c (tree_to_aff_combination): Likewise.
16154         * c-typeck.c (build_unary_op): For pointers create the increment
16155         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
16156         for pointers.
16157         * gimplify.c (gimplify_self_mod_expr): Create a
16158         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16159         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
16160         * tree.def (POINTER_PLUS_EXPR): New tree code.
16161         * tree-predcom.c (ref_at_iteration): If we have a pointer
16162         type do the multiplication in sizetype.
16163         * tree-mudflap.c (mf_xform_derefs_1): Create a
16164         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16165         * tree-ssa-forwprop.c 
16166         (forward_propagate_addr_into_variable_array_index):
16167         Don't expect there to be a cast for the index as that
16168         does not exist anymore.
16169         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
16170         instead of PLUS_EXPR.
16171         Don't check for the first operand of the POINTER_PLUS_EXPR
16172         was the index as it cannot be.
16173         Call forward_propagate_addr_into_variable_array_index with
16174         the SSA_NAME instead of the statement.
16175         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
16176         (compare_constant): Likewise.
16177         (copy_constant): Likewise.
16178         (compute_reloc_for_constant): Likewise.
16179         (output_addressed_constants): Likewise.
16180         (initializer_constant_valid_p): Likewise.
16181         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
16182         Convert the MIN/MAX of the inner type to the outer
16183         type before comparing them.
16184         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
16185         POINTER_PLUS_EXPR instead of PLUS_EXPR.
16186         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
16187         of PLUS_EXPR for pointers.
16188         * tree-inline.c (estimate_num_insns_1): Handle
16189         POINTER_PLUS_EXPR.
16190         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
16191         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16192         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
16193         instead of PLUS_EXPR for the pointer increment statement.
16194         (vect_update_ivs_after_vectorizer): For pointer types, create
16195         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
16196         MULT_EXPR in sizetype.
16197         (vect_gen_niters_for_prolog_loop): Add a cast when creating
16198         byte_misalign.
16199         * tree-object-size.c (plus_expr_object_size): Handle
16200         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
16201         code which is trying to figure out which side is a pointer and 
16202         is the index.
16203         (check_for_plus_in_loops_1): Likewise.
16204         (check_for_plus_in_loops): Likewise.
16205         * c-common.c (pointer_int_sum): Create a
16206         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16207         * tree-ssa-structalias.c (handle_ptr_arith): Handle
16208         only POINTER_PLUS_EXPR.  Removing all the extra
16209         code which is trying to figure out which side is a pointer and 
16210         is the index.
16211         * tree-cfg.c (verify_expr): Add extra checking for pointers and
16212         PLUS_EXPR and MINUS_EXPR.
16213         Also add checking to make sure the operands of POINTER_PLUS_EXPR
16214         are correct.
16215         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
16216         with make_tree, instead of a pointer type.
16217         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
16218         for pointers instead of PLUS_EXPR.
16219         (s390_gimplify_va_arg): Likewise.
16220         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
16221         instead of PLUS_EXPR when doing addition on pointer
16222         types.  Use sizetype for the second operand.
16223         (spu_gimplify_va_arg_expr): Likewise.
16224         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
16225         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
16226         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
16227         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
16228         for the pointer addition and also use size_int/sizetype
16229         for the offset.
16230         (ix86_gimplify_va_arg): Likewise.
16231         Perform BIT_AND_EXPR on sizetype arguments.
16232         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
16233         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
16234         for the pointer additions and also use size_int for the offsets.
16235         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
16236         additions and also use size_int for the offsets.  Perform
16237         BIT_AND_EXPR on sizetype arguments.
16238         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
16239         POINTER_PLUS_EXPR for pointers and create the
16240         BIT_AND_EXPR in sizetype.
16241         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
16242         instead of PLUS_EXPR for pointer addition.
16243         (rs6000_va_start): Likewise.
16244         Also use sizetype for the offset.
16245         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
16246         as PLUS_EXPR/MINUS_EXPR.
16247         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
16248         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
16249         Don't use BIT_AND_EXPR on a pointer type, convert the
16250         expression to sizetype first.
16251         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
16252         for pointers.
16253         (mips_gimplify_va_arg_expr): Likewise.
16254         Don't create BIT_AND_EXPR in a pointer type.
16255
16256 2007-06-15  Eric Christopher  <echristo@apple.com>
16257
16258         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
16259         (x86_64-*-darwin*): Ditto.
16260         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
16261         for above.
16262
16263 2007-06-15  Matthew Wilcox <matthew@wil.cx>
16264
16265         * doc/extend.texi: Document behavior of __attribute__((aligned))
16266         on typedefs.
16267
16268 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
16269
16270         * rtlanal.c (note_stores): Improve documentation.
16271
16272 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16273
16274         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
16275         LOCAL_LABEL_PREFIX): Delete.
16276         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
16277         (bfin_internal_label): Delete.
16278
16279 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
16280
16281         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
16282         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
16283         otherwise define to LIBGCC2_TF_CEXT.
16284         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
16285         (LIBGCC_TF_CEXT): Ditto.
16286         (TF_SIZE): Ditto.
16287
16288 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
16289
16290         PR rtl-optimization/32339
16291         * df-scan.c (df_uses_record): Don't modify flags but just add to
16292         it for df_ref_record.
16293
16294 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16295
16296         * tree-mudflap.c: Fix whitespace issues.
16297
16298 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
16299
16300         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
16301
16302 2007-06-14  Eric Christopher  <echristo@apple.com>
16303
16304         * config/i386/sse.md (movdi_to_sse): Rewrite body.
16305         (movv4sf): Use gcc_unreachable instead of abort.
16306
16307 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16308
16309         PR target/32268
16310         * config/i386/sfp-machine.h (CMPtype): New define.
16311         (mach stubs): Use CMPtype instead of int as a return type.
16312
16313 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16314
16315         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
16316         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
16317         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
16318         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
16319         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
16320         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
16321         config/soft-fp/soft-fp.h: Update from glibc CVS.
16322
16323 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
16324
16325         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
16326
16327 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16328
16329         PR target/32341
16330         * config/v850/v850.c: Include dataflow header file.
16331         (substitute_ep_register): Fix typo.
16332
16333 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16334
16335         * configure.ac: Fix earlier checkin.
16336         * configure: Regenerated.
16337
16338 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16339
16340         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
16341         * aclocal.m4: Regenerate.
16342         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
16343         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
16344         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
16345         * configure: Regenerate.
16346         * Makefile.in (LOOSE_WARN): Subst loose_warn.
16347
16348         * Makefile.in (quickstrap): Build libgcc too.
16349
16350 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16351
16352         * configure.ac: Add --enable-checking=df.  Explicitly mention that
16353         the variables are initialized as for "release".
16354         * df-core.c: Use it.
16355         * configure: Regenerate.
16356         * config.in: Regenerate.
16357
16358 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
16359
16360         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
16361         validate_replace_rtx instead of replace_rtx.
16362         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
16363
16364 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
16365
16366         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
16367         (DWARF2_UNWIND_INFO): Override default if configured with
16368         SJLJ EH disabled.
16369         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
16370         (ENDFILE_SPEC): Add crtend.o.
16371         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
16372         (ENDFILE_SPEC): Add crtend.o.
16373         (TARGET_USE_JCR_SECTION): Define.
16374         (MD_UNWIND_SUPPORT): Define for 32-bit target.
16375
16376         * config/i386/cygming-crtbegin.c: New file.
16377         * config/i386/cygming-crtend.c: New file.
16378
16379 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
16380
16381         * config/i386/w32-unwind.h: New file.
16382
16383 2007-06-13  Eric Christopher  <echristo@apple.com>
16384
16385         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
16386         the user set a value below STACK_BOUNDARY.
16387
16388 2007-06-13  Thiemo Seufer  <ths@networkno.de>
16389
16390         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
16391         imply -lpthread for -pthread.
16392
16393 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16394
16395         * basic-block.h: Remove the prototype for
16396         free_basic_block_vars.
16397         * cfglayout.h: Remove the prototype for
16398         insn_locators_initialize.
16399         * tree.h: Remove the prototype for emit_line_note.
16400
16401         * tree-ssa-pre.c (mergephitemp): Remove.
16402         (init_pre): Don't use mergephitemp.
16403
16404 2007-06-13  Eric Christopher  <echristo@apple.com>
16405
16406         * config/i386/i386.c (override_options): If we've specified
16407         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
16408
16409 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
16410
16411         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
16412         is defined.
16413
16414 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16415
16416         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
16417         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
16418         (eh_store_handler): New pattern.
16419         (eh_return): Emit it instead of a plain move.
16420
16421 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
16422
16423         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
16424         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
16425         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
16426         def_builtin_const.
16427
16428 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16429
16430         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
16431         (find_next_insn_start, find_load): New functions.
16432         (bfin_reorg): Use them to deal with the fact that parallel insns are
16433         no longer represented as a SEQUENCE.
16434
16435 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
16436
16437         * config/sparc/sparc.c (sparc_override_options): Initialize
16438         fpu mask correctly.
16439
16440 2007-06-13  Dave Korn  <dave.korn@artimi.com>
16441
16442         * config/i386/i386.c (ix86_eax_live_at_start_p): Use df_get_live_out.
16443
16444 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16445
16446         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
16447         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
16448         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
16449         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
16450         tree-vect-transform.c: Fix comment typos.  Follow spelling
16451         conventions.
16452
16453 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16454
16455         * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
16456         to the exit block use set.
16457         (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
16458         * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
16459         * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
16460
16461 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16462
16463         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
16464         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
16465         to indicate an error.
16466         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
16467         New functions.
16468         (dbg_cnt_process_opt): Print an error on a bad argument.
16469         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
16470         * common.opt (-fdbg-cnt-list): New.
16471         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
16472
16473 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16474
16475         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
16476         flag on ref-all pointers.
16477
16478 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16479
16480         PR middle-end/31579
16481         * expr.c (expand_expr_addr_expr_1): Call expand_expr
16482         for the offset with the modifier as EXPAND_INITIALIZER
16483         if the modifier is EXPAND_INITIALIZER.
16484         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
16485         a register if we had an overflow.
16486
16487 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16488
16489         * real.c (real_isfinite): New.
16490         (real_sqrt): Use it.
16491         * real.h (real_isfinite): New.
16492         * builtins.c: Use it.
16493
16494 2007-06-12  Ian Lance Taylor  <iant@google.com>
16495             Daniel Berlin  <dberlin@dberlin.org>
16496
16497         PR libstdc++/29286
16498         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
16499         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
16500         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
16501         (DECL_NO_TBAA_P): Define.
16502         (struct tree_decl_common): Add no_tbaa_flag field.
16503         * tree-ssa-structalias.c (struct variable_info): Add
16504         no_tbaa_pruning field.
16505         (new_var_info): Initialize no_tbaa_pruning field.
16506         (unify_nodes): Copy no_tbaa_pruning field.
16507         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16508         (dump_solution_for_var): Print no_tbaa_pruning flag.
16509         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
16510         callers.
16511         (compute_tbaa_pruning): New static function.
16512         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
16513         Call compute_tbaa_pruning.
16514         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
16515         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16516         * gimple-low.c (lower_stmt): Likewise.
16517         * tree-gimple.c (is_gimple_stmt): Likewise.
16518         * tree-ssa-operands.c (get_expr_operands): Likewise.
16519         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16520         * tree-inline.c (estimate_num_insns_1): Likewise.
16521         (copy_result_decl_to_var): Likewise.
16522         * expr.c (expand_expr_real_1): Likewise.
16523         * tree-pretty-print.c (dump_generic_node): Likewise.
16524         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
16525         * omp-low.c (omp_copy_decl_2): Likewise.
16526         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
16527         * doc/c-tree.texi (Expression trees): Document
16528         CHANGE_DYNAMIC_TYPE_EXPR.
16529
16530 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16531
16532         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
16533         with !HONOR_NANS and !HONOR_INFINITIES.
16534         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
16535
16536 2007-06-12  Tristan Gingold  <gingold@adacore.com>
16537
16538         * gcov.c: Comments updated.
16539         (source_info): Add file_time field.
16540         (source_index): New variable.
16541         (mutiple_files): New variable.
16542         (generate_results): New function extracted from process_file.
16543         (process_file): Save and restore chain of functions, generate
16544         results and free structures only if not merging results.
16545         (release_structures): File names are now freed in create_file_names
16546         (create_file_names): Free previous file names.
16547         (find_source): File date is now read here and modifications in
16548         source files is checked here.
16549         (read_graph_file): Only reverse order of functions for the current
16550         object file.
16551         (make_gcov_file_name): Do not generate long names if input_name is
16552         NULL.
16553         (output_lines): If merging results do not display graph, data and
16554         runs informations.
16555         Checking source file modification is done in find_source.
16556
16557         * doc/gcov.texi: Append an s to sourcefile.
16558
16559 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
16560
16561         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
16562         (forced_nop): New pattern.
16563         * config/bfin/bfin.c: Include "df.h".
16564         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
16565         (bfin_discover_loop): Use df_get_live_in instead of
16566         global_live_at_start.
16567         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
16568         df_analyze when done.
16569         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
16570         the insns.  Use QImode for the final insn in a bundle.  Call
16571         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
16572         gen_nop.
16573         (reorder_var_tracking_notes): New function.
16574         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
16575         update_life_info.  Call df_analyze after scheduling and bundle
16576         generation.  Call reorder_var_tracking_notes if generating these
16577         notes.  Call df_finish_pass at the end.
16578
16579 2007-06-12  Dirk Mueller  <dmueller@suse.de>
16580
16581         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
16582         a comparison, not an assignment.
16583
16584 2007-06-12  Olivier Hainque  <hainque@adacore.com>
16585
16586         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
16587         Request walking the subtrees only, leaving the current is_lhs/val_only
16588         untouched.
16589         (convert_non_local_reference): Likewise.
16590
16591 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
16592
16593         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
16594
16595 2007-06-12  Richard Guenther  <rguenther@suse.de>
16596
16597         PR tree-optimization/15353
16598         PR tree-optimization/31657
16599         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
16600         * timevar.def: Add TV_TREE_IFCOMBINE.
16601         * tree-pass.h (pass_tree_ifcombine): Declare.
16602         * tree-ssa-ifcombine.c: New file.
16603         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
16604         * tree-flow.h (blocks_in_phiopt_order): Declare.
16605         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
16606         (tree-ssa-ifcombine.o): New dependencies.
16607
16608 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16609
16610         PR rtl-optimization/32293
16611         * combine.c (simplify_if_then_else): Truncate return from
16612         nonzero_bits() to correct mode.
16613
16614 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16615
16616         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
16617         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
16618
16619 2007-06-11  Diego Novillo  <dnovillo@google.com>
16620
16621         * Makefile.in (reload1.o-warn): Remove.
16622
16623 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
16624
16625         * combine.c (subst): Use reg_overlap_mentioned_p
16626         instead of comparing register numbers directly.
16627
16628 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16629
16630         * reload1.c (mark_home_live_1): Use the mode parameter.
16631
16632 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16633
16634         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
16635         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
16636         word "deferred".
16637         * df-core.c: Ditto.
16638
16639 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
16640
16641         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
16642
16643 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16644
16645         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
16646         from integer registers.
16647         (FP mode splitters): Handle TFmode.
16648
16649 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16650
16651         * tree-ssa-structalias.c (find_what_p_points_to): Return false
16652         for ref-all pointers that point-to anything.
16653
16654 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
16655
16656         * config/arm/arm.c (arm_output_dwarf_dtprel,
16657         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
16658
16659 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
16660
16661         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
16662         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
16663         to memory moves.
16664
16665 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
16666
16667         * tree.c (signed_or_unsigned_type_for): New.
16668         (unsigned_type_for): Use signed_or_unsigned_type_for.
16669         (signed_type_for): Use signed_or_unsigned_type_for.
16670         * tree.h (signed_or_unsigned_type_for): New.
16671         (get_signed_or_unsigned_type): Remove.
16672         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
16673         lang_hooks.types.signed_type
16674         (size_diffop): Likewise.
16675         (all_ones_mask_p): Likewise.
16676         (build_range_check): Likewise.
16677         (fold_cond_expr_with_comparison): Likewise.
16678         (fold_cond_expr_with_comparison): Likewise.
16679         (unextend): Likewise.
16680         (extract_muldiv_1): Likewise.
16681         (fold_single_bit_test_into_sign_test): Likewise.
16682         (fold_binary): Likewise.
16683         (fold_ternary): Likewise.
16684         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
16685         instead of get_signed_or_unsigned_type.
16686         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
16687         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16688         * expr.c (signed_or_unsigned_type_for): Use
16689         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
16690         * langhooks.c (get_signed_or_unsigned_type): Remove.
16691         (lhd_signed_or_unsigned_type): Remove.
16692         * langhooks.h (lang_hooks_for_types): Remove signed_type and
16693         signed_or_unsigned_type.
16694         (lhd_signed_or_unsigned_type): Remove.
16695         * expmed.c (make_tree): Use signed_type_for instead of
16696         lang_hooks.types.signed_type.
16697         * c-common.c (same_scalar_type_ignoring_signedness): Use
16698         c_common_signed_type instead of lang_hooks.types.signed_type.
16699         (c_common_unsigned_type): New.
16700         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
16701         (shorten_compare): Use c_common_unsigned_type instead of
16702         c_common_signed_or_unsigned_type.
16703         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
16704         unsigned_type_for.
16705         * convert.c (convert_to_integer): Use signed_type_for instead of
16706         lang_hooks.types.signed_type.
16707         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16708         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
16709         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
16710         * c-format.c (check_format_types): Use c_common_unsigned_type
16711         instead of unsigned_type_for.
16712         * c-decl.c (groakdeclarator): Likewise.
16713         * c-typeck.c (convert_for_assignment): Likewise.
16714         * c-common.h (c_common_unsigned_type): New.
16715
16716 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16717
16718         PR target/32280
16719         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
16720         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
16721
16722 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16723
16724         PR middle-end/32279
16725         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
16726         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
16727
16728 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
16729             Sebastian Pop  <sebpop@gmail.com>
16730
16731         * lambda-code.c (remove_iv): New.
16732         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
16733
16734 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
16735
16736         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
16737         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
16738         * tree-ssa-loop-prefetch.c: Include optabs.h.
16739         (FENCE_FOLLOWING_MOVNT): New macro.
16740         (struct mem_ref): Add independent_p and storent_p fields.
16741         (record_ref): Initalize the new fields.
16742         (gather_memory_references_ref): Return true if the reference
16743         could be analysed.
16744         (gather_memory_references): Check whether all memory accesses
16745         in loop were recorded.
16746         (should_issue_prefetch_p): Return false for nontemporal stores.
16747         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
16748         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
16749         (determine_loop_nest_reuse): Detect independent memory references.
16750         (loop_prefetch_arrays): Call mark_nontemporal_stores.
16751         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
16752         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
16753         * config/i386/i386.h (x86_mfence): Declare.
16754         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
16755         * config/i386/i386.c (x86_mfence): New variable.
16756         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
16757
16758         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
16759         * optabs.c (init_optabs): Initialize storent_optab.
16760         * optabs.h (enum optab_index): Add OTI_storent.
16761         (storent_optab): Declare.
16762         * genopinit.c (optabs): Add initialization for storent_optab.
16763         * tree.h (MOVE_NONTEMPORAL): New macro.
16764         * expr.c (expand_assignment, store_expr, store_constructor_field,
16765         store_constructor, store_field, expand_expr_real_1): Propagate
16766         nontemporality of the expanded store.
16767         (emit_storent_insn): New function.
16768         * expr.h (expand_assignment, store_expr): Declaration changed.
16769         * function.c (assign_parm_setup_reg): Pass false as nontemporality
16770         to expand_assignment.
16771         * stmt.c (expand_asm_expr): Ditto.
16772         * calls.c (initialize_argument_information): Pass false as
16773         nontemporality to store_expr.
16774         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
16775         storentsi): New.
16776
16777 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16778
16779         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
16780         parameter, use it.
16781         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
16782
16783 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16784
16785         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
16786         and allow DECL_P here.
16787
16788 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
16789
16790         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
16791         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
16792         track of the size of the expression.
16793         * cfghooks.c (merge_blocks): Remove block from loops structure only
16794         after call of the merge_blocks hook.
16795
16796 2007-06-09  Tom Tromey  <tromey@redhat.com>
16797
16798         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
16799         (deprecated_state): Removed.
16800         (start_decl): Update.
16801         (enum deprecated_states): Moved earlier.
16802         (groktypename): Update.
16803         (push_parm_decl): Likewise.
16804         (grokfield): Likewise.
16805         (start_function): Likewise.
16806
16807 2007-06-09  Ian Lance Taylor  <iant@google.com>
16808
16809         PR tree-optimization/32169
16810         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
16811         CONVERT_EXPR, check whether min and max both converted to an
16812         overflow infinity representation.
16813
16814 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
16815
16816         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
16817         not inserted on the edge.
16818
16819 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
16820
16821         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
16822         instructions if they are supported.
16823         (__divsi3, __umodsi3, __modsi3): Likewise.
16824         (__ashldi3, __ashrdi3, __lshrdi3): New.
16825         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
16826
16827 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
16828             Tony Linthicum <tony.linthicum@amd.com>
16829
16830         * doc/invoke.texi: Add fvect-cost-model flag.
16831         * common.opt (fvect-cost-model): New flag.
16832         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
16833         cost fields in stmt_vec_info struct for STMT.
16834         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
16835         fields in stmt_vec_info struct and access functions for the same.
16836         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
16837         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
16838         load, store and vector to scalar operation.
16839         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
16840         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
16841         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
16842         (TARG_VEC_STORE_COST): Define cost of vector store.
16843         (vect_estimate_min_profitable_iters): Define new function.
16844         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
16845         check to evaluate if loop iterations are less than minimum profitable
16846         iterations determined by cost model or minimum vect loop bound defined
16847         by user, whichever is more conservative.
16848         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
16849         run-time check to evaluate if loop iterations are less than minimum
16850         profitable iterations determined by cost model or minimum vect loop
16851         bound defined by user, whichever is more conservative.
16852         (vect_estimate_min_profitable_iterations): New function to estimate
16853         mimimimum iterartions required for vector version of loop to be
16854         profitable over scalar version.
16855         (vect_model_reduction_cost): New function.
16856         (vect_model_induction_cost): New function.
16857         (vect_model_simple_cost): New function.
16858         (vect_cost_strided_group_size): New function.
16859         (vect_model_store_cost): New function.
16860         (vect_model_load_cost): New function.
16861         (vectorizable_reduction): Call vect_model_reduction_cost during
16862         analysis phase.
16863         (vectorizable_induction): Call vect_model_induction_cost during
16864         analysis phase.
16865         (vectorizable_load): Call vect_model_load_cost during analysis phase.
16866         (vectorizable_store): Call vect_model_store_cost during analysis phase.
16867         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
16868         vectorizable_promotion, vectorizable_demotion): Call
16869         vect_model_simple_cost during analysis phase.
16870
16871 2007-06-08  Simon Baldwin  <simonb@google.com>
16872
16873         * reg-stack.c (get_true_reg): Readability change.  Moved default case
16874         label into direct switch statement scope.
16875
16876 2007-06-08  Simon Baldwin  <simonb@google.com>
16877
16878         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
16879         in gcc_assert() with '==' comparison.
16880
16881 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16882
16883         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
16884         TARGET_ABM handling of x86_popcnt variable.
16885
16886 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16887
16888         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
16889         __builtin_copysignq and __builtin_infq built-in functions.
16890
16891 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16892
16893         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
16894         SSE4.2 section.  Correct built-in function names in SSE4A section.
16895
16896 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16897
16898         PR tree-optimization/32243
16899         * tree-vect-transform.c (vectorizable_type_promotion): Move check
16900         for ncopies after ratio check between nunits_out and nunits_in.
16901         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
16902
16903 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
16904
16905         PR tree-optimization/32224
16906         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
16907         vectorization upon a non GIMPLE_MODIFY_STMT.
16908
16909 2007-06-08  Christian Bruel  <christian.bruel@st.com>
16910
16911         PR target/29953
16912         * config/sh/sh.md (doloop_end): New pattern and splitter.
16913         * loop-iv.c (simple_rhs_p): Check for hardware registers.
16914
16915 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
16916
16917         PR middle-end/32209
16918         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
16919         functions.
16920         (verify_dominators): Do not change dominance tree.
16921
16922 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16923
16924         * config/sh/constraints.md: New file.
16925         * config/sh/sh.c: Include tm-constrs.h.
16926         (reg_class_from_letter): Remove.
16927         (prepare_cbranch_operands): Use satisfies_constraint_*
16928         function instead of macro.
16929         (andcosts, broken_move, sh_secondary_reload): Likewise.
16930         * config/sh/predicates.md (trapping_target_operand): Likewise.
16931         (and_operand, arith_operand, arith_reg_or_0_operand,
16932         cmp_operand, logical_operand, target_operand,
16933         ua_address_operand, ua_offset, xor_operand): Likewise.
16934         * config/sh/sh.md: Include constraints.md.
16935         (*movsicc_t_false): Use satisfies_constraint_* function
16936         instead of macro.
16937         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
16938         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
16939         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
16940         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
16941         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
16942         (REG_CLASS_FROM_CONSTRAINT): Remove.
16943         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
16944         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
16945         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
16946         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
16947         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
16948         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
16949         function instead of macro.
16950         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
16951         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
16952         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
16953         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
16954         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
16955         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
16956         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
16957         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
16958         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
16959         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
16960         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
16961         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
16962         EXTRA_CONSTRAINT_STR): Likewise.
16963         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
16964
16965 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16966
16967         * config/i386/darwin.h (STACK_BOUNDARY): Define.
16968
16969 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
16970
16971         PR c++/30759
16972         * c-common.h (flag_cpp0x): Replaced by...
16973         (cxx_dialect): ... this new variable specifying the C++ dialect that
16974         is used.
16975         * c-common.c (flag_cpp0x): Removed.
16976         (cxx_dialect): Defined.
16977         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
16978         cxx_dialect.
16979         * c-opts.c (c_common_post_options): Likewise.
16980         (set_std_cxx98): Set cxx_dialect to cxx98.
16981         (set_std_cxx0x): Set cxx_dialect to cxx0x.
16982
16983 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16984             Hui-May Chang <hm.chang@apple.com>
16985
16986         * doc/invoke.texi (Darwin Options): Update documentation for
16987         -mmacosx-version-min.
16988         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
16989         * config/darwin-driver.c: New file.
16990         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
16991         * config/t-darwin (darwin-driver.o): New rule.
16992
16993         * config/darwin-c.c (version_as_macro): Ignore low digit.
16994
16995 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
16996
16997         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
16998         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
16999         (CSGNMODE): New mode macro.
17000         (CSGNVMODE): New mode attribute.
17001         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
17002         expander using CSGNMODE mode macro.  Handle TFmode.
17003         (copysign<mode>3_const): Rename from copysignsf3_const and
17004         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
17005         Handle TFmode.
17006         (copysign<mode>3_var): Rename from copysignsf3_var and
17007         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
17008         Handle TFmode.
17009         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
17010         mode macro.  Handle TFmode.
17011         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
17012         (iortf3, *iortf3): Ditto.
17013         (xortf3, *xortf3): Ditto.
17014         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
17015         TFmode and TImode masks.
17016         (ix86_expand_copysign): Expand TFmode copysign insn.
17017         (IX86_BUILTIN_INFQ): New.
17018         (IX86_BUILTIN_FABSQ): Ditto.
17019         (IX86_BUILTIN_COPYSIGNQ): Ditto.
17020         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
17021         [__builtin_fabsq]: Ditto.
17022         [__builtin_copysignq]: Ditto.
17023         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
17024         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
17025         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
17026         ix86_expand_binop_builtin().
17027
17028 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
17029
17030         * config/xtensa/lib1funcs.asm: Clean up whitespace.
17031
17032 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
17033
17034         PR target/31850
17035         * rtl.h (push_to_sequence2): New.
17036         * emit-rtl.c (push_to_sequence2): New.
17037         * function.c (assign_parm_data_all): Add new fields.
17038         (assign_parm_setup_block): Call push_to_sequence2 instead of
17039         push_to_sequence.
17040         (assign_parm_setup_reg): Ditto.
17041         (assign_parm_setup_stack): Ditto.
17042         (assign_parms_unsplit_complex): Ditto.
17043         (assign_parms): Change field name.
17044
17045 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
17046
17047         PR tree-optimization/32220
17048         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
17049         phi node is reached before defining statement.
17050
17051 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17052
17053         PR tree-opt/32231
17054         * tree-vect-transform.c (vectorizable_call): Call update_stmt
17055         after changing the right hand side of the assignment.
17056
17057 2007-06-06  Eric Christopher  <echristo@apple.com>
17058
17059         * config.gcc (i?86-*-darwin*): Remove arch parameter.
17060         (x86_64-*-darwin*): Ditto.
17061         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
17062         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17063
17064 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17065
17066         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
17067         coding conventions.
17068         (add_key): Likewise.
17069         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
17070         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
17071         variable names.
17072         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
17073         macros.
17074         (add_cost_one_coalesce): Likewise.
17075         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
17076         variable names. Rename orig to orig_name for consistency.
17077         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
17078         coding conventions.
17079         (cprop_into_successor_phis): Avoid using C++ keywords as variable
17080         names.
17081         (record_equivalences_from_stmt): Likewise.
17082         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
17083         the coding conventions.
17084         (memory_ssa_name_same): Likewise.
17085         (dse_optimize_stmt): Likewise.
17086         (dse_record_phis): Likewise.
17087         (dse_finalize_block): Likewise.
17088         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
17089         keywords as variable names.
17090         (may_move_till): Cast according to the coding conventions.
17091         (force_move_till_expr): Avoid using C++ keywords as variable names.
17092         (force_move_till): Cast according to the coding conventions.
17093         (memref_hash): Likewise.
17094         (memref_eq): Likewise.
17095         (gather_mem_refs_stmt): Likewise.
17096         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
17097         using C++ keywords as variable names.
17098         (idx_find_step): Cast according to the coding conventions.
17099         (idx_record_use): Likewise.
17100         (find_depends): Likewise.
17101         (prepare_decl_rtl): Likewise.
17102         (mbc_entry_hash): Likewise.
17103         (mbc_entry_eq): Likewise.
17104         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
17105         (simplify_replace_tree): Avoid using C++ keywords as variable names.
17106         (idx_infer_loop_bounds): Cast according to the coding conventions.
17107         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
17108         * tree-ssa-math-opts.c (occ_new ): Likwise.
17109         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
17110         macros.
17111         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
17112         variable names.
17113         (add_use_op): Likewise.
17114         (add_vop): Likewise.
17115         (add_vuse_op): Likewise.
17116         (add_vdef_op): Likewise.
17117         (get_expr_operands): Likewise.
17118         (push_stmt_changes): Use type safe memory macros.
17119         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
17120         keywords as variable names.
17121         (conditional_replacement): Likewise.
17122         (minmax_replacement): Likewise.
17123         (abs_replacement): Likewise.
17124         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
17125         coding conventions.
17126         (insert_fake_stores): Avoid using C++ keywords as variable names.
17127         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
17128         conventions.
17129         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
17130         (heapvar_insert): Use type safe memory macros.
17131         (new_var_info): Cast according to the coding conventions.
17132         (new_constraint): Likewise.
17133         (remove_preds_and_fake_succs): Use type safe memory macros.
17134         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
17135         conventions.
17136         (thread_single_edge): Likewise.
17137         (thread_through_loop_header): Likewise.
17138
17139 2007-06-06  Eric Christopher  <echristo@apple.com>
17140
17141         * config/i386/i386.c (override_options): Move handling
17142         of TARGET_SUBTARGET* earlier.
17143
17144 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
17145
17146         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
17147         use %n on printf.
17148
17149 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
17150
17151         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
17152         emited outside of basic block.
17153         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
17154         the created blocks.
17155         * rtl.h (delete_insn_chain): Declaration changed.
17156         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
17157         non-removed insns.
17158         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
17159         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
17160         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
17161         to delete_insn_chain.
17162         (rtl_verify_flow_info_1): Verify that the insns in header and footer
17163         do not have bb field set.
17164         (rtl_verify_flow_info): Verify that insns between basic blocks do not
17165         have bb field set.
17166         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
17167         * cfgcleanup.c (try_optimize_cfg): Ditto.
17168
17169 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17170
17171         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
17172         (lambda_body_vector_new): Use type safe memory macros.
17173         (lambda_linear_expression_new): Likewise.
17174         (lambda_loopnest_new): Likewise.
17175         (lambda_lattice_new): Likewise.
17176         (replace_uses_equiv_to_x_with_y): Cast according to the coding
17177         conventions. Use type safe memory macros.
17178         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
17179         (lambda_body_vector_s): Likewise.
17180         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
17181         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
17182
17183 2007-06-06  Richard Guenther  <rguenther@suse.de>
17184
17185         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
17186         if we need to schedule cfg_cleanup.
17187         (tree_ssa_forward_propagate_single_use_vars): Do so.
17188
17189 2007-06-06  Ian Lance Taylor  <iant@google.com>
17190
17191         * fold-const.c (merge_ranges): If range_successor or
17192         range_predecessor fail, just return 0.
17193
17194 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17195
17196         PR tree-optimization/32216
17197         * tree-vectorizer.c (supportable_widening_operation): Determine
17198         signedness of FIX_TRUNC_EXPR from output operand.
17199         (supportable_narrowing_operation): Ditto.
17200         * tree-vect-generic.c (expand_vector_operations_1): Determine
17201         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
17202         from input operand.
17203
17204 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17205
17206         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
17207         (struct pta): ...from here. Change flags to unsigned to avoid
17208         excessive casting (as it is used as a bit mask).
17209         (override_options): Add casts according to the coding convenventions.
17210         (x86_64_elf_unique_section): Likewise.
17211         (examine_argument): Avoid using C++ keywords as variable names.
17212         (construct_container): Likewise.
17213         (legitimize_pic_address): Likewise.
17214         (get_dllimport_decl): Cast according to the coding conventions. Use
17215         type safe memory macros.
17216         (legitimize_address): Cast according to the coding conventions.
17217         (emit_i387_cw_initialization): Corrected the type of slot to enum
17218         ix86_stack_slot.
17219         (ix86_init_machine_status): Use type safe memory macros.
17220         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
17221         (bdesc_pcmpistr): Likewise.
17222         (bdesc_crc32): Likewise.
17223         (bdesc_sse_3arg): Likewise.
17224         (bdesc_2arg): Likewise.
17225         (bdesc_1arg): Likewise.
17226         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
17227         (ix86_expand_sse_pcmpistr): Likewise.
17228         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
17229         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
17230         int to match the langhook definition.
17231         (ix86_builtin_conversion): Change the type of code to unsigned init to
17232         match the langhook definition.
17233         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
17234         names.
17235         (ix86_preferred_output_reload_class): Likewise.
17236         (ix86_cannot_change_mode_class): Likewise.
17237         (ix86_memory_move_cost): Likewise.
17238         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
17239         avoid excessive casting later on.
17240         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
17241
17242 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17243
17244         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
17245         as flags setting insn.
17246         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
17247
17248 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17249
17250         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
17251         (UNSPEC_ROUND): New.
17252         ("sse4_1_round<mode>2"): New insn pattern.
17253         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
17254         SSE4.1 targets.
17255         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
17256         expander using SSEMODEF mode macro.  Expand using
17257         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17258         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
17259         expander using SSEMODEF mode macro.  Expand using
17260         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17261         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
17262         expander using SSEMODEF mode macro.  Expand using
17263         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17264         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
17265         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
17266         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
17267         UNSPEC_ROUNDS.
17268
17269 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
17270             Sebastian Pop  <sebpop@gmail.com>
17271
17272         * lambda.h (build_linear_expr): New.
17273         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
17274         Use build_linear_expr, call fold and force_gimple_operand.
17275         (lambda_loopnest_to_gcc_loopnest): Check that there is
17276         something to insert.
17277         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
17278
17279 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
17280
17281         PR preprocessor/23479
17282         * doc/extend.texi: Document the 0b-prefixed binary integer
17283         constant extension.
17284
17285 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17286
17287         PR tree-optimization/32215
17288         * tree-vectorizer.c (supportable_widening_operation): Return false
17289         for unsupported FIX_TRUNC_EXPR tree code.
17290         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
17291
17292 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
17293
17294         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
17295         register on SPE targets.  Change documentation to reflect
17296         reality.
17297         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
17298         Change FIXED_SCRATCH to 14 and document why we're keeping r14
17299         out of the register allocation pool.
17300         (rs6000_reg_live_or_pic_offset_p): New function.
17301         (rs6000_emit_prologue): Move the actual saving of LR up to free
17302         r0 for holding r11.  Split saving of SPE 64-bit registers into
17303         its own case.  Ensure that offsets will always be in-range for
17304         'evstdd' by using r11 as a scratch register to point at the start
17305         of the SPE save area.  Save r11 if necessary, as it is the static
17306         chain register.
17307         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
17308         into its own case.  Ensure that offsets will always be in-range
17309         for 'evldd' by using r11 as a scratch register to point at the
17310         start of the SPE save area.  Also adjust r11 when restoring
17311         the stack pointer to compensate for pre-loading r11.
17312
17313 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
17314
17315         * cfg.c (init_flow): Use type safe memory macros.
17316         (alloc_block): Likewise.
17317         (unchecked_make_edge): Likewise.
17318         (dump_flow_info): Avoid using C++ keywords as variable names.
17319         (copy_original_table_clear): Cast according to the coding conventions.
17320         (copy_original_table_set): Likewise.
17321         * cfgexpand (label_rtx_for_bb): Likewise.
17322         (expand_gimple_basic_block): Likewise.
17323         * cfghooks.c (dump_bb): Likewise.
17324         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
17325         variable names.
17326         (lv_add_condition_to_bb): Likewise.
17327         * cfglayout (relink_block_chain): Cast according to the coding
17328         conventions.
17329         (fixup_reorder_chain): Likewise.
17330         (fixup_fallthru_exit_predecessor): Likewise.
17331         * cfgloop.c (glb_enum_p): Likewise.
17332         (get_exit_description): Likewise.
17333         (dump_recorded_exit): Likewise.
17334         * cfgloop.h (enum loop_estimation): Move out of struct scope...
17335         (struct loop): ... from here.
17336         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
17337         conventions.
17338         * cfgrtl.c (rtl_create_basic_block): Likewise.
17339         (rtl_split_block): Likewise.
17340         (rtl_dump_bb): Likewise.
17341         (cfg_layout_split_block): Likewise.
17342         (init_rtl_bb_info): Use typesafe memory macros.
17343
17344         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
17345         * graphds.h: Updated all usages of edge to graph_edge.
17346         * graphds.c: Likewise.
17347         * cfgloopanal.c: Likewise.
17348
17349 2007-06-05  Ian Lance Taylor  <iant@google.com>
17350
17351         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
17352         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
17353         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
17354         expression.
17355         (test_for_singularity): Likewise.
17356
17357 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17358
17359         * config/i386/constraints.md ("Y2"): Replaced by ...
17360         ("Yt"): This.
17361         * config/i386/i386.md: Likewise.
17362         * config/i386/mmx.md: Likewise.
17363         * config/i386/sse.md: Likewise.
17364
17365 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17366
17367         * config/i386/constraints.md ("z"): Replaced by ...
17368         ("Y0"): This.
17369         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
17370         (sse4_1_blendvps): Likewise.
17371         (sse4_1_pblendvb): Likewise.
17372         (sse4_2_pcmpestr): Likewise.
17373         (sse4_2_pcmpestrm): Likewise.
17374         (sse4_2_pcmpestr_cconly): Likewise.
17375         (sse4_2_pcmpistr): Likewise.
17376         (sse4_2_pcmpistrm): Likewise.
17377         (sse4_2_pcmpistr_cconly): Likewise.
17378
17379 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
17380
17381         * matrix-reorg.c (transform_access_sites): Fix computation.
17382         (transform_allocation_sites): Same.
17383
17384 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17385
17386         * config/i386/i386.c (override_options): Use
17387         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
17388
17389 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17390
17391         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
17392         (nonimm_not_xmm0_operand): Ditto.
17393         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
17394         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
17395         as operand[2] predicate.  Require "z" class XMM register for
17396         operand[3].  Adjust asm template.
17397         ("sse4_1_blendvpd"): Ditto.
17398         ("sse4_1_pblendvb"): Ditto.
17399         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
17400         force op2 into xmm0 register for variable blend instructions.
17401
17402 2007-06-04  Tom Tromey  <tromey@redhat.com>
17403
17404         * c-tree.h (start_enum): Update.
17405         (build_enumerator): Likewise.
17406         * c-decl.c (enum_next_value): Removed.
17407         (enum_overflow): Likewise.
17408         (start_enum): Add c_enum_contents argument.  Don't use globals.
17409         (build_enumerator): Likewise.
17410         * c-tree.h (struct c_enum_contents): New struct.
17411
17412 2007-06-04  Tom Tromey  <tromey@redhat.com>
17413
17414         * c-common.c (c_common_get_alias_set): Fix indentation.
17415
17416 2007-06-04  Ian Lance Taylor  <iant@google.com>
17417
17418         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
17419         to overflow, reduce overflow infinity to regular infinity.
17420         (vrp_var_may_overflow): New static function.
17421         (vrp_visit_phi_node): Check vrp_var_may_overflow.
17422
17423 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
17424
17425         * stor-layout.c (layout_type): Remove duplicate code.
17426
17427 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
17428
17429         PR c/32191
17430         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
17431         before build_common_builtin_nodes ().
17432
17433 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
17434
17435         PR target/31733
17436         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
17437
17438 2007-06-04  Jan Hubicka  <jh@suse.cz>
17439
17440         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
17441         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
17442         instead of _stat version.
17443
17444 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17445
17446         PR tree-optimization/32194
17447         * tree-predcom.c (determine_offset): Check that both references have
17448         the same type.
17449
17450 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17451
17452         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
17453         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
17454         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
17455         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
17456         Add argument to iterate_fix_dominators call.
17457         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
17458         * gcse.c (hoist_code): Change domby to vector.
17459         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
17460         Add argument to iterate_fix_dominators call.
17461         * loop-doloop.c (doloop_modify): Changed recount_dominator to
17462         recompute_dominator.
17463         * lambda-code.c (perfect_nestify): Ditto.
17464         * cfgloopanal.c: Include graphds.h.
17465         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
17466         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
17467         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
17468         add_edge call.
17469         * graphds.c: New file.
17470         * graphds.h: New file.
17471         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
17472         (get_dominated_by, get_dominated_by_region): Change return type to
17473         vector.
17474         (verify_dominators): Recompute all dominators and compare the results.
17475         (recount_dominator): Renamed to ...
17476         (recompute_dominator): ... this.  Do not check that the block is
17477         dominated by entry.
17478         (iterate_fix_dominators): Reimplemented.
17479         (prune_bbs_to_update_dominators, root_of_dom_tree,
17480         determine_dominators_for_sons): New functions.
17481         * et-forest.c (et_root): New function.
17482         * et-forest.h (et_root): Declare.
17483         * Makefile.in (graphds.o): Add.
17484         (cfgloopanal.o): Add graphds.h dependency.
17485         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
17486         * basic-block.h (get_dominated_by, get_dominated_by_region,
17487         iterate_fix_dominators): Declaration changed.
17488         (recount_dominator): Renamed to ...
17489         (recompute_dominator): ... this.
17490         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
17491         (thread_through_all_blocks): Do not free dominance info.
17492
17493 2007-06-03  Andreas Schwab  <schwab@suse.de>
17494
17495         * config/m68k/m68k.c (override_options): Don't override
17496         REAL_MODE_FORMAT.
17497         * config/m68k/m68k-modes.def (SF, DF): Define to use
17498         motorola_single_format and motorola_double_format, resp.
17499         * real.c (motorola_single_format): Renamed from
17500         coldfire_single_format.
17501         (motorola_double_format): Renamed from coldfire_double_format.
17502         (encode_ieee_extended): Generate a proper canonical NaN image
17503         respecting canonical_nan_lsbs_set.
17504         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
17505         true.
17506         * real.h: Adjust declarations.
17507
17508 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
17509
17510         PR target/32163
17511         * config/sh/sh.md (symGOT_load): Don't schedule insns when
17512         the symbol is generated with the stack protector.
17513
17514 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
17515
17516         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
17517         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
17518         "interrupt".
17519         * doc/extend.texi (interrupt): Mention m68k.
17520
17521 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
17522
17523         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
17524         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
17525         (ix86_expand_sse_pcmpestr): Do not check operands for
17526         "register_operand", when insn operand predicate is "register_operand".
17527         (ix86_expand_sse_pcmpistr): Ditto.
17528
17529 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
17530             Uros Bizjak  <ubizjak@gmail.com>
17531
17532         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
17533         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
17534         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
17535         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
17536         * config/i386/constraints.md ("z"): New register constraint
17537         for members of SSE_FIRST_REG class.
17538         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
17539         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
17540         SSE_FIRST_REG class.
17541         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
17542         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
17543         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
17544         (IX86_BUILTIN_PCMPESTRM128): Likewise.
17545         (IX86_BUILTIN_PCMPESTRA128): Likewise.
17546         (IX86_BUILTIN_PCMPESTRC128): Likewise.
17547         (IX86_BUILTIN_PCMPESTRO128): Likewise.
17548         (IX86_BUILTIN_PCMPESTRS128): Likewise.
17549         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
17550         (IX86_BUILTIN_PCMPISTRI128): Likewise.
17551         (IX86_BUILTIN_PCMPISTRM128): Likewise.
17552         (IX86_BUILTIN_PCMPISTRA128): Likewise.
17553         (IX86_BUILTIN_PCMPISTRC128): Likewise.
17554         (IX86_BUILTIN_PCMPISTRO128): Likewise.
17555         (IX86_BUILTIN_PCMPISTRS128): Likewise.
17556         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
17557         (struct builtin_description): Change "flag" field to unsigned.
17558         (bdesc_pcmpestr): New builtin description table.
17559         (bdesc_pcmpistr): Likewise.
17560         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
17561         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
17562         Initialize pcmp[ei]str[im] insns for SSE4.2.
17563         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
17564         (ix86_expand_sse_pcmpistr): Likewise.
17565         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
17566         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
17567         (UNSPEC_PCMPISTR): Likewise.
17568         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
17569         (sse4_2_pcmpestri):New isns pattern.
17570         (sse4_2_pcmpestrm): Likewise.
17571         (sse4_2_pcmpestr_cconly): Likewise.
17572         (sse4_2_pcmpistr): New insn patern and splitter.
17573         (sse4_2_pcmpistri):New isns pattern.
17574         (sse4_2_pcmpistrm): Likewise.
17575         (sse4_2_pcmpistr_cconly): Likewise.
17576         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
17577         in SSE4.2.
17578
17579 2007-06-01  David Daney  <ddaney@avtrex.com>
17580
17581         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
17582         LOADGP_ABSOLUTE and not binds_local_p.
17583
17584 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
17585
17586         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
17587
17588 2007-06-01  Ian Lance Taylor  <iant@google.com>
17589
17590         * tree-vrp.c (compare_name_with_value): Always set
17591         used_strict_overflow if we get a result from the variable itself.
17592
17593 2007-06-01  Ian Lance Taylor  <iant@google.com>
17594
17595         PR rtl-optimization/31455
17596         * lower-subreg.c (find_decomposable_subregs): Don't decompose
17597         subregs which have a cast between modes which are not tieable.
17598
17599 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
17600
17601         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
17602         breaks after return statements.
17603
17604 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
17605
17606         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
17607         only after no_new_pseudos.
17608
17609 2007-05-31  Eric Christopher  <echristo@apple.com>
17610
17611         * expr.c (convert_move): Assert that we don't have a BLKmode
17612         operand.
17613         (store_expr): Handle BLKmode moves by calling emit_block_move.
17614
17615 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
17616
17617         * c-typeck.c (build_indirect_ref): Include type in error message.
17618         (build_binary_op): Pass types to binary_op_error.
17619         * c-common.c (binary_op_error): Take two type arguments, print out
17620         types with error.
17621         * c-common.h (binary_op_error): Update prototype.
17622
17623 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17624
17625         * config/i386/i386.c: Correct coments on -mno-sse4.
17626
17627 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17628
17629         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
17630         (x86_64-*-*): Likewise.
17631         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
17632         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
17633         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
17634         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
17635         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
17636         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
17637         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
17638         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
17639         (OPTION_MASK_ISA_SSE4): Likewise.
17640         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
17641         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
17642         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
17643         (override_options): Support SSE4.2.
17644         (ix86_build_const_vector): Support SImode and DImode.
17645         (ix86_build_signbit_mask): Likewise.
17646         (ix86_expand_int_vcond): Support V2DImode.
17647         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
17648         (IX86_BUILTIN_CRC32HI): Likewise.
17649         (IX86_BUILTIN_CRC32SI): Likewise.
17650         (IX86_BUILTIN_CRC32DI): Likewise.
17651         (IX86_BUILTIN_PCMPGTQ): Likewise.
17652         (bdesc_crc32): Likewise.
17653         (bdesc_sse_3arg): Likewise.
17654         (ix86_expand_crc32): Likewise.
17655         (ix86_init_mmx_sse_builtins): Support SSE4.2.
17656         (ix86_expand_builtin): Likewise.
17657         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17658         __SSE4_2__ for -msse4.2.
17659         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
17660         (CRC32MODE): Likewise.
17661         (crc32modesuffix): Likewise.
17662         (crc32modeconstraint): Likewise.
17663         (sse4_2_crc32<mode>): Likewise.
17664         (sse4_2_crc32di): Likewise.
17665         * config/i386/i386.opt (msse4.2): New for SSE4.2.
17666         (msse4): Likewise.
17667         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
17668         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
17669         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
17670         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
17671         (vcondu<mode>): Likewise.
17672         * doc/extend.texi: Document SSE4.2 built-in functions.
17673         * doc/invoke.texi: Document -msse4.2/-msse4.
17674
17675 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
17676
17677         PR tree-optimization/32160
17678         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
17679         variable as gimple reg.
17680         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
17681
17682 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
17683
17684         * gcc.c (main): Don't consider linker options when issuing the
17685         warning about a linker input file not being used.
17686
17687 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17688
17689         * tree-vrp.c (compare_names): Initialize sop.
17690
17691 2007-05-30  Dirk Mueller  <dmueller@suse.de>
17692
17693         * cgraphunit.c (cgraph_analyze_function): Remove
17694         computation of inline parameters.
17695
17696 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
17697
17698         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
17699
17700 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
17701
17702         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
17703         Add vx-common.h.  Include vxworks.h between vx-common.h and
17704         arm/vxworks.h.
17705         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
17706         redefining.
17707         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
17708         (TARGET_ASM_DESTRUCTOR): Likewise.
17709         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
17710         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
17711         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
17712         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
17713         (VXWORKS_ENDIAN_SPEC): Define.
17714         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
17715         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
17716         VXWORKS_* equivalents.
17717         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
17718         (ASM_FILE_START): Delete.
17719         (TARGET_VERSION): Reformat.
17720         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
17721         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
17722         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
17723         (FPBIT, DPBIT): Define.
17724         (fp-bit.c, dp-bit.c): New rules.
17725         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
17726         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
17727         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
17728         * config/arm/arm.h: Include vxworks-dummy.h.
17729         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
17730         Mark with ATTRIBUTE_UNUSED.
17731         (arm_override_options): Do not allow VxWorks RTP PIC to be used
17732         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
17733         make it incompatible with -msingle-pic-base.
17734         (arm_function_ok_for_sibcall): Return false for calls that might
17735         go through a VxWorks PIC PLT entry.
17736         (require_pic_register): New function, split out from...
17737         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
17738         for VxWorks RTPs.
17739         (arm_load_pic_register): Handle the VxWorks RTP initialization
17740         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
17741         (arm_emit_call_insn): New function.
17742         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
17743         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
17744         (pic_offset_arm): New pattern.
17745         (call, call_value): Use arm_emit_call_insn.
17746         (call_internal, call_value_internal): New expanders.
17747         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
17748         VxWorks unless __PIC__.
17749
17750 2007-05-30  Eric Christopher  <echristo@gmail.com>
17751
17752         * genrecog.c: Include regs.h in generated file.
17753         * genemit.c: Ditto. Fix up formatting.
17754         * config/mn10300/constraints.md: New.
17755         * config/mn10300/mn10300.md: Include.
17756         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
17757         Fix up for removed macro.
17758         * config/mn10300/predicates.md (call_address_operand): Ditto.
17759         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
17760         (CONST_OK_FOR_I): Ditto.
17761         (CONST_OK_FOR_J): Ditto.
17762         (CONST_OK_FOR_K): Ditto.
17763         (CONST_OK_FOR_L): Ditto.
17764         (CONST_OK_FOR_M): Ditto.
17765         (CONST_OK_FOR_N): Ditto.
17766         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
17767         (OK_FOR_Q): Ditto.
17768         (OK_FOR_R): Ditto.
17769         (OK_FOR_T): Ditto.
17770         (EXTRA_CONSTRAINT): Ditto.
17771
17772 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17773
17774         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
17775         Remove defines.
17776         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
17777         OPTION_MASK_ISA_64BIT.
17778         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
17779
17780 2007-05-30  Richard Guenther  <rguenther@suse.de>
17781
17782         PR middle-end/32152
17783         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
17784         types for comparison.
17785         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
17786         with original typed arguments.
17787         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
17788
17789 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
17790
17791         PR tree-optimization/31769
17792         * except.c (duplicate_eh_regions): Clear prev_try if
17793         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
17794
17795 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
17796
17797         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
17798         * tree-ssa-sink.c (statement_sink_location): Return basic block and
17799         bsi of the location where statements should be inserted.
17800         (sink_code_in_bb): Take bsi from statement_sink_location.
17801         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
17802         instead of bsi_start.
17803         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
17804         bsi_insert_after.
17805         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
17806         (bsi_move_before): Document inconsistency with bsi_move_after.
17807         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
17808
17809 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17810
17811         * config/i386/i386.h (TARGET_ABM): New define.
17812         (TARGET_POPCNT): Ditto.
17813         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
17814         New temporary defines to redefine from OPTION_ISA_* defines.
17815         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
17816         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
17817         (ix86_isa_flags): New extern int declaration.
17818         (TARGET_SUBTARGET_DEFAULT): New define.
17819         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
17820         (TARGET_SUBTARGET32_DEFAULT): Ditto.
17821         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
17822         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17823         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
17824         * config/i386/darwin.h: Change TARGET_64BIT define to
17825         OPTION_ISA_64BIT.
17826
17827         * config/i386/i386.opt (m3dnowa): Define as undocumented option
17828         using existing "ix86_isa_flags" varible.
17829         (m32, m64): Use existing "ix86_isa_flags" variable.
17830         (mmmx, m3dnow): Ditto.
17831         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
17832         (mabm): Define as non-negative option using "x86_abm" variable.
17833         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
17834
17835         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
17836         Rewrite feature test bitmap.
17837         (ix86_isa_flags): New initialized global int varible.
17838         (ix86_isa_flags_explicit): New static int variable.
17839         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
17840         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
17841         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
17842         target_flags_explicit.
17843         (override_options): Remove "target_enable" and "target_disable" fields
17844         from "struct ptt". Update processor_target_table accordingly. Remove
17845         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
17846         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
17847         "target_flags" and "ix86_isa_flags_explicit" instead of
17848         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
17849         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
17850         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
17851         to true when either of PTA_POPCNT or PTA_ABM is set in
17852         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
17853         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
17854         processor_alias_table flags entry.  Remove handling of
17855         "target_enable" and "target_disable" fields of processor_target_table.
17856         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
17857         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
17858         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
17859         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
17860         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
17861         "target_flags".
17862         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
17863
17864 2007-05-29  David Daney  <ddaney@avtrex.com>
17865
17866         PR gcc/31975
17867         * config/mips/mips.c (mips_output_mi_thunk): Emit
17868         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
17869
17870 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
17871         * config/i386/i386.c (ix86_function_regparm): Added checking of
17872         ix86_force_align_arg_pointer to determine the number of
17873         register parameters.
17874
17875 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
17876
17877         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
17878         (SET_DR_MISALIGNMENT): New.
17879         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
17880         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
17881         Use SET_DR_MISALIGNMENT.
17882         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
17883         pointer.
17884         * tree-data-ref.c (create_data_ref, compute_all_dependences,
17885         find_loop_nest): Export.
17886         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
17887         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
17888         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
17889         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
17890         New macros.
17891         (struct mem_ref): Add field reuse_distance.
17892         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
17893         Initialize reuse_distance field.
17894         (issue_prefetch_ref): Select temporality of prefetch according to
17895         reuse_distance.
17896         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
17897         self_reuse_distance, determine_loop_nest_reuse): New functions.
17898         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
17899         (tree_ssa_prefetch_arrays): Dump L2 cache size.
17900         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
17901         dependency.
17902
17903 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
17904
17905         * tree-ssa-alias.c: Add aliasing overview.
17906
17907 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
17908             Danny Smith  <dannysmith@users.sourceforge.net>
17909
17910         PR target/29498
17911         * config/i386/t-crtfm: Compile crtfastmath.o with
17912         -minline-all-stringops.
17913         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
17914         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
17915
17916 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17917
17918         * doc/md.texi: Document constraints on HP PA-RISC.
17919
17920         * pa/constraints.md: New file.
17921         * pa.md: Include constraints.md.
17922         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
17923         (integer_store_memory_operand, ldil_cint_p): New functions.
17924         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
17925         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17926         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
17927         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
17928         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
17929
17930 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
17931
17932         PR c/31339
17933         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
17934         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
17935         case POSTDECREMENT_EXPR>): Return the error_mark_node
17936         if either the real or imaginary parts would an
17937         error_mark_node.
17938
17939 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
17940
17941         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
17942         name when we remove it from a call.
17943
17944 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
17945
17946         * targhooks.c (default_narrow_bitfield): Remove.
17947         * targhooks.h: Remove the prototype for
17948         default_narrow_bitfield.
17949
17950         * langhooks-def.h: Remove the prototype for
17951         hook_get_alias_set_0.
17952         * langhooks.c (hook_get_alias_set_0): Remove.
17953
17954         * global.c (EXECUTE_IF_CONFLICT): Remove.
17955
17956 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17957
17958         PR tree-opt/32100
17959         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
17960         return true when truth_value_p is true and the type
17961         is of signed:1.
17962
17963 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
17964
17965         * doc/install.texi (Prerequisites): We no longer require Autoconf
17966         2.13 for the top-level.
17967
17968 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
17969
17970         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
17971         memory access via x86_expand_vector_move_misalign() only for
17972         TImode values on 32-bit targets.
17973
17974 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
17975
17976         * matrix-reorg.c: New file. Implement matrix flattening and
17977         transposing optimization.
17978         * tree-pass.h: Add matrix reorg pass.
17979         * common.opt: Add fipa-mreorg flag.
17980         * Makefile.in: Add matrix-reorg.c.
17981         * passes.c: Add matrix reorg pass.
17982         * varpool.c (add_new_static_var): New function.
17983         * cgraph.h (add_new_static_var): Declare.
17984
17985 2007-05-27  Eric Christopher  <echristo@apple.com>
17986
17987         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
17988         sp_offset depending on stack size. Save r12 depending
17989         on registers we're saving later.
17990         (rs6000_emit_epilogue): Update sp_offset depending only
17991         on stack size.
17992
17993 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
17994
17995         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
17996         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17997         * ifcvt.c (if_convert): Ditto.
17998         * tree-ssa-threadupdate.c (thread_block): Ditto.
17999         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
18000         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
18001         verify_loop_closed_ssa): Check number_of_loops instead of
18002         current_loops.
18003         * predict.c (tree_estimate_probability): Ditto.
18004         * tree-if-conv.c (main_tree_if_conversion): Ditto.
18005         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
18006         * modulo-sched.c (sms_schedule): Ditto.
18007         * tree-scalar-evolution.c (scev_const_prop): Ditto.
18008         (scev_finalize): Do not do anything if scev analysis was not
18009         initialized.
18010         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
18011         current_loops == NULL.
18012         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
18013         * loop-init.c (loop_optimizer_init): Do not free current_loops when
18014         there are no loops.
18015         (loop_optimizer_finalize): Assert that loops were analyzed.
18016         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
18017         rtl_doloop): Check number_of_loops instead of current_loops.
18018         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
18019         current_loops == NULL.
18020         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
18021         gate_tree_vectorize tree_linear_transform, check_data_deps,
18022         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
18023         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
18024         Check number_of_loops instead of current_loops.
18025         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
18026         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
18027         free loops if available.
18028         (execute_pre): Do not pass do_fre to fini_pre.
18029
18030 2007-05-27  Tobias Burnus  <burnus@net-b.de>
18031
18032         PR middle-end/32083
18033         * real.c (mpfr_from_real): Fix sign of -Inf.
18034
18035 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18036
18037         * tree-vect-transform.c (vectorizable_conversion): Initialize
18038         tree_code variables to ERROR_MARK.
18039         (vectorizable_type_demotion): Likewise.
18040         (vectorizable_type_promotion): Likewise.
18041
18042 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18043
18044         PR target/32065
18045         * config/i386/i386.md (movti): Handle push operands via
18046         ix86_expand_push().
18047
18048 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
18049
18050         * basic-block.h: Remove the prototype for merge_seq_blocks.
18051         * cfgcleanup.c (merge_seq_blocks): Remove.
18052
18053         * tree-flow.h: Remove the prototype for is_aliased_with.
18054         * tree-ssa-alias.c (is_aliased_with): Remove.
18055
18056 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
18057
18058         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
18059
18060         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
18061
18062         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
18063         ix86_expand_sse4_unpack if SSE4.1 is enabled.
18064         (vec_unpacks_hi_v16qi): Likewise.
18065         (vec_unpacku_lo_v16qi): Likewise.
18066         (vec_unpacks_lo_v16qi): Likewise.
18067         (vec_unpacku_hi_v8hi): Likewise.
18068         (vec_unpacks_hi_v8hi): Likewise.
18069         (vec_unpacku_lo_v8hi): Likewise.
18070         (vec_unpacks_lo_v8hi): Likewise.
18071         (vec_unpacku_hi_v4si): Likewise.
18072         (vec_unpacks_hi_v4si): Likewise.
18073         (vec_unpacku_lo_v4si): Likewise.
18074         (vec_unpacks_lo_v4si): Likewise.
18075
18076 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
18077
18078         * c-typeck.c, config/arm/arm.c, config/darwin.c,
18079         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
18080         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
18081         follow spelling conventions in various
18082         warning/error/diagnostic messages.
18083
18084         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
18085         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
18086         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
18087         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
18088         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
18089         * doc/tm.texi: Follow spelling conventions.
18090
18091 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18092
18093         PR tree-opt/32090
18094         * tree-ssa-forwprop.c
18095         (forward_propagate_addr_into_variable_array_index): Remove
18096         the lhs argument.  Use the type of def_rhs instead of lhs.
18097         (forward_propagate_addr_expr_1): Update use of
18098         forward_propagate_addr_into_variable_array_index.
18099
18100 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
18101             Nigel Stephens  <nigel@mips.com>
18102
18103         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
18104         function attributes, "far" being an alias for "long_call".
18105         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
18106         (mips_near_type_p, mips_far_type_p): New.
18107         (mips_comp_type_attributes): New function to check that attributes
18108         attached to a function type are compatible.
18109         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
18110         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
18111         to the target function of the thunk.
18112         (mips_encode_section_info): Check for "near" and "far" function
18113         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
18114
18115         * config/mips/predicates.md (const_call_insn_operand): Test only
18116         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
18117
18118         * doc/extend.texi (Function Attributes): Document MIPS "near" and
18119         "far" attributes.
18120
18121         * testsuite/gcc.target/mips/near-far-1.c: New test case.
18122         * testsuite/gcc.target/mips/near-far-2.c: New test case.
18123         * testsuite/gcc.target/mips/near-far-3.c: New test case.
18124         * testsuite/gcc.target/mips/near-far-4.c: New test case.
18125
18126 2007-05-25  Eric Christopher  <echristo@apple.com>
18127
18128         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
18129         to x86-darwin configurations.
18130         * config/i386/t-darwin: Add softfp support.
18131         * config/i386/t-darwin64: Ditto.
18132         * config/i386/sfp-machine.h: If mach then don't use
18133         aliasing, emit a stub to call.
18134
18135 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
18136
18137         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
18138         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
18139         tree-predcom.c, tree-ssa-alias-warnings.c,
18140         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
18141         comment typos.  Follow spelling conventions.
18142         * doc/cpp.texi, doc/invoke.texi: Fix typos.
18143
18144 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18145
18146         PR target/32065
18147         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
18148         constants into memory.  Expand unaligned memory references for
18149         SSE modes via x86_expand_vector_move_misalign() function.
18150
18151 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
18152
18153         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
18154         "memory" attribute for "sseishft" type insn without operands[2].
18155
18156 2007-05-25  Dirk Mueller  <dmueller@suse.de>
18157             Marcus Meissner <meissner@suse.de>
18158
18159         * doc/extend.texi (alloc_size): New attribute.
18160         * c-common.c (handle_alloc_size_attribute): New.
18161         * tree-object-size.c (alloc_object_size): Use alloc_size
18162         attribute, if available.
18163
18164 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18165
18166         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
18167         with MASK_SSE2.
18168         (__builtin_ia32_vec_ext_v2di): Likewise.
18169         (__builtin_ia32_vec_ext_v4si): Likewise.
18170         (__builtin_ia32_vec_ext_v8hi): Likewise.
18171         (__builtin_ia32_vec_ext_v16qi): Likewise.
18172         (__builtin_ia32_vec_set_v8hi): Likewise.
18173
18174 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18175
18176         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
18177
18178 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
18179
18180         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
18181         (arm_is_longcall_p): Rename to...
18182         (arm_is_long_call_p): ...this.  Take a single tree argument and
18183         return a bool.
18184         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
18185         (CUMULATIVE_ARGS): Remove call_cookie.
18186         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
18187         (ENCODED_LONG_CALL_ATTR_P): Delete.
18188         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
18189         LONG_CALL_FLAG_CHAR cases.
18190         (ARM_DECLARE_FUNCTION_SIZE): Delete.
18191         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
18192         ARM_DECLARE_FUNCTION_SIZE.
18193         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
18194         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
18195         (arm_encode_call_attribute, current_file_function_operand): Delete.
18196         (arm_function_in_section_p): New function.
18197         (arm_is_longcall_p): Rename to...
18198         (arm_is_long_call_p): ...this.  Take the target function as a single
18199         argument and return a bool.  Do not rely on call cookies.  Check
18200         whether the target symbol is in the same section as the current
18201         function, not just the same compilation unit.
18202         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
18203         (arm_encode_section_info): Don't encode a call type.
18204         * config/arm/arm.md (call, call_value): Update calls to
18205         arm_is_long(_)call_p.  Simplify logic.
18206         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
18207         Update calls to arm_is_long(_)call_p.
18208
18209 2007-05-25  Richard Guenther  <rguenther@suse.de>
18210
18211         PR tree-optimization/31982
18212         * tree-ssa-forwprop.c
18213         (forward_propagate_addr_into_variable_array_index): Handle arrays
18214         with element size one.
18215
18216 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18217
18218         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
18219         (umulsi3_highpart): Likewise.
18220
18221 2007-05-24  Ian Lance Taylor  <iant@google.com>
18222
18223         PR rtl-optimization/32069
18224         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
18225         is NULL.
18226
18227 2007-05-24  Ollie Wild  <aaw@google.com>
18228
18229         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
18230         description.
18231
18232 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
18233
18234         * postreload-gcse.c (reg_changed_after_insn_p): New function.
18235         (oprs_unchanged_p): Use it to check all registers in a REG.
18236         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
18237         (reg_set_between_after_reload_p): Delete.
18238         (reg_used_between_after_reload_p): Likewise.
18239         (reg_set_or_used_since_bb_start): Likewise.
18240         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
18241         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
18242         Use reg_set_between_p instead of reg_set_between_after_reload_p.
18243         * rtlanal.c (reg_set_p): Check whether REG overlaps
18244         regs_invalidated_by_call, rather than just checking the
18245         membership of REGNO (REG).
18246
18247 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18248
18249         * doc/passes.texi: Document predictive commoning.
18250         * doc/invoke.texi (-fpredictive-commoning): Document.
18251         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
18252         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
18253         adding indices to the generated name.
18254         (schedule_sm): Pass 0 to get_lsm_tmp_name.
18255         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
18256         * tree-pretty-print.c (op_symbol_1): Renamed to ...
18257         (op_symbol_code): ... and exported.
18258         (dump_omp_clause, op_symbol): Use op_symbol_code
18259         instead of op_symbol_1.
18260         * tree-pass.h (pass_predcom): Declare.
18261         * timevar.def (TV_PREDCOM): New timevar.
18262         * tree-ssa-loop.c (run_tree_predictive_commoning,
18263         gate_tree_predictive_commoning, pass_predcom): New.
18264         * tree-data-ref.c (find_data_references_in_loop): Find the
18265         references in dominance order.
18266         (canonicalize_base_object_address): Ensure that the result has
18267         pointer type.
18268         (dr_analyze_innermost): Export.
18269         (create_data_ref): Code to fail for references with invariant
18270         address moved ...
18271         (find_data_references_in_stmt): ... here.
18272         * tree-data-ref.h (dr_analyze_innermost): Declare.
18273         * tree-affine.c: Include tree-gimple.h and hashtab.h.
18274         (aff_combination_find_elt, name_expansion_hash,
18275         name_expansion_eq, tree_to_aff_combination_expand,
18276         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
18277         New functions.
18278         * tree-affine.h (aff_combination_constant_multiple_p,
18279         tree_to_aff_combination_expand): Declare.
18280         * tree-predcom.c: New file.
18281         * common.opt (fpredictive-commoning): New option.
18282         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
18283         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
18284         * Makefile.in (tree-predcom.o): Add.
18285         (tree-affine.o): Add TREE_GIMPLE_H dependency.
18286         * passes.c (init_optimization_passes): Add dceloop after
18287         copy propagation in loop optimizer.  Add predictive commoning
18288         to loop optimizer passes.
18289
18290 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18291
18292         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
18293         default hook.
18294
18295 2007-05-24  Jan Hubicka  <jh@suse.cz>
18296
18297         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
18298         statistics.
18299         (genheader): Include statistics.h.
18300
18301         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
18302         notes are gone.
18303         * print-rtl.c (flag_dump_unnumbered): Update comments.
18304         (print_rtl): Fix my previous change.
18305         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
18306         specific data.
18307
18308 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18309
18310         PR middle-end/32018
18311         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
18312         set_loop_copy.
18313         (thread_through_all_blocks): Call initialize_original_copy_tables
18314         and free_original_copy_tables.
18315         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
18316         Use set_loop_copy.
18317         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
18318         * cfghooks.c (duplicate_block): Use get_loop_copy.
18319         * cfg.c: Include cfgloop.h.
18320         (loop_copy): New hash table.
18321         (initialize_original_copy_tables): Initialize loop_copy table.
18322         (free_original_copy_tables): Free loop_copy table.
18323         (copy_original_table_clear, copy_original_table_set,
18324         set_loop_copy, get_loop_copy): New functions.
18325         (set_bb_original, set_bb_copy): Use copy_original_table_set.
18326         * cfgloop.h (struct loop): Remove copy field.
18327         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
18328         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
18329
18330 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18331
18332         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
18333         -msse/-msse2/-msse3.
18334
18335 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18336
18337         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
18338         __builtin_ia32_vec_set_v2di with MASK_64BIT.
18339
18340 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
18341
18342         PR target/27067
18343         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
18344         * targhooks.h (default_mangle_decl_assembler_name): Declare
18345         default hook.
18346         * targhooks.c (default_mangle_decl_assembler_name): Define
18347         default hook.
18348         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
18349         default hook.
18350         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
18351         * langhooks.c (lhd_set_decl_assembler_name): Call
18352         targetm.mangle_decl_assembler_name for names with global scope.
18353
18354         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
18355         default.
18356         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
18357         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
18358         Declare.
18359         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
18360         New. Factored out of i386_pe_encode_section_info.
18361         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
18362         Move check for prior decoration of stdcall
18363         symbols to i386_pe_encode_section_info.
18364         (i386_pe_encode_section_info): Adjust call to
18365         gen_stdcall_or_fastcall_suffix.  Use
18366         i386_pe_maybe_mangle_decl_assembler_name, if needed.
18367         (i386_pe_mangle_decl_assembler_name): New. Wrap
18368         i386_pe_maybe_mangle_decl_assembler_name.
18369
18370 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18371
18372         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
18373         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
18374         * langhooks.c (get_signed_or_unsigned_type): Don't check for
18375         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
18376         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
18377         TYPE_UNSIGNED.
18378
18379 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
18380             Nigel Stephens  <nigel@mips.com>
18381             Richard Sandiford  <richard@codesourcery.com>
18382
18383         Fix up MIPS16 hard float and add support for complex.
18384
18385         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
18386         (TARGET_SOFT_FLOAT_ABI): New.
18387         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
18388         __mips_soft_float to reflect the ABI in use, not whether the
18389         FPU is directly accessible (e.g., in MIPS16 mode).
18390         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
18391         (UNITS_PER_FPVALUE): Likewise.
18392
18393         * config/mips/mips.c (mips_expand_call): Remove redundant
18394         TARGET_MIPS16 check.
18395         (mips_arg_regno): New.
18396         (function_arg_advance): When setting bits in cum->fp_code for
18397         MIPS16, don't subtract 1 from cum->arg_number, since it is now
18398         zero-based.
18399         (function_arg): Use mips_arg_regno.
18400         (mips_return_mode_in_fpr_p): New.
18401         (mips16_call_stub_mode_suffix): New.
18402         (mips16_cfun_returns_in_fpr_p): New.
18403         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
18404         (mips_output_function_prologue): Test mips16_hard_float, not
18405         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
18406         (mips_expand_epilogue): Call MIPS16 helper routines to copy
18407         return value into a floating-point register.
18408         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
18409         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
18410         (mips16_fp_args): Handle MIPS32r2 ISA which supports
18411         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
18412         word of double arguments from or to the high bits of 64-bit
18413         floating point registers.
18414         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
18415         (mips16_fpret_double): New helper function.
18416         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
18417         support for complex modes.  Fill in DECL_RESULT for stubdecl.
18418         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
18419
18420         * config/mips/mips16.S
18421         (RET, ARG1, ARG2): New.
18422         (MERGE_GPRf, MERGE_GPRt): New.
18423         (DELAYt, DELAYf): New.
18424         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
18425         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
18426         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
18427         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
18428         (SFOP): Renamed to...
18429         (OPSF3): This, and macro-ified.  Updated all uses.
18430         (SFOP2): Renamed to...
18431         (OPSF2): This, and macro-ified.  Updated all uses.
18432         (SFCMP): Renamed to...
18433         (CMPSF): This, and macro-ified.  Updated all uses.
18434         (SFREVCMP): Renamed to...
18435         (REVCMPSF): This, and macro-ified.  Updated all uses.
18436         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
18437         (LDDBL1, LDDBL2, RETDBL): Deleted.
18438         (DFOP): Renamed to...
18439         (OPDF3): This, and macro-ified.  Updated all uses.
18440         (DFOP2): Renamed to...
18441         (OPDF2): This, and macro-ified.  Updated all uses.
18442         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
18443         (DFCMP): Renamed to...
18444         (CMPDF): This, and macro-ified.  Updated all uses.
18445         (DFREVCMP): Renamed to...
18446         (REVCMPDF): This, and macro-ified.  Updated all uses.
18447         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
18448         (RET_FUNCTION): New.
18449         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
18450         (__mips16_ret_sc, __mips16_ret_dc): New.
18451         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
18452         STUB_ARGS_6, STUB_ARGS_10): New.
18453         (CALL_STUB_NO_RET): New.
18454         (__mips16_call_stub_1): Macro-ified.
18455         (__mips16_call_stub_5): Macro-ified.
18456         (__mips16_call_stub_2): Macro-ified.
18457         (__mips16_call_stub_6): Macro-ified.
18458         (__mips16_call_stub_9): Macro-ified.
18459         (__mips16_call_stub_10): Macro-ified.
18460         (CALL_STUB_RET): New.
18461         (__mips16_call_stub_sf_0): Macro-ified.
18462         (__mips16_call_stub_sf_1): Macro-ified.
18463         (__mips16_call_stub_sf_5): Macro-ified.
18464         (__mips16_call_stub_sf_2): Macro-ified.
18465         (__mips16_call_stub_sf_6): Macro-ified.
18466         (__mips16_call_stub_sf_9): Macro-ified.
18467         (__mips16_call_stub_sf_10): Macro-ified.
18468         (__mips16_call_stub_df_0): Macro-ified.
18469         (__mips16_call_stub_df_1): Macro-ified.
18470         (__mips16_call_stub_df_5): Macro-ified.
18471         (__mips16_call_stub_df_2): Macro-ified.
18472         (__mips16_call_stub_df_6): Macro-ified.
18473         (__mips16_call_stub_df_9): Macro-ified.
18474         (__mips16_call_stub_df_10): Macro-ified.
18475         (__mips16_call_stub_sc_0): New.
18476         (__mips16_call_stub_sc_1): New.
18477         (__mips16_call_stub_sc_5): New.
18478         (__mips16_call_stub_sc_2): New.
18479         (__mips16_call_stub_sc_6): New.
18480         (__mips16_call_stub_sc_9): New.
18481         (__mips16_call_stub_sc_10): New.
18482         (__mips16_call_stub_dc_0): New.
18483         (__mips16_call_stub_dc_1): New.
18484         (__mips16_call_stub_dc_5): New.
18485         (__mips16_call_stub_dc_2): New.
18486         (__mips16_call_stub_dc_6): New.
18487         (__mips16_call_stub_dc_9): New.
18488         (__mips16_call_stub_dc_10): New.
18489
18490         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
18491         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
18492         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
18493
18494 2007-05-23  Ian Lance Taylor  <iant@google.com>
18495
18496         * doc/invoke.texi (Invoking GCC): Document that the order of the
18497         -l option matters.
18498
18499 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
18500
18501         PR target/30987
18502         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
18503         * config/score/predicate.md (const_pow2, const_npow2): Remove.
18504         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
18505         undef.
18506
18507         PR target/30474
18508         * config/score/score.c (score_print_operand): Make sure that only
18509         lower bits are used.
18510
18511 2007-05-22  Ian Lance Taylor  <iant@google.com>
18512
18513         * tree-vrp.c (avoid_overflow_infinity): New static function,
18514         broken out of set_value_range_to_value.
18515         (set_value_range_to_value): Call avoid_overflow_infinity.
18516         (extract_range_from_assert): Likewise.
18517
18518 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18519
18520         PR middle-end/31095
18521          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
18522         change the type before looking for a COMPOUND_EXPR.
18523
18524 2007-05-22  Ian Lance Taylor  <iant@google.com>
18525
18526         * lower-subreg.c (decompose_multiword_subregs): If we change an
18527         insn, call remove_retval_note on it.
18528
18529 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18530
18531         * regs.h (end_hard_regno): New function.
18532         (END_HARD_REGNO, END_REGNO): New macros.
18533         (add_to_hard_reg_set): New function.
18534         (remove_from_hard_reg_set): Likewise.
18535         (in_hard_reg_set_p): Likewise.
18536         (overlaps_hard_reg_set_p): Likewise.
18537         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
18538         (note_btr_set): Use END_HARD_REGNO.
18539         * caller-save.c (setup_save_areas): Use end_hard_regno.
18540         (mark_set_regs): Use END_HARD_REGNO.
18541         (add_stored_regs): Use end_hard_regno.
18542         (mark_referenced_regs): Use add_to_hard_reg_set.
18543         * combine.c (update_table_tick): Use END_REGNO.
18544         (record_value_for_reg): Likewise.
18545         (record_dead_and_set_regs): Likewise.
18546         (get_last_value_validate): Likewise.
18547         (use_crosses_set_p): Likewise.
18548         (reg_dead_at_p_1): Likewise.
18549         (reg_dead_at_p): Likewise.
18550         (mark_used_regs_combine): Use add_to_hard_reg_set.
18551         (move_deaths): Use END_HARD_REGNO.
18552         (reg_bitfield_target_p): Use end_hard_regno.
18553         (distribute_notes): Use END_HARD_REGNO.
18554         * cse.c (mention_regs): Use END_REGNO.
18555         (insert): Use add_to_hard_reg_set.
18556         (invalidate): Use END_HARD_REGNO.
18557         (invalidate_for_call): Likewise.
18558         (exp_equiv_p): Use END_REGNO.
18559         (cse_insn): Likewise.
18560         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
18561         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
18562         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
18563         * function.c (keep_stack_depressed): Use end_hard_regno.
18564         * global.c (global_alloc): Use end_hard_regno.
18565         (global_conflicts): Use add_to_hard_reg_set instead of
18566         mark_reg_live_nc.
18567         (find_reg): Likewise.
18568         (mark_reg_store): Likewise.
18569         (mark_reg_conflicts): Likewise.
18570         (mark_reg_death): Use remove_from_hard_reg_set.
18571         (mark_reg_live_nc): Delete.
18572         (set_preference): Use end_hard_regno.
18573         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
18574         remove_from_hard_reg_set.
18575         (post_mark_life): Use add_to_hard_reg_set.
18576         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
18577         (reg_becomes_live): Use add_to_hard_reg_set.
18578         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
18579         (peep2_find_free_register): Use add_to_hard_reg_set.
18580         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
18581         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
18582         * regrename.c (note_sets): Use add_to_hard_reg_set.
18583         (clear_dead_regs): Use remove_from_hard_reg_set.
18584         (regrename_optimize): Use add_to_hard_reg_set.
18585         (find_oldest_value_reg): Use in_hard_reg_set_p.
18586         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
18587         (hard_reg_set_here_p): Use end_hard_regno.
18588         (decompose): Likewise.
18589         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
18590         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
18591         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
18592         (mark_home_live): Use end_hard_regno.
18593         (spill_hard_reg): Likewise.
18594         (clear_reload_reg_in_use): Likewise.
18595         * reorg.c (delete_prior_computation): Use END_REGNO.
18596         * resource.c (update_live_status): Use END_HARD_REGNO.
18597         (mark_referenced_resources): Use add_to_hard_reg_set.
18598         (mark_set_resources): Likewise.
18599         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
18600         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
18601         (reg_overlap_mentioned_p): Likewise.
18602         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
18603         (covers_regno_no_parallel_p): Use END_REGNO.
18604         (find_regno_note): Likewise.
18605         (find_reg_fusage): Use END_HARD_REGNO.
18606         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
18607         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
18608
18609 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18610
18611         * mode-switching.c (reg_dies): Change type of second argument to
18612         "HARD_REG_SET *".
18613         (optimize_mode_switching): Update accordingly.
18614
18615 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
18616
18617         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
18618         in favor of...
18619         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
18620         (hard_reg_set_empty_p): ...these new functions.
18621         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
18622         GO_IF_HARD_REG_SUBSET.
18623         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
18624         instead of GO_IF_HARD_REG_EQUAL.
18625         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
18626         instead of GO_IF_HARD_REG_EQUAL.
18627         * global.c (find_reg): Use hard_reg_set_empty_p instead of
18628         GO_IF_HARD_REG_SUBSET.
18629         (modify_reg_pav): Use hard_reg_set_empty_p instead of
18630         GO_IF_HARD_REG_EQUAL.
18631         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
18632         of GO_IF_HARD_REG_SUBSET.
18633         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
18634         instead of GO_IF_HARD_REG_EQUAL.
18635         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
18636         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
18637         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
18638         of GO_IF_HARD_REG_SUBSET,
18639         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
18640         GO_IF_HARD_REG_SUBSET.
18641         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
18642         instead of GO_IF_HARD_REG_EQUAL.
18643         * config/sh/sh.c (push_regs, calc_live_regs): Use
18644         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
18645         (hard_regs_intersect_p): Delete.
18646
18647 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
18648
18649         * doc/sourcebuild.texi (Test Directives) Add dg-message.
18650
18651 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18652             Richard Henderson  <rth@redhat.com>
18653
18654         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
18655         extra_headers.
18656         (x86_64-*-*): Likewise.
18657
18658         * i386/i386-modes.def (V2QI): New.
18659
18660         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
18661         SSE4A.
18662         (override_options): Support SSE4.1.
18663         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
18664         (IX86_BUILTIN_BLENDPS): Likewise.
18665         (IX86_BUILTIN_BLENDVPD): Likewise.
18666         (IX86_BUILTIN_BLENDVPS): Likewise.
18667         (IX86_BUILTIN_PBLENDVB128): Likewise.
18668         (IX86_BUILTIN_PBLENDW128): Likewise.
18669         (IX86_BUILTIN_DPPD): Likewise.
18670         (IX86_BUILTIN_DPPS): Likewise.
18671         (IX86_BUILTIN_INSERTPS128): Likewise.
18672         (IX86_BUILTIN_MOVNTDQA): Likewise.
18673         (IX86_BUILTIN_MPSADBW128): Likewise.
18674         (IX86_BUILTIN_PACKUSDW128): Likewise.
18675         (IX86_BUILTIN_PCMPEQQ): Likewise.
18676         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
18677         (IX86_BUILTIN_PMAXSB128): Likewise.
18678         (IX86_BUILTIN_PMAXSD128): Likewise.
18679         (IX86_BUILTIN_PMAXUD128): Likewise.
18680         (IX86_BUILTIN_PMAXUW128): Likewise.
18681         (IX86_BUILTIN_PMINSB128): Likewise.
18682         (IX86_BUILTIN_PMINSD128): Likewise.
18683         (IX86_BUILTIN_PMINUD128): Likewise.
18684         (IX86_BUILTIN_PMINUW128): Likewise.
18685         (IX86_BUILTIN_PMOVSXBW128): Likewise.
18686         (IX86_BUILTIN_PMOVSXBD128): Likewise.
18687         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
18688         (IX86_BUILTIN_PMOVSXWD128): Likewise.
18689         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
18690         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
18691         (IX86_BUILTIN_PMOVZXBW128): Likewise.
18692         (IX86_BUILTIN_PMOVZXBD128): Likewise.
18693         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
18694         (IX86_BUILTIN_PMOVZXWD128): Likewise.
18695         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
18696         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
18697         (IX86_BUILTIN_PMULDQ128): Likewise.
18698         (IX86_BUILTIN_PMULLD128): Likewise.
18699         (IX86_BUILTIN_ROUNDPD): Likewise.
18700         (IX86_BUILTIN_ROUNDPS): Likewise.
18701         (IX86_BUILTIN_ROUNDSD): Likewise.
18702         (IX86_BUILTIN_ROUNDSS): Likewise.
18703         (IX86_BUILTIN_PTESTZ): Likewise.
18704         (IX86_BUILTIN_PTESTC): Likewise.
18705         (IX86_BUILTIN_PTESTNZC): Likewise.
18706         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
18707         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
18708         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
18709         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
18710         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
18711         (bdesc_ptest): New.
18712         (bdesc_sse_3arg): Likewise.
18713         (bdesc_2arg): Likewise.
18714         (bdesc_1arg): Likewise.
18715         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
18716         with 3 args.
18717         (ix86_expand_sse_4_operands_builtin): New.
18718         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
18719         smaller than 8 bits as the 2nd arg.
18720         (ix86_expand_sse_ptest): New.
18721         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
18722         (ix86_expand_vector_set): Support SSE4.1.
18723         (ix86_expand_vector_extract): Likewise.
18724
18725         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
18726         __SSE4_1__ for -msse4.1.
18727
18728         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
18729         (UNSPEC_INSERTPS): Likewise.
18730         (UNSPEC_DP): Likewise.
18731         (UNSPEC_MOVNTDQA): Likewise.
18732         (UNSPEC_MPSADBW): Likewise.
18733         (UNSPEC_PHMINPOSUW): Likewise.
18734         (UNSPEC_PTEST): Likewise.
18735         (UNSPEC_ROUNDP): Likewise.
18736         (UNSPEC_ROUNDS): Likewise.
18737
18738         * config/i386/i386.opt (msse4.1): New for SSE4.1.
18739
18740         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
18741         (const_pow2_1_to_32768_operand): Likewise.
18742
18743         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
18744         file.
18745
18746         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
18747         SSE4.1.
18748         (sse4_1_insertps): Likewise.
18749         (*sse4_1_extractps): Likewise.
18750         (sse4_1_ptest): Likewise.
18751         (sse4_1_mulv2siv2di3): Likewise.
18752         (*sse4_1_mulv4si3): Likewise.
18753         (*sse4_1_smax<mode>3): Likewise.
18754         (*sse4_1_umax<mode>3): Likewise.
18755         (*sse4_1_smin<mode>3): Likewise.
18756         (*sse4_1_umin<mode>3): Likewise.
18757         (sse4_1_eqv2di3): Likewise.
18758         (*sse4_1_pinsrb): Likewise.
18759         (*sse4_1_pinsrd): Likewise.
18760         (*sse4_1_pinsrq): Likewise.
18761         (*sse4_1_pextrb): Likewise.
18762         (*sse4_1_pextrb_memory): Likewise.
18763         (*sse4_1_pextrw_memory): Likewise.
18764         (*sse4_1_pextrq): Likewise.
18765         (sse4_1_blendpd): Likewise.
18766         (sse4_1_blendps): Likewise.
18767         (sse4_1_blendvpd): Likewise.
18768         (sse4_1_blendvps): Likewise.
18769         (sse4_1_dppd): Likewise.
18770         (sse4_1_dpps): Likewise.
18771         (sse4_1_movntdqa): Likewise.
18772         (sse4_1_mpsadbw): Likewise.
18773         (sse4_1_packusdw): Likewise.
18774         (sse4_1_pblendvb): Likewise.
18775         (sse4_1_pblendw): Likewise.
18776         (sse4_1_phminposuw): Likewise.
18777         (sse4_1_extendv8qiv8hi2): Likewise.
18778         (*sse4_1_extendv8qiv8hi2): Likewise.
18779         (sse4_1_extendv4qiv4si2): Likewise.
18780         (*sse4_1_extendv4qiv4si2): Likewise.
18781         (sse4_1_extendv2qiv2di2): Likewise.
18782         (*sse4_1_extendv2qiv2di2): Likewise.
18783         (sse4_1_extendv4hiv4si2): Likewise.
18784         (*sse4_1_extendv4hiv4si2): Likewise.
18785         (sse4_1_extendv2hiv2di2): Likewise.
18786         (*sse4_1_extendv2hiv2di2): Likewise.
18787         (sse4_1_extendv2siv2di2): Likewise.
18788         (*sse4_1_extendv2siv2di2): Likewise.
18789         (sse4_1_zero_extendv8qiv8hi2): Likewise.
18790         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
18791         (sse4_1_zero_extendv4qiv4si2): Likewise.
18792         (*sse4_1_zero_extendv4qiv4si2): Likewise.
18793         (sse4_1_zero_extendv2qiv2di2): Likewise.
18794         (*sse4_1_zero_extendv2qiv2di2): Likewise.
18795         (sse4_1_zero_extendv4hiv4si2): Likewise.
18796         (*sse4_1_zero_extendv4hiv4si2): Likewise.
18797         (sse4_1_zero_extendv2hiv2di2): Likewise.
18798         (*sse4_1_zero_extendv2hiv2di2): Likewise.
18799         (sse4_1_zero_extendv2siv2di2): Likewise.
18800         (*sse4_1_zero_extendv2siv2di2): Likewise.
18801         (sse4_1_roundpd): Likewise.
18802         (sse4_1_roundps): Likewise.
18803         (sse4_1_roundsd): Likewise.
18804         (sse4_1_roundss): Likewise.
18805         (mulv4si3): Don't expand for SSE4.1.
18806         (smax<mode>3): Likewise.
18807         (umaxv4si3): Likewise.
18808         (uminv16qi3): Likewise.
18809         (umin<mode>3): Likewise.
18810         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
18811
18812         * doc/extend.texi: Document SSE4.1 built-in functions.
18813
18814         * doc/invoke.texi: Document -msse4.1.
18815
18816 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
18817
18818         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
18819         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
18820         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
18821         (ASM_SPEC): Add asm_pcrel_spec.
18822         (EXTRA_SPECS): Add asm_pcrel_spec.
18823
18824 2007-05-21  David Daney  <ddaney@avtrex.com>
18825
18826         * doc/install.texi (Building a cross compiler): Add requirements
18827         for Java cross compiler.
18828
18829 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18830
18831         PR middle-end/31995
18832         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
18833         Add loopno argument.  Use evolution_function_is_invariant_rec_p
18834         instead of evolution_function_is_constant_p.
18835         Update calls to evolution_function_is_affine_multivariate_p.
18836         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
18837         Add loopno argument.
18838         * tree-scalar-evolution.c (gather_chrec_stats): Call
18839         evolution_function_is_affine_multivariate_p with a loop
18840         number of 0.
18841         * tree-data-ref.c (analyze_miv_subscript): Likewise.
18842         (analyze_overlapping_iterations): Likewise.
18843         (access_functions_are_affine_or_constant_p): Likewise.
18844         (build_classic_dist_vector_1): If the access functions
18845         are equal, don't do anything.
18846
18847 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
18848             Paolo Carlini  <pcarlini@suse.de>
18849             Uros Bizjak  <ubizjak@gmail.com>
18850
18851         * c-cppbuiltin.c (c_cpp_builtins): Define
18852         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
18853         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
18854         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
18855         * doc/cpp.texi ([Standard Predefined Macros]): Document.
18856
18857 2007-05-21  Mike Stump  <mrs@apple.com>
18858
18859         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
18860         handling as well.
18861         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18862
18863 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
18864
18865         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
18866         implementation if __OPTIMIZE__ is not defined.
18867         (_mm_alignr_pi8): Ditto.
18868         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18869         (_mm_inserti_si64): Ditto.
18870         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18871         (_mm_slli_epi16): Ditto.
18872         (_mm_slli_epi32): Ditto.
18873         (_mm_slli_epi64): Ditto.
18874         (_mm_srai_epi16): Ditto.
18875         (_mm_srai_epi32): Ditto.
18876         (_mm_srli_si128): Ditto.
18877         (_mm_slli_si128): Ditto.
18878         (_mm_srli_epi16): Ditto.
18879         (_mm_srli_epi32): Ditto.
18880         (_mm_srli_epi64): Ditto.
18881         (_mm_extract_epi16): Ditto.
18882         (_mm_insert_epi16): Ditto.
18883         (_mm_shufflehi_epi16): Ditto.
18884         (_mm_shufflelo_epi16): Ditto.
18885         (_mm_shuffle_epi32): Ditto.
18886         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
18887         (_m_pextrw): Ditto.
18888         (_mm_insert_pi16): Ditto.
18889         (_m_pinsrw): Ditto.
18890         (_mm_shuffle_pi16): Ditto.
18891         (_m_pshufw): Ditto.
18892         (_mm_shufle_ps): Ditto.
18893         (_mm_prefetch): Ditto.
18894
18895 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
18896
18897         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
18898         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
18899         * real.c (encode_i370_single, decode_i370_single,
18900         encode_i370_double, decode_i370_double): Functions removed.
18901         (i370_single_format, i370_double_format): Initializations removed.
18902         (real_maxval, round_for_format, exact_real_truncate, significand_size):
18903         Consider the log2_b field to always be one.
18904         (ieee_single_format, mips_single_format, coldfire_single_format,
18905         ieee_double_format, mips_double_format, coldfire_double_format,
18906         ieee_extended_motorola_format, ieee_extended_intel_96_format,
18907         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
18908         ibm_extended_format, mips_extended_format, ieee_quad_format,
18909         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
18910         decimal_single_format, decimal_double_format, decimal_quad_format,
18911         c4x_single_format, c4x_extended_format, real_internal_format): Remove
18912         initialization of log2_b.
18913         * real.h (i370_single_format, i370_double_format): Declarations
18914         removed.
18915         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
18916         field to always be one.
18917
18918 2007-05-21  Andreas Schwab  <schwab@suse.de>
18919
18920         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
18921         NOTE_INSN_BASIC_BLOCK_P.
18922         (process_for_unwind_directive): Likewise.
18923
18924 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
18925
18926         * builtins.c (expand_builtin_setjmp_setup): Update comment.
18927         * function.h (struct function): Move va_list_gpr_size,
18928         va_list_fpr_size, function_frequency to front of bitfields.  Add
18929         calls_unwind_init.
18930         (current_function_calls_unwind_init): New.
18931         * except.c (expand_builtin_unwind_init): Set
18932         current_function_calls_unwind_init not
18933         current_function_has_nonlocal_label.
18934         * reload1.c (has_nonexceptional_receiver): New.
18935         (reload): Use it and current_function_calls_unwind_init to
18936         determine whether call-saved regs must be saved.
18937
18938 2007-05-20  Jan Hubicka  <jh@suse.cz>
18939
18940         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
18941         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18942         * ddg.c (create_ddg): LIkewise.
18943         * final.c (final): Remove hunk moving line number notes around since
18944         they are no longer present at this stage.
18945         (final_scan_insn): Use NOTE_KIND instead of
18946         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18947         (output_asm_label): Likewise.
18948         * reorg.c (dbr_schedule): Likewise.
18949         * haifa-sched.c (unlink_other_notes): Likewise.
18950         * mode-switching.c (optimize_mode_switching): Likewise.
18951         * graph.c (start_bb): Likewise.
18952         * rtl.def (NOTE): Update description.
18953         * jump.c (squeeze_notes): Delete.
18954         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
18955         NOTE_INSN_BASIC_BLOCK_P when possible.
18956         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
18957         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
18958         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18959         (dwarf2out_var_location): Likewise.
18960         * cfgbuild.c (make_edges): Likewise.
18961         (find_basic_blocks_1): Likewise.
18962         * function.c (reorder_blocks_1): Likewise.
18963         (epilogue_done): Likewise.
18964         (reposition_prologue_and_epilogue_notes): Likewise.
18965         * print-rtl.c (print_rtx): Likewise; drop code for printing
18966         line number notes.
18967         (print_rtl): Likewise.
18968         (print_rtl_single): Likewise.
18969         * gcse.c (insert_insn_start_bb): Likewise.
18970         * alias.c (init_alias_analysis): Likewise.
18971         * calls.c (fixup_tail_calls): Likewise.
18972         * except.c (sjlj_emit_function_enter): Likewise.
18973         * emit-rtl.c (add_insn_after): Likeiwse.
18974         (emit_label_before): Likewise.
18975         (emit_label_after): Likewise.
18976         (emit_note_before, emit_note_after, emit_note): Update
18977         parameter to be enum insn_note; do not deal with source
18978         files.
18979         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
18980         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
18981         when possible.
18982         (merge_blocks_move_successor_nojumps): Simplify now when
18983         we don't have BLOCK notes.
18984         (try_optimize_cfg): Likewise.
18985         * cfglayout.c (skip_insns_after_block): Likewise.
18986         (record_effective_endpoints): Likewise.
18987         (duplicate_insn_chain): Likewise.
18988         * varasm.c (output_constant_pool_1): Likewise.
18989         * sched-deps.c (sched_analyze): Likewise.
18990         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
18991         Exterminate.
18992         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
18993         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
18994         (SET_INSN_DELETED): Simplify.
18995         (NOTE_LINE_NUMBER): Exterminate.
18996         (NOTE_LINE_KIND): New.
18997         (NOTE_INSN_BASIC_BLOCK_P): Update.
18998         (enum insn_note): Simplify.
18999         (GET_NOTE_INSN_NAME) Simplify.
19000         (emit_note_before, emit_note_after, emit_note): Update prototype.
19001         (squeeze_notes): Remove.
19002         * sched-int.h (NOTE_NOT_BB_P): Update.
19003         * resource.c (mark_target_live_regs): Update.
19004         * sched-rgn.c (debug_dependencies): Update.
19005         * sched-vis.c (print_insn): Update.
19006         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
19007         * config/i386/i386.c (ix86_output_function_epilogue): Update.
19008         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
19009         (TARGET_ADJUST_UNROLL_MAX): Likewise.
19010         (split_branches): Update.
19011         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
19012         4.0.0.
19013         (sh_adjust_unroll_max): Exterminate.
19014         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
19015         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
19016         (m68hc11_reorg): Likewise.
19017         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
19018         (emit_predicate_relation_info): Update.
19019         (process_for_unwind_directive): Update.
19020         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
19021         (output_call): Update.
19022         * config/pa/pa.c (output_lbranch): Update.
19023         (output_millicode_call): Update.
19024         (output_call): Update.
19025         (pa_combine_instructions): Update.
19026         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
19027         * config/bfin/bfin.c (gen_one_bundle): Update.
19028         * cfgrtl.c (can_delete_note_p): Update.
19029         (delete_insn): Update.
19030         (rtl_merge_blocks): Update.
19031         (commit_one_edge_insertion): Update.
19032         (rtl_verify_flow_info): Update.
19033         * stmt.c (expand_case): Do not call squeeze_notes.
19034
19035 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19036
19037         PR middle-end/7651
19038         PR c++/11856
19039         PR c/12963
19040         PR c/23587
19041         PR other/29694
19042         * c.opt (Wtype-limits): New.
19043         * doc/invoke.texi (Wtype-limits): Document it.
19044         (Wextra): Enabled by -Wextra.
19045         * c-opts.c (c_common_post_options): Enabled by -Wextra.
19046         * c-common.c (shorten_compare): Warn with Wtype-limits.
19047
19048 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
19049
19050         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
19051         inlined function, not as a macro.
19052         (_mm_alignr_pi8): Ditto.
19053         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
19054         (_mm_inserti_si64): Ditto.
19055         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
19056         (_mm_extract_epi16): Ditto.
19057         (_mm_insert_epi16): Ditto.
19058         (_mm_shufflehi_epi16): Ditto.
19059         (_mm_shufflelo_epi16): Ditto.
19060         (_mm_shuffle_epi32): Ditto.
19061         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
19062         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
19063         all functions.
19064         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
19065         float constant.
19066         (_m_to_float): Use C89 compatible assignment.
19067
19068 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
19069
19070         PR target/32007
19071         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
19072
19073 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19074
19075         PR middle-end/7651
19076         * doc/invoke.texi (Wreturn-type): Complete description.
19077         (Wextra): Delete item about return-type warning.
19078         * c-decl.c: Delete redundant Wextra warning.
19079
19080 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
19081
19082         PR target/31585
19083         * config/i386/pmmintrin.h: Do not include xmmintrin.h
19084         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
19085         inlined function, not as a macro.
19086         (_mm_prefetch): Ditto.
19087         (_m_pextrw): Ditto.
19088         (_mm_insert_pi16): Ditto.
19089         (_m_pinsrw): Ditto.
19090         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
19091         (_m_pshufw): Ditto. Add const to __N argument.
19092         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
19093         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
19094         (_mm_slli_epi32): Ditto.
19095         (_mm_srli_si128): Implement as always inlined function, not as a
19096         macro.  Add __inline to function declaration.
19097         (_mm_slli_si128): Ditto.
19098
19099 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
19100
19101         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
19102         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
19103         New constants.
19104         (struct fenv): New structure.
19105         (FP_HANDLE_EXCEPTIONS): New define.
19106         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
19107         (_FP_DECL_EXP): New define.
19108         (FP_INIT_ROUNDMODE): New define.
19109         (FP_ROUNDMODE): New define.
19110
19111 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19112
19113         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
19114         (Wconversion): Update description.
19115         (Wconversion-sign): New.
19116         * c.opt (Wconversion-sign): New.
19117         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
19118         means disabled for C++. Otherwise, take the status of Wconversion.
19119         * c-common.c (conversion_warning): Warn with either Wconversion or
19120         Wconversion-sign.
19121         (warnings_for_convert_and_check): Conditions are already checked by
19122         conversion_warning.
19123         (convert_and_check): Don't check warnings if the conversion failed.
19124
19125 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
19126            Anatoly Sokolov <aesok@dol.ru>
19127
19128         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
19129         avr_epilogue_uses) : Add declaration.
19130         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
19131         * config/avr/constraints.md (R): New constraint.
19132         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
19133         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
19134         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
19135         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
19136         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
19137         call_prologue_saves, epilogue_restores, return_from_epilogue,
19138         return_from_main_epilogue, return_from_interrupt_epilogue,
19139         return_from_naked_epilogue, prologue, epilogue): New patterns.
19140         (jump): Handle symbol reference.
19141         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
19142         avr_output_function_prologue, avr_output_function_epilogue): Remove
19143         functions.
19144         (avr_init_machine_status, expand_prologue, expand_epilogue,
19145         avr_asm_function_end_prologue, avr_epilogue_uses,
19146         avr_asm_function_begin_epilogue): New functions.
19147         (prologue_size, epilogue_size, jump_tables_size): Remove global
19148         variables.
19149         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
19150         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
19151         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
19152         (avr_override_options): Initialise init_machine_status.
19153         (output_movhi): Handle all stack pointer loads.
19154         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
19155         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
19156         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
19157         (EPILOGUE_USES) Redefine.
19158         (machine_function) Declare.
19159
19160 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
19161
19162         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
19163         Use a single return statement.
19164
19165 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19166
19167         PR middle-end/30250
19168         * builtins.c (do_mpfr_lgamma_r): New.
19169         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
19170         * tree.h (CASE_FLT_FN_REENT): New.
19171
19172 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
19173
19174         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
19175         (output_die): Use 'unsigned long' with %x.
19176         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
19177         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
19178         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
19179
19180         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
19181
19182 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19183
19184         PR target/31989
19185         PR target/31681
19186         PR target/31666
19187         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
19188         true if function has no argument.
19189
19190 2007-05-18  DJ Delorie  <dj@redhat.com>
19191
19192         * config/mips/mips.c (mips_offset_within_alignment_p): New.
19193         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
19194
19195 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19196
19197         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
19198         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
19199         count_trailing_zeros.
19200         (__i386__): Implement count_leading_zeros using __builtin_clz().
19201         Implement count_trailing_zeros usign __builtin_ctz().
19202
19203 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
19204
19205         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
19206
19207 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19208
19209         PR middle-end/31344
19210         * expr.c (emit_move_change_mode): Change mode of push operands here.
19211
19212 2007-05-17  Ian Lance Taylor  <iant@google.com>
19213
19214         PR tree-optimization/31953
19215         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
19216         Change all callers.
19217         (set_value_range_to_null): Call set_value_range_to_value.
19218         (extract_range_from_comparison): Likewise.
19219
19220 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19221
19222         * toplev.c (print_version): Output GMP/MPFR version info.
19223
19224         * builtins.c (CASE_MATHFN_REENT): New macro.
19225         (mathfn_built_in): Use it.
19226         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
19227         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
19228         BUILT_IN_LGAMMAL_R): New.
19229         * doc/extend.texi: Document new builtins.
19230
19231         PR middle-end/31796
19232         * builtins.c (do_mpfr_remquo): New.
19233         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
19234         (fold_builtin_3): Handle BUILT_IN_REMQUO.
19235
19236         PR middle-end/30251
19237         * builtins.c (fold_builtin_1): Handle y0, y1.
19238         (fold_builtin_2): Handle yn.
19239
19240         PR middle-end/30251
19241         * builtins.c (do_mpfr_bessel_n): New.
19242         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
19243         (fold_builtin_2): Handle BUILT_IN_JN.
19244
19245 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
19246
19247         PR target/31965
19248         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
19249         TYPE_PRECISION (intmax_type_node).
19250
19251 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
19252
19253         PR target/31850
19254         * reload.c (subst_reloads): Remove checking.
19255
19256 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
19257
19258         PR rtl-optimization/31691
19259         * combine.c (simplify_set): Build a new src pattern instead of
19260         substituting its operands in the COMPARE case.
19261
19262 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
19263
19264         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
19265         (execute_vrp): Preserve loops through jump threading.
19266         * tree-ssa-threadupdate.c (thread_single_edge,
19267         dbds_continue_enumeration_p, determine_bb_domination_status,
19268         thread_through_loop_header): New functions.
19269         (create_edge_and_update_destination_phis,
19270         create_edge_and_update_destination_phis): Set loops for the new blocks.
19271         (prune_undesirable_thread_requests): Removed.
19272         (redirect_edges): Do not pretend that redirect_edge_and_branch can
19273         create new blocks.
19274         (thread_block): Do not call prune_undesirable_thread_requests.
19275         Update loops.
19276         (mark_threaded_blocks): Select edges to thread here.
19277         (thread_through_all_blocks): Take may_peel_loop_headers argument.
19278         Thread edges through loop headers independently.
19279         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
19280         * tree-pass.h (TODO_mark_first_instance): New.
19281         (first_pass_instance): Declare.
19282         * cfghooks.c (duplicate_block): Put the block to the original loop
19283         if copy is not specified.
19284         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
19285         jump threading.  Pass may_peel_loop_headers to
19286         thread_through_all_blocks according to first_pass_instance.
19287         * cfgloop.h (create_preheader): Declare.
19288         * tree-flow.h (thread_through_all_blocks): Declaration changed.
19289         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
19290         * passes.c (first_pass_instance): New variable.
19291         (next_pass_1): Set TODO_mark_first_instance.
19292         (execute_todo): Set first_pass_instance.
19293
19294 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
19295
19296         PR tree-optimization/24659
19297         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
19298         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
19299         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
19300         OTI_vec_pack_ufix_trunc.
19301         (vec_unpacks_float_hi_optab): Define new macro.
19302         (vec_unpacks_float_lo_optab): Ditto.
19303         (vec_unpacku_float_hi_optab): Ditto.
19304         (vec_unpacku_float_lo_optab): Ditto.
19305         (vec_pack_sfix_trunc_optab): Ditto.
19306         (vec_pack_ufix_trunc_optab): Ditto.
19307         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
19308         and vec_pack_[s|u]fix_trunc_optab using
19309         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
19310         * tree-vectorizer.c (supportable_widening_operation): Handle
19311         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
19312         (supportable_narrowing_operation): New function.
19313         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
19314         * tree-vect-transform.c (vectorizable_conversion): Handle
19315         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
19316         (vect_gen_widened_results_half): Move before vectorizable_conversion.
19317         (vectorizable_type_demotion): Call supportable_narrowing_operation()
19318         to check for target support.
19319         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
19320         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
19321         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
19322         for VEC_PACK_FIX_TRUNC_EXPR.
19323         (expand_binop): Special case mode of the result for
19324         vec_pack_[u|s]fix_trunc_optab.
19325         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
19326         vec_pack_[u|s]fix_trunc_optab.
19327
19328         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
19329         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
19330         * tree-pretty-print.c (dump_generic_node): Handle
19331         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
19332         VEC_PACK_FIX_TRUNC_EXPR.
19333         (op_prio): Ditto.
19334         * expr.c (expand_expr_real_1): Ditto.
19335         * tree-inline.c (estimate_num_insns_1): Ditto.
19336         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19337
19338         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
19339         (vec_unpacks_float_lo_v8hi): Ditto.
19340         (vec_unpacku_float_hi_v8hi): Ditto.
19341         (vec_unpacku_float_lo_v8hi): Ditto.
19342         (vec_unpacks_float_hi_v4si): Ditto.
19343         (vec_unpacks_float_lo_v4si): Ditto.
19344         (vec_pack_sfix_trunc_v2df): Ditto.
19345
19346         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
19347         Document.
19348         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
19349         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
19350         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
19351         [vec_pack_ufix_trunc]: Ditto.
19352         [vec_unpacks_float_hi]: Ditto.
19353         [vec_unpacks_float_lo]: Ditto.
19354         [vec_unpacku_float_hi]: Ditto.
19355         [vec_unpacku_float_lo]: Ditto.
19356
19357 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
19358
19359         * soft-fp/README: Update for new files.
19360         * soft-fp/floattisf.c: New file.
19361         * soft-fp/floattidf.c: New file.
19362         * soft-fp/floattitf.c: New file.
19363         * soft-fp/floatuntisf.c: New file.
19364         * soft-fp/floatuntidf.c: New file.
19365         * soft-fp/floatuntitf.c: New file.
19366         * soft-fp/fixsfti.c: New file.
19367         * soft-fp/fixdfti.c: New file.
19368         * soft-fp/fixtfti.c: New file.
19369         * soft-fp/fixunssfti.c: New file.
19370         * soft-fp/fixunsdfti.c: New file.
19371         * soft-fp/fixunstfti.c: New file.
19372         * soft-fp/extendxftf.c: New file.
19373         * soft-fp/trunctfxf.c: New file.
19374
19375         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
19376         (__trunctfxf2): Ditto.
19377
19378         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
19379         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
19380         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
19381         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
19382         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
19383         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
19384
19385         * config/i386/t-fprules-softfp64: New file.
19386         * config/i386/sfp-machine.h: New file.
19387         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
19388         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
19389         and soft-fp/t-softfp to tmake_file.
19390         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
19391         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
19392
19393         * config/i386/t-linux64 (softfp_wrap_start): New.
19394         (softfp_wrap_end): New.
19395         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
19396         supported for TARGET_64BIT.
19397
19398 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
19399
19400         * c-common.c (c_common_signed_or_unsigned_type): Emulate
19401         c_common_unsigned_type behavior.
19402
19403 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
19404
19405         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
19406         calls as pure.
19407
19408 2007-05-16  Eric Christopher  <echristo@apple.com>
19409
19410         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
19411         saving after stack push. Set sp_offset whenever we push.
19412         (rs6000_emit_epilogue): Move altivec register restore before
19413         stack push.
19414
19415 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19416
19417         * configure.ac: Allow sysroots to be relocated under $prefix as
19418         well as $exec_prefix.
19419         * configure: Regenerate.
19420
19421 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19422
19423         Revert:
19424
19425         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19426
19427         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19428         (gcc_tooldir): Likewise.
19429         * configure: Regenerate.
19430         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19431         old configure.ac gcc_tooldir setting.
19432         (prefix_to_exec_prefix): New variable.
19433         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19434         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19435
19436 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
19437
19438         * c-typeck.c (build_binary_op): Return early for error.
19439
19440 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
19441
19442         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
19443         struct nb_iter_bound.
19444         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
19445         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
19446         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
19447         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
19448         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
19449         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
19450         (del_scev_info): Use ggc_free.
19451         (scev_initialize): Allocate scalar_evolution_info in gc memory.
19452         * loop-init.c: Include ggc.h.
19453         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
19454         (loop_optimizer_finalize): Use ggc_free.
19455         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
19456         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
19457         pass_iv_optimize): Add TODO_ggc_collect.
19458         * function.h (struct function): Remove skip marker from
19459         x_current_loops.
19460         * cfgloop.c: Include ggc.h.
19461         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
19462         memory.
19463         (establish_preds): Vector superloops is gc allocated.
19464         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
19465         loop->exits list.
19466         (flow_loops_find): Vector larray is gc allocated.
19467         (loop_exit_free): Use ggc_free.
19468         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
19469         that head of exits list is now not a part of struct loop.
19470         (record_loop_exits): Allocate exits table in gc memory.
19471         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
19472         that head of exits list is now not a part of struct loop.
19473         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
19474         struct loop_exit): Add GTY marker.
19475         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
19476         Add skip marker to aux field.  Make head of exits list a separate
19477         object.
19478         (struct loops): Add GTY marker.  Make larray vector gc allocated.
19479         Add param marker to exits table.
19480         (get_loops): Type changed.
19481         * Makefile.in (tree-scalar-evolution.o): Add
19482         gt-tree-scalar-evolution.h dependency.
19483         (cfgloop.o, loop-init.o): Add ggc.h dependency.
19484         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
19485         * basic-block.h (struct basic_block_def): Remove skip marker from
19486         loop_father field.
19487
19488 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
19489
19490         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
19491         of 0 in the call to expand_expr().
19492         (expand_builtin_mathfn_3): Ditto.
19493         (expand_builtin_interclass_mathfn): Ditto.
19494         (expand_builtin_cexpi): Ditto.
19495         (expand_builtin_int_roundingfn): Ditto.
19496         (expand_builtin_int_roundingfn_2): Ditto.
19497         (expand_builtin_pow): Ditto.
19498         (expand_builtin_powi): Ditto.
19499         (expand_builtin_bswap): Ditto.
19500         (expand_builtin_unop): Ditto.
19501         (expand_builtin_fabs): Ditto.
19502         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
19503         the call to expand_expr().
19504         (expand_builtin_sync_operation): Ditto.
19505         (expand_builtin_compare_and_swap): Ditto.
19506         (expand_builtin_lock_test_and_set): Ditto.
19507         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
19508         instead of 0 in the call to expand_expr().
19509         (expand_builtin_extract_return_addr): Ditto.
19510         (expand_builtin_eh_return): Ditto.
19511         (expand_eh_return): Ditto.
19512         * explow.c (expr_size): Ditto.
19513         * expr.c (optimize_bitfield_assignment_op): Ditto.
19514         (expand_assignement): Ditto.
19515         (store_expr): Ditto.
19516         (store_field): Ditto.
19517         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
19518         the call to expand_expr().
19519         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
19520         in the call to expand_expr().
19521         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
19522         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
19523         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
19524         of expand_expr().
19525         * optabs.c (expand_vec_shift_expr): Ditto.
19526         (expand_vec_cond_expr): Ditto.
19527         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
19528         call to expand_expr().
19529         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
19530         in the call to expand_expr().
19531
19532 2007-05-14  Dave Korn  <dave.korn@artimi.com>
19533
19534         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
19535
19536 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
19537
19538         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
19539         instead of c_common_unsigned_type.
19540         (c_common_unsigned_type): Remove.
19541         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
19542         c_common_unsigned_type.
19543         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
19544         c_common_unsigned_type.
19545         * c-common.h (c_common_unsigned_type): Remove.
19546         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
19547         c_common_unsigned_type.
19548         * c-format.c (check_format_types): Use unsigned_type_for instead of
19549         c_common_unsigned_type.
19550         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19551         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
19552         of c_common_unsigned_type.
19553         * convert.c (convert_to_integer): Use unsigned_type_for instead of
19554         lang_hooks.types.unsigned_type.
19555         * expmed.c (make_tree): Use unsigned_type_for instead of
19556         lang_hooks.types.unsigned_type.
19557         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
19558         lang_hooks.types.unsigned_type.
19559         (build_range_check): Likewise.
19560         (fold_unary): Likewise.
19561         (fold_binary): Likewise.
19562         (fold_ternary): Likewise.
19563         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19564         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
19565         * tree.c (get_unsigned_type): New.
19566         (unsigned_type_for): Use get_unsigned_type instead of
19567         lang_hooks.types.unsigned_type.
19568
19569 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
19570
19571         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
19572         to m68k_get_function_kind.  Update its prototype.
19573         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
19574         interrupt_thread.
19575         (m68k_interrupt_function_p): Return enum m68k_function_type
19576         instead of bool.  Rename to m68k_get_function_kind.
19577         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
19578         target is not fido.
19579         (m68k_compute_frame_layout): Don't mark any register for save
19580         if an interrupt_thread attribute is specified.
19581         (m68k_hard_regno_rename_ok): Update a use of
19582         m68k_interrupt_function_p.
19583         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
19584         m68k_interrupt_function_p.
19585         (m68k_function_type): New.
19586         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
19587         for a function with an interrupt_thread attribute.
19588         * doc/extend.texi: Document the interrupt_thread attribute.
19589
19590 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
19591
19592         Fix PR tree-optimization/31911
19593         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
19594         if they didn't change the expression.
19595
19596 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
19597
19598         * tree-scalar-evolution.c (resolve_mixers): Exported.
19599         * tree-scalar-evolution.h (resolve_mixers): Declare.
19600         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
19601         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
19602         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
19603         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
19604         init_array_ref, init_pointer_ref, analyze_indirect_ref,
19605         strip_conversion, analyze_offset_expr, address_analysis,
19606         object_analysis, analyze_offset): Removed.
19607         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
19608         split_constant_offset, canonicalize_base_object_address,
19609         object_address_invariant_in_loop_p, disjoint_objects_p,
19610         dr_may_alias_p, dr_address_invariant_p): New functions.
19611         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
19612         and dr_analyze_alias.
19613         (initialize_data_dependence_relation): Use dr_may_alias_p
19614         and object_address_invariant_in_loop_p.
19615         (compute_self_dependence): Handle the case when
19616         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
19617         (find_data_references_in_stmt): Restrict the analysis of data
19618         references to the given loop nest.
19619         (find_data_references_in_loop): Made static.  Pass loop nest to
19620         find_data_references_in_stmt.
19621         (compute_data_dependences_for_loop): Use DR_VOPS.
19622         (free_data_ref): Free DR_VOPS.
19623         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
19624         (struct innermost_loop_behavior): ... new.
19625         (struct base_object_info): Replaced by ...
19626         (struct indices): ... new.
19627         (struct dr_alias): New.
19628         (enum data_ref_type): Removed.
19629         (struct data_reference): Consist of struct innermost_loop_behavior,
19630         struct indices and struct dr_alias.
19631         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
19632         (DR_MEMTAG): Renamed to ...
19633         (DR_SYMBOL_TAG): ... this.
19634         (find_data_references_in_loop): Declaration removed.
19635         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
19636         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
19637         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
19638         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
19639
19640 2007-05-13  Revital Eres  <eres@il.ibm.com>
19641
19642         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
19643         which walks virtual def-use chains to find redundant stores.
19644         (dse_optimize_stmt): Call it.
19645
19646 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19647
19648         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
19649         * passes.c (init_optimization_passes): Move pass_jump_bypass
19650         after loop2.
19651
19652         * basic-block.h (bb_has_eh_pred): Fix style issue.
19653
19654 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19655
19656         PR rtl-optimization/31848
19657         * loop-invariant.c (move_invariant_reg): If we move an insn
19658         with a REG_EQUAL note, and that insn is not always executed,
19659         remove the REG_EQUAL note.
19660
19661 2007-05-12  Richard Guenther  <rguenther@suse.de>
19662
19663         PR tree-optimization/31797
19664         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
19665         propagate into a stmt that has volatile ops.
19666
19667 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19668
19669         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19670         (gcc_tooldir): Likewise.
19671         * configure: Regenerate.
19672         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19673         old configure.ac gcc_tooldir setting.
19674         (prefix_to_exec_prefix): New variable.
19675         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19676         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19677
19678 2007-05-11  Silvius Rus  <rus@google.com>
19679
19680         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
19681         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
19682         * c-common.h (strict_aliasing_warning): Change return type.
19683         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
19684         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
19685         (build_c_cast): Condition call to strict_aliasing_warning.
19686         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
19687         * flags.h (set_Wstrict_aliasing): Declare.
19688         * opts.c (set_Wstrict_alising): Define, add call to.
19689         * tree-flow.h (strict_aliasing_warning_backend): Declare.
19690         * tree-ssa-alias-warnings.c: New file.
19691         * tree-ssa-alias.c (compute_may_aliases): Add call to
19692         strict_aliasing_warning_backend.
19693
19694 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
19695
19696         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
19697         Use loop_depth and loop_outer accessor functions.
19698         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
19699         determine_invariantness_stmt, move_computations_stmt): Ditto.
19700         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
19701         add_loop, loopify, unloop, fix_loop_structure): Ditto.
19702         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
19703         * tree-scalar-evolution.c (interpret_loop_phi,
19704         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
19705         instantiate_parameters_1, scev_const_prop): Ditto.
19706         * cfghooks.c (make_forwarder_block): Ditto.
19707         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
19708         * modulo-sched.c (loop_canon_p): Ditto.
19709         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
19710         slpeel_can_duplicate_loop_p): Ditto.
19711         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
19712         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
19713         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
19714         cancel_loop, verify_loop_structure): Ditto.
19715         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
19716         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
19717         superloops vector instead of "pred" array.
19718         (establish_preds): Take father loop as an argument.  Initialize the
19719         superloops vector.
19720         (flow_loop_tree_node_add): Pass father loop to establish_preds.
19721         Do not initialize loop->outer.
19722         (flow_loop_tree_node_remove): Truncate the superloops vector.
19723         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
19724         "pred" merged to "superloops" vector.
19725         (loop_depth, loop_outer): New.
19726         (fel_init): Use loop_outer.
19727
19728 2007-05-11  Jan Hubicka  <jh@suse.cz>
19729
19730         * cgraphunit.c: Include gt-cgraphunit.h
19731         (static_ctors, static_dtors): New static vars.
19732         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
19733         based on implementation in c-common.c
19734         (cgraph_finalize_function): Call record_cdtor_fn.
19735         (cgraph_optimize): Call cgraph_build_cdtor_fns.
19736         * decl.c (finish_function): Do not call c_record_cdtor_fn.
19737         (c_write_global_declarations): Do not call c_build_cdtor_fns.
19738         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
19739         build_cdtor, c_build_cdtor_fns): Remove.
19740         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
19741         c_build_cdtor_fns): Remove prototype.
19742
19743 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
19744
19745         PR other/31852
19746         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
19747         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
19748         * builtins.c (fold_builtin_memchr): New.
19749         (expand_builtin_memchr): Call the latter.
19750         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
19751         * doc/extend.texi ([Other built-in functions provided by GCC]):
19752         Document memchr.
19753
19754 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
19755
19756         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
19757         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
19758         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
19759         PFPO_OP1_TYPE_SHIFT): Constants added.
19760         (DFP_ALL): Mode macro defined.
19761         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
19762         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
19763         Insn definitions added.
19764         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
19765         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
19766         Expanders added.
19767
19768 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
19769
19770         PR tree-optimization/31885
19771         * tree-chrec.c (chrec_contains_undetermined): Do not consider
19772         NULL_TREE to be undetermined.
19773         (automatically_generated_chrec_p): Return false for NULL.
19774
19775 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19776
19777         * config/bfin/bfin.h (MOVE_RATIO): Define.
19778
19779 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
19780
19781         * config.gcc (sparc-wrs-vxworks): New target.
19782         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
19783         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
19784         * config/sparc/sparc.h: Include vxworks-dummy.h.
19785         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
19786         include LABEL_REFs too.
19787         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
19788         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
19789         VxWorks.
19790         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
19791         on VxWorks.
19792         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
19793         (sparc_emit_call_insn): New function.
19794         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
19795         functions when generating VxWorks PIC.
19796         * config/sparc/sparc.md (vxworks_load_got): New pattern.
19797         (call, call_value): Use sparc_emit_call_insn instead of
19798         emit_call_insn.
19799
19800 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19801
19802         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
19803
19804 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19805
19806         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
19807         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
19808         split_double instead of operand_subword.
19809
19810 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19811
19812         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
19813         * config/bfin/bfin.c (bfin_local_alignment): New function.
19814         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
19815
19816 2007-05-08  Chao-ying Fu  <fu@mips.com>
19817
19818         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
19819         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
19820         (smsub_widen_optab, umsub_widen_optab): Define.
19821         * optabs.c (init_optabs): Initialize smsub_widen_optab and
19822         umsub_widen_optab.
19823         * genopinit.c (optabs): Fill in smsub_widen_optab and
19824         umsub_widen_optab.
19825         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
19826         and umsub_widen_optab to implement multiply-subtract sequences.
19827         * config/mips/mips.md (*msac<u>_di): Rename to...
19828         (<u>msubsidi4): ...this.  Extend condition to include
19829         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19830         of operand 0 to "ka" and use the three-operand form of msub<u>
19831         for TARGET_DSPR2.
19832         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
19833         to define_expands.
19834
19835 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19836
19837         PR rtl-optimization/28011
19838         * reload.c (push_reload): Set dont_share if IN appears in OUT
19839         also when IN is a PLUS rtx.
19840         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
19841         are same PLUS rtx.
19842
19843 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
19844
19845         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
19846         call unshare_all_decls.
19847         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
19848         (unshare_all_decls): Remove.
19849
19850 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
19851
19852         PR 31847
19853         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
19854         dumps.
19855
19856 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
19857             Nigel Stephens  <nigel@mips.com>
19858
19859         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
19860         Update comments and all uses.
19861         (MIN_FPRS_PER_FMT): Define.
19862         * config/mips/mips.c (function_arg): Fix to correctly handle
19863         the -mips32r2 -mfp64 -mabi=32 case.
19864         (override_options): Enable use of odd-numbered registers for
19865         SFmode values on MIPS32.
19866         (mips_save_reg_p): Save whole floating-point register pair if
19867         either half is used.
19868         (compute_frame_size): Fix comment.
19869
19870 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
19871
19872         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
19873         argument of type bool.
19874         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
19875         argument. Safely select temporary P register according to it.
19876         (do_link): Change call site of add_to_reg accordingly.
19877         (do_unlink): Add epilogue_p as a fourth argument and pass it
19878         to add_to_reg.
19879         (expand_interrupt_handler_epilogue): Change call of do_unlink
19880         accordingly.
19881         (bfin_expand_prologue): Add a third argument sibcall_p.
19882         * config/bfin/bfin.md (epilogue): Change call of
19883         bfin_expand_epilogue accordingly.
19884         (sibcall_epilogue): Likewise.
19885         (eh_return_internal): Likewise.
19886
19887         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
19888         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
19889         * config/bfin/bfin.c (bfin_handle_option): Handle
19890         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
19891         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
19892         Support bf534, bf536 and bf561.
19893         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
19894
19895 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
19896
19897         PR target/31854
19898         * config/i386/i386.c (ix86_function_regparm): Process local
19899         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
19900
19901 2007-05-07  Mike Stump  <mrs@apple.com>
19902
19903         * doc/invoke.texi (Warning Options): Document that -Wempty-body
19904         also checks for and while statements in C++.
19905
19906 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
19907
19908         * gcc.c (at_file_supplied): New variable.
19909         (main): Set it if we expanded argv.
19910         (do_spec_1): Pass an @-file to the linker if we were called with
19911         an @-file argument and HAVE_GNU_LD.
19912         * collect2.c (at_file_supplied): New variable.
19913         (response_file): New variable.
19914         (collect_exit): Unlink response_file if necessary.
19915         (handler): Likewise.
19916         (do_wait): Likewise.
19917         (main): Set at_file_supplied if we expanded argv.
19918         (collect_execute): Pass an @-file to subprocesses if we were called
19919         with an @-file argument.
19920         * configure.ac: Add define for HAVE_GNU_LD.
19921         * configure: Regenerate.
19922         * config.in: Regenerate.
19923
19924 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
19925
19926         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
19927         operand to HI mode.
19928         (mulsi3): New.
19929         (divsi3): New.
19930         (udivsi3): New.
19931
19932 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
19933
19934         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19935         (TARGET_ENCODE_SECTION_INFO): Re-define.
19936         (m32c_encode_section_info): New
19937         (function_vector_handler): New
19938         (current_function_special_page_vector): New
19939         (m32c_special_page_vector_p): New.
19940         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
19941         Prototype.
19942         * config/m32c/jump.md: Added instruction JSRS for functions
19943         with attribute "function_vector".
19944         * doc/extend.texi (function_vector): Added description
19945         for M16C, M32C targets.
19946
19947 2007-05-07  DJ Delorie  <dj@redhat.com>
19948
19949         PR 31794
19950         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
19951         ashrpsi3, lshrpsi3): Update shift count constraint.
19952
19953 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
19954             Nathan Froyd  <froydnj@codesourcery.com>
19955
19956         PR 22133
19957         * c-incpath.c (add_path): Strip trailing path separators.
19958
19959 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
19960
19961         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
19962         Free dominance info before purging EH edges.
19963         (eliminate_degenerate_phis): Likewise.
19964         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
19965
19966 2007-05-07  Jan Hubicka  <jh@suse.cz>
19967
19968         * gimplify.c (gimplify_expr): Do not crash when folding
19969         (void *)(int)&a + 4.
19970
19971 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19972
19973         PR driver/31694
19974         * c-opts.c (lang_fortran): Make it non static.
19975         * c-common.h (lang_fortran): New prototype.
19976         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
19977         -lang-fortran option was passed by the driver.
19978
19979 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
19980
19981         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
19982         of ASSERT_CHECKING.  Tweak message.
19983
19984 2007-05-06  Revital Eres  <eres@il.ibm.com>
19985
19986         PR 30957
19987         * loop-unroll.c (insert_var_expansion_initialization):
19988         Initialize the expansions with -zero instead of +zero.
19989
19990 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
19991
19992         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
19993         into pic and non-pic versions. Mark r19 as used for
19994         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
19995         for tgd_load, tld_load and tie_load .
19996         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
19997         version of tgd_load, tld_load and tie_load depending on the
19998         value of flag_pic.
19999
20000 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
20001             Jakub Jelinek  <jakub@redhat.com>
20002
20003         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
20004         (__do_global_dtors_aux): Use more paranoid loop to run
20005         destructors if HIDDEN_DTOR_LIST_END.
20006         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
20007
20008 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
20009
20010         * varasm.c (align_variable): Don't increase alignment for
20011         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
20012         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
20013
20014 2007-05-04  Josh Conner  <jconner@apple.com>
20015
20016         * basic-block.h (cdi_direction): Assign values to all enumeration
20017         constants.
20018         (dom_computed): Remove.
20019         (dom_info_state): New.
20020         (set_dom_info_availability): New.
20021         * tree-ssa-loop-im.c (determine_invariantness): Initialize
20022         walk_data.dom_direction.
20023         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
20024         instead of dom_computed[].
20025         (split_edge): Likewise.
20026         (create_basic_block): Likewise.
20027         (merge_blocks): Likewise.
20028         * ifcvt.c (find_if_header): Likewise.
20029         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
20030         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
20031         * tree-ssa.c (verify_ssa): Likewise.
20032         * tree-cfg.c (tree_verify_flow_info): Likewise.
20033         (remove_edge_and_dominated_blocks): Likewise.
20034         * dominance.c (dom_computed): Make static.
20035         (calc_dfs_tree_nonrec): Change third param to a bool.
20036         (calc_dfs_tree): Change second param to a bool.
20037         (calc_idioms): Change second param to a bool.  Use
20038         dom_convert_dir_to_idx.
20039         (init_dom_info): Validate dir before using.
20040         (dom_convert_dir_to_idx): New.
20041         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
20042         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
20043         (free_dominance_info): Use dom_convert_dir_to_idx.
20044         (get_immediate_dominator): Likewise.
20045         (set_immediate_dominator): Likewise.
20046         (get_dominated_by): Likewise.
20047         (redirect_immediate_dominators): Likewise.
20048         (nearest_common_denominator): Likewise.
20049         (dominated_by_p): Likewise.
20050         (bb_dom_dfs_in): Likewise.
20051         (bb_dom_dfs_out): Likewise.
20052         (recount_dominator): Likewise.
20053         (iterate_fix_dominators): Likewise.
20054         (add_to_dominance_info): Likewise.
20055         (delete_from_dominance_info): Likewise.
20056         (first_dom_son): Likewise.
20057         (next_dom_son): Likewise.
20058         (dom_info_available_p): Likewise.
20059         (dom_info_state): New.
20060         (set_dom_info_availability): New.
20061
20062 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20063
20064         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
20065         Expander removed.
20066         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
20067
20068 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
20069
20070         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
20071         (subdi3, subdi_carry): Delete.
20072
20073 2007-05-04  Jan Hubicka  <jh@suse.cz>
20074             Richard Guenther  <rguenther@suse.de>
20075
20076         * opts.c (decode_options): Do not fiddle with inlining
20077         parameters in case of optimizing for size.
20078         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
20079         for size do nothing.
20080         (cgraph_decide_inlining_of_small_function): When optimizing for
20081         size never inline functions increasing caller size.
20082         (cgraph_early_inlining): Inline for size when optimizing for size.
20083
20084 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
20085
20086         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
20087         logical operations piecewise.
20088         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
20089         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
20090         subdi_sesidi_di): Delete.
20091         (add_with_carry): Produce carry in CC instead of a DREG to shorten
20092         the generated sequence.  Allow three-reg add in constraints.  Rewrite
20093         the rtl expression for carry to avoid zero_extend of a constant.
20094         (sub_with_carry): New pattern.
20095         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
20096         different sequence not involving jumps.
20097         (notbi): Now a named pattern.
20098
20099 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
20100
20101         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
20102         Add the note about a significant loss of accuracy of some
20103         mathematical routines when these options are used.
20104
20105 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20106
20107         * haifa-sched.c (rtx_vec_t): New typedef.
20108         (contributes_to_priority_p): Extract piece of priority () into new
20109         static function.
20110         (priority): Use the function.  Add assertion.
20111         (rank_for_schedule, set_priorities): Add assertion to check that
20112         insn's priority is initialized.
20113         (clear_priorities, calc_priorities): Change signature.  Make it update
20114         all relevant insns.  Update all callers ('add_to_speculative_block ()'
20115         and 'create_block_check_twin ()').
20116         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
20117         Add new field 'priority_status'.
20118         (INSN_PRIORITY_STATUS): New macro.
20119         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
20120
20121 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20122
20123         * sched-ebb.c (debug_ebb_dependencies): New static function.
20124         (init_ready_list): Use it.
20125
20126         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
20127         with changed signature and 'debug_rgn_dependencies ()'.
20128         (debug_rgn_dependencies): New static function.
20129         (init_ready_list): Use it.
20130
20131         * sched-int.h (debug_dependencies): Declare.
20132
20133 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20134
20135         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
20136
20137 2007-05-04  Dirk Mueller  <dmueller@suse.de>
20138
20139         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
20140
20141 2007-05-03  Jan Hubicka  <jh@suse.cz>
20142
20143         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
20144         ((T1)X op (T1)Y), for pointer type in more cases than before.
20145
20146         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
20147
20148         * tree-object-size.c (plus_expr_object_size): When operand size is
20149         unknown, return unknown.
20150
20151 2007-05-03  Dirk Mueller  <dmueller@suse.de>
20152
20153         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
20154
20155         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
20156         options.
20157
20158         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
20159
20160 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
20161
20162         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
20163
20164 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
20165
20166         * config/soft-fp/double.h, config/soft-fp/extended.h,
20167         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
20168         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
20169         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
20170         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
20171         glibc CVS.
20172
20173 2007-05-03  Ian Lance Taylor  <iant@google.com>
20174
20175         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
20176         MASK_PPC_GFXOPT for 8540 or 8548.
20177
20178 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20179
20180         * tree-vect-transform.c (vect_update_inits_of_drs): Use
20181         vect_print_dump_info() to output debug information.
20182
20183 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20184
20185         PR target/31768
20186         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
20187         operands of size 2 when operand is not MEM_P.
20188
20189 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20190
20191         PR tree-optimization/30565
20192         * lambda-code.c (perfect_nestify): Fix updating of dominators.
20193
20194 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
20195
20196         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
20197         (umulsi3_highpart): Use them.
20198         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
20199         for final accumulator to D regisster tranfser.
20200
20201 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
20202
20203         PR tree-optimization/31699
20204         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
20205         wrong code.
20206         (vect_enhance_data_refs_alignment): Compute peel amount using
20207         TYPE_VECTOR_SUBPARTS instead of vf.
20208         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
20209
20210 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
20211
20212         PR bootstrap/31776
20213         * system.h: Remove inclusion of double-int.h
20214         * tree.h: Include double-int.h
20215         * gengtype.c: Likewise
20216         * cfgloop.h: Likewise
20217         * Makefile.in: Adjust dependencies on double-int.h
20218
20219 2007-05-02  Eric Christopher  <echristo@apple.com>
20220
20221         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
20222         -shared to -Zdynamiclib.
20223
20224 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
20225
20226         PR c++/31663
20227         * c-common.c (strip_pointer_or_array_types): New function.
20228         * c-common.h (strip_pointer_or_array_types): New function declaration.
20229
20230 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20231
20232         PR tree-optimization/31771
20233         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
20234
20235 2007-05-02  Paul Brook  <paul@codesourcery.com>
20236
20237         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
20238
20239 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20240
20241         PR middle-end/29715
20242         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
20243         transformation.
20244
20245 2007-05-02  Nick Clifton  <nickc@redhat.com>
20246
20247         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
20248
20249 2007-05-02  Richard Guenther  <rguenther@suse.de>
20250
20251         PR tree-optimization/31146
20252         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
20253         argument, single_use_p.  If we have a single use that is
20254         a conversion to the definition rhs type, propagate that rhs.
20255         (forward_propagate_addr_expr): Pass single_use_p argument
20256         to forward_propagate_addr_expr_1.
20257
20258 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20259
20260         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
20261         variable.
20262
20263 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20264
20265         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
20266         'AMD Family 10 core'.
20267
20268 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20269
20270         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
20271         and athlon64-sse3 as improved versions of k8, opteron and athlon64
20272         with SSE3 instruction set support.
20273         * doc/invoke.texi: Likewise.
20274
20275 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20276
20277         * config/i386/i386.c (override_options): Tuning 32-byte loop
20278         alignment for amdfam10 architecture. Increasing the max loop
20279         alignment to 24 bytes.
20280
20281 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
20282
20283         * config/m68k/constraints.md: New.
20284         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
20285         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
20286         EXTRA_CONSTRAINT): Remove.
20287         * config/m68k/m68k.md: Include constraints.md.
20288         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
20289
20290 2007-05-01  Ian Lance Taylor  <iant@google.com>
20291
20292         PR tree-optimization/31739
20293         * tree-vrp.c (vrp_val_is_max): New static function.
20294         (vrp_val_is_min): New static function.
20295         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
20296         copying the node.
20297         (set_value_range): Use vrp_val_is_{max,min}.
20298         (extract_range_from_assert): Likewise.
20299         (extract_range_from_binary_expr): Likewise.
20300         (extract_range_from_unary_expr): Likewise.
20301         (dump_value_range, vrp_meet): Likewise.
20302         (vrp_visit_phi_node): Likewise.
20303         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
20304
20305 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
20306
20307         * config/i386/gmon-sol2.c (size_t): New type.
20308         (intptr_t): Likewise.
20309         (s_textsize): Declare as size_t.
20310         (sbrk): Declare.
20311         (monstartup): Use size_t for sizes.
20312         (_mcount): Save and restore registers.
20313         (internal_mcount): Pass 0 as the first argument to monstartup
20314         in 64-bit mode.
20315         (moncontrol): Convert pointer to appropriately sized integer
20316         before passing to profil.
20317
20318 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20319
20320         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
20321         __NO_FPRS__, not just if _SOFT_DOUBLE.
20322         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
20323         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
20324         also for E500 double.
20325         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
20326         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
20327         && !TARGET_FPRS).
20328
20329 2007-05-01  Richard Guenther  <rguenther@suse.de>
20330
20331         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
20332         is NULL.
20333
20334 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20335
20336         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
20337
20338 2007-05-01  Jan Hubicka  <jh@suse.cz>
20339
20340         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
20341         invariant.
20342
20343 2007-05-01  Jan Hubicka  <jh@suse.cz>
20344
20345         * tree.h (maybe_fold_offset_to_component_ref): Remove.
20346         (maybe_fold_offset_to_reference): Declare.
20347         * fold-const.c (fold_unary): Do not fold
20348         (type *)&A into &A->field_of_type_and_offset_0
20349         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
20350         size is unknown, give up.
20351         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
20352         offsets.
20353         (maybe_fold_offset_to_reference): New.
20354         (maybe_fold_stmt_indirect): Use it.
20355         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
20356         * gimplify.c (gimplify_conversion): Canonicalize conversions to
20357         field references.
20358         (gimplify_expr): Likewise for plus_expr.
20359
20360 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
20361
20362         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
20363         bsi_after_labels.  Always insert statements before bsi.
20364         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
20365         * predict.c (apply_return_prediction): Check for empty blocks.
20366         * cfgexpand.c (lab_rtx_for_bb): New variable.
20367         (label_rtx_for_bb): Do not create new tree labels.
20368         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
20369         (tree_expand_cfg): Initialize lab_rtx_for_bb.
20370         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
20371         creating edges.
20372         (label_for_bb): Add field used.
20373         (update_eh_label, main_block_label): Mark the label used.
20374         (cleanup_dead_labels): Remove unused labels.
20375
20376 2007-05-01  Richard Guenther  <rguenther@suse.de>
20377
20378         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
20379         if it is not about to be set.
20380         (get_value_range): Do not pre-allocate equiv bitmap.
20381         (update_value_range): No need to clear equiv field.
20382         (add_equivalence): Change prototype to get bitmap pointer.
20383         Allocate bitmap here if it is not already.
20384         (extract_range_from_assert): Do not allocate bitmap here.
20385         Update callers to add_equivalence.
20386         (extract_range_from_ssa_name): Likewise.
20387         (get_vr_for_comparison): New static helper.
20388         (compare_name_with_value): Handle NULL equiv bitmap by
20389         peeling the first iteration of the comparison loop.
20390         Use get_vr_for_comparison.
20391         (compare_names): Handle NULL equiv bitmaps by using fake
20392         ones.  Use get_vr_for_comparison.
20393
20394 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
20395
20396         * double-int.c (mpz_set_double_int): Moved from
20397         tree-ssa-loop-niter.c.
20398         (mpz_get_double_int): Likewise; also, add option to wrap
20399         out-of-range integers.
20400         * double-int.h: New prototypes for above.
20401         * tree.c (get_static_type_bounds): Moved from
20402         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
20403         TYPE_MAX_VALUE if they exist..
20404         * tree.h: New prototype for above.
20405         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
20406         get_type_bounds calls.
20407         (mpz_set_double_int): Move to double-int.c.
20408         (get_type_bounds): Move to tree.c, rename to
20409         get_static_type_bounds.
20410         (mpz_to_double_int): Move to double-int.c, rename to
20411         mpz_get_double_int.
20412
20413 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
20414
20415         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
20416         DIV0 exception can fall through to a normal return.
20417
20418 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
20419
20420         PR middle-end/22156
20421         Temporarily revert:
20422         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
20423         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
20424         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20425         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
20426         initialize align to silence bogus warning.
20427         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20428         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
20429         all_no_warning.
20430         (struct sra_walk_fns): Remove use_all parameter from use.
20431         (sra_hash_tree): Handle BIT_FIELD_REFs.
20432         (sra_elt_hash): Don't hash bitfld blocks.
20433         (sra_elt_eq): Skip them in parent compares as well.  Handle
20434         BIT_FIELD_REFs.
20435         (sra_walk_expr): Don't maintain or pass down use_all_p.
20436         (scan_use): Remove use_all parameter.
20437         (scalarize_use): Likewise.  Re-expand assignment to
20438         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
20439         output, and re-scalarize after output.  Don't mark anything
20440         for no warning.
20441         (scalarize_ldst): Adjust.
20442         (scalarize_walk_gimple_modify_statement): Likewise.
20443         (build_element_name_1): Handle BIT_FIELD_REFs.
20444         (instantiate_element): Don't warn for any element whose parent
20445         is used as a whole.
20446         (instantiate_missing_elements_1): Return the sra_elt.
20447         (canon_type_for_field): New.
20448         (try_instantiate_multiple_fields): New.
20449         (instantiate_missing_elemnts): Use them.
20450         (mark_no_warning): Removed.
20451         (generate_one_element_ref): Handle BIT_FIELD_REFs.
20452         (REPLDUP, sra_build_elt_assignment): New.
20453         (generate_copy_inout): Use them.
20454         (generate_element_copy): Likewise.  Handle bitfld differences.
20455         (generate_element_zero): Don't recurse for blocks.  Use
20456         sra_build_elt_assignment.
20457         (generate_one_element_int): Take elt instead of var.  Use
20458         sra_build_elt_assignment.
20459         (generate_element_init_1): Adjust.
20460         (scalarize_use, scalarize_copy): Use REPLDUP.
20461         (scalarize_ldst): Move assert before dereference.
20462         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20463
20464 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20465
20466         PR C++/31721
20467         * tree.c (reconstruct_complex_type): Reconstruct a reference
20468         correctly.
20469         Also use the same mode for the pointer as the old pointer type.
20470
20471 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20472
20473         * doc/trouble.texi (Interoperation): Remove note about Ultrix
20474         Fortran compiler.
20475
20476 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
20477
20478         PR rtl-optimization/31676
20479         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
20480         (df_refs_record): Call it.
20481
20482 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
20483
20484         * rtl.def (SS_ABS): New code.
20485         * config/bfin/bfin.c (print_operand): New modifier 'v'.
20486         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
20487         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
20488         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
20489         (bfin_init_builtins): Define them.
20490         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
20491         (bfin_expand_builtin): ... and handle the others here.
20492         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
20493         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
20494         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
20495         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
20496         operand is only HImode.
20497
20498 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
20499
20500         * regclass.c (scan_one_insn): Remove splitting of
20501         two address insns.
20502
20503 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
20504             Nigel Stephens  <nigel@mips.com>
20505
20506         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
20507
20508 2007-04-28  Jan Hubicka  <jh@suse.cz>
20509
20510         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
20511         insn_locators_alloc instead of insn_locators_initialize;
20512         call reset_block_changes.
20513         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20514         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
20515         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
20516         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
20517         * config/score/score.c (th_output_mi_thunk): Likewise.
20518         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
20519         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
20520         tolerate uninitialized locator info.
20521
20522         Re-apply:
20523         * function.c (init_function_start): Don't init line number info.
20524         (expand_function_end): Update.
20525         (reset_block_changes, record_block_change, finalize_block_changes,
20526         check_block_change, free_block_changes): Kill.
20527         * function.h (reset_block_changes, record_block_change,
20528         finalize_block_changes, check_block_change, free_block_changes):
20529         Remove prototypes.
20530         (struct function): Remove ib_boundaries_block.
20531         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20532         Use curr_insn_locator to initialize locator.
20533         (emit_line_note): Remove.
20534         * cfgexpand.c (expand_gimple_cond_expr): Update.
20535         (construct_exit_block): Likewise.
20536         (tree_expand_cfg): Initialize/finalize locators.
20537         * expr.c (expand_expr_real): Update.
20538         * cfglayout.c (line_locators_locs, line_locators_lines,
20539         file_locators_locs, file_locators_files): Remove.
20540         (set_block_levels): Move to cfgexpand.c.
20541         (insn_locators_initialize): Remove.
20542         (pass_insn_locators_initialize): Remove.
20543         (locations_locators_locs, locations_locators_vals): New static vars.
20544         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20545         Likewise.
20546         (insn_locators_alloc, insn_locators_finalize,
20547         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20548         New functions.
20549         (locator_location): New.
20550         (locator_line, locator_file): Rewrite.
20551         * rtl.h (emit_line_note): Kill.
20552         (insn_locators_alloc, insn_locators_finalize,
20553         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20554         Declare.
20555         * tree-inline.c (initialize_cfun): Do not initialize
20556         ib_boundaries_block.
20557         * passes.c (pass_insn_locators_initialize): Remove.
20558
20559 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
20560
20561         * tree-cfg.c (move_block_to_fn): Release bb from dominance
20562         info.  Update last_basic_block correctly.
20563
20564 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
20565
20566         PR target/31701
20567         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
20568         register itself to hold the offset constant.  Tell flow the use
20569         of r4 and r5 when they are used.
20570
20571 2007-04-27  Richard Guenther  <rguenther@suse.de>
20572
20573         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
20574         if we simplified anything.
20575         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
20576         warnings until we did a simplification and the stmt was not
20577         marked as TREE_NO_WARNING.
20578
20579 2007-04-27  Mike Stump  <mrs@apple.com>
20580
20581         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
20582
20583 2007-04-27  Ian Lance Taylor  <iant@google.com>
20584
20585         PR middle-end/31710
20586         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
20587         TYPE_MAX_VALUE exist, convert them to the new type.
20588
20589 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20590
20591         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
20592         if it claims to be available.
20593         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
20594         edge is redirected.
20595         (perform_tree_ssa_dce): Always free postdominators.
20596
20597 2007-04-27  Richard Henderson  <rth@redhat.com>
20598
20599         * config/alpha/predicates.md (aligned_memory_operand): Mark
20600         as define_special_predicate.
20601         (unaligned_memory_operand, normal_memory_operand): Likewise.
20602         (reg_or_unaligned_mem_operand): Remove.
20603         (any_memory_operand): Match the documentation and check for
20604         non-renumbered pseudos during reload.
20605         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
20606         alpha_secondary_reload_class, update to new interface, make static.
20607         Handle CQImode like HImode.  Remove FP subreg check.
20608         (alpha_expand_mov): Use replace_equiv_address.
20609         (alpha_expand_mov_nobwx): Use any_memory_operand.
20610         (TARGET_SECONDARY_RELOAD): New.
20611         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
20612         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
20613         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
20614         * config/alpha/alpha.md: ... here.
20615         (RELOAD12, reloadmode): New.
20616         (movcqi): New.
20617         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
20618         Don't handle the aligned case here.
20619         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
20620         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
20621         reload_inhi_help.  Don't expect a scratch register.
20622         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
20623         reload_outhi_help.
20624         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
20625
20626 2007-04-27  Richard Guenther  <rguenther@suse.de>
20627
20628         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
20629
20630 2007-04-27  Richard Guenther  <rguenther@suse.de>
20631
20632         PR tree-optimization/30965
20633         PR tree-optimization/30978
20634         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
20635         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
20636         (find_equivalent_equality_comparison): Likewise.
20637         (simplify_cond): Likewise.
20638         (get_prop_source_stmt): New helper.
20639         (get_prop_dest_stmt): Likewise.
20640         (can_propagate_from): Likewise.
20641         (remove_prop_source_from_use): Likewise.
20642         (combine_cond_expr_cond): Likewise.
20643         (forward_propagate_comparison): New function.
20644         (forward_propagate_into_cond): Rewrite to use fold for
20645         tree combining.
20646         (tree_ssa_forward_propagate_single_use_vars): Call
20647         forward_propagate_comparison to propagate comparisons.
20648
20649 2007-04-27  Richard Guenther  <rguenther@suse.de>
20650
20651         PR tree-optimization/31715
20652         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
20653         sure to do computation on the offset in an appropriate
20654         signed type.
20655
20656 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
20657
20658         * reload.h (elimination_target_reg_p): Declare.
20659         * reload.c (find_reloads): Don't apply the reg_rtx move
20660         optimization if the SET_DEST satisfies elimination_target_reg_p.
20661         * reload1.c (elimination_target_reg_p): New function.
20662         (gen_reload): In the move/add2 fallback, make sure that op0
20663         does not overlap the destination register.
20664
20665 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20666
20667         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
20668         transform only GIMPLE_MODIFY_STMTs.
20669         * tree-complex.c (expand_complex_operations_1): Ditto.
20670         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
20671         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
20672         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
20673         branches.
20674         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
20675         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
20676         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
20677         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
20678         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
20679         slpeel_add_loop_guard): Ditto.
20680         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
20681         * lambda-code.c (perfect_nestify): Ditto.
20682         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
20683         before the first statement.
20684         * tree-optimize.c (execute_free_datastructures): Fix comments.
20685         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
20686         * tree-flow.h (disband_implicit_edges): Declaration removed.
20687         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
20688         branches.
20689         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
20690         COND_EXPRs without gotos.
20691         (disband_implicit_edges, has_label_p): Removed.
20692         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
20693         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
20694         branches.
20695         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
20696         side effects.
20697         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
20698         also for COND_EXPRs.
20699         * cfgexpand.c (label_rtx_for_bb): New function.
20700         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
20701         Use label_rtx_for_bb to find the labels.
20702         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
20703         last block.  Detect fallthru edges.
20704
20705 2007-04-26  Ian Lance Taylor  <iant@google.com>
20706
20707         PR target/28675
20708         * reload.c (find_reloads_subreg_address): If the address was valid
20709         in the original mode but not in the new mode, reload the whole
20710         address.
20711
20712 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20713
20714         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
20715         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
20716         (cleanup_control_expr_graph): Do not invalidate dominance info.
20717         Record altered blocks.
20718         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
20719         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
20720         cleanup_tree_cfg_bb): New functions.
20721         (remove_forwarder_block): Do not maintain the worklist of blocks.
20722         Record altered blocks.
20723         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
20724         not over whole cfg.
20725         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
20726         delete_unreachable_blocks if dominators are not available.
20727         * tree-inline.c (optimize_inline_calls): Free dominance information
20728         earlier.
20729         * tree-flow.h (remove_edge_and_dominated_blocks,
20730         cfgcleanup_altered_bbs): Altered.
20731         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
20732         blocks.
20733         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
20734         functions.
20735         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
20736         do not invalidate dominators.
20737
20738 2007-04-26  Anatoly Sokolov <aesok@post.ru>
20739
20740         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
20741         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
20742         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
20743         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
20744
20745 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
20746
20747         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
20748
20749 2007-04-26  Richard Guenther  <rguenther@suse.de>
20750
20751         PR tree-optimization/31703
20752         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
20753         the right type for the target of the bittest.
20754
20755 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20756
20757         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
20758         ix86_sol10_return_in_memory.
20759
20760 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20761
20762         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
20763         variables.
20764
20765 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
20766
20767         PR c++/31598
20768         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
20769
20770         PR tree-optimization/30558
20771         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
20772         clear this_state.prev_try.
20773
20774 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20775             Mark Mitchell  <mark@codesourcery.com>
20776
20777         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
20778         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
20779         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
20780
20781 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20782
20783         PR driver/31107
20784         * doc/invoke.texi (%:print-asm-header): Document.
20785         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
20786         and -ftarget-help.
20787         (static_spec_functions): Add print-asm-header.
20788         (main): Print a banner before the --target-help linker options.
20789         (print_asm_header_spec_function): New function.
20790
20791 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
20792
20793         PR target/31403
20794         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
20795         (movsf_ie): Likewise.
20796
20797 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
20798
20799         * doc/extend.texi ([Type Traits]): Adjust per N2255.
20800
20801 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
20802
20803         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
20804         exception for divide-by-zero.
20805         (__umodsi3, __modsi3): Likewise.
20806
20807 2007-04-25  Dirk Mueller  <dmueller@suse.de>
20808
20809         * c-typeck.c (build_compound_expr): Annotate warning()
20810         call with OPT_Wunused_value.
20811         * tree-ssa.c (warn_uninit): Annotate warning with
20812         OPT_Wunintialized.
20813         * c-common.c (handle_sentinel_attribute): Annotate warning
20814         call with OPT_Wattributes.
20815
20816 2007-04-25  Thiemo Seufer  <ths@mips.com>
20817
20818         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
20819         (mips16): Fix typo.
20820         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
20821         on to the assembler.  Improve handling of -mno-mips16.  Add handling
20822         of -mno-mips3d, -mno-dsp, -mno-dspr2.
20823         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
20824         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
20825         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
20826
20827 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
20828
20829         PR target/31680
20830         * config/i386/winnt.c (i386_pe_file_end): Strip only
20831         USER_LABEL_PREFIX when writing export name.
20832
20833 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
20834
20835         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
20836         sh/elf.h, vx-common.h and vxworks.h.
20837         * config/sh/sh.h: Include config/vxworks-dummy.h.
20838         (SUBTARGET_OVERRIDE_OPTIONS): Define.
20839         (OVERRIDE_OPTIONS): Use it.
20840         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
20841         (vxworks_picreg): New pattern.
20842         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
20843         VXWORKS_OS_CPP_BUILTINS.
20844         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
20845         to their VXWORKS_* equivalents.
20846         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
20847         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
20848         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
20849         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
20850         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
20851         -mrtp/-fPIC multilibs.
20852         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
20853         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
20854         (MULTILIB_OSDIRNAMES): Delete.
20855
20856 2007-04-25  Anatoly Sokolov <aesok@post.ru>
20857
20858         PR target/18989
20859         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
20860
20861 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
20862
20863         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
20864         rounding mode to be specified by the caller.
20865         (real_to_mpfr) Likewise.
20866         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
20867         include new arguments.
20868         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
20869
20870 2007-04-24  Ian Lance Taylor  <iant@google.com>
20871
20872         PR tree-optimization/31605
20873         * tree-vrp.c (set_value_range): Check that min and max are not
20874         both overflow infinities.
20875         (set_value_range_to_value): New static function.
20876         (extract_range_from_binary_expr): Call set_value_range_to_value.
20877         (extract_range_from_cond_expr): Likewise.
20878         (extract_range_from_expr): Likewise.
20879         (extract_range_from_unary_expr): Likewise.  Don't create a range
20880         which overflows on both sides.
20881         (vrp_meet): Check for a useless range.
20882         (vrp_visit_phi_node): If we see a constant which looks like an
20883         overflow infinity, turn off the TREE_OVERFLOW flag.
20884
20885 2007-04-24  Ian Lance Taylor  <iant@google.com>
20886
20887         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
20888
20889 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
20890
20891         PR diagnostic/25923
20892         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
20893         diagnostic message is being built.
20894         * tree-pretty-print.c (dump_generic_node): Only write the
20895         formatted text into BUFFER's stream if we are not building a
20896         diagnostic message.
20897         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
20898         dump_generic_node.
20899         * Makefile.in (toplev.o): Depend on tree-pass.h.
20900
20901 2007-04-24  Ian Lance Taylor  <iant@google.com>
20902
20903         PR tree-optimization/31602
20904         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
20905         conditionals in the copied loop header.
20906         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
20907         warnings if TREE_NO_WARNING is set.
20908         * doc/invoke.texi (Warning Options): Clarify that
20909         -Wstrict-overflow does not warn about loops.
20910
20911 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
20912
20913         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
20914         expand on the comment about _Decimal128 arguments and check the
20915         integer result of the modulus operation; for 64-bit ELF ABI, ensure
20916         that _Decimal128 argument uses even/odd register pair.
20917         (function_arg): Ditto.
20918
20919 2007-04-24  Hui-May Chang <hm.chang@apple.com>
20920
20921         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
20922         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
20923
20924 2007-04-24  Richard Guenther  <rguenther@suse.de>
20925             Olga Golovanevsky  <olga@il.ibm.com>
20926
20927         * fold-const.c (multiple_of_p): Check for bottom
20928         to be zero.
20929
20930 2007-04-24  Richard Henderson  <rth@redhat.com>
20931
20932         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
20933         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
20934         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
20935         looking for non-zero bits shifted out.  Avoid a recursive call
20936         when constructing the scalar.
20937         (__floatundisf): Likewise.
20938
20939 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20940
20941         * dwarf2out.c (field_byte_offset): Move the existing logic
20942         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
20943         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
20944
20945 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20946
20947         PR target/31641
20948         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
20949         length argument of 0 for memset.
20950         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
20951         unsigned shift instead of the signed variant.
20952
20953 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20954
20955         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
20956         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
20957         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
20958         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
20959         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
20960         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
20961         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
20962         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
20963         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
20964         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
20965         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
20966         "mul<mode>3", "div<mode>3"): Insn definitions added.
20967         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
20968         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
20969         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
20970         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
20971         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
20972         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
20973         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
20974         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
20975         TARGET_FLOAT_FORMAT): Macro definitions removed.
20976         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
20977         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
20978         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
20979         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
20980         (s390_gen_rtx_const_DI): Function removed.
20981         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
20982
20983 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
20984
20985         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
20986         over an external ffs function.
20987
20988 2007-04-24  Chao-ying Fu  <fu@mips.com>
20989             Richard Sandiford  <richard@nildram.co.uk>
20990
20991         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
20992         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
20993         (smadd_widen_optab, umadd_widen_optab): Define.
20994         * optabs.c (init_optabs): Initialize smadd_widen_optab and
20995         umadd_widen_optab.
20996         * genopinit.c (optabs): Fill in smadd_widen_optab and
20997         umadd_widen_optab.
20998         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
20999         and umadd_widen_optab to implement multiply-add sequences.
21000         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
21001         (<u>maddsidi4): ...this.  Extend condition to include
21002         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
21003         of operand 0 to "ka" and use the three-operand form of madd<u>
21004         for TARGET_DSPR2.
21005         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
21006         to define_expands.
21007         * config/mips/constraints.md (ka): New register constraint.
21008
21009 2007-04-24  Jan Hubicka  <j@suse.cz>
21010
21011         Revert:
21012
21013         2007-04-23  Jan Hubicka  <jh@suse.cz>
21014         * function.c (init_function_start): Don't init line number info.
21015         (expand_function_end): Update.
21016         (reset_block_changes, record_block_change, finalize_block_changes,
21017         check_block_change, free_block_changes): Kill.
21018         * function.h (reset_block_changes, record_block_change,
21019         finalize_block_changes, check_block_change, free_block_changes):
21020         Remove prototypes.
21021         (struct function): Remove ib_boundaries_block.
21022         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21023         Use curr_insn_locator to initialize locator.
21024         (emit_line_note): Remove.
21025         * cfgexpand.c (expand_gimple_cond_expr): Update.
21026         (construct_exit_block): Likewise.
21027         (tree_expand_cfg): Initialize/finalize locators.
21028         * expr.c (expand_expr_real): Update.
21029         * cfglayout.c (line_locators_locs, line_locators_lines,
21030         file_locators_locs, file_locators_files): Remove.
21031         (set_block_levels): Move to cfgexpand.c.
21032         (insn_locators_initialize): Remove.
21033         (pass_insn_locators_initialize): Remove.
21034         (locations_locators_locs, locations_locators_vals): New static vars.
21035         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21036         Likewise.
21037         (insn_locators_alloc, insn_locators_finalize,
21038         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21039         New functions.
21040         (locator_location): New.
21041         (locator_line, locator_file): Rewrite.
21042         * rtl.h (emit_line_note): Kill.
21043         (insn_locators_alloc, insn_locators_finalize,
21044         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21045         Declare.
21046         * tree-inline.c (initialize_cfun): Do not initialize
21047         ib_boundaries_block.
21048         * passes.c (pass_insn_locators_initialize): Remove.
21049
21050 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
21051
21052         * doc/invoke.texi: Removed leading '-' from option index entries.
21053
21054 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
21055
21056         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
21057         Use phi_nodes_ptr.
21058         (create_phi_node): Use set_phi_nodes.
21059         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
21060         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
21061         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
21062         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
21063         (bsi_start, bsi_last): Use bb_stmt_list.
21064         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
21065         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
21066         Traverse the statements using tsi iterator.
21067         * basic-block.h (struct basic_block_def): Fields stmt_list
21068         and phi_nodes moved to ...
21069         (struct tree_bb_info): ... new structure.
21070         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
21071         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
21072         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
21073         (tree_verify_flow_info): Verify that il.tree is not set for
21074         entry and exit block.
21075         (tree_split_block): Use set_bb_stmt_list.
21076
21077 2007-04-23  Mike Stump  <mrs@apple.com>
21078
21079         * config/i386/i386.c (ix86_tune_features
21080         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
21081         nocona and core2.
21082
21083 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21084
21085         * config/i386/i386.md (prefix_extra): New attribute.
21086         (length): Add prefix_extra.
21087
21088         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
21089         (sse2_movntv2di): Likewise.
21090         (sse2_cvtps2dq): Likewise.
21091         (sse2_cvtpd2pi): Likewise.
21092         (sse2_cvttpd2pi): Likewise.
21093         (*sse2_cvtpd2ps): Likewise.
21094         (*add<mode>3): Likewise.
21095         (sse2_ssadd<mode>3): Likewise.
21096         (sse2_usadd<mode>3): Likewise.
21097         (*sub<mode>3): Likewise.
21098         (sse2_sssub<mode>3): Likewise.
21099         (sse2_ussub<mode>3): Likewise.
21100         (*mulv8hi3): Likewise.
21101         (*smulv8hi3_highpart): Likewise.
21102         (*umulv8hi3_highpart): Likewise.
21103         (sse2_umulv2siv2di3): Likewise.
21104         (sse2_pmaddwd): Likewise.
21105         (ashr<mode>3): Likewise.
21106         (lshr<mode>3): Likewise.
21107         (ashl<mode>3): Likewise.
21108         (sse2_ashlti3): Likewise.
21109         (sse2_lshrti3): Likewise.
21110         (*umaxv16qi3): Likewise.
21111         (*smaxv8hi3): Likewise.
21112         (*uminv16qi3): Likewise.
21113         (*sminv8hi3): Likewise.
21114         (sse2_eq<mode>3): Likewise.
21115         (sse2_gt<mode>3): Likewise.
21116         (*and<mode>3): Likewise.
21117         (sse2_nand<mode>3): Likewise.
21118         (*ior<mode>3): Likewise.
21119         (*xor<mode>3): Likewise.
21120         (sse2_packsswb): Likewise.
21121         (sse2_packssdw): Likewise.
21122         (sse2_packuswb): Likewise.
21123         (sse2_punpckhbw): Likewise.
21124         (sse2_punpcklbw): Likewise.
21125         (sse2_punpckhwd): Likewise.
21126         (sse2_punpcklwd): Likewise.
21127         (sse2_punpckhdq): Likewise.
21128         (sse2_punpckldq): Likewise.
21129         (sse2_punpckhqdq): Likewise.
21130         (sse2_punpcklqdq): Likewise.
21131         (*sse2_pinsrw): Likewise.
21132         (*sse2_pextrw): Likewise.
21133         (sse2_pshufd_1): Likewise.
21134         (sse2_uavgv16qi3): Likewise.
21135         (sse2_uavgv8hi3): Likewise.
21136         (sse2_psadbw): Likewise.
21137         (sse2_pmovmskb): Likewise.
21138         (*sse2_maskmovdqu): Likewise.
21139         (*sse2_maskmovdqu_rex64): Likewise.
21140         (sse4a_extrqi): Likewise.
21141         (sse4a_extrq): Likewise.
21142         (sse3_lddqu): Set prefix_rep.
21143         (sse3_addsubv4sf3): Likewise.
21144         (sse3_haddv4sf3): Likewise.
21145         (sse3_hsubv4sf3): Likewise.
21146         (sse_cvtss2si): Likewise.
21147         (sse_cvtss2si_2): Likewise.
21148         (sse_cvtss2siq): Likewise.
21149         (sse_cvtss2siq_2): Likewise.
21150         (sse_cvttss2si): Likewise.
21151         (sse_cvttss2siq): Likewise.
21152         (sse2_cvttps2dq): Likewise.
21153         (sse3_movshdup): Likewise.
21154         (sse3_movsldup): Likewise.
21155         (sse2_cvtsd2si): Likewise.
21156         (sse2_cvtsd2si_2): Likewise.
21157         (sse2_cvtsd2siq): Likewise.
21158         (sse2_cvtsd2siq_2): Likewise.
21159         (sse2_cvttsd2si): Likewise.
21160         (sse2_cvttsd2siq): Likewise.
21161         (*sse2_cvtpd2dq): Likewise.
21162         (*sse2_cvttpd2dq): Likewise.
21163         (sse2_pshuflw_1): Likewise.
21164         (sse2_pshufhw_1): Likewise.
21165         (sse4a_insertqi): Likewise.
21166         (sse4a_insertq): Likewise.
21167         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
21168         (ssse3_phadddv4si3): Likewise.
21169         (ssse3_phaddswv8hi3): Likewise.
21170         (ssse3_phsubwv8hi3): Likewise.
21171         (ssse3_phsubdv4si3): Likewise.
21172         (ssse3_phsubswv8hi3): Likewise.
21173         (ssse3_pmaddubswv8hi3): Likewise.
21174         (ssse3_pmulhrswv8hi3): Likewise.
21175         (ssse3_pshufbv16qi3): Likewise.
21176         (ssse3_psign<mode>3): Likewise.
21177         (ssse3_palignrti): Likewise.
21178         (abs<mode>2): Likewise.
21179         (ssse3_phaddwv4hi3): Set prefix_extra.
21180         (ssse3_phadddv2si3): Likewise.
21181         (ssse3_phaddswv4hi3): Likewise.
21182         (ssse3_phsubwv4hi3): Likewise.
21183         (ssse3_phsubdv2si3): Likewise.
21184         (ssse3_phsubswv4hi3): Likewise.
21185         (ssse3_pmaddubswv4hi3): Likewise.
21186         (ssse3_pmulhrswv4hi3): Likewise.
21187         (ssse3_pshufbv8qi3): Likewise.
21188         (ssse3_psign<mode>3): Likewise.
21189         (ssse3_palignrdi): Likewise.
21190         (abs<mode>2): Likewise.
21191         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
21192         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
21193         (sse2_pmovmskb): Set mode to SI instead of V2DF.
21194
21195 2007-04-23  Nick Clifton  <nickc@redhat.com>
21196
21197         * params.def: Fix formatting of emacs local variables.
21198
21199 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21200
21201         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
21202         move if inter-unit move isn't allowed.
21203         Don't split moving the first element of V2DI to DI to inter-unit
21204         move if inter-unit move isn't allowed.
21205
21206 2007-04-23  Richard Guenther  <rguenther@suse.de>
21207
21208         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
21209         and CDI_POST_DOMINATORS separately.
21210
21211 2007-04-23  Nick Clifton  <nickc@redhat.com>
21212
21213         * c.opt (Wformat-contains-nul): Add warning attribute.
21214
21215 2007-04-23  Jan Hubicka  <jh@suse.cz>
21216
21217         * function.c (init_function_start): Don't init line number info.
21218         (expand_function_end): Update.
21219         (reset_block_changes, record_block_change, finalize_block_changes,
21220         check_block_change, free_block_changes): Kill.
21221         * function.h (reset_block_changes, record_block_change,
21222         finalize_block_changes, check_block_change, free_block_changes):
21223         Remove prototypes.
21224         (struct function): Remove ib_boundaries_block.
21225         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21226         Use curr_insn_locator to initialize locator.
21227         (emit_line_note): Remove.
21228         * cfgexpand.c (expand_gimple_cond_expr): Update.
21229         (construct_exit_block): Likewise.
21230         (tree_expand_cfg): Initialize/finalize locators.
21231         * expr.c (expand_expr_real): Update.
21232         * cfglayout.c (line_locators_locs, line_locators_lines,
21233         file_locators_locs, file_locators_files): Remove.
21234         (set_block_levels): Move to cfgexpand.c.
21235         (insn_locators_initialize): Remove.
21236         (pass_insn_locators_initialize): Remove.
21237         (locations_locators_locs, locations_locators_vals): New static vars.
21238         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21239         Likewise.
21240         (insn_locators_alloc, insn_locators_finalize,
21241         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21242         New functions.
21243         (locator_location): New.
21244         (locator_line, locator_file): Rewrite.
21245         * rtl.h (emit_line_note): Kill.
21246         (insn_locators_alloc, insn_locators_finalize,
21247         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21248         Declare.
21249         * tree-inline.c (initialize_cfun): Do not initialize
21250         ib_boundaries_block.
21251         * passes.c (pass_insn_locators_initialize): Remove.
21252
21253 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21254
21255         PR middle-end/31448
21256         * expr.c (reduce_to_bit_field_precision): Handle
21257         CONST_INT rtx's.
21258
21259 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
21260
21261         PR tree-optimization/24659
21262         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
21263         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
21264         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
21265         * genopinit.c (optabs): Rename vec_pack_mod_optab
21266         to vec_pack_trunc_optab.
21267         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
21268         early for scalar floating point operands for NOP_EXPR.
21269         (vectorizable_type_promotion): Ditto.
21270         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
21271         vec_pack_trunc_optab.
21272         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
21273
21274         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
21275         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
21276         Rename from VEC_PACK_MOD_EXPR.
21277         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
21278         * expr.c (expand_expr_real_1): Ditto.
21279         * tree-inline.c (estimate_num_insns_1): Ditto.
21280         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
21281
21282         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
21283         (vec_unpacks_lo_v4sf): Ditto.
21284         (vec_pack_trunc_v2df): Ditto.
21285         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
21286         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21287         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
21288
21289         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
21290         vec_pack_mod_v8hi.
21291         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21292
21293         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
21294         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
21295         packing of floating point operands.
21296         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
21297         represent unpacking of floating point operands.
21298         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
21299         [vec_unpacks_hi]: Ditto.
21300         [vec_unpacks_lo]: Ditto.
21301
21302 2007-04-22  Jan Hubicka  <jh@suse.cz>
21303
21304         * final.c (rest_of_handle_final): Call
21305         targetm.asm_out.constructor/targetm.asm_out.destructor
21306         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
21307         proper priority via decl_*_priority_insert.
21308         * c-common.c (c_expand_body): Likewise.
21309
21310 2007-04-22  Richard Guenther  <rguenther@suse.de>
21311
21312         PR tree-optimization/29789
21313         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
21314         (rewrite_reciprocal): New helper split out from
21315         determine_invariantness_stmt.
21316         (rewrite_bittest): Likewise.
21317         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
21318         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
21319         is not.
21320
21321 2007-04-22  Revital Eres  <eres@il.ibm.com>
21322
21323         * loop-unroll.c (var_to_expand): New field to support also
21324         insns of the form x = something + x.
21325         (analyze_insn_to_expand_var): Use it.
21326         (expand_var_during_unrolling): Likewise.
21327
21328 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21329
21330         * predict.c: Include pointer-set.h.
21331         (bb_predictions): New variable.
21332         (tree_predicted_by_p, tree_predict_edge,
21333         remove_predictions_associated_with_edge): Use bb_predictions map
21334         instead of bb->predictions.
21335         (clear_bb_predictions, assert_is_empty): New functions.
21336         (combine_predictions_for_bb): Use bb_predictions map.  Call
21337         clear_bb_predictions.
21338         (tree_estimate_probability): Create and free bb_predictions map.
21339         * Makefile.in (predict.o): Add pointer-set.h dependency.
21340         * basic-block.h (struct basic_block_def): Remove predictions
21341         field.
21342         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
21343
21344 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21345
21346         PR target/31480
21347         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
21348         is null.
21349
21350 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21351
21352         * timevar.c (timevar_print): Change reference of --disable-checking to
21353         --enable-checking=release.  Also warn if assert checking is disabled.
21354
21355 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21356
21357         PR C/30265
21358         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
21359         decl as addressable if the compound literal was marked as
21360         addressable.
21361         Mark the decl as a gimple register if it is a complex or
21362         vector decl and does not live in memory.
21363
21364 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21365
21366         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
21367         (GENERIC_NEXT): New function macro.
21368         (PHI_CHAIN): Use phi_node's new chain variable.
21369         (tree_phi_node): Change tree_common to tree_base
21370         and add the chain field.
21371         * tree-phinodes.c (make_phi_node): Don't set
21372         TREE_TYPE on the new node.
21373         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
21374         instead of checking GIMPLE_TUPLE_P in chain_next.
21375         * tree-vect-transform.c
21376         (get_initial_def_for_induction): Look at
21377         PHI_RESULT_TREE for the type of the phi node.
21378         (update_vuses_to_preheader): Use PHI_CHAIN
21379         instead of TREE_CHAIN on the phi node.
21380         * tree-ssa-structalias.c (compute_points_to_sets):
21381         Likewise.
21382         (ipa_pta_execute): Likewise.
21383
21384 2007-04-21  Richard Guenther  <rguenther@suse.de>
21385
21386         PR middle-end/31136
21387         * fold-const.c (fold_unary): Call fold_convert_const on the
21388         original tree.
21389
21390 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
21391
21392         * gcse.c (store_killed_in_insn): Handle PARALLELs.
21393         (store_killed_in_pat): New.
21394
21395 2007-04-20  Richard Henderson  <rth@redhat.com>
21396
21397         PR target/31628
21398         * config/i386/i386.c (type_has_variadic_args_p): Look for any
21399         TREE_LIST with a void_type_node value, not void_list_node exactly.
21400
21401 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
21402
21403         * doc/standards.texi: Re-arrange into language-specific
21404         subsections. Add a C++ section, documenting which standards we
21405         support.
21406
21407 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21408
21409         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
21410         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
21411
21412 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
21413
21414         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
21415         ecrti.o and crtbegin.o.
21416         (LIB_DEFAULT_SPEC): Include -lc.
21417         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
21418
21419 2007-04-20  Richard Henderson  <rth@redhat.com>
21420
21421         PR target/28623
21422         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
21423         argument; update all callers.
21424         (get_unaligned_offset): New.
21425         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
21426         get_unaligned_address, just pass on the address directly.
21427         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
21428         the subreg in the helper patterns.
21429         (unaligned_extendqidi_le): Use get_unaligned_offset.
21430         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
21431         (unaligned_extendhidi_be): Likewise.
21432         (unaligned_extendhidi): Tidy.
21433         * config/alpha/alpha-protos.h: Update.
21434
21435 2007-04-20  Richard Henderson  <rth@redhat.com>
21436
21437         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
21438         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
21439         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
21440         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21441         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21442         (CPP_SPEC): Don't include %(cpp_subtarget).
21443         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
21444         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21445         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
21446
21447 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
21448
21449         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
21450         for __builtin_ia32_cmpordss.
21451
21452         PR tree-optimization/31632
21453         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
21454         and arg1 for optimizations of comparison against min/max values.
21455         Fold arg0 to arg1's type for optimizations of comparison against
21456         min+1 and max-1 values.
21457
21458 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
21459
21460         * reload.c (combine_reloads): When trying to use a dying register,
21461         check whether it's uninitialized and don't use if so.
21462
21463 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
21464
21465         * fold-const.c: Remove prototypes for native_encode_expr and
21466         native_interpret_expr.
21467         (native_encode_expr): Make non-static.
21468         (native_interpret_expr): Likewise.
21469         * tree.h: Add prototypes for the above.
21470
21471 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21472
21473         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
21474         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
21475         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
21476         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
21477         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
21478         Add length attributes.
21479
21480 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
21481
21482         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
21483         not that it is 1.
21484
21485         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
21486         __STDC_WANT_DEC_FP__.
21487
21488 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21489
21490         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
21491         for long double compatibility.
21492         * configure: Regenerate.
21493
21494 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
21495
21496         PR rtl-optimization/29841
21497         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
21498         trap instructions.
21499         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
21500         that may cause control flow transfer from being moved.
21501
21502 2007-04-18  Jan Hubicka  <jh@suse.cz>
21503
21504         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
21505         types.
21506
21507 2007-04-18  Eric Christopher  <echristo@apple.com>
21508
21509         * config/rs6000/darwin.md (load_macho_picbase): Use link register
21510         only. Update operands.
21511         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
21512         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
21513         link register to pic register.
21514
21515 2007-04-18  Dirk Mueller  <dmueller@suse.de>
21516
21517         PR diagnostic/31227
21518         * tree-vrp.c (search_for_addr_array): New.
21519         (check_array_bounds): Suppress warning about
21520         address taken of array refs if its not de-referenced.
21521
21522 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21523
21524         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
21525         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
21526
21527         * tree-vectorizer.h (NITERS_KNOWN_P): New.
21528         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
21529         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
21530
21531         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
21532         dump print.
21533         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
21534         print message.
21535         (vect_analyze_scalar_cycles): Fix indentation.
21536         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
21537         (vect_mark_relevant): Include phis in relevance analysis.
21538
21539         * tree-vect-transform.c (vect_transform_loop): Add an assert.
21540
21541 2007-04-18  Anatoly Sokolov <aesok@post.ru>
21542
21543         * config/avr/avr.c (ptrreg_to_str): Replace error() with
21544         output_operand_lossage().
21545
21546 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21547
21548         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
21549         the unused code for reduction without adjust-in-epilog to simplify the
21550         function.
21551
21552 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
21553
21554         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
21555         (S390_TDC_NEGATIVE_ZERO): New constant.
21556         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
21557         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
21558         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
21559         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
21560         (S390_TDC_POSITIVE_INFINITY): New constant.
21561         (S390_TDC_NEGATIVE_INFINITY): New constant.
21562         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
21563         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
21564         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
21565         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
21566         (S390_TDC_INFINITY): New constant.
21567         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
21568         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
21569         optimization for UNSPEC_CCZ_TO_INT.
21570         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
21571         ("*ccz_to_int"): New insn.
21572         ("isinf<mode>2"): New insn.
21573         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
21574         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
21575         (UNSPEC_CCZ_TO_INT): New constant.
21576
21577 2007-04-18  Richard Guenther  <rguenther@suse.de>
21578
21579         PR tree-optimization/19431
21580         PR tree-optimization/21463
21581         * tree-pass.h (pass_phiprop): Declare.
21582         * passes.c (init_optimization_passes): New phiprop pass.
21583         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
21584         (phivn_valid_p): New helper function.
21585         (phiprop_insert_phi): Likewise.
21586         (propagate_with_phi): Likewise.
21587         (tree_ssa_phiprop): New propagator propagating loads
21588         through phi nodes if profitable.
21589
21590 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21591
21592         * tree-vect-analyze.c (process_use): New function.
21593         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
21594         Check phis in all bbs.
21595         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
21596         assert.
21597
21598 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
21599
21600         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
21601         we use REG_EQUAL.
21602
21603 2007-04-17  Anatoly Sokolov <aesok@post.ru>
21604
21605         PR target/30483
21606         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
21607         error().
21608
21609 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21610
21611         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
21612         on "0".
21613         (sse_vmmulv4sf3): Likewise.
21614         (sse2_vmaddv2df3): Likewise.
21615         (sse2_vmmulv2df3): Likewise.
21616
21617 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
21618
21619         PR rtl-optimization/31360
21620         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
21621         (target_reg_cost): New.
21622         (init_set_costs): Initialize target_reg_cost.  Add comments
21623         regarding the rationale of the costs.
21624         (global_cost_for_size): Renamed to...
21625         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
21626         of register pressure.
21627         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
21628         estimate_reg_pressure_cost.  Add number of ivs.
21629         (determine_set_costs): Dump target_reg_cost.
21630         * loop-invariant.c (gain_for_invariant): Use
21631         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
21632         (best_gain_for_invariant, find_invariants_to_move): Remove
21633         n_inv_uses.
21634         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
21635         (target_reg_cost): Declare.
21636         (global_cost_for_size): Declaration removed.
21637         (estimate_reg_pressure_cost): Declare.
21638
21639 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
21640
21641         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
21642         regnos into even/odd register pairs.
21643         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
21644         TDmode similar to the other floating point modes.
21645         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
21646         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
21647         define_expand's.
21648         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
21649         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
21650         (movdd_hardfloat64): Use TARGET_MFPGPR.
21651
21652 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
21653
21654         * reload1.c (delete_output_reload): Don't count output in n_inherited.
21655
21656         Revert
21657         2005-01-05  Richard Henderson  <rth@redhat.com>
21658         PR rtl-opt/10692
21659         * reload1.c (do_input_reload): Restrict the optimization deleteing
21660         a previous output reload to RELOAD_FOR_INPUT.
21661
21662 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
21663
21664         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
21665         induc_vec_info_type.
21666         (vectorizable_induction): New function declaration.
21667         * tree-vect-transform.c (get_initial_def_for_induction): No need to
21668         check if already vectorized.  Find first place in BB where new stmts
21669         can be inserted.  Takes only one argument.
21670         (vectorizable_induction): New function.
21671         (vect_transform_stmt): Add case for induc_vec_info_type to call
21672         vectorizable_induction.
21673         (vect_transform_loop): Consider phis for vectorization.
21674         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
21675         condition.
21676         (analyze_operations): Call vectorizable_induction when analyzing phis.
21677         Fix comment.
21678         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
21679         (vect_mark_relevant): Include phis in relevance analysis.
21680         (vect_mark_stmts_to_be_vectorize): Likewise.
21681         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
21682
21683 2007-04-16  Lawrence Crowl  <crowl@google.com>
21684
21685         * doc/invoke.texi (Debugging Options): Add documentation for the
21686         -femit-struct-debug options -femit-struct-debug-baseonly,
21687         -femit-struct-debug-reduced, and
21688         -femit-struct-debug-detailed[=...].
21689
21690         * c-opts.c (c_common_handle_option): Add
21691         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
21692         and OPT_femit_struct_debug_detailed_.
21693         * c.opt: Add specifications for
21694         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
21695         and -femit-struct-debug-detailed[=...].
21696         * opts.c (set_struct_debug_option): Parse the
21697         -femit-struct-debug-... options.
21698         * opts.c (matches_main_base, main_input_basename,
21699         main_input_baselength, base_of_path, matches_main_base): Add
21700         variables and functions to compare header base name to compilation
21701         unit base name.
21702         * opts.c (should_emit_struct_debug): Add to determine to emit a
21703         structure based on the option.
21704         (dump_struct_debug) Also disabled function to debug this
21705         function.
21706         * opts.c (handle_options): Save the base name of the
21707         compilation unit.
21708
21709         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
21710         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
21711         This hook indicates if a type is generic.  Set it by default
21712         to "never generic".
21713         * langhooks.h (struct lang_hooks_for_types): Add a new hook
21714         to determine if a struct type is generic or not.
21715         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
21716         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
21717         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
21718         with live C++ hook.
21719
21720         * flags.h (enum debug_info_usage): Add an enumeration to describe
21721         a program's use of a structure type.
21722         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
21723         to indicate the program's usage of the type.  Filter structs based
21724         on the -femit-struct-debug-... specification.
21725         (gen_type_die): Split into two routines, gen_type_die and
21726         gen_type_die_with_usage.  gen_type_die is now a wrapper
21727         that assumes direct usage.
21728         (gen_type_die_with_usage): Replace calls to gen_type_die
21729         with gen_type_die_with_usage adding the program usage of
21730         the referenced type.
21731         (dwarf2out_imported_module_or_decl): Suppress struct debug
21732         information using should_emit_struct_debug when appropriate.
21733
21734 2007-04-16  Ian Lance Taylor  <iant@google.com>
21735
21736         PR tree-optimization/31522
21737         * tree-vrp.c (vr_phi_edge_counts): New static variable.
21738         (vrp_initialize): Allocate vr_phi_edge_counts.
21739         (vrp_visit_phi_node): Don't push to infinity if we saw a new
21740         executable edge.  Drop test for all constants.
21741         (vrp_finalize): Free vrp_phi_edge_counts.
21742
21743         * doc/cpp.texi (Common Predefined Macros): Clarify description of
21744         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
21745
21746         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
21747         predecessors at head rather than tail.
21748
21749 2007-04-16  Matthias Klose  <doko@debian.org>
21750
21751         * config/alpha/linux.h (CPP_SPEC): Define.
21752         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
21753
21754 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
21755
21756         * function.h: Remove sequence_stack extern declaration.
21757
21758 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21759
21760         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
21761         TARGET_FIDOA.
21762         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
21763         defined.
21764
21765 2007-04-16  Anatoly Sokolov <aesok@post.ru>
21766
21767         * config/avr/avr.c (avr_arch_types): Rearranging  array.
21768         (enum avr_arch): Add.
21769         (avr_mcu_types): Use avr_arch enumeration constants instead of
21770         numbers.
21771         * config/avr/avr.h (LINK_SPEC): Simplify.
21772
21773 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21774
21775         * config/m68k/m68k.c (m68k_libcall_value,
21776         m68k_function_value): Use macros for register names more.
21777
21778         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
21779         instead.
21780         (M68K_REGNAME): Use A6_REG.
21781         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
21782
21783 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21784
21785         PR middle-end/28071
21786         * sched-int.h (struct deps): Split field 'pending_lists_length' into
21787         'pending_read_list_length' and 'pending_write_list_length'.  Update
21788         comment.
21789         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
21790         to handle two length counters instead of one.  Update all uses.
21791         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
21792         two length counters instead of one.
21793         * sched-rgn.c (propagate_deps): Update to handle two length counters
21794         instead of one.
21795
21796 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
21797
21798         PR target/31582
21799         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
21800         copy of source, pass it to ix86_expand_vector_set and return
21801         it as target.
21802
21803 2007-04-16  David Ung  <davidu@mips.com>
21804             Joseph Myers  <joseph@codesourcery.com>
21805
21806         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
21807         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
21808         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
21809         Add 74K processor information.
21810         * config/mips/mips.md: Include 74k.md.
21811         (cpu): Add 74kc,74kf,74kx.
21812         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
21813         * config/mips/74k.md: New.
21814         * doc/invoke.texi (MIPS Options): Document 74K support.
21815
21816 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
21817
21818         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
21819         vectorizable_* functions.
21820         * tree-vect-transform.c (vectorizable_call): Add check for
21821         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
21822         (vectorizable_store): likewise.
21823         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
21824         Add comments.
21825         (vectorizable_operation, vectorizable_type_demotion): Likewise.
21826         (vectorizable_type_promotion, vectorizable_load): Likewise.
21827         (vectorizable_live_operation, vectorizable_condition): Likewise.
21828         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
21829         STMT_VINFO_LIVE_P.
21830         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
21831
21832 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21833
21834         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
21835         register numbers more.
21836         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
21837         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
21838         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
21839         FUNCTION_VALUE_REGNO_P): Likewise.
21840         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
21841         STATIC_CHAIN_REGNUM): Likewise.
21842         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
21843         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
21844         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
21845         * config/m68k/m68k.md (FP_REG): New.
21846
21847 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21848
21849         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
21850         alignment on fido.
21851
21852 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21853
21854         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
21855         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
21856         comment typos.
21857
21858 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21859
21860         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
21861         cold loops.
21862
21863 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21864
21865         PR c/31520
21866         * c-decl.c (finish_decl): Grab the type of the decl after the call
21867         to store_init_value.
21868
21869 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
21870
21871         * common.opt (fforward-propagate): Fix "Optimization" annotation.
21872
21873 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
21874
21875         PR c++/25874
21876         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
21877         dominators, post dominators and cleanup cfg before returning.
21878
21879 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
21880
21881         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
21882         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
21883
21884 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
21885
21886         * config.gcc: Recognize fido.
21887         * config/m68k/m68k-devices.def (fidoa): New.
21888         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
21889         __mfido__.
21890         (FL_FIDOA, TARGET_FIDOA): New.
21891         * config/m68k/m68k.opt (mfidoa): New.
21892
21893 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21894
21895         PR middle-end/31322
21896         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
21897         when a personality function is used.
21898
21899 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
21900
21901         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
21902
21903 2007-04-13  Mike Stump  <mrs@apple.com>
21904
21905         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
21906         we can...
21907         * config/darwin.opt (fapple-kext): Make C++ only.
21908         * config/darwin.c (darwin_override_options): Remove code to ensure
21909         -fapple-kext is given for C++ only.
21910
21911 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
21912
21913         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
21914         * config/mips/mips.c (override_options): Call
21915         SUBTARGET_OVERRIDE_OPTIONS, if defined.
21916
21917 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21918
21919         * config/i386/i386.opt (msvr3-shlib): Removed.
21920
21921         * doc/invoke.texi: Remove -msvr3-shlib.
21922
21923 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21924
21925         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
21926         with "popcnt" instruction.
21927
21928 2007-04-13  Richard Guenther  <rguenther@suse.de>
21929
21930         PR tree-optimization/21258
21931         * tree-vrp.c (compare_case_labels): New helper.
21932         (find_switch_asserts): New function.
21933         (find_assert_locations): Call it for SWITCH_EXPRs.
21934
21935 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
21936
21937         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
21938         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
21939         check is now implied in X87_FLOAT_MODE_P.
21940         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21941         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21942         (fix_trunc<mode>_i386_fisttp): Ditto.
21943         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21944         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21945         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21946         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21947         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21948         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21949         (unnamed_splitters): Ditto.
21950         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
21951         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
21952         FIRST_SSE_REG for local functions when SSE math is enabled or
21953         for functions with sseregparm attribute.
21954         (standard_80387_constant_p): Return -1 if mode is not
21955         X87_FLOAT_MODE_P.
21956         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
21957         (ix86_expand_compare): Ditto.
21958         (ix86_expand_carry_flag_compare): Ditto.
21959         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
21960         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
21961         DECIMAL_FLOAT_MODE_P.
21962         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
21963         of SCALAR_FLOAT_MODE_P.
21964         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
21965         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
21966         checks before FLOAT_MODE_P.
21967         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
21968         before FLOAT_MODE_P.
21969         [DIV]: Ditto.
21970         [NEG]: Ditto.
21971         [ABS]: Ditto.
21972         [SQRT]: Ditto.
21973         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
21974
21975 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
21976             Charles Wilson  <libtool@cwilson.fastmail.fm>
21977
21978         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
21979         (libgcc.mvars): Don't depend on them.
21980         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
21981         * exec-tool.in: New.
21982
21983 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
21984
21985         * doc/invoke.text (--help): Document --help=common.
21986
21987 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
21988
21989         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
21990
21991 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21992
21993         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
21994         * genemit.c (main): Emit #include "integrate.h".
21995         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
21996         (LOADGP_RTP): New mips_loadgp_style.
21997         * config/mips/mips.h: Include config/vxworks-dummy.h.
21998         (TARGET_RTP_PIC): New macro.
21999         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
22000         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
22001         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
22002         for TARGET_RTP_PIC.
22003         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
22004         -mvxworks-pic when using -mrtp and a PIC option.
22005         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
22006         for RTP PIC.
22007         (mips_symbolic_constant_p, mips_symbolic_address_p)
22008         (mips_symbol_insns): Handle SYMBOL_HALF.
22009         (override_options): Warn about -G and -mrtp being used together.
22010         Initialize mips_lo_relocs[SYMBOL_HALF].
22011         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
22012         (mips_emit_loadgp): Handle LOADGP_RTP.
22013         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
22014         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
22015         (tablejump): Handle function-relative case table entries if
22016         TARGET_RTP_PIC.
22017         * config/mips/predicates.md (symbol_ref_operand): New predicate.
22018
22019 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22020
22021         * config/mips/mips.md (load_call<mode>): Allow any general register.
22022         destination.
22023         (sibcall_value_internal, sibcall_value_multiple_internal)
22024         (call_value_internal, call_value_split, call_value_multiple_internal)
22025         (call_value_multiple_split): Remove constraints from operand 0.
22026
22027 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22028
22029         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
22030         rather than loadgp_noshared.
22031         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
22032         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
22033         gen_loadgp.
22034         * config/mips/mips.md (loadgp): Rename to...
22035         (loadgp_newabi): ...this.
22036         (loadgp_noshared): Rename to...
22037         (loadgp_absolute): ...this.
22038
22039 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22040
22041         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
22042         false for locally-binding symbols.
22043         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
22044
22045 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22046
22047         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
22048         (SYMBOL_GOT_PAGE_OFST): ...this.
22049         (SYMBOL_GOT_GLOBAL): Rename to...
22050         (SYMBOL_GOT_DISP): ...this.
22051         (SYMBOL_GOTOFF_GLOBAL): Rename to...
22052         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
22053         * config/mips/mips.c (mips_global_symbol_p): New function.
22054         (mips_symbol_binds_local_p): Likewise.
22055         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
22056         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
22057         mips_global_symbol_p and mips_symbol_binds_local_p.
22058         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
22059         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
22060         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
22061         SYMBOL_GOTOFF_DISP.
22062         (mips_ok_for_lazy_binding_p): New function.
22063         (mips_load_call_address, mips_expand_call): Use it.
22064         (mips_dangerous_for_la25_p): Likewise.
22065         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
22066         (*got_disp<mode>): Use got_disp_operand instead of
22067         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
22068         SYMBOL_GOTOFF_GLOBAL.
22069         (*got_page<mode>): Use got_page_ofst_operand instead of
22070         local_got_operand.
22071         * config/mips/predicates.md (const_call_insn_operand): Use
22072         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
22073         (global_got_operand): Rename to...
22074         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
22075         SYMBOL_GOT_GLOBAL.
22076         (local_got_operand): Rename to...
22077         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
22078         of SYMBOL_GOT_LOCAL.
22079
22080 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22081
22082         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
22083         TARGET_CALL_CLOBBERED_GP.
22084         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22085         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
22086         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
22087         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
22088         of TARGET_ABICALLS && !TARGET_NEWABI.
22089         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22090         * config/mips/mips.c (mips_load_call_address): Check
22091         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22092         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22093         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22094         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
22095         TARGET_ABICALLS && TARGET_NEWABI.
22096         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
22097         TARGET_ABICALLS.
22098         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
22099         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
22100         TARGET_ABICALLS && TARGET_NEWABI.
22101         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
22102         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
22103         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
22104         whether indirect calls must use $25.
22105         (mips_extra_live_on_entry): Check TARGET_GOT instead of
22106         TARGET_ABICALLS.
22107         * config/mips/mips.md (jal_macro): Check flag_pic and
22108         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
22109         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
22110         instead of TARGET_ABICALLS.
22111         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
22112         TARGET_ABICALLS && TARGET_OLDABI.
22113         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22114         (sibcall): In the comment above the define_insn, mention
22115         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
22116         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
22117         instead of TARGET_ABICALLS.
22118
22119 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
22120
22121         * doc/md.texi (Blackfin family constraints): Document PA and PB.
22122         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
22123         (MACFLAGS_MATCH_P): New macro.
22124         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
22125         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
22126         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
22127         the other MACFLAG constants.
22128         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
22129         (flag_machi): Tighten constraints.  Renumber some of the operands.
22130         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
22131         output template.
22132         (flag_machi_parts_acconly): New pattern.
22133         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
22134         used.
22135         (flag_macinit1hi): Tighten constraints.
22136         (flag_mul_macv2hi_parts_acconly): New pattern.
22137
22138         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
22139         Use a more efficient implementation.
22140         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
22141         inline sequences when not optimizing for size.
22142
22143         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
22144         movhi_high2low): Delete, merge functionality into...
22145         (packv2hi): ... this pattern.
22146
22147         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
22148         * config/bfin/bfin.opt (msim): New option.
22149         (mcpu=): New option.
22150         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
22151         (bfin_cpu_t): Typedef of enum bfin_cpu.
22152         (bfin_cpu_type): New declaration.
22153         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
22154         -msim and -mcpu= options.
22155         (LIB_SPEC): Likewise.
22156         * config/bfin/bfin.c (bfin_cpu_type): Define.
22157         (bfin_handle_option): Handle -mcpu= option.
22158         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
22159         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
22160         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
22161
22162 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22163
22164         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
22165         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
22166         (powerpc-wrs-vxworksae): Use ${tm_file}.
22167         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
22168         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
22169         * config/i386/vx-common.h: New file.
22170
22171 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22172
22173         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
22174         of crt0.o%s.
22175
22176 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
22177
22178         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
22179         ldxtr.
22180
22181 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
22182
22183         PR c++/31078
22184         PR c++/31103
22185         * c-common.c (c_build_qualified_type): Set canonical type
22186         appropriately.
22187
22188 2007-04-12  Richard Guenther  <rguenther@suse.de>
22189
22190         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
22191         lower bound and element size if lower bound is not zero
22192         or either of the ARRAY_REF operands is set.
22193
22194 2007-04-12  Richard Guenther  <rguenther@suse.de>
22195
22196         PR tree-optimization/24689
22197         PR tree-optimization/31307
22198         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
22199         indices by value.
22200         * gimplify.c (canonicalize_addr_expr): To be consistent with
22201         gimplify_compound_lval only set operands two and three of
22202         ARRAY_REFs if they are not gimple_min_invariant.  This makes
22203         it never at this place.
22204         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
22205
22206 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22207
22208         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
22209         null before emitting a .nsubspa directive.
22210
22211 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22212
22213         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
22214         need_to_partition_p if there are no memory statements in the
22215         function.
22216
22217 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22218
22219         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
22220         (gcd_of_steps_may_divide_p): New function.
22221         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
22222
22223 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22224
22225         * reload.c (find_reloads_toplev, find_reloads_address,
22226         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
22227         not a pointer equality test, to decide if we need to call
22228         push_reg_equiv_alt_mem.
22229
22230 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
22231
22232         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
22233         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
22234         New.
22235         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
22236
22237 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22238
22239         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
22240         vector to be positive.
22241
22242 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22243
22244         PR 30735
22245         PR 31090
22246         * doc/invoke.texi: Document --params max-aliased-vops and
22247         avg-aliased-vops.
22248         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
22249         debug_memory_partitions): Move to tree-flow.h
22250         * params.h (AVG_ALIASED_VOPS): Define.
22251         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
22252         users.
22253         (mp_info_t): Likewise.
22254         (get_mem_sym_stats_for): New.
22255         (set_memory_partition): Move from tree-flow-inline.h.
22256         (mark_non_addressable): Only clear the set of symbols for the
22257         partition if it exists.
22258         (dump_memory_partitions): Move from tree-ssa-operands.c
22259         (debug_memory_partitions): Likewise.
22260         (need_to_partition_p): New.
22261         (dump_mem_ref_stats): New.
22262         (debug_mem_ref_stats): New.
22263         (dump_mem_sym_stats): New.
22264         (debug_mem_sym_stats): New.
22265         (update_mem_sym_stats_from_stmt): New.
22266         (compare_mp_info_entries): New.
22267         (mp_info_cmp): Call it.
22268         (sort_mp_info): Change argument to a list of mem_sym_stats_t
22269         objects.
22270         (get_mpt_for): Move from tree-ssa-operands.c.
22271         (find_partition_for): New.
22272         (create_partition_for): Remove.
22273         (estimate_vop_reduction): New.
22274         (update_reference_counts): New.
22275         (build_mp_info): New.
22276         (compute_memory_partitions): Refactor.
22277         Document new heuristic.
22278         Call build_mp_info, update_reference_counts,
22279         find_partition_for and estimate_vop_reduction.
22280         (compute_may_aliases): Populate virtual operands before
22281         calling debugging dumps.
22282         (delete_mem_sym_stats): New.
22283         (delete_mem_ref_stats): New.
22284         (init_mem_ref_stats): New.
22285         (init_alias_info): Call it.
22286         (maybe_create_global_var): Remove alias_info argument.
22287         Get number of call sites and number of pure/const call sites
22288         from gimple_mem_ref_stats().
22289         (dump_alias_info): Call dump_memory_partitions first.
22290         (dump_points_to_info_for): Show how many times a pointer has
22291         been dereferenced.
22292         * opts.c (decode_options): For -O2 set --param
22293         max-aliased-vops to 500.
22294         For -O3 set --param max-aliased-vops to 1000 and --param
22295         avg-aliased-vops to 3.
22296         * fortran/options.c (gfc_init_options): Remove assignment to
22297         MAX_ALIASED_VOPS.
22298         * tree-flow-inline.h (gimple_mem_ref_stats): New.
22299         * tree-dfa.c (dump_variable): Dump memory reference
22300         statistics.
22301         Dump NO_ALIAS* settings.
22302         (referenced_var_lookup): Tidy.
22303         (mem_sym_stats): New.
22304         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
22305         and ORIG are different SSA names for a memory partition.
22306         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
22307         * tree-flow.h (struct mem_sym_stats_d): Define.
22308         (mem_sym_stats_t): Define.
22309         (struct mem_ref_stats_d): Define.
22310         (struct gimple_df): Add field mem_ref_stats.
22311         (enum noalias_state): Define.
22312         (struct var_ann_d): Add bitfield noalias_state.
22313         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
22314         debug_mem_ref_stats, debug_memory_partitions,
22315         debug_mem_sym_stats): Declare.
22316         * tree-ssa-structalias.c (update_alias_info): Update call
22317         sites, pure/const call sites and asm sites in structure
22318         returned by gimple_mem_ref_stats.
22319         Remove local variable IS_POTENTIAL_DEREF.
22320         Increase NUM_DEREFS if the memory expression is a potential
22321         dereference.
22322         Call update_mem_sym_stats_from_stmt.
22323         If the memory references memory, call
22324         update_mem_sym_stats_from_stmt for all the direct memory
22325         symbol references found.
22326         (intra_create_variable_infos): Set noalias_state field for
22327         pointer arguments according to the value of
22328         flag_argument_noalias.
22329         * tree-ssa-structalias.h (struct alias_info): Remove fields
22330         num_calls_found and num_pure_const_calls_found.
22331         (update_mem_sym_stats_from_stmt): Declare.
22332         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
22333         Set default value to 100.
22334         (PARAM_AVG_ALIASED_VOPS): Define.
22335
22336 2007-04-11  Richard Guenther  <rguenther@suse.de>
22337
22338         PR middle-end/31530
22339         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
22340         a * -b + c as c - a * b if we honor sign dependent rounding.
22341
22342 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22343
22344         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
22345         bfin_expand_strmov.
22346         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
22347         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
22348         variables.
22349         (initialize_trampoline): Don't use old-style function definition.
22350         (bfin_secondary_reload): Mark IN_P argument as unused.
22351
22352 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
22353
22354         PR tree-optimization/31343
22355         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
22356         (build_polynomial_chrec): Return a scalar when the evolution is zero.
22357         * testsuite/gcc.dg/vect/pr31343.c: New.
22358
22359 2007-04-10  Eric Christopher  <echristo@apple.com>
22360
22361         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
22362         * config/i386/i386.md (*cmpfp0): Use.
22363         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
22364         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
22365         (fix_trunc<mode>_i386_fisttp): Ditto.
22366         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
22367         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
22368         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
22369         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
22370         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
22371         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
22372         (unnamed_splitters): Ditto.
22373         * config/i386/i386.c (output_fix_trunc): Assert that
22374         we're not being passed a TFmode operand.
22375
22376 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
22377
22378         PR tree-optimization/31526
22379         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
22380         n_basic_blocks to find newly added blocks.
22381
22382 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
22383
22384         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
22385         alternative.
22386         (fix_trunc<mode>si_sse): Ditto.
22387         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
22388         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
22389         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
22390         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
22391         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
22392         expander using SSEMODEF mode macro.
22393         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
22394         expander using SSEMODEF mode macro.
22395         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
22396         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
22397         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
22398         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
22399         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
22400         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
22401         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
22402         Macroize insn using X87MODEF mode macro.
22403
22404 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22405
22406         * config/i386/sse.md (sse2_pinsrw): Removed.
22407         (sse2_pextrw): Renamed to ...
22408         (*sse2_pextrw): This.
22409
22410 2007-04-09  Jan Hubicka  <jh@suse.cz>
22411
22412         PR target/27869
22413         * config/i386/sse.md
22414         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
22415         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
22416         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
22417         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
22418
22419 2007-04-09  Jan Hubicka  <jh@suse.cz>
22420
22421         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
22422         multiple fields of union.
22423
22424 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
22425
22426         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
22427         (create_preheaders): Check that loops are available.
22428         (fix_loop_structure): Clean up, improve comments.
22429         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
22430         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
22431         state flags.
22432         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
22433         * predict.c (tree_estimate_probability): Do not call
22434         calculate_dominance_info.  Call create_preheaders.
22435         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
22436         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
22437         flags.
22438         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
22439         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
22440         * tree-cfg.c (tree_split_edge): Make an assert more precise.
22441         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
22442         arguments.
22443
22444 2007-04-08  Jan Hubicka  <jh@suse.cz>
22445
22446         * tree.h (maybe_fold_offset_to_component_ref): Declare.
22447         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
22448         * fold-const.c (fold_unary): Use it.
22449
22450 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22451
22452         * varasm.c (assemble_variable): Remove call to
22453         lang_hooks.decls.prepare_assemble_variable.
22454         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
22455         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
22456         * langhooks.h (lang_hooks_for_decls): Remove
22457         prepare_assemble_variable.
22458
22459 2007-04-08  Mike Stump  <mrs@apple.com>
22460
22461         * config/i386/i386.c: Use inc/dec on Core2.
22462
22463 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
22464
22465         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
22466         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22467         lhd_tree_inlining_end_inlining): Remove.
22468         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
22469         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
22470         end_inlining hooks.
22471         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
22472         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22473         lhd_tree_inlining_end_inlining): Remove prototypes.
22474         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
22475         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
22476         LANG_HOOKS_TREE_INLINING_START_INLINING,
22477         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
22478
22479         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
22480         not set it.
22481
22482 2007-04-08  Anatoly Sokolov <aesok@post.ru>
22483
22484         PR target/29932
22485         * config/avr/predicates.md (io_address_operand): Delete predicate.
22486         (low_io_address_operand): Don't use 'mode' argument.
22487         (higth_io_address_operand): Rename ...
22488         (high_io_address_operand): ... to this. Don't use 'mode' argument.
22489         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
22490         for above change.
22491
22492 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
22493
22494         Revert change removing staticp.
22495
22496 2007-04-07  Anatoly Sokolov <aesok@post.ru>
22497
22498         PR target/30289
22499         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
22500         earlyclobber.
22501
22502 2007-04-07  Bruce Korb  <bkorb@gnu.org>
22503
22504         * c.opt: Add -Wformat-contains-nul.
22505         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
22506           -Wformat setting.
22507         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
22508         the NUL byte warning.
22509
22510 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
22511
22512         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
22513
22514 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22515
22516         * tree.c (staticp): No longer use staticp langhook.
22517         * langhooks.c (lhd_staticp): Removed.
22518         * langhooks.h (struct lang_hooks): Remove staticp.
22519         * c-common.c (c_staticp): Remove.
22520         * c-common.h (c_staticp): Ditto.
22521         * langhooks-defs.h (lhd_staticp): Ditto.
22522         (LHD_HOOKS_STATICP): Ditto
22523         * tree.h (gcc_assert_lowered): New macro.
22524
22525 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
22526
22527         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
22528         argument "reliable".
22529         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
22530         Add argument "reliable".  Propagate it through calls.
22531         (infer_loop_bounds_from_undefined): Derive number of iterations
22532         estimates from references in blocks that do not dominate loop latch.
22533         (gcov_type_to_double_int): New function.
22534         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
22535         and expected_loop_iterations_unbounded.
22536         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
22537         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
22538         * tree-data-ref.c (estimated_loop_iterations): Export.
22539         (get_references_in_stmt): Fix -- do not return addresses of local
22540         objects.
22541         * cfgloop.h (expected_loop_iterations_unbounded,
22542         estimated_loop_iterations): Declare.
22543
22544 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
22545
22546         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
22547
22548 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22549
22550         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
22551         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
22552         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
22553         Use output_387_reg_move().
22554         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
22555         expander using X87MODEF12 mode macro.
22556         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
22557         choosing register preferences.  Use output_387_reg_move().
22558         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
22559         instead of "x".  Use output_387_reg_move().
22560         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
22561         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
22562         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
22563         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
22564         Use output_387_reg_move().
22565         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
22566         mode macro.
22567         (*truncxf?f_i387 splitter): Ditto.
22568
22569 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22570
22571         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
22572         LANG_HOOKS_SAFE_FROM_P.
22573         * expr.c (safe_from_p): Remove langhook call.
22574         * langhooks.h (lang_hooks): Remove safe_from_p.
22575         (lhd_safe_from_p): Remove prototype.
22576         * langhooks.c (lhd_safe_from_p): Remove.
22577
22578 2007-04-06  Jan Hubicka  <jh@suse.cz>
22579
22580         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
22581         functions.
22582
22583 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22584
22585         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
22586         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
22587         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
22588         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
22589         alternative.
22590         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
22591         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
22592
22593 2007-04-05  Richard Henderson  <rth@redhat.com>
22594
22595         * config/alpha/alpha.c (print_operand) [+]: Remove.
22596         (alpha_end_function): Print nop if call at end of function.
22597         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
22598         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
22599         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
22600         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
22601         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
22602         the call pattern. Update peepholes to match.
22603
22604 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
22605
22606         * doc/extend.texi (Other Builtins): Add decimal float variants
22607         of signbit.
22608         * builtins.def: Ditto.
22609         * builtins.c (expand_builtin): Ditto.
22610
22611 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
22612             H.J. Lu  <hongjiu.lu@intel.com>
22613
22614         PR target/31478
22615         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
22616         of V8HImode when calling ix86_binary_operator_ok.
22617         (sse2_pmaddwd): Call ix86_binary_operator_ok.
22618         (sdot_prodv8hi): Operands 1 and 2 must be register.
22619
22620 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22621
22622         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
22623         initialize align to silence bogus warning.
22624
22625 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22626
22627         PR middle-end/22156
22628         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
22629         all_no_warning.
22630         (struct sra_walk_fns): Remove use_all parameter from use.
22631         (sra_hash_tree): Handle BIT_FIELD_REFs.
22632         (sra_elt_hash): Don't hash bitfld blocks.
22633         (sra_elt_eq): Skip them in parent compares as well.  Handle
22634         BIT_FIELD_REFs.
22635         (sra_walk_expr): Don't maintain or pass down use_all_p.
22636         (scan_use): Remove use_all parameter.
22637         (scalarize_use): Likewise.  Re-expand assignment to
22638         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
22639         output, and re-scalarize after output.  Don't mark anything
22640         for no warning.
22641         (scalarize_ldst): Adjust.
22642         (scalarize_walk_gimple_modify_statement): Likewise.
22643         (build_element_name_1): Handle BIT_FIELD_REFs.
22644         (instantiate_element): Don't warn for any element whose parent
22645         is used as a whole.
22646         (instantiate_missing_elements_1): Return the sra_elt.
22647         (canon_type_for_field): New.
22648         (try_instantiate_multiple_fields): New.
22649         (instantiate_missing_elemnts): Use them.
22650         (mark_no_warning): Removed.
22651         (generate_one_element_ref): Handle BIT_FIELD_REFs.
22652         (REPLDUP, sra_build_elt_assignment): New.
22653         (generate_copy_inout): Use them.
22654         (generate_element_copy): Likewise.  Handle bitfld differences.
22655         (generate_element_zero): Don't recurse for blocks.  Use
22656         sra_build_elt_assignment.
22657         (generate_one_element_int): Take elt instead of var.  Use
22658         sra_build_elt_assignment.
22659         (generate_element_init_1): Adjust.
22660         (scalarize_use, scalarize_copy): Use REPLDUP.
22661         (scalarize_ldst): Move assert before dereference.
22662         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
22663
22664 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22665
22666         * regmove.c: Fix unused variable warnings due to previous commit.
22667
22668 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22669
22670         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
22671         (regmove_bb_head): Remove.
22672         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
22673         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
22674         problems with fixup_match_1.
22675         Don't initialize/free regmove_bb_head.
22676
22677         (reg_is_remote_constant_p): If an insn is in the same basic block
22678         but not before INSN, consider it remote, too.
22679
22680 2007-04-05  Anatoly Sokolov <aesok@post.ru>
22681
22682         PR target/25448
22683         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
22684         DECL_ASSEMBLER_NAME, not the DECL_NAME.
22685
22686 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
22687
22688         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
22689         (CONDITIONAL_REGISTER_USAGE): Likewise.
22690
22691 2007-04-04  Richard Henderson  <rth@redhat.com>
22692
22693         * config/alpha/lib1funcs.asm: Remove unused file.
22694
22695 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22696
22697         PR other/31356
22698         * opts.c (print_specific_help): Fix --help=<language>
22699         header line.
22700         (common_handle_option): Support --help=common.
22701
22702 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22703
22704         PR other/31353
22705         * gcc.c (main): Do not run the linker if
22706         print_subprocess_help indicates that it shouldn't be
22707         run.
22708
22709 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22710
22711         PR doc/31355
22712         * doc/invoke.texi (--help=): Document <languages> value, fix
22713         formatting in tables of values.
22714
22715 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
22716
22717         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
22718         dllimport attribute of virtual methods.
22719
22720 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
22721
22722         * config/score/crti.asm: Change _bss_start to __bss_start.
22723         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
22724         (OUTGOING_REG_PARM_STACK_SPACE) update.
22725         * config/score/score.opt: add options to make backend support
22726         score5, score5u, score7 and score7d.
22727         * config/score/score.md: Likewise.
22728         * config/score/misc.md: Likewise.
22729         * config/score/mac.md: Likewise.
22730         * doc/invoke.texi: Likewise.
22731         * doc/md.texi: update constraints define.
22732
22733 2007-04-03  Richard Henderson  <rth@redhat.com>
22734
22735         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
22736         an appropriate type, use the mode instead.
22737
22738 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
22739
22740         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
22741         Set the default --with-arch setting to mips2.
22742         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
22743         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
22744         (MULTILIB_OSDIRNAMES): Delete.
22745         (MULTILIB_DIRNAMES): Define.
22746         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
22747         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
22748         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
22749         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
22750         VXWORKS_OS_CPP_BUILTINS.
22751         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
22752         (MIPS_DEBUGGING_INFO): Undefine.
22753         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
22754
22755 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
22756
22757         PR middle-end/30704
22758         * fold-const.c (native_encode_real): Encode real.c provided longs
22759         as a series of 32-bit native integers.
22760         (native_interpret_real): Interpret buffer as a series of 32-bit
22761         native integers.
22762
22763 2007-04-03  Richard Guenther  <rguenther@suse.de>
22764
22765         * genpreds.c (write_insn_constraint_len): Write function
22766         optimized for CONSTRAINT_LEN implementation.
22767         (write_tm_preds_h): Output insn_constraint_len inline and
22768         use it for CONSTRAINT_LEN.
22769         (write_insn_preds_c): Don't output insn_constraint_len.
22770         * doc/md.texi (define_register_constraint): Document multi-letter
22771         constraints shall have the same length if they start with the same
22772         letter.
22773
22774 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22775
22776         PR target/31175
22777         * config/i386/i386.md (isinf<mode>2): Expand only when
22778         TARGET_C99_FUNCTIONS is set.
22779
22780 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22781
22782         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
22783         (x86_64-*-linux*): Ditto.
22784         * config/i386/i386.opt (mpc): New option.
22785         * config/i386/i386.c (overrride_options): Handle
22786         ix87_precision_string.
22787         * config/i386/crtprec.c: New file.
22788         * config/i386/t-crtpc: Ditto.
22789         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
22790         and -mpc80 options.
22791         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
22792         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
22793         crtprec32.o, crtprec64.o and crtprec80.o.
22794
22795         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
22796         and -mpc80 options.
22797         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
22798
22799 2007-04-02  Eric Christopher  <echristo@apple.com>
22800
22801         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
22802         limitations on darwin.
22803
22804 2007-04-02  Anatoly Sokolov <aesok@post.ru>
22805
22806         PR target/31137
22807         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
22808
22809 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22810
22811         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
22812
22813 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22814
22815         * libgcc2.h (exception_descriptor): Don't forward-declare.
22816         (__get_eh_table_language, __get_eh_table_version): Delete
22817         prototypes of long-dead functions.
22818
22819 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
22820
22821         * ebitmap.h: New file
22822         * ebitmap.c: New file
22823         * Makefile.in (ebitmap.o): New target.
22824
22825 2007-04-01  Jan Hubicka  <jh@suse.cz>
22826
22827         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
22828         before very first instruction.
22829
22830 2007-04-01  Jan Hubicka  <jh@suse.cz>
22831
22832         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
22833         waring on 64bit hosts.
22834         * bitmap.h: Fix typo in bitmap_head_def.
22835
22836 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
22837
22838         PR rtl-optimization/31391
22839         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
22840         into a DELETED_LABEL note, and the label is in an empty basic
22841         block, update BB_END as well as BB_HEAD.
22842
22843 2007-04-01  Richard Henderson  <rth@redhat.com>
22844
22845         PR tree-optimization/31169
22846         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
22847         to varying if the range is outside [0,  prec-1].
22848
22849 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
22850
22851         PR target/31388
22852         * config/mips/mips.md (load_const_gp): New insn.
22853         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
22854         the MIPS16 GP pseudo register if no_new_pseudos.
22855         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
22856
22857 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22858
22859         PR target/31364
22860         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
22861         secureplt.
22862         (call_value): Likewise.
22863
22864 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
22865             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22866
22867         PR 14737
22868         * doc/invoke.texi: (optimization options): Reword description
22869         of -ffast-math. Document its primary purpose.
22870
22871 2007-03-31  Richard Guenther  <rguenther@suse.de>
22872
22873         * omp-low.c (splay-tree.h): Include.
22874         (lookup_decl): Replace splay-tree usage by pointer-map.
22875         (maybe_lookup_decl): Likewise.
22876         (new_omp_context): Likewise.
22877         (delete_omp_context): Likewise.
22878         * gimplify.c (splay-tree.h): Include.
22879         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
22880         pointer-map.
22881         (remap_ssa_name): Likewise.
22882         (remap_decl): Likewise.
22883         (remap_type_1): Likewise.
22884         (remap_type): Likewise.
22885         (copy_body_r): Likewise.
22886         (expand_call_inline): Likewise.
22887         (clone_body): Likewise.
22888         (copy_tree_r): Likewise.
22889         (remap_save_expr): Likewise.
22890         (unsave_r): Likewise.
22891         (unsave_expr_now): Likewise.
22892         (tree_function_versioning): Likewise.
22893         (build_duplicate_type): Likewise.
22894         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
22895         (struct copy_body_data): Replace splay-tree by pointer-map.
22896         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
22897         not $(SPLAY_TREE_H).
22898         (gimplify.o): Depend on $(SPLAY_TREE_H).
22899         (omp-low.p): Likewise.
22900
22901 2007-03-31  Anatoly Sokolov <aesok@post.ru>
22902
22903         * config/avr/predicates.md (even_register_operand,
22904         odd_register_operand): New predicates.
22905         * config/avr/avr.md (movw peephole2): New.
22906         (movw_r peephole2): New.
22907
22908 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
22909
22910         * tree.h (get_signed_or_unsigned_type): New.
22911         * fold-const.c (operand_equal_for_comparison_p): Use
22912         get_signed_or_unsigned_type instead of
22913         lang_hooks.types.signed_or_unsigned_type.
22914         * expr.c (store_expr): Ditto.
22915         * langhooks.c (get_signed_or_unsigned_type): New.
22916         (lhd_signed_or_unsigned_type): New.
22917         * langhooks.h (lhd_signed_or_unsigned_type): New.
22918         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
22919
22920 2007-03-30  Richard Henderson  <rth@redhat.com>
22921
22922         * tree-ssa-loop-ivopts.c: Include target.h.
22923         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
22924         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
22925         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
22926         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
22927
22928 2007-03-30  Richard Henderson  <rth@redhat.com>
22929             Kai Tietz  <kai.tietz@onevision.com>
22930
22931         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
22932         default for 64-bit.
22933         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
22934         (TARGET_64BIT_MS_ABI): New.
22935         (DBX_REGISTER_NUMBER): Handle 64-bit.
22936         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
22937         (LONG_TYPE_SIZE): Force to 32.
22938         (REG_PARM_STACK_SPACE): New.
22939         (OUTGOING_REG_PARM_STACK_SPACE): New.
22940         (REGPARM_MAX, SSE_REGPARM_MAX): New.
22941         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22942         (STACK_BOUNDARY): Use 128 for 64-bit.
22943         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
22944         Add 64-bit implementation.
22945         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
22946         argument unused.
22947         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
22948         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
22949         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
22950         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
22951         (ix86_handle_cconv_attribute): Don't warn when ignoring if
22952         TARGET_64BIT_MS_ABI.
22953         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
22954         (ix86_pass_by_reference): Likewise.
22955         (ix86_function_value_regno_p): Likewise.
22956         (ix86_build_builtin_va_list): Likewise.
22957         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
22958         (function_arg_advance_ms_64): New.
22959         (function_arg_advance): Call it.
22960         (function_arg_ms_64): New.
22961         (function_arg): Call it.
22962         (function_value_ms_64): New.
22963         (ix86_function_value_1): Call it.
22964         (return_in_memory_ms_64): New.
22965         (ix86_return_in_memory): Call it.
22966         (setup_incoming_varargs_ms_64): New.
22967         (ix86_setup_incoming_varargs): Call it.
22968         (ix86_expand_prologue): Handle 64-bit stack probing.
22969         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
22970         (output_pic_addr_const): Likewise.
22971         (x86_this_parameter): Likewise.
22972         (x86_output_mi_thunk): Likewise.
22973         (x86_function_profiler): Likewise.
22974         (TARGET_STRICT_ARGUMENT_NAMING): New.
22975         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
22976         (TARGET_64BIT_MS_ABI): New.
22977         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
22978         * config/i386/i386.md (allocate_stack_worker): Remove.
22979         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
22980         describe the clobber of eax without a match_scratch.
22981         (allocate_stack_worker_postreload): Remove.
22982         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
22983         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
22984         (allocate_stack_worker_rex64_postreload): Remove.
22985         (allocate_stack): Handle 64-bit.
22986         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
22987         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
22988         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
22989         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
22990         (STANDARD_STARTFILE_PREFIX_1): Likewise.
22991         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
22992         * config.build (x86_64-*-mingw*): New host.
22993         * config.host (x86_64-*-mingw*): New host.
22994         * config.gcc (x86_64-*-mingw*): New target.
22995         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
22996
22997 2007-03-30  Richard Henderson  <rth@redhat.com>
22998             Kai Tietz  <kai.tietz@onevision.com>
22999
23000         * c-pragma.c (struct def_pragma_macro_value): New.
23001         (struct def_pragma_macro): New.
23002         (pushed_macro_table): New.
23003         (dpm_hash, dpm_eq): New.
23004         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
23005         (init_pragma): Install them.
23006         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
23007
23008 2007-03-30  Anatoly Sokolov <aesok@post.ru>
23009
23010         * config/avr/avr.c (avr_override_options): Clear
23011         'flag_delete_null_pointer_checks'.
23012
23013 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
23014
23015         PR c++/26099
23016         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
23017         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
23018         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
23019         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
23020         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
23021         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
23022         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
23023         C++ extensions.
23024         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
23025
23026 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
23027
23028         * regmove.c: Move all of pass_stack_adjustments from here...
23029         * combine-stack-adj.c: ...to this new file.
23030         * Makefile.in: Add rules for combine-stack-adj.o.
23031
23032 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
23033
23034         PR tree-optimization/31383
23035         * tree-data-ref.c (affine_function_equal_p): Do not require the
23036         vectors to have the same length.
23037
23038 2007-03-30  Jan Hubicka  <jh@suse.cz>
23039
23040         PR middle-end/30700
23041         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
23042         availablility; add more sanity checking; ask varpool only about
23043         VAR_DECL.
23044
23045 2007-03-29  Richard Henderson  <rth@redhat.com>
23046
23047         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
23048         to decide, but __SIZEOF_LONG_LONG__.
23049
23050 2007-03-29  Richard Henderson  <rth@redhat.com>
23051
23052         * emutls.c (struct __emutls_array): New.
23053         (emutls_destroy): Use it instead of casting element 0 from void*.
23054         (__emutls_get_address): Likewise.
23055
23056 2007-03-29  Richard Henderson  <rth@redhat.com>
23057
23058         * varasm.c (initializer_constant_valid_p): Don't deny
23059         DECL_DLLIMPORT_P on functions.
23060
23061         * config/i386/cygming.h: Remove function declarations.
23062         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
23063         (ASM_OUTPUT_LABELREF): Remove.
23064         (COMMON_ASM_OP): Remove.
23065         (ASM_OUTPUT_COMMON): Remove.
23066         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
23067         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
23068         (ASM_DECLARE_FUNCTION_NAME): Likewise.
23069         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
23070         Rename from TARGET_ENCODE_SECTION_INFO.
23071         * config/i386/netware.h: Likewise.
23072         * config/i386/i386-protos.h: Update.
23073         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
23074         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
23075         (legitimate_constant_p): Reject dllimports.
23076         (dllimport_map, get_dllimport_decl): New.
23077         (legitimize_dllimport_symbol): New.
23078         (legitimize_address, ix86_expand_move): Use it.
23079         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
23080         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
23081         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
23082         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
23083         * config/i386/predicates.md (constant_call_address_operand): Only
23084         accept symbols; reject dllimport_p symbols.
23085         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
23086         i386_pe_maybe_record_exported_symbol.
23087         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
23088         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
23089         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
23090         trust the setting of DECL_DLLIMPORT_P.
23091         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
23092         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
23093         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
23094         tidy the argument scanning loop.
23095         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
23096         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
23097         (i386_pe_strip_name_encoding): Remove.
23098         (i386_pe_binds_local_p): New.
23099         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
23100         (i386_pe_output_labelref): Remove.
23101         (i386_pe_asm_output_aligned_decl_common): New.
23102         (i386_pe_maybe_record_exported_symbol): Rename from
23103         i386_pe_record_exported_symbol; check for dllexported symbols.
23104
23105 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
23106
23107         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
23108         add comment explaining why vsnprintf cannot be used.
23109
23110 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
23111
23112         PR tree-optimization/30666
23113         * tree.c (build_complex_type): When creating type names for DWARF2
23114         debug info, create TYPE_DECLs for TYPE_NAME instead of
23115         IDENTIFIER_NODEs.
23116         (build_common_tree_nodes_2): Use build_complex_type when building
23117         predefined complex types, to preserve canonical types.
23118
23119 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
23120
23121         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
23122         (noce_get_alt_condition): Look at it to determine whether to
23123         reverse the condition or not.
23124         (noce_get_condition): Substitute the truth for lies.
23125         (noce_find_if_block): Set the then_else_reversed field.
23126
23127 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
23128
23129         * config/fr30/fr30.md (movdi): Do not accept immediates as the
23130         destination of this insn.
23131         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
23132         than calling gen_rtx_SET directly.  Use r0 to hold the value of
23133         'address + 4' rather than a stack based temporary which can be
23134         mis-optimized away.
23135
23136 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23137
23138         * config/s390/s390.c (s390_secondary_input_reload_class,
23139         s390_secondary_output_reload_class): Functions removed.
23140         (s390_secondary_reload): New function.
23141         (TARGET_SECONDARY_RELOAD): Target macro defined.
23142         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
23143         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
23144         * config/s390/s390.md ("reload_outti", "reload_outdi",
23145         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
23146         "reload_out<mode>"): Expanders removed.
23147         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
23148         "reload<mode>_nonoffmem_out"): Expanders added.
23149
23150 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23151
23152         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
23153         action if SRC->DEST replacement failed anyway.
23154
23155 2007-03-28  Mike Stump  <mrs@apple.com>
23156
23157         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
23158         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
23159         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
23160
23161 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
23162
23163         * config.gcc: Accept barcelona as a variant of amdfam10.
23164         * config/i386/i386.c (override_options): Likewise.
23165         * doc/invoke.texi: Likewise.
23166
23167 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
23168
23169         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
23170         offsets for BIT_FIELD_REF and COMPONENT_REF.
23171
23172 2007-03-28  Richard Guenther  <rguenther@suse.de>
23173
23174         * tree.c (is_global_var): Move ...
23175         * tree-flow-inline.h (is_global_var): ... here.
23176         * tree.h (is_global_var): Remove declaration.
23177
23178 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
23179
23180         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
23181         option.
23182         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
23183         * config/i386/i386.c (ix86_tune_features): Initialize new
23184         tuning option.
23185         * config/i386/predicates.md (promotable_binary_operator): Use
23186         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
23187
23188 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
23189
23190         PR target/31380
23191         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
23192
23193 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
23194
23195         * config/fr30/fr30.md (movsi_internal): Change destination
23196         constraint from m to V and add m to the end.
23197
23198 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23199
23200         * config/sh/sh.md (movsi_i): Fix type attribute.
23201
23202 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23203
23204         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
23205         (movsf_ie): Likewise.
23206
23207 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23208
23209         * config.gcc: Add sh4-300 to multilib.
23210         * config/sh/t-mlib-sh4-300: New file.
23211
23212 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
23213
23214         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
23215         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
23216         fix_trunc<mode>di2.
23217         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
23218         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
23219         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
23220         "fixuns_trunctddi2"): Whitespace fix.
23221
23222 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
23223
23224         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
23225         the definition of struct sh_args.
23226         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
23227         CALL_COOKIE_INT_REG_GET): Likewise.
23228
23229 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
23230
23231         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
23232         transformations are applied successfully.
23233
23234 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
23235
23236         * tree.c (tree_contains_struct): Permit 512 tree codes.
23237         * tree.h (tree_contains_struct): Ditto.
23238         (MAX_TREE_CODES): Ditto.
23239         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
23240         SPARE member to store remaining padding bits.
23241
23242 2007-03-27  Anatoly Sokolov <aesok@post.ru>
23243
23244         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
23245         architecture.
23246
23247 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
23248
23249         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
23250         * configure: Regenerate.
23251
23252         * configure: Regenerate using the correct version of autoconf.
23253
23254 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
23255
23256         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
23257         pointer regs.
23258         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
23259         regs to "__SP_L__" and "__SP_H__".
23260
23261 2007-03-27  Richard Guenther  <rguenther@suse.de>
23262
23263         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
23264         computations with it with a HOST_WIDE_INT variable.
23265
23266 2007-03-26  Mike Stump  <mrs@apple.com>
23267
23268         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
23269         objective-c-header, objective-c++-header and objc++-cpp-output
23270         support.
23271         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23272
23273 2007-03-26  Richard Henderson  <rth@redhat.com>
23274
23275         PR target/31361
23276         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
23277         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
23278         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
23279         IX86_BUILTIN_PSRLQ128): New.
23280         (ix86_init_mmx_sse_builtins): Add them.
23281         (ix86_expand_builtin): Expand them.
23282         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
23283         operand 2 be TImode.
23284         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
23285         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
23286         _mm_srli_epi64): Mark __B const.
23287         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
23288         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
23289         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
23290         new two-vector shift builtins.
23291
23292 2007-03-26  Ian Lance Taylor  <iant@google.com>
23293
23294         PR tree-optimization/31345
23295         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
23296         [+INF, +INF(OVF)] into VARYING.
23297
23298 2007-03-26  Zack Weinberg  <zackw@panix.com>
23299
23300         * gengtype-parse.c: New file.
23301         * gengtype-yacc.y: Delete.
23302         * gengtype-lex.l: Don't include gengtype-yacc.h.
23303         Define YY_DECL and yyterminate appropriately for recursive
23304         descent parser.  yylval is now a string out-parameter to yylex.
23305         (HWS, EOID): New shorthand.
23306         (IWORD): Add a couple more types.
23307         (yylex): Add a setup stanza.  Remove the complex rules for
23308         detecting GTY'ed types and typedefs; replace with simple
23309         keyword detectors.  Adjust everything for the changed
23310         definition of yylval.  Ignore all pp-directives, not just #define.
23311         (yyerror): Delete.
23312         (parse_file): Rename yybegin; do not call yyparse.
23313         (yyend): New.
23314         * gengtype.c (xasprintf): Export again.
23315         (this_file): New.  Use everywhere __FILE__ was being used.
23316         (get_lang_bitmap): Special case types defined in gengtype.c.
23317         (do_typedef, new_structure): Suppress definition of certain types.
23318         (new_structure): Improve diagnostics of duplicate definitions.
23319         Make sure location_s is associated with input.h.
23320         (nreverse_pairs, define_location_structures): New functions.
23321         (main): Improve tagging of kludge types.  Remove old kludges
23322         for input.h types; use define_location_structures.
23323         * gengtype.h: Update prototypes.  Define token codes here.
23324         * Makefile.in: Remove all references to gengtype-yacc.
23325         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
23326         and gengtype.
23327         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
23328         add GTY((skip)) to the field that's only conditionally there.
23329         * doc/install.texi: Document that Bison is no longer required
23330         unless building treelang.
23331
23332         * gengtype.c: Don't include gtyp-gen.h.
23333         (srcdir): Declare here.
23334         (base_files, lang_dir_names): Allocate dynamically.
23335         (gt_files, num_gt_files, num_lang_dirs): New globals.
23336         (measure_input_list, read_input_line, read_input_list)
23337         (set_lang_bitmap): New functions.
23338         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
23339         simplify, relying on read_input_list to set up the bitmaps.
23340         (main): Arguments are no longer unused.  Check for correct number
23341         of command line arguments, set srcdir and srcdir_len, then call
23342         read_input_list, before doing anything else.  No need to worry
23343         about duplicates in main loop.
23344         * configure.ac: Simplify the calculation of all_gtfiles.
23345         Put language tags in there.  Don't set or substitute
23346         all_gtfiles_files_langs or all_gtfiles_files_frags.
23347         * Makefile.in: Revamp the way gengtype is invoked, now that it
23348         takes a file on its command line with a much simpler format.
23349         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
23350         (GTFILES): Remove duplicates and C source files.
23351         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
23352         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
23353         * configure: Regenerate.
23354
23355         * gengtype.h: Remove all type definitions to gengtype.c; leave
23356         only definitions of options_p, type_p, and pair_p as opaque
23357         pointers.  Update prototypes.
23358         * gengtype.c: Many type definitions moved here from gengtype.h.
23359         Consolidate type definitions at the top of the file.
23360         (xvasprintf): Delete.
23361         (xasprintf): Make static.
23362         (create_nested_pointer_option): Add 'next' parameter.
23363         (create_field_all, create_field_at): New functions.
23364         (create_field): Now a thin wrapper around create_field_all.
23365         (create_optional_field): Rename create_optional_field_ and add
23366         line argument.  Original name is now a macro which supplies
23367         __LINE__.
23368         (oprintf): Use vsnprintf directly.
23369         (close_output_files): Use fatal rather than perror/exit.
23370         (note_def_vec, note_def_vec_alloc): Use create_field_at.
23371         (main): Set progname.  Don't use exit.
23372         * gengtype-yacc.y (struct_fields): Use create_field_at.
23373         (option, optionseqopt): Delete.
23374         (optionseq): Consolidate productions from option here so we
23375         can use the first argument to create_option.
23376
23377         * gengtype-lex.l: Distinguish unions from structures in the
23378         token type.  Don't call find_structure; return the tag as a string.
23379         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
23380         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
23381         string.  Reorganize typedef_struct production accordingly.
23382         Use create_nested_ptr_option.
23383         * gengtype.c (create_nested_ptr_option): New function.
23384         * gengtype.h: Declare it.
23385
23386         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
23387         (string_type): Don't declare.
23388         (do_scalar_typedef): Declare.
23389         (create_scalar_type): Update prototype.
23390         * gengtype.c (string_type): Make static.
23391         (scalar_nonchar, scalar_char): New.
23392         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
23393         (resolve_typedef): Use scalar_nonchar for error recovery.
23394         (create_scalar_type): Remove name_len field.  Return scalar_char
23395         or scalar_nonchar as appropriate.
23396         (adjust_field_type): Look at scalar_is_char boolean to decide whether
23397         to use string_type.
23398         (throughout): Use scalar_nonchar instead of calling
23399         create_scalar_type, whenever possible.
23400         (main): Initialize scalar_char and scalar_nonchar before calling
23401         gen_rtx_next.
23402         * gengtype-lex.l: Adjust for removal of second argument to
23403         create_scalar_type.  Use yylval.s instead of yylval.t when
23404         returning SCALAR.
23405         * gengtype-yacc.y: Type of SCALAR is string.  Call
23406         create_scalar_type from type:SCALAR rule.  Adjust for removal of
23407         second argument to create_scalar_type.
23408
23409         * vec.h: Remove all #if IN_GENGTYPE blocks.
23410         Add comment saying that changes may require adjustments to gengtype.
23411         * gengtype.c: Don't include coretypes.h or tm.h.
23412         Add comment to inclusion of errors.h.
23413         (note_def_vec, note_def_vec_alloc): New functions.
23414         * gengtype.h: Declare new functions.
23415         * gengtype-lex.l: Don't include coretypes.h.
23416         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
23417         Delete.
23418         (update_lineno): Remove unnecessary prototype.
23419         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
23420         (VEC rule): Just return VEC_TOKEN.
23421         * gengtype-yacc.y (VEC_TOKEN): New token type.
23422         (type): Add a production for VEC(a,b).
23423         * Makefile.in: Update dependencies.
23424
23425         * gengtype-lex.l: Remove rules for parsing pointer-to-function
23426         typedefs that use the old PARAMS macro.
23427
23428         * gengtype-lex.l: Remove all rules and states relating to yacc
23429         input files.
23430         * gengtype-yacc.y: Similarly.
23431         * gengtype.c (note_yacc_type): Delete function.
23432         * gengtype.h: Update prototypes.
23433
23434 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
23435
23436         * tree-pretty-print.c (dump_generic_node): Report precision of
23437         unnamed integer types.
23438
23439 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
23440
23441         * ifcvt.c (noce_try_store_flag_constants): Don't check
23442         no_new_pseudos here.
23443         (noce_try_store_flag_constants): Don't check no_new_pseudos.
23444         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
23445         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
23446         noce_try_sign_mask): Likewise.
23447         (if_convert): Check no_new_pseudos here.
23448
23449         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
23450         Remove prototypes.
23451         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
23452         (noce_get_condition): Handle new then_else_reversed argument.
23453         (noce_init_if_info): Remove, fold into noce_find_if_block.
23454         (noce_process_if_block): Take a struct noce_if_info as the
23455         argument.  Don't set up one based on ce_if_info.  Update pointer
23456         references accordingly.
23457         (cond_move_process_if_block): Likewise.
23458         (process_if_block): Removed.
23459         (find_if_block): Removed.  Move functionality two new functions,
23460         noce_find_if_block and cond_exec_find_if_block.
23461         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
23462         blocks and the symmetric IF-ELSE-JOIN case.
23463         (cond_exec_find_if_block): Also new function mostly based on old
23464         find_if_block and process_if_block.
23465         (find_if_header): Replace find_if_block call with separately
23466         guarded calls to noce_find_if_block and cond_exec_find_if_block.
23467         (find_cond_trap): Update noce_get_condition call.
23468         (dead_or_predicable): Likewise.
23469
23470 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
23471
23472         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
23473         Remove.
23474         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
23475         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
23476         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
23477         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
23478         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
23479         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
23480         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
23481         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
23482         __builtin_ia32_psrad128 builtins.
23483
23484 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
23485
23486         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
23487         * config/i386/constraints.md
23488         (define_constraint "I"): Use IN_RANGE macro.
23489         (define_constraint "J"): Ditto.
23490         (define_constraint "K"): Ditto.
23491         (define_constraint "M"): Ditto.
23492         (define_constraint "N"): Ditto.
23493         (define_constraint "O"): Ditto.
23494         * config/i386/predicates.md
23495         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
23496         (define_predicate "const_0_to_3_operand"): Ditto.
23497         (define_predicate "const_0_to_7_operand"): Ditto.
23498         (define_predicate "const_0_to_15_operand"): Ditto.
23499         (define_predicate "const_0_to_63_operand"): Ditto.
23500         (define_predicate "const_0_to_255_operand"): Ditto.
23501         (define_predicate "const_1_to_31_operand"): Ditto.
23502         (define_predicate "const_2_to_3_operand"): Ditto.
23503         (define_predicate "const_4_to_7_operand"): Ditto.
23504
23505 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23506
23507         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
23508         in SImode for save_world.
23509         * config/rs6000/altivec.md (save_world, restore_world): Convert to
23510         LR hard reg.
23511
23512 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
23513
23514         PR tree-optimization/30784
23515         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
23516         BIT_FIELD_REF.
23517
23518 2007-03-25  Revital Eres  <eres@il.ibm.com>
23519
23520         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
23521           Fold movement_possibility function into it.
23522
23523 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23524
23525         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
23526         (load_macho_picbase_{si,di}): Convert to LR hard reg.
23527         (call_indirect_nonlocal_darwin64): Same.
23528         (call_nonlocal_darwin64): Same.
23529         (call_value_indirect_nonlocal_darwin64): Same.
23530         (call_value_nonlocal_darwin64): Same.
23531         (sibcall_nonlocal_darwin64): Same.
23532         (sibcall_value_nonlocal_darwin64): Same.
23533         (sibcall_symbolic_64): Same.
23534         (sibcall_value_symbolic_64): Same.
23535         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
23536         LR pseudo.
23537         (rs6000_emit_load_toc_table): Same.
23538         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
23539         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
23540         (mull_call): Same.
23541         (divss_call): Same.
23542         (divus_call): Same.
23543         (quoss_call): Same.
23544         (quous_call): Same.
23545         (load_toc_v4_pic_si): Same
23546         (load_toc_v4_PIC_1): Same.
23547         (load_toc_v4_PIC_1b): Same.
23548         (call_indirect_aix{32,64}): Same.
23549         (call_value_indirect_aix{32,64}): Same.
23550         (call): Same.
23551         (call_value): Same.
23552         (call_local{32,64}): Same.
23553         (call_value_local{32,64}): Same.
23554         (call_indirect_nonlocal_aix{32,64}): Same.
23555         (call_nonlocal_aix{32,64}): Same.
23556         (call_value_indirect_nonlocal_aix{32,64}): Same.
23557         (call_value_nonlocal_aix{32,64}): Same.
23558         (call_indirect_nonlocal_sysv<mode>): Same.
23559         (call_nonlocal_sysv<mode>): Same.
23560         (call_value_indirect_nonlocal_sysv<mode>): Same.
23561         (call_value_nonlocal_sysv<mode>): Same.
23562         (sibcall): Same.
23563         (sibcall_local{32,64}): Same.
23564         (sibcall_value_local{32,64}): Same.
23565         (sibcall_nonlocal_aix{32,64}): Same.
23566         (sibcall_value_nonlocal_aix{32,64}): Same.
23567         (sibcall_nonlocal_sysv<mode>): Same.
23568         (sibcall_value): Same.
23569         (sibcall_value_nonlocal_sysv<mode>): Same.
23570
23571 2007-03-24  Paul Brook  <paul@codesourcery.com>
23572
23573         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
23574         * config/arm/linux-eabi.h: Remove legacy syscall hack.
23575
23576 2007-03-24  Richard Henderson  <rth@redhat.com>
23577
23578         * config/ia64/constraints.md: New file.
23579         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
23580         satisfies_constraint_?.
23581         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
23582         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
23583         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
23584         ia64_output_mi_thunk): Likewise.
23585         (ia64_const_ok_for_letter_p): Remove.
23586         (ia64_const_double_ok_for_letter_p): Remove.
23587         (ia64_extra_constraint): Remove.
23588         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
23589         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
23590         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
23591         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
23592         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
23593         EXTRA_MEMORY_CONSTRAINT): Remove.
23594         * config/ia64/ia64.md: Include constriants.md.  Replace
23595         CONST_OK_FOR_? with satisfies_constraint_?.
23596
23597 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
23598             H.J. Lu  <hongjiu.lu@intel.com>
23599
23600         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
23601         DPD or BID name.
23602         (name macros): Use DPD_BID_NAME to convert names properly.
23603
23604         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
23605         decimal floating point format.
23606         (init_floating_libfuncs): Change decimal functions so that they
23607         have a "bid_" prefix if the decimal system uses the BID format,
23608         and "dpd_" prefix if the decimal system uses the DPD format.
23609         (init_interclass_conv_libfuncs): Ditto.
23610         (init_intraclass_conv_libfuncs): Ditto.
23611
23612         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23613         using the BID format.
23614
23615         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23616         whether we are using the BID decimal format.
23617         * configure: Regenerate.
23618
23619         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23620         the compiler has decimal floating point enabled.  Define
23621         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23622         instead of DPD.
23623
23624         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23625         using the BID format.
23626
23627         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23628         whether we are using the BID decimal format.
23629         * configure: Regenerate.
23630
23631         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23632         the compiler has decimal floating point enabled.  Define
23633         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23634         instead of DPD.
23635
23636         * doc/install.texi (--enable-decimal-float): Document BID and DPD
23637         options, and that it is enabled for i386/x86_64 systems.
23638
23639         * Makefile.in (enable_decimal_float): New.
23640         (DECNUMFMT): New.
23641         (DECNUMINC): Add  -I$(DECNUMFMT).
23642         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
23643         to $(DECNUMFMT) from $(DECNUM).
23644
23645         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
23646         Substitute enable_decimal_float.
23647         * configure: Regenerated.
23648
23649         PR other/30529
23650         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
23651         unsigned long.
23652
23653         * configure.ac: Enable decimal float for x86_64-*-linux*.
23654         * configure: Regenerated.
23655
23656         PR other/30530
23657         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
23658         decimal128ClearSign to flip and clear the sign bit in decimal128.
23659         (decimal_real_maxval): Set decimal128SetSign to set the sign
23660         bit in decimal128.
23661
23662 2007-03-23  Ian Lance Taylor  <iant@google.com>
23663
23664         * fold-const.c (fold_binary): Correct warning for X - c >= X.
23665
23666 2007-03-23  Ian Lance Taylor  <iant@google.com>
23667
23668         * tree-dump.c (dump_files): Correct comment.
23669
23670 2007-03-23  Ian Lance Taylor  <iant@google.com>
23671
23672         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
23673
23674 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
23675
23676         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
23677         in cfglayout mode.  Don't go into and out of cfglayout mode.
23678         Link the blocks in the order of the constructed traces.
23679         (rest_of_handle_tracer): Adjust call to tracer.
23680         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
23681         Don't go into cfglayout mode.
23682         (rtl_loop_done): Don't go out of cfglayout mode.
23683         * cfglayout.c (relink_block_chain): New function, split out from...
23684         (fixup_reorder_chain): ...here.  Remove redundant checking.
23685         (cfg_layout_finalize): Don't clear the header, footer, and aux
23686         fields here, move the code to do so to relink_block_chain.  Likewise
23687         for free_original_copy_tables.
23688         * rtl.h (tracer): Update prototype.
23689         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
23690         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
23691         mode.  Use relink_block_chain to serialize the CFG according to the
23692         new basic block order.  Move targetm.cannot_modify_jumps_p check from
23693         here...
23694         (gate_handle_reorder_blocks): ...to here.
23695         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
23696         from here...
23697         (gate_duplicate_computed_gotos): ...to here.
23698         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
23699         something always changes when going into and out of cfglayout mode.
23700         Perform an expensive cfg cleanup while going into cfglayout mode.
23701         Always update liveness information on HAVE_conditional_execution
23702         targets.  Reserialize the basic blocks and go out of cfglayout mode.
23703         * reg-stack.c: Include cfglayout.h.
23704         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
23705         the call to reorder_basic_blocks.
23706         * basic-block.h (reorder_basic_blocks): Update prototype.
23707         (relink_block_chain): New prototype.
23708         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
23709
23710 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
23711
23712         * config/mips/mips.md (type, hazard, *movdi_32bit,
23713         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
23714         *movhi_internal, *movqi_internal, *movsf_hardfloat,
23715         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
23716         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
23717         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
23718         applicable.
23719         (movcc): Change first xfer to multi.
23720         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
23721         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
23722         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
23723         config/mips/generic.md: Change reservations using "xfer" to use
23724         "mfc,mtc".
23725         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
23726         using match_operand.
23727         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
23728         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
23729         examining mode.
23730         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
23731
23732 2007-03-22  Richard Henderson  <rth@redhat.com>
23733
23734         * config/i386/i386.c: Remove unnecessary function declarations.
23735         Move targetm definition, and all related macros, to the end of
23736         the file.  Resort some functions to put definitions before uses.
23737         (ix86_attribute_table): Make static.  Move to end of file.
23738         (ix86_gimplify_va_arg): Make static.
23739
23740 2007-03-22  Richard Henderson  <rth@redhat.com>
23741
23742         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
23743         don't increase local_regparm with force_align_arg_pointer check.
23744         (ix86_function_sseregparm): Assert 32-bit.
23745         (type_has_variadic_args_p): New.
23746         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
23747         type_has_variadic_args_p.
23748         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
23749         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
23750         use memset instead.  Do maybe_vaarg check first; skip attribute
23751         tests if true; skip attribute tests for 64-bit.
23752         (construct_container): Remove TARGET_DEBUG_ARG.
23753         (function_arg_advance_32, function_arg_advance_64): Split out ...
23754         (function_arg_advance): ... from here.
23755         (function_arg_32, function_arg_64): Split out ...
23756         (function_arg): ... from here.
23757         (ix86_pass_by_reference): Tidy.
23758         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
23759         (function_value_32): New, from parts of ix86_function_value
23760         and ix86_value_regno.
23761         (function_value_64): New, from parts of ix86_function_value
23762         and ix86_libcall_value.
23763         (ix86_function_value_1): New.
23764         (ix86_function_value, ix86_libcall_value): Use it.
23765         (return_in_memory_32, return_in_memory_64): Split out ...
23766         (ix86_return_in_memory): ... from here.
23767         (ix86_struct_value_rtx): Skip for 64-bit.
23768         (ix86_libcall_value, ix86_value_regno): Remove.
23769         (setup_incoming_varargs_64): Split out ...
23770         (ix86_setup_incoming_varargs): ... from here.
23771         (ix86_va_start): Remove TARGET_DEBUG_ARG.
23772         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
23773         * config/i386/i386-protos.h (ix86_function_value): Remove.
23774         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
23775
23776 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23777
23778         PR other/23572
23779         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
23780         infinities not supported, otherwise emit warning if -Woverflow. On
23781         underflow, emit warning if -Woverflow.
23782         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
23783         and 0 otherwise.
23784         * real.h (real_from_string): Update declaration
23785
23786 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
23787             Richard Henderson  <rth@redhat.com>
23788
23789         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
23790         * calls.c (compute_argument_block_size, expand_call,
23791         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
23792         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
23793         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
23794         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
23795         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
23796         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
23797         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
23798         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
23799         Set to 1.
23800
23801 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
23802
23803         * c-incpath.c (add_sysroot_to_chain): New.
23804         (merge_include_chains): Add sysroot argument.  Call
23805         add_sysroot_to_chain if sysrooted.
23806         (register_include_chains): Update call to merge_include_chains.
23807         * doc/cppopts.texi: Document use of '=' in include directory
23808         arguments.
23809
23810 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
23811
23812         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
23813         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
23814         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
23815         insn pattern using X87MODEF12 mode macro.
23816
23817 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
23818
23819         * regmove.c (regmove_optimize): Use reg_mentioned_p
23820         instead of reg_overlap_mentioned_p for DST.
23821
23822 2007-03-21  Mike Stump  <mrs@apple.com>
23823
23824         * c.opt: Fixup for Objective-C/C++.
23825
23826 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
23827
23828         * explow.c (convert_memory_address): Fold memory reference when
23829         POINTERS_EXTEND_UNSIGNED < 0
23830
23831 2007-03-21  Richard Henderson  <rth@redhat.com>
23832
23833         PR target/31245
23834         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
23835         * config/i386/mmintrin.h (__m64): Likewise.
23836         * config/i386/xmmintrin.h (__m128): Likewise.
23837
23838 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23839
23840         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
23841         (VXWORKS_OS_CPP_BUILTINS): Define.
23842         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
23843         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
23844
23845 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23846
23847         * rtl.h (constant_pool_reference_p): Delete.
23848         (find_constant_src): Declare.
23849         * rtlanal.c (find_constant_src): New function.
23850         * simplify-rtx.c (constant_pool_reference_p): Delete.
23851         * config/i386/i386.md: Use find_constant_src instead of
23852         constant_pool_reference_p/avoid_constant_pool_reference pairs.
23853
23854 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23855
23856         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
23857         * c-cppbuiltin.c (c_cpp_builtins): Define them.
23858
23859 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
23860
23861         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
23862         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
23863         (arm_elf_asm_constructor): Use it.
23864         (arm_elf_asm_destructor): New function.
23865
23866 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
23867
23868         * jump.c (mark_jump_label): Treat SEQUENCE specially.
23869
23870 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
23871
23872         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
23873
23874 2007-03-19  Andrew Haley  <aph@redhat.com>
23875
23876         PR tree-optimization/31264
23877         * tree-vrp.c (register_edge_assert_for_1): Don't look though
23878         VIEW_CONVERT_EXPRs.
23879
23880 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
23881
23882         PR rtl-optimization/30907
23883         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
23884         (fwprop_init): Always call loop_optimizer_initialize.
23885         (fwprop_done): Always call loop_optimizer_finalize.
23886         (fwprop): We always have loop info now.
23887         (gate_fwprop_addr): Remove.
23888         (pass_fwprop_addr): Use gate_fwprop as gate.
23889
23890         PR rtl-optimization/30841
23891         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
23892         df_chain_alloc): Call df_reorganize_refs unconditionally.
23893         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
23894         refs_organized to refs_organized_size.
23895         (df_ref_create_structure): Use refs_organized_size instead of
23896         bitmap_size if refs had been organized, and keep refs_organized_size
23897         up-to-date.
23898         * df.h (struct df_ref_info): Change refs_organized to
23899         refs_organized_size.
23900         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
23901         bitmap_size.
23902
23903 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
23904
23905         * except.c (output_function_exception_table): Do not reference the
23906         EH personality routine for functions that do not require an
23907         exception table.
23908
23909 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
23910
23911         PR c/30762
23912         * c-typeck.c (convert_for_assignment): Call comptypes for
23913         RECORD_TYPE or UNION_TYPE.
23914
23915         PR inline-asm/30505
23916         * reload1.c (reload): Do invalid ASM checking after
23917         cleanup_subreg_operands.
23918
23919 2007-03-19  Jeff Law  <law@redhat.com>
23920
23921         * tree-cfg.c (find_taken_edge): Tighten conditions for
23922         optimizing computed gotos.
23923
23924 2007-03-19  Michael Matz  <matz@suse.de>
23925
23926         * builtins.c (expand_builtin_sync_operation,
23927         expand_builtin_compare_and_swap,
23928         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
23929         correctly.
23930
23931         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
23932         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
23933         for operand 3.
23934
23935 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23936
23937         * doc/tm.texi: Add brackets around the return type of
23938         TARGET_SECONDARY_RELOAD.
23939
23940 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23941         Richard Guenther  <rguenther@suse.de>
23942
23943         PR tree-optimization/31254
23944         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
23945         Use handled_component_p () where appropriate.  Continue
23946         propagating into the rhs if we propagated into an INDIRECT_REF
23947         on the lhs.
23948
23949 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23950
23951         * config/s390/s390.md (op_type attribute): RRR instruction type added.
23952         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
23953         (xde, xdee): Mode attributes adjusted to support DFP modes.
23954         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
23955         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
23956         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
23957         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
23958         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
23959         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23960         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
23961         numbers.
23962         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
23963         "movsf"): Insn definitions removed.
23964         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
23965         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
23966         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
23967         definitions added.
23968         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
23969         "reload_in<mode>", "reload_out<mode>"): Expander added.
23970         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
23971         Expander removed.
23972
23973 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23974
23975         * config/s390/s390.md: Only non-functional changes.  Renamed
23976         FPR mode macro to BFP all over the file.
23977
23978 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23979
23980         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
23981         (op_type attribute): RRF instruction type added.
23982         (fT0): New mode attribute.
23983         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23984         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
23985         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
23986         instruction no secondary memory is needed when moving DFmode values
23987         between GPRs and FPRs.
23988
23989 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23990
23991         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
23992         inverted and documentation adjusted.
23993         ("mhard-dfp", "msoft-dfp"): New options.
23994         * config/s390/s390.c (s390_handle_arch_option): New architecture
23995         switch: z9-ec.
23996         (override_options): Sanity checks for the new options added.
23997         * config.gcc: New architecture switch: z9-ec.
23998         * config/s390/s390.h (processor_flags): PF_DFP added.
23999         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
24000         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
24001         when the bit is NOT set so remove it from the defaults.
24002
24003 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24004
24005         * genemit.c (main): Print include statement for dfp.h.
24006         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
24007         is not available.
24008
24009 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
24010
24011         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
24012
24013 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
24014
24015         PR target/31022
24016         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
24017         instead of PATTERN.
24018
24019 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24020
24021         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
24022         attr_length_call, output_call, output_indirect_call): Cleanup
24023         formatting of targetm calls.
24024
24025 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
24026
24027         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
24028
24029 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24030
24031         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
24032         reservation, bypass and anti-bypass descriptions for these
24033         instructions.  Update move patterns.
24034         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
24035         TYPE_FPSTORE.
24036
24037 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
24038
24039         * tree-vect-transform.c (get_initial_def_for_induction): Replace
24040         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
24041         (get_initial_def_for_reduction): Likewise.
24042
24043 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
24044
24045         Fix PR tree-optimization/29922
24046         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
24047         (get_representative): Removed.
24048         (value_dies_in_block_x): Update for rvuse removal.
24049         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
24050         (compute_antic_aux): Handle when PHI nodes appear in
24051         non-single-successors.
24052         (dump_bitmap_of_names): Removed.
24053         (compute_antic_safe): Renamed and removed rvuse calculation.
24054         Calculate only antic safe.
24055         (insert_into_preds_of_block): Remove assert.
24056         (execute_pre): Update for renamed functions.
24057         (defer_or_phi_translate_block): New function.
24058
24059 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24060
24061         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
24062         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
24063         typos.
24064         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
24065         Follow spelling conventions.
24066
24067         * tree-data-ref.h: Remove the prototype for analyze_array.
24068
24069 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
24070
24071         PR tree-optimization/31041
24072         * tree-vect-transform.c (get_initial_def_for_induction): Call
24073         force_gimple_operand.
24074
24075 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
24076
24077         * ipa-type-escape.c (look_for_casts) : Revert code to use
24078         handled_component_p due to ada test a-numaux.adb.
24079
24080 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24081
24082         * final.c (final_scan_insn): Alter the condition of a
24083         conditional trap if we have nonstandard CC.
24084
24085 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24086
24087         * configure.ac: Remove excess quoting from asm line 0 test.
24088         * configure: Rebuilt.
24089
24090 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24091
24092         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
24093         * c-common.c (convert_and_check): Move warning logic to...
24094         (warnings_for_convert_and_check): ...here. Define.
24095         * c-common.h (warnings_for_convert_and_check): Declare.
24096
24097 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24098
24099         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
24100         (output_call): Likewise.
24101
24102 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24103
24104         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
24105
24106 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24107
24108         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
24109
24110 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
24111
24112         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
24113         opteron, athlon-64 and athlon-fx processor_alias_table entries.
24114
24115 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
24116
24117         PR tree-optimization/31183
24118         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
24119         Use double_int instead of unsigned int for representing access_strides.
24120         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
24121
24122 2007-03-16  Richard Guenther  <rguenther@suse.de>
24123
24124         PR tree-optimization/31146
24125         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
24126         to allow recursion of forward_propagate_addr_expr.
24127         (forward_propagate_addr_into_variable_array_index): Likewise.
24128         (forward_propagate_addr_expr): Likewise.
24129         (tree_ssa_forward_propagate_single_use_vars): Likewise.
24130         (forward_propagate_addr_expr_1): Recurse on simple copies
24131         instead of propagating into them.  Do so for useless conversions
24132         as well.
24133         (forward_propagate_addr_expr): Clean up unused statements after
24134         recursion.
24135
24136 2007-03-16  Richard Guenther  <rguenther@suse.de>
24137
24138         * builtins.c (expand_builtin_cexpi): Use the right argument
24139         for the expansion via cexp.
24140
24141 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24142
24143         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
24144         * configure: Rebuilt.
24145
24146 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24147
24148         PR debug/29906
24149         * dwarf2out.c (force_type_die): Adjust comment.
24150         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
24151
24152 2007-03-15  DJ Delorie  <dj@redhat.com>
24153
24154         * config/frv/predicates.md (minmax_operator): Don't check operands
24155         here.
24156
24157 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24158
24159         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
24160         Update constant estimates of number of iterations.
24161         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
24162         argument renamed to "realistic".
24163         (compute_estimated_nb_iterations): Removed.
24164         (record_niter_bound): New function.
24165         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
24166         call record_nonwrapping_iv with upper = false.
24167         (infer_loop_bounds_from_signedness): Pass upper argument to
24168         record_nonwrapping_iv.
24169         (estimate_numbers_of_iterations_loop): Do not call
24170         compute_estimated_nb_iterations.  Record estimate based on profile
24171         information.  Initialize the constant estimates of number of
24172         iterations.
24173         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
24174         estimates.
24175         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
24176         number of iterations is too small.
24177         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
24178         (EST_NOT_AVAILABLE): Removed.
24179         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
24180         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
24181         fields.
24182
24183 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24184
24185         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
24186         Handle NE_EXPR guards.
24187
24188 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24189
24190         PR c++/24924
24191         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
24192         Set also -pedantic-errors by default for the  preprocessor unless
24193         -fpermissive is given.
24194
24195 2007-03-15  Richard Guenther  <rguenther@suse.de>
24196
24197         PR middle-end/29719
24198         PR middle-end/31161
24199         * builtins.c (expand_builtin_cexpi): As a fallback if we
24200         don't have builtins for sincos or cexp create a function
24201         declaration for cexp and expand to a call to that.
24202         (expand_builtin_int_roundingfn): Always fall
24203         back to floor/ceil and its variants even if they may be
24204         not available.
24205
24206 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
24207
24208         PR middle-end/31159
24209         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
24210         jump tables, move the call to delete_dead_jumptables from here...
24211         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
24212         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
24213         don't allow merging of blocks that try_redirect_by_replacing_jump
24214         also does not handle when not optimizing.
24215
24216 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24217             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24218
24219         * config/i386/i386.md (x86_sahf_1): Correctly handle
24220         HAVE_AS_IX86_SAHF.
24221
24222 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24223
24224         PR target/31167
24225         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
24226         x86_64_general_operand as operand[2] predicate.  Remove "iF"
24227         from operand constraints and use "e" constraint instead.
24228         (*subti3_1, *subti3_1 splitter): Ditto.
24229         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
24230         operand[1] predicate.
24231
24232 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
24233
24234         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
24235         arrays, multiply the access strides by the size of the sub-array.
24236         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
24237
24238 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24239
24240         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
24241         the configured assembler supports the sahf mnemonic.
24242         * configure: Regenerate.
24243         * config.in: Regenerate.
24244
24245         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
24246         emit "sahf" or ".byte\t0x9e" as asm template.
24247
24248 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
24249
24250         PR 31018
24251         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
24252         option to replace hard coded TARGET_xxx in md file.
24253         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
24254         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24255         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
24256         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
24257         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
24258         (X86_TUNE_NOT_VECTORMODE): Ditto.
24259         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
24260         (TUNE_AVOID_VECTOR_DECODE): Ditto.
24261         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24262         (TUNE_SLOW_IMUL_IMM8): Ditto.
24263         (TUNE_MOVE_M1_VIA_OR): Ditto.
24264         (TUNE_NOT_UNPAIRABLE): Ditto.
24265         (TUNE_NOT_VECTORMODE): Ditto.
24266
24267         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
24268         options.
24269
24270         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
24271         tuning options instead of hard coded TARGET_xxx.
24272         (fix ssemode peephole2's): Ditto.
24273         (imul peephole2's): Ditto.
24274         (movsi_or): Ditto.
24275         (movdi_or_rex64): Ditto.
24276         (move peephole2): Ditto.
24277         (not peephole2's): Ditto.
24278
24279 2007-03-14  Dirk Mueller  <dmueller@suse.de>
24280
24281         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
24282         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
24283         * c-parser.c (c_parser_if_body): Always add an empty statement in case
24284         of empty body.
24285         * c-parser.c (c_parser_do_statement): Warn about empty body in
24286         do/while statement.
24287         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
24288         * doc/invoke.texi (-Wempty-body): Update documentation.
24289
24290 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24291
24292         PR c/21438
24293         * c-common.h (warn_for_div_by_zero): Declare.
24294         * c-common.c (warn_for_div_by_zero): Define.
24295         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
24296         warning.
24297
24298 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24299
24300         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
24301         to PREFIX and STANDARD_PREFIX.
24302
24303 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24304             Phil Edwards  <phil@codesourcery.com>
24305
24306         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
24307         (__gthread_once_t): Remove busy field for RTPs.
24308         (__GTHREAD_ONCE_INIT): Update accordingly.
24309
24310 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24311
24312         * doc/invoke.texi: Document VxWorks options.
24313
24314 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24315
24316         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
24317
24318 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
24319
24320         PR tree-optimization/30590
24321         * tree-nrv.c (tree_nrv): Check for the partial update of the
24322         return value.
24323
24324 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24325
24326         * flags.h (flag_random_seed): Remove declaration, in favor of...
24327         * toplev.h (get_random_seed, set_random_seed): ... these.
24328         * tree.c (get_file_function_name): Use the former.
24329         * opts.c (common_handle_option): Use the latter.
24330         * toplev.c
24331
24332 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
24333
24334         PR middle-end/31127
24335         * cse.c (cse_find_path): Do not bail out if a basic block that
24336         we already visited now becomes part of a path that starts at a
24337         different basic block.  Just disallow this, to make sure we
24338         visit each basic block at most once.
24339
24340 2007-03-13  Jan Hubicka  <jh@suse.cz>
24341
24342         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
24343         attributes, when profile esitmate is present, calls with very low
24344         frequency are cold.
24345
24346 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
24347
24348         PR tree-optimization/30730
24349         PR tree-optimization/26900
24350         * tree-ssa-loop-niter.c: Include gmp.h.
24351         (bounds): New type.
24352         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
24353         split_to_var_and_offset, determine_value_range,
24354         bound_difference_of_offsetted_base, refine_bounds_using_guard,
24355         bound_difference, bounds_add, bounds_negate,
24356         number_of_iterations_ne_max, dump_affine_iv): New functions.
24357         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
24358         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
24359         difference of initial and final value of control iv to validate
24360         results.
24361         (number_of_iterations_cond): Add loop parameter.  Determine bounds
24362         on the difference of the extremes of the control iv.  Add dumps.
24363         (expand_simple_operations): Handle phi nodes.
24364         (simplify_using_initial_conditions): Do not record used conditions.
24365         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
24366         Do not set additional_info.
24367         (implies_nonnegative_p, implies_ge_p): Removed.
24368         (derive_constant_upper_bound): Do not use parameter `additional'.
24369         (record_estimate): Parameter `additional' removed.  Parameter
24370         `i_bound' added.  Do not call derive_constant_upper_bound.
24371         (record_nonwrapping_iv): Use derive_constant_upper_bound to
24372         bound the number of iterations estimate.
24373         (estimate_numbers_of_iterations_loop): Pass the estimate from
24374         the number of iterations analysis to record_estimate.
24375         * tree.h (multiple_of_p): Declare.
24376         * tree-scalar-evolution.c (expression_expensive_p): Removed.
24377         (scev_const_prop): Do not check expression_expensive_p.
24378         * fold-const.c (multiple_of_p): Exported.
24379         * double-int.c (double_int_mask): Exported.
24380         * double-int.h (double_int_mask): Declare.
24381         * tree-flow.h (struct tree_niter_desc): Removed additional_info
24382         field.  Added max field.
24383
24384 2007-03-13  David Taylor  <taylor@candd.org>
24385
24386         PR driver/12448:
24387         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
24388         default -MQ.
24389
24390 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24391
24392         PR target/31123
24393         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
24394         two unamed patterns.
24395
24396 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
24397
24398         * config/i386/i386.opt (mcx16, msahf): New options.
24399         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
24400         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
24401
24402         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
24403         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
24404         Output -mcx16 and -msahf options when corresponding bit is set.
24405
24406         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
24407         and -msahf options.
24408
24409 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24410
24411         * configure.ac: Test for assembler tolerance to # 0 "".
24412         * configure, config.in: Rebuilt.
24413         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
24414
24415 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
24416
24417         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
24418
24419         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
24420         (handle_syscall): Handle direct system calls.
24421         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
24422
24423 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24424
24425         * doc/invoke.texi: Fix cpp.info cross-reference.
24426         * doc/passes.texi: Fix gcc.info cross-reference.
24427
24428 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
24429
24430         PR tree-optimization/30835
24431         * lambda-code.c (can_convert_to_perfect_nest): Check whether
24432         bb_for_stmt is not NULL before accessing it.
24433
24434 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
24435
24436         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
24437         some multilibs.
24438
24439 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24440
24441         PR 30635
24442         * doc/install.texi: Document --enable-stage1-languages
24443
24444 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
24445
24446         * tree-pass.h (pass_into_cfg_layout_mode,
24447         pass_outof_cfg_layout_mode): Declare.
24448         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
24449         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
24450         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
24451         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
24452
24453 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
24454
24455         * c-decl.c (warn_variable_length_array): New function.
24456         Refactored from grokdeclarator to handle warn_vla
24457         and handle unnamed array case.
24458         (grokdeclarator): Refactored VLA warning case.
24459         * c.opt (Wvla): New flag.
24460         * doc/invoke.texi (Wvla): New warning.
24461
24462 2007-03-12  Richard Henderson  <rth@redhat.com>
24463
24464         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
24465         (TARGET_SECTION_TYPE_FLAGS): New.
24466
24467 2007-03-12  Richard Henderson  <rth@redhat.com>
24468
24469         * config/darwin.c (machopic_reloc_rw_mask): New.
24470         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
24471         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
24472
24473 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
24474
24475         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
24476         * cppdefault.h (cpp_PREFIX): Document.
24477         (cpp_PREFIX_len): Likewise.
24478         (cpp_EXEC_PREFIX): New variable.
24479         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
24480         * c-incpath.c (add_standard_paths): Correct logic for relocating
24481         paths within prefix.
24482
24483 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
24484
24485         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
24486         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
24487         mode macro.
24488         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
24489         fix_truncdfdi_sse using SSEMODEF mode macro.
24490         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
24491         fix_truncdfsi_sse using SSEMODEF mode macro.
24492         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
24493         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
24494
24495 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
24496
24497         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
24498         elfos.h to tm_file.
24499
24500 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
24501
24502         * tree.h : Add multiple_of_p declaration.
24503         * fold-const.c (multiple_of_p): Make multiple_of_p public.
24504         * ipa-type-escape.c (results_of_malloc): Redundant.
24505         (visited_stmts): New. Visited stmt for walk_use_def_chains.
24506         (cast_type): Extended with new members.
24507         (check_cast): Returns cast_type.
24508         (cast): New structure for data of walk_use_def_chains.
24509         (is_malloc_result, is_cast_from_non_pointer_1,
24510         is_cast_from_non_pointer,
24511         is_array_access_through_pointer_and_index): New functions.
24512         (look_for_casts): Returns cast types.
24513         (check_call): Returns void.
24514         (okay_pointer_operation): Use support of pointer plus index,
24515         pointer plus constant and allow all multiplications.
24516
24517 2007-03-11  Richard Guenther  <rguenther@suse.de>
24518
24519         PR tree-optimization/31115
24520         * tree-vrp.c (extract_range_from_binary_expr): Make sure
24521         the shift count is positive and non-anti-range for RSHIFT_EXPR.
24522         A shift count of zero is not special as with *_DIV_EXPR.
24523         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
24524         direction.
24525
24526 2007-03-11  Ian Lance Taylor  <iant@google.com>
24527
24528         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
24529         the *_DIV_EXPR codes correctly with overflow infinities.
24530
24531 2007-03-11  Ira Rosen  <irar@il.ibm.com>
24532
24533         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
24534         indicate success/failure of the analysis. Add negation to subtrahend
24535         in case of subtraction. Fail if both operands contain constants.
24536         (create_data_ref): Fail if analyze_offset fails.
24537
24538 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
24539
24540         * config/i386/i386.md (frndintxf2): Rename to ...
24541         (rintxf2): ... this. Remove expander having same name.
24542         (rintsf2, rintdf2): Implement using SSEMODEF macro.
24543         (roundsf2, rounddf2): Ditto.
24544         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
24545         (lround<mode>di2, lround<mode>si2): Ditto.
24546
24547 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
24548
24549         * lower-subreg.c: Include except.h.
24550         (decompose_multiword_subregs): Verify that the only control flow
24551         insns we can split are loads to multi-words pseudos.
24552         Handle breaking such blocks after splitting, instead of calling
24553         find_many_sub_basic_blocks.
24554
24555         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
24556         on the new basic block.  Add a lengthy comment explaining why we
24557         thought this was necessary.
24558         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
24559
24560 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
24561
24562         PR c++/30924
24563         * tree.c (walk_type_fields): Recurse into the element type of
24564         ARRAY_TYPEs if there is a pointer set.
24565
24566 2007-03-10  Dirk Mueller  <dmueller@suse.de>
24567
24568         * c-common.c (warn_logical_operator): Fix condition.
24569
24570 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
24571
24572         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
24573         quotation mark.
24574         * config/darwin.c (machopic_select_section): Remove superfluous
24575         argument in call to categorize_decl_for_section.  Remove unused
24576         variable shlib.
24577
24578 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
24579
24580         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
24581         defined.
24582         * configure: Regenerate.
24583
24584 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
24585
24586         PR target/31101
24587         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
24588         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
24589         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
24590         Add LABEL_NUSES to emitted label.
24591         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
24592         branch probability value to emitted jump insn.
24593         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
24594         Do not check life information and do not re-arrange input operands
24595         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
24596
24597 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24598
24599         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
24600         the change of decode_asm_operands.
24601
24602 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24603
24604         * mode-switching.c (create_pre_exit): Skip blockage insn.
24605
24606 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
24607
24608         * tree-pass.h (TODO_update_smt_usage): Remove.
24609         Update all users.
24610         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
24611         argument SOME.
24612         Update all users.
24613
24614 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24615
24616         * pa.c (attr_length_call): Revise condition for long
24617         pc-relative branch.
24618         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
24619         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
24620         sequence on SOM target.
24621
24622 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
24623
24624         * gcc.c: Document %{, in big comment at top.
24625         (input_suffix_matches): Remove special handling for .s and
24626         .S.
24627         (input_spec_matches): New.
24628         (handle_braces): Handle %{,.
24629         (validate_switches): ',' indicates a value which is not a switch.
24630         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
24631         to detect assembler input.
24632         * config/i386/sol2.h (CPP_SPEC): Likewise.
24633         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
24634         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
24635         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
24636         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
24637         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
24638         -m64 causes deployment target to default to 10.5.
24639         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
24640
24641 2007-03-09  Richard Henderson  <rth@redhat.com>
24642
24643         PR target/26090
24644         * target.h (targetm.asm.out.reloc_rw_mask): New.
24645         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
24646         (TARGET_ASM_OUT): Use it.
24647         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
24648         * varasm.c (categorize_decl_for_section): Remove shlib argument;
24649         use the new reloc_rw_mask target hook instead.
24650         (default_section_type_flags_1): Merge into...
24651         (default_section_type_flags): ... here.
24652         (decl_readonly_section_1): Merge into...
24653         (decl_readonly_section): ... here.
24654         (default_elf_select_section_1): Merge into...
24655         (default_elf_select_section): ... here.
24656         (default_unique_section_1): Merge into...
24657         (default_unique_section): ... here.
24658         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
24659         (default_select_rtx_section): Use it.
24660         (default_elf_select_rtx_section): Likewise.
24661         * output.h: Update to match.
24662         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
24663         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
24664         (TARGET_ASM_RELOC_RW_MASK): New.
24665         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
24666         to categorize_decl_for_section.
24667         (x86_64_elf_unique_section): Likewise.
24668         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
24669         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
24670         (TARGET_ASM_RELOC_RW_MASK): New.
24671         * config/ia64/ia64.c (ia64_rwreloc_select_section,
24672         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
24673         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
24674         (TARGET_RWRELOC): Remove.
24675         (ia64_section_type_flags): Adjust call to default_section_type_flags.
24676         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24677         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
24678         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
24679         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
24680         (rs6000_xcoff_select_section): Use decl_readonly_section.
24681         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
24682         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24683         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
24684         (TARGET_SECTION_TYPE_FLAGS): Remove.
24685         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
24686
24687 2007-03-09  Roger Sayle  <roger@eyesopen.com>
24688
24689         * fold-const.c (fold_comparison): Remove compile-time evaluation of
24690         complex constant equality/inequality comparisons for here.
24691         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
24692         known at compile-time or can be simplified to a scalar comparison.
24693         (fold_relational_const): Move compile-time evaluation of complex
24694         constant equality/inequality comparisons to here.
24695
24696 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24697
24698         PR rtl-optimization/30643
24699         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
24700         dest_addr_elt.
24701         (fold_rtx): Recurse, like before 2006-11-03.
24702
24703 2007-03-09  DJ Delorie  <dj@redhat.com>
24704
24705         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
24706         m32c-pragma.o.
24707
24708 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
24709
24710         PR tree-optimization/30375
24711         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
24712         LHS of statements is not the same.
24713         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
24714
24715 2007-03-09  Chao-ying Fu  <fu@mips.com>
24716
24717         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
24718         REV 2.
24719         * doc/invoke.texi (-mdspr2): Document new option.
24720         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
24721         New unspec for DSP REV 2.
24722         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
24723         these instructions are extended in DSP REV 2.
24724         (mips-dspr2.md): Include.
24725         * config/mips/mips.opt (mdspr2): New option.
24726         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
24727         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
24728         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
24729         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
24730         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
24731         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
24732         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
24733         and 2 builtins.
24734         (bdesc_map): Add one field of unsupported_target_flags.
24735         (bdesc_arrays): Update entries to have extra fields.  Add
24736         dsp_32only_bdesc.
24737         (mips_init_builtins): Initialize new function types.
24738         Check unsupported_target_fileds to filter out builtins.
24739         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
24740         TARGET_DSPR2.
24741         (ASM_SPEC): Pass mdspr2 to the assembler.
24742         * config/mips/mips-dspr2.md: New file.
24743
24744 2007-03-09  Sa Liu  <saliu@de.ibm.com>
24745
24746         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
24747
24748 2007-03-09  Ian Lance Taylor  <iant@google.com>
24749
24750         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
24751         argument) like -Wstrict-overflow=2.
24752         * doc/invoke.texi (Warning Options): Update documentation.
24753
24754 2007-03-09  Dirk Mueller  <dmueller@suse.de>
24755
24756         PR c++/17946
24757         * doc/invoke.texi (-Wlogical-op): Document.
24758         * common.opt (-Wlogical-op): New.
24759         * c-common.h (warn_logical_operator): Declare.
24760         * c-common.c (warn_logical_operator): Define.
24761         * c-typeck.c (parser_build_binary_op): Call
24762         warn_logical_operator.
24763
24764 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24765
24766         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
24767         * final.c (final_scan_insn): Test for non-"" file name.
24768
24769 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
24770
24771         * doc/loop.texi: Document the Omega linear constraints solver.
24772         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
24773         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
24774         omega-hash-table-size, omega-max-keys, and
24775         omega-eliminate-redundant-constraints.
24776         * tree-pass.h (pass_check_data_deps): Declared.
24777         * omega.c: New.
24778         * omega.h: New.
24779         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
24780         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
24781         pass_check_data_deps): New.
24782         * tree-data-ref.c (init_data_ref): Remove declaration.
24783         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
24784         (analyze_array): Renamed init_array_ref, move up initializations.
24785         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
24786         Removed arguments that are set to NULL.
24787         (analyze_indirect_ref): Correct indentation, correct call to
24788         init_pointer_ref.
24789         (object_analysis): Call init_array_ref instead of analyze_array.
24790         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
24791         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
24792         of DR_ACCESS_FNS_ADDR.
24793         (init_omega_eq_with_af, omega_extract_distance_vectors,
24794         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
24795         ddr_consistent_p): New.
24796         (compute_affine_dependence): Check consistency of ddrs when
24797         flag_check_data_deps is passed.
24798         (analyze_all_data_dependences): Uncomment.
24799         (tree_check_data_deps): New.
24800         * tree-data-ref.h: Include omega.h.
24801         (DR_ACCESS_FNS_ADDR): Removed.
24802         (data_dependence_relation): Add inner_loop.
24803         (DDR_INNER_LOOP): New.
24804         * common.opt (fcheck-data-deps): New.
24805         * tree-flow.h (tree_check_data_deps): Declare.
24806         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
24807         (OBJS-common): Depend on omega.o.
24808         (omega.o): Define.
24809         * passes.c (pass_check_data_deps): Scheduled.
24810         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
24811         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
24812         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
24813         PARAM_VECT_MAX_VERSION_CHECKS,
24814         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
24815
24816 2007-03-09  Richard Guenther  <rguenther@suse.de>
24817
24818         PR tree-optimization/30904
24819         PR middle-end/31058
24820         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
24821         the same way as *_DIV_EXPR.
24822
24823 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24824
24825         * recog.c (decode_asm_operands): No mixed declarations and code.
24826
24827 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24828
24829         * rtl.def (ASM_INPUT): Add location.
24830         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
24831         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
24832         (decode_asm_operands): Add loc operand.
24833         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
24834         * stmt.c (expand_asm): Rename to...
24835         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
24836         gen_rtx_ASM_INPUT_loc.
24837         (expand_asm_expr): Adjust.
24838         * recog.c (decode_asm_operands): Add loc operand.
24839         (check_asm_operands, extract_insn): Adjust.
24840         * reload1.c (maybe_fix_stack_asms): Likewise.
24841         * final.c (asm_insn_count): Likewise.
24842         (final_scan_insn): Output # line before and after asm.
24843
24844 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
24845
24846         * tree-ssa-structalias.c (variable_info): Remove
24847         finished_solution.
24848         (new_var_info): Ditto.
24849         (shared_bitmap_info_t): New structure.
24850         (shared_bitmap_table): New variable.
24851         (shared_bitmap_hash): New function.
24852         (shared_bitmap_eq): Ditto
24853         (shared_bitmap_lookup): Ditto.
24854         (shared_bitmap_add): Ditto.
24855         (merge_smts_into): Change to take bitmap directly.
24856         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
24857         (init_alias_vars): Init shared bitmap hashtable.
24858         (delete_points_to_sets): Delete shared bitmap hashtable.
24859         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
24860         is_aliased removal as a change that was still necessary was
24861         deleted.
24862
24863 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
24864
24865         * config/i386/i386.h (override_options): Conditionally disable
24866         x86_sahf for 64bit targets only.
24867
24868 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24869
24870         PR C/31072
24871         * c-decl.c (merge_decls): Don't call make_var_volatile.
24872         * varasm.c (make_var_volatile): Remove.
24873         * output.h (make_var_volatile): Remove.
24874
24875 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
24876
24877         PR tree-optimization/31085
24878         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
24879
24880 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24881
24882         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
24883         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
24884         ATTR_CONST_NOTHROW_LIST.
24885
24886         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24887         FIX_TRUNC_EXPR.
24888
24889 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
24890
24891         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
24892
24893 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
24894
24895         PR 31013
24896         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
24897         is declared.
24898         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
24899         passed, use shared libgcc.
24900
24901 2007-03-08  Roger Sayle  <roger@eyesopen.com>
24902
24903         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
24904         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24905         (honor_protect_cleanup_actions, lower_try_finally_switch):
24906         Likewise.
24907         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
24908         ifc_temp_var): Likewise.
24909         * tree-inline.c (setup_one_parameter): Likewise.
24910         * tree-mudflap.c (mf_decl_cache_locals,
24911         mf_build_check_statement_for): Likewise.
24912         * tree-nested.c (init_tmp_var, save_tmp_var,
24913         finalize_nesting_tree_1): Likewise.
24914         * tree-outof-ssa.c (insert_copy_on_edge,
24915         insert_backedge_copies): Likewise.
24916         * tree-profile.c (tree_gen_edge_profiler,
24917         tree_gen_ic_profiler): Likewise.
24918         * tree-scalar-evolution.c (scev_const_prop): Likewise.
24919         * tree-sra.c (sra_build_assignment): Likewise.
24920         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
24921         * tree-ssa-math-opts.c (insert_reciprocals,
24922         execute_cse_sincos_1): Likewise.
24923         * tree-tailcall.c (adjust_accumulator_values,
24924         adjust_return_value): Likewise.
24925         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
24926         * tree-vect-transform.c (vect_create_data_ref_ptr,
24927         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
24928         vect_create_epilog_for_reduction, vectorizable_reduction,
24929         vectorizable_call, vectorizable_conversion,
24930         vectorizable_assignment, vectorizable_operation,
24931         vectorizable_type_demotion, vect_gen_widened_results_half,
24932         vect_permute_store_chain, vectorizable_store,
24933         vect_setup_realignment, vect_permute_load_chain,
24934         vectorizable_load, vectorizable_condition,
24935         vect_create_cond_for_align_checks): Likewise.
24936         * tree-vrp.c (build_assert_expr_for): Likewise.
24937
24938 2007-03-08  Ian Lance Taylor  <iant@google.com>
24939
24940         * tree-vrp.c: Include "intl.h".
24941         (usable_range_p): New static function.
24942         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
24943         overflowed values, juts set *strict_overflow_p.
24944         (compare_values): Only return -2 if one of the operands is not a
24945         constant.
24946         (compare_ranges): Call usable_range_p.
24947         (compare_range_with_value): Likewise.
24948         (vrp_evaluate_conditional_warnv): Rename from
24949         vrp_evaluate_conditional.  Make static.  Change all callers.
24950         (vrp_evaluate_conditional): New function.
24951         (simplify_div_or_mod_using_ranges): Issue warning about reliance
24952         on signed overflow.
24953         (simplify_abs_using_ranges): Likewise.
24954         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
24955         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
24956         within_stmt parameter.
24957         * tree-ssa-propagate.c (fold_predicate_in): Update call to
24958         vrp_evaluate_conditional.
24959         * tree-ssa-threadedge.c
24960         (record_temporary_equivalences_from_stmts_at_dest): Change
24961         simplify parameter to take a second tree parameter.
24962         (simplify_control_stmt_condition): Likewise.
24963         (thread_across_edge): Likewise.
24964         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24965         (thread_across_edge): Likewise.
24966         * Makefile.in (tree-vrp.o): Depend upon intl.h.
24967
24968 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
24969
24970         * config/i386/i386.h (TARGET_SAHF): New define.
24971         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
24972         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
24973         (x86_sahf): New global variable.
24974         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
24975         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
24976         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
24977         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
24978         for 64-bit.
24979         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
24980         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
24981         when expanding fcomi/sahf based tests.
24982         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
24983         expanding sahf based alternative. Emit sahf based sequence when
24984         optimizing for code size.
24985         * config/i386/i386.md (x86_sahf_1): Do not disable for
24986         TARGET_64BIT, enable for TARGET_SAHF.
24987
24988 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
24989
24990         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
24991         spurious whitespace from error message.
24992
24993 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
24994
24995         PR c++/30852
24996         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
24997
24998 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
24999
25000         * c-decl.c (grokdeclarator): Disable warnings for anonymous
25001         bitfields.
25002         * tree-sra.c (instantiate_element): Propagate disabled warnings
25003         from the element itself to the created variable.
25004
25005 2007-03-07  Richard Henderson  <rth@redhat.com>
25006
25007         PR target/30848
25008         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
25009         silently fix up the stack in the case of a missing register.
25010
25011 2007-03-07  Paul Brook  <paul@codesourcery.com>
25012
25013         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
25014
25015 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
25016
25017         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
25018         New.
25019         (phase1_vrs): Use them.
25020         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
25021         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
25022         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
25023         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
25024         __gnu_Unwind_Restore_WMMXC if required.
25025         (_Unwind_VRS_Pop): Implement iWMMXt support.
25026         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
25027         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
25028         gnu_Unwind_Save_WMMXC): Define.
25029
25030 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
25031
25032         * config/vxworks.h (vxworks_override_options): Declare.
25033         (VXWORKS_OVERRIDE_OPTIONS): Use it.
25034         * config/vxworks.c: Include target.h and toplev.h.
25035         (vxworks_override_options): New function.
25036         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
25037
25038 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
25039
25040         * config/s390/s390.c (override_options): Don't emit an error when
25041         -mstack-size is used without providing -mstack-guard.
25042         (s390_emit_prologue): Choose stack_guard value automatically if not
25043         provided via command line.
25044         * doc/invoke.texi: Adjust description of -mstack-guard and
25045         -mstack-size.
25046
25047 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
25048
25049         * config/i386/i386.c (output_set_got): Add a GOT initialization
25050         sequence for VxWorks PIC.
25051         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
25052         around labels as well as symbols.  Use gotoff_operand instead
25053         of local_symbolic_operand.
25054         (legitimize_pic_address): Use gotoff_operand instead of
25055         local_symbolic_operand.  Use @GOT accesses for labels as
25056         well as symbols.
25057         (ix86_output_addr_diff_elt): Use PC-relative rather than
25058         GP-relative offsets for VxWorks PIC.
25059         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
25060         no_new_pseudos.  Check whether the returned register is op0.
25061         * config/i386/i386.md (tablejump): Use PC-relative rather than
25062         GP-relative offsets for VxWorks PIC.
25063         * config/i386/predicates.md (gotoff_operand): New predicate.
25064
25065 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25066
25067         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
25068         before defining.
25069         * config/vxworks-dummy.h: New file.
25070         * config/i386/i386.h: Include it.
25071
25072 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
25073
25074         * dwarf2out.c (is_inlined_entry_point): New
25075         (add_high_low_attributes): Emit DW_AT_entry_pc along with
25076         DW_AT_ranges if the first subblock is the entry point.
25077
25078 2007-03-06  David Daney  <ddaney@avtrex.com>
25079
25080         * doc/install.texi (mips-*-*): Change recommended binutils
25081         version.
25082
25083 2007-03-06  Anatoly Sokolov <aesok@post.ru>
25084
25085         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
25086         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
25087         devices.
25088         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25089         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
25090
25091 2007-03-06  Jan Hubicka  <jh@suse.cz>
25092
25093         * errors.h (warning, error, fatal, internal_error): Mark as cold.
25094         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
25095         functions are hot.
25096         (probably_cold_bb_p): Cold functions are cold.
25097         (probably_never_executed_bb_p): Cold functions are cold.
25098         (tree_bb_level_predictions): Predict calls to cold functions as not
25099         taken.
25100         (compute_function_frequency): Check hot/cold attributes.
25101         * function.h (function_frequency): Update comments.
25102         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
25103         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
25104         (c_common_att): Add cold and hot.
25105
25106         * doc/extend.texi (hot,cold attributes): Document.
25107
25108 2007-03-06  Andrew Haley  <aph@redhat.com>
25109
25110         * function.c (expand_function_end): Move blockage to just after we
25111         emit the label for the naked return from the function.
25112
25113 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25114
25115         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
25116         before redefining.
25117
25118 2007-03-06  Jan Hubicka  <jh@suse.cz>
25119
25120         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
25121         loaded for constant large models.  Non-large 64bit PIC can do.
25122         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
25123         * cmodel.h: Add LARGE PIC.
25124         * i386.md (UNSPEC_PLTOFF): New.
25125         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
25126         unspecs as needed.
25127         (*call_1_rex64): Disable for large models.
25128         (*call_1_rex64_large): New.
25129         (*call_value_1_rex64): Disable for large models.
25130         (*call_value_1_rex64_large): New.
25131         (set_rip_rex4): New.
25132         (set_got_offset_rex64): New.
25133         * predicates.md (constant_call_address_operand): For large model
25134         constant calls are not possible.
25135         * i386-protos.h (construct_plt_address): Declare.
25136         * i386.c (override_options): Accept large models.
25137         (ix86_expand_prologue): Expand large PIC GOT pointer load.
25138         (legitimate_constant_p): Add new UNSPECs.
25139         (legitimate_pic_operand_p): Likewise.
25140         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
25141         (legitimize_pic_address): Do easy RIP relative way for TLS only for
25142         non-large model.
25143         (output_pic_addr_const): Add PLTOFF.
25144         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
25145         (ix86_expand_move): Legitimize pic address when in PIC mode.
25146         (construct_plt_address): New function.
25147         (ix86_expand_call): Offload the address to register and use GOT
25148         pointer for large model.
25149         * invoke.texi (mcmodel=large): Update documentation.
25150
25151 2007-03-06  Richard Henderson  <rth@redhat.com>
25152
25153         * config/i386/i386.c (x86_use_leave, x86_push_memory,
25154         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
25155         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
25156         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
25157         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
25158         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
25159         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
25160         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
25161         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
25162         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
25163         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25164         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
25165         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25166         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25167         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
25168         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
25169         x86_schedule, x86_use_bt, x86_pad_returns,
25170         x86_use_xchgb): Merge into ...
25171         (ix86_tune_features): ... here.  New array.
25172         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25173         x86_bswap): Merge into ...
25174         (ix86_arch_features): ... here.  New array.
25175         (x86_3dnow_a): Remove.
25176         (x86_accumulate_outgoing_args): Make static.
25177         (x86_arch_always_fancy_math_387): Make static.
25178         (ix86_tune_mask, ix86_arch_mask): Move ...
25179         (override_options): ... to local variables here.  Apply the
25180         appropriate mask to each element of ix86_arch_features and
25181         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
25182         as were done in the old macros.
25183         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
25184         * config/i386/i386.h (x86_use_leave, x86_push_memory,
25185         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
25186         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
25187         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
25188         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
25189         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
25190         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
25191         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
25192         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
25193         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
25194         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25195         x86_accumulate_outgoing_args, x86_prologue_using_move,
25196         x86_epilogue_using_move, x86_decompose_lea,
25197         x86_arch_always_fancy_math_387, x86_shift1,
25198         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25199         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25200         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
25201         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25202         x86_use_incdec, x86_pad_returns, x86_bswap,
25203         x86_partial_flag_reg_stall): Remove.
25204         (enum ix86_tune_indices): New.
25205         (ix86_tune_features): New.
25206         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
25207         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
25208         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
25209         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
25210         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
25211         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
25212         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
25213         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
25214         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
25215         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
25216         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
25217         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
25218         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
25219         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
25220         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
25221         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
25222         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
25223         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
25224         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
25225         TARGET_EXT_80387_CONSTANTS): Use it.
25226         (enum ix86_arch_indices): New.
25227         (ix86_arch_features): New.
25228         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
25229         TARGET_BSWAP): Use it.
25230         (ix86_tune_mask, ix86_arch_mask): Remove.
25231
25232 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
25233
25234         PR bootstrap/31020
25235         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
25236         Define using $${sysroot_headers_suffix}.
25237         * configure: Regenerate.
25238         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
25239         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
25240         defined.
25241         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
25242         * gcc.c (print_sysroot_headers_suffix): New.
25243         (option_map): Include --print-sysroot-headers-suffix.
25244         (display_help): Mention -print-sysroot-headers-suffix.
25245         (process_command): Handle -print-sysroot-headers-suffix.
25246         (do_spec_1): Append multilib directory to include-fixed path if
25247         sysroot suffixes in use.
25248         (main): Handle -print-sysroot-headers-suffix.
25249         * Makefile.in (start.encap): Don't depend on xlimits.h
25250         (xlimits.h): Remove.
25251         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
25252         limits.h for each multilib in fixinc_list.
25253         (fixinc_list, s-fixinc_list): New.
25254         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
25255         generate them for each multilib in fixinc_list.
25256         (stmp-fixproto): Use include-fixed.  Run fixproto for each
25257         multilib in fixinc_list.
25258         (mostlyclean): Don't remove xlimits.h.
25259         (clean): Remove include-fixed.
25260         (real-install-headers-tar, real-install-headers-cpio,
25261         real-install-headers-cp): Don't copy include, only include-fixed.
25262         (install-mkheaders): Depend on fixinc_list.  Don't depend on
25263         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
25264         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
25265         SYSTEM_HEADER_DIR setting in mkheaders.conf.
25266
25267 2007-03-06  Jan Hubicka  <jh@suse.cz>
25268
25269         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
25270         NANs easilly.
25271
25272 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25273
25274         * configure.ac: Allow tm_file to contain build-directory files.
25275         * configure: Regenerate.
25276         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
25277         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
25278         * config/m68k/print-sysroot-suffix.sh: New file.
25279
25280 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25281
25282         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
25283         of pic_offset_table_rtx if reload_completed.
25284         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
25285         PIC_OFFSET_TABLE_REGNUM.
25286         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
25287         return true.
25288         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
25289         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
25290
25291 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25292
25293         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25294         functions that call eh_return.
25295
25296 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25297
25298         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25299         functions that need a constant pool.
25300
25301 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25302
25303         PR target/28181
25304         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
25305         (m68k_preferred_reload_class): Likewise.
25306         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
25307         (SECONDARY_RELOAD_CLASS): Define.
25308         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
25309         (LIMIT_RELOAD_CLASS): Delete.
25310         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
25311         registers from storing bytes.
25312         (m68k_secondary_reload_class): New function.
25313         (m68k_preferred_reload_class): Likewise.
25314
25315 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25316
25317         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
25318         leaf functions.
25319         (m68k_expand_prologue): Likewise.
25320
25321 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25322
25323         * config/m68k/m68k-protos.h (output_sibcall): Declare.
25324         (mips_expand_epilogue): Add a bool parameter.
25325         (m68k_legitimize_sibcall_address): Declare.
25326         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
25327         (m68k_expand_epilogue): Add a parameter to select between sibling
25328         and normal epilogues.  Only generate a return for the latter.
25329         (m68k_ok_for_sibcall_p): New function.
25330         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
25331         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
25332         (sibcall_value, *sibcall_value): Likewise.
25333         (*call, *call_value): Require !SIBLING_CALL_P.
25334         (epilogue): Update call to m68k_expand_epilogue.
25335         (sibcall_epilogue): New pattern.
25336         * config/m68k/predicates.md (const_call_operand): Say that this
25337         predicate applies to sibling calls too.
25338         (sibcall_operand): New predicate.
25339
25340 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25341
25342         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
25343         alternatives as movsi_cf.
25344         (movsf_cf_hard): Add commentary.
25345
25346 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
25347             Richard Sandiford  <richard@codesourcery.com>
25348
25349         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
25350         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
25351         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
25352         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
25353         as being live on exit from an interrupt function.
25354         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
25355         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
25356         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
25357         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
25358         (m68k_interrupt_function_p): Globalize.
25359         (m68k_compute_frame_layout): Remove reverse mask code.
25360         (m68k_emit_movem, m68k_set_frame_related): New functions.
25361         (m68k_output_function_prologue): Delete in favor of...
25362         (m68k_expand_prologue): ...this new function.
25363         (m68k_output_function_epilogue): Delete in favor of...
25364         (m68k_expand_epilogue): ...this new function.
25365         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
25366         functions.
25367         (print_operand): Handle %?.
25368         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
25369         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
25370         (prologue, epilogue): New patterns.
25371         (return): Turn into a define_expand.
25372         (*return): New pattern, derived from old "return" pattern.  Use rte
25373         rather than rts for interrupt functions.  Only use rtd if the pop
25374         count is nonzero.
25375         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
25376         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
25377         (link, *link, unlink, *unlink, load_got): Likewise.
25378
25379 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25380
25381         PR target/23482
25382         PR target/17114
25383         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
25384         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
25385         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
25386         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
25387         and m68k_matches_u_p.
25388         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
25389         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
25390         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
25391         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
25392         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
25393         (REG_STRICT_P): New macro.
25394         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
25395         PCREL_GENERAL_OPERAND_OK.
25396         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
25397         m68k_legitimate_base_reg_p.
25398         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
25399         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
25400         (PIC_CASE_VECTOR_ADDRESS): Update comment.
25401         * config/m68k/m68k.c (m68k_address): New structure.
25402         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
25403         (m68k_decompose_index, m68k_legitimate_constant_address_p)
25404         (m68k_jump_table_ref_p, m68k_decompose_address)
25405         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
25406         (m68k_matches_u_p): New functions.
25407         (print_operand_address): Rewrite to use m68k_decompose_index.
25408
25409 2007-03-05  David Taylor  <dtaylor@emc.com>
25410
25411         * gcc.c: Correct copyright date in --version output.
25412
25413 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25414
25415         * pa.md: In unamed move patterns, disparge copies between general
25416         and floating point registers using '?' modifier.  Don't include 'f'
25417         constraint for register preferences in DImode, SImode, HImode and
25418         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
25419         Remove constraints for copies between general and floating registers
25420         in soft-float DFmode pattern.
25421         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
25422         floating register.
25423         (movsf): Likewise.
25424
25425 2007-03-05  Mike Stump  <mrs@apple.com>
25426
25427         * c-common.c (targetcm): Add.
25428         * c-opts.c (c_common_handle_option): Handle language specific
25429         target options.
25430         * opts.c (handle_option): Verify language for target options, if
25431         any are given.
25432         * opth-gen.awk: Add CL_LANG_ALL.
25433         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
25434         (TARGETCM_INITIALIZER): Add.
25435         * target.h (struct gcc_targetcm): Add.
25436         (targetcm): Add.
25437         * targhooks.c (default_handle_c_option): Add.
25438         * targhooks.h (default_handle_c_option): Add.
25439         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
25440
25441         * config/darwin.opt (iframework): Add.
25442         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
25443         * config/darwin-c.c (handle_c_option): Add.
25444         (TARGET_HANDLE_C_OPTION): Add.
25445         (targetcm): Add.
25446         * doc/invoke.texi (Darwin Options): Add -iframework.
25447
25448 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25449
25450         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
25451         conversion.
25452
25453 2007-03-05  Ian Lance Taylor  <iant@google.com>
25454
25455         * c.opt (fgnu89-inline): New option.
25456         * c-opts.c (c_common_post_options): Set default value for
25457         flag_gnu89_inline.
25458         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
25459         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
25460         inline functions.
25461         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
25462         (grokdeclarator, start_function): Likewise.
25463         * c-cppbuiltin.c (c_cpp_builtins): Define either
25464         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
25465         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
25466         (C Dialect Options): Document -fgnu89-inline.
25467         * doc/extend.texi (Function Attributes): Explain what the
25468         gnu_inline attribute does.
25469         * doc/cpp.texi (Common Predefined Macros): Document
25470         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
25471
25472 2007-03-05  Ian Lance Taylor  <iant@google.com>
25473
25474         PR tree-optimization/31034
25475         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
25476         half-range if the other side is an overflow infinity.
25477
25478 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
25479
25480         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
25481         (bfin*-linux-uclibc*): New configuration.
25482         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
25483         defining.
25484         * config/bfin/linux.h: New file.
25485         * config/bfin/libgcc-bfin.ver: New file.
25486         * config/bfin/t-bfin-uclinux: New file.
25487         * config/bfin/t-bfin-linux: New file.
25488         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
25489         (TARGET_OS_CPP_BUILTINS): New macro.
25490
25491 2007-03-05  Richard Guenther  <rguenther@suse.de>
25492
25493         * fold-const.c (fold_binary): Remove duplicate folding
25494         of comparison of non-null ADDR_EXPR against null.
25495
25496 2007-03-05  Richard Guenther  <rguenther@suse.de>
25497             Dorit Nuzman  <dorit@il.ibm.com>
25498
25499         PR tree-optimization/26420
25500         * tree-vectorizer.c (vectorize_loops): Bail out early if there
25501         are no loops in the function.  Only print the number of
25502         vectorized loops if it is greater than zero or we are supposed
25503         to print information about unvectorized loops.
25504
25505 2007-03-05  Revital Eres  <eres@il.ibm.com>
25506
25507         * gcc.dg/var-expand1.c: New test.
25508         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
25509         when an accumulator is expanded.
25510
25511 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25512
25513         PR other/30465
25514         * c-common.c (convert_and_check): Don't give warnings for
25515         conversion if 'expr' already overflowed.
25516
25517 2007-03-04  Roger Sayle  <roger@eyesopen.com>
25518
25519         PR middle-end/30744
25520         * fold-const.c (fold_comparison): Enforce type consistency when
25521         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
25522
25523 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
25524
25525         * tree-ssa-address.c (create_mem_ref): Do not put an expression
25526         containing a cast to the base of TARGET_MEM_REF.
25527
25528 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
25529
25530         * tree.c (tree_contains_struct_check_failed): Remove spurious
25531         whitespace from error message.
25532
25533 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
25534
25535         PR target/30406
25536         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
25537         instead of precision.
25538
25539 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
25540             Nathan Sidwell  <nathan@codesourcery.com>
25541
25542         * emit-rtl.c (find_auto_inc): New.
25543         (try_split): recreate REG_INC notes,
25544         Use regular for loops rather than whiles.
25545
25546 2007-03-03  Andreas Schwab  <schwab@suse.de>
25547
25548         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
25549         * configure: Regenerate.
25550
25551 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25552
25553         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
25554         flag_rounding_math, not flag_unsafe_math_optimizations.
25555
25556         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
25557         fold_build2.
25558         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
25559         alpha_fold_vector_minmax): Likewise.
25560         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
25561         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
25562
25563 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25564
25565         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
25566         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
25567         if the lhs has side-effects.
25568         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
25569
25570 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25571
25572         * config/i386/i386.h (TUNEMASK): Remove define.
25573         (ARCHMASK): Remove define.
25574         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
25575          Use ix86_arch_mask variable instead of ARCHMASK.
25576         * config/i386/i386.c (override_options): Ditto.
25577         (standard_80387_constant_p): Ditto.
25578
25579 2007-03-02  Ian Lance Taylor  <iant@google.com>
25580
25581         Used signed infinities in VRP.
25582         * tree-vrp.c (uses_overflow_infinity): New static function.
25583         (supports_overflow_infinity): New static function.
25584         (make_overflow_infinity): New static function.
25585         (negative_overflow_infinity): New static function.
25586         (positive_overflow_infinity): New static function.
25587         (is_negative_overflow_infinity): New static function.
25588         (is_positive_overflow_infinity): New static function.
25589         (is_overflow_infinity): New static function.
25590         (overflow_infinity_range_p): New static function.
25591         (compare_values_warnv): New function split out of compare_values.
25592         (compare_value): Call it.
25593         (set_value_range_to_nonnegative): Add overflow_infinity
25594         parameter.  Change caller.
25595         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
25596         Change callers.
25597         (vrp_expr_computes_nonzero): Likewise.
25598         (compare_ranges, compare_range_with_value): Likewise.
25599         (compare_name_with_value, compare_names): Likewise.
25600         (vrp_evaluate_conditional): Likewise.
25601         (set_value_range): Handle infinity
25602         (vrp_operand_equal_p, operand_less_p): Likewise.
25603         (extract_range_from_assert): Likewise.
25604         (vrp_int_const_binop): Likewise.
25605         (extract_range_from_binary_expr): Likewise.
25606         (extract_range_from_unary_expr): Likewise.
25607         (extract_range_from_comparison): Likewise.
25608         (extract_range_from_expr): Likewise.
25609         (dump_value_range): Likewise.
25610         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
25611         (test_for_singularity): Likewise.
25612         (vrp_int_const_binop): Remove inline qualifier.
25613         (adjust_range_with_scev): Add comment.
25614         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
25615
25616 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
25617
25618         * tree-ssa-structalias.c (could_have_pointers): Tidy.
25619         (get_constraint_for): Likewise.
25620         (do_structure_copy): Likewise.
25621         (find_func_aliases): Fix references to MODIFY_EXPR.
25622         (intra_create_variable_infos): Tidy.
25623         * tree-ssa-operands.c (add_virtual_operand): Add argument
25624         IS_CALL_SITE.
25625         When adding members of alias sets, if IS_CALL_SITE is true and
25626         the symbol is not call-clobbered, skip it.
25627         Adjust all callers.
25628
25629 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25630
25631         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
25632         entry by means of emit_insn_at_entry.
25633
25634 2007-03-02  Richard Henderson  <rth@redhat.com>
25635
25636         * expr.h (promoted_input_arg): Remove decl.
25637         * function.c (promoted_input_arg): Merge into ...
25638         * combine.c (setup_incoming_promotions): ... only caller.
25639         Rearrange to avoid double loop.
25640
25641 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25642             Peter Bergner  <bergner@vnet.ibm.com>
25643             Janis Johnson  <janis187@us.ibm.com>
25644
25645         * config/rs6000/dfp.md: New file.
25646         * config/rs6000/rs6000.md: Include dfp.md.
25647         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
25648         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
25649         and TDmode decimal float modes in FP registers.
25650         (num_insns_constant): Likewise.
25651         (rs6000_legitimate_offset_address_p): Likewise.
25652         (rs6000_legitimize_address): Likewise.
25653         (rs6000_legitimize_reload_address): Likewise.
25654         (rs6000_legitimate_address): Likewise.
25655         (rs6000_emit_move): Likewise.
25656         (function_arg_boundary): Likewise.
25657         (function_arg_advance): Likewise.
25658         (rs6000_darwin64_record_arg_recurse): Likewise.
25659         (function_arg): Likewise.
25660         (rs6000_gimplify_va_arg): Likewise.
25661         (rs6000_split_multireg_move): Likewise.
25662         (rs6000_output_function_epilogue): Likewise.
25663         (rs6000_output_function_epilogue): Likewise.
25664         (rs6000_register_move_cost): Likewise.
25665         (rs6000_function_value): Likewise.
25666         (rs6000_libcall_value): Likewise.
25667
25668 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25669
25670         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
25671
25672 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25673
25674         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
25675         Use $MULTIDIR to choose between the kernel and RTP headers,
25676         and use $WIND_BASE and $WIND_USR to locate them.
25677
25678 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25679
25680         * config/i386/i386.c (override_options): Put initialization of
25681         ix86_tune_mask and ix86_arch_mask to the correct place.
25682
25683 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25684             Michael Meissner  <michael.meissner@amd.com>
25685
25686         PR target/31019
25687         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
25688         (ARCHMASK): Define.
25689         (TARGET_CMOVE): Use ARCHMASK.
25690         (TARGET_CMPXCHG): Ditto.
25691         (TARGET_CMPXCHG8B): Ditto.
25692         (TARGET_XADD): Ditto.
25693         (TARGET_BSWAP): Ditto.
25694         * config/i386/i386.c (ix86_tune_mask): New global variable.
25695         (ix86_arch_mask): Ditto.
25696         (override_options): Initialize ix86_tune_mask and
25697         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
25698         target_flags.
25699
25700 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25701
25702         PR 30992
25703         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
25704
25705 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
25706
25707         * target.h (init_dwarf_reg_sizes_extra): New target hook.
25708         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
25709         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
25710         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
25711         hook.
25712         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
25713         rs6000_init_dwarf_reg_sizes_extra): New.
25714         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
25715         SPE register high parts.
25716
25717 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
25718
25719         * Makefile.in: Add install-pdf target as
25720         copied from automake v1.10 rules.
25721         * configure.ac: Add install-pdf to target list.
25722         * configure: Regenerate.
25723
25724 2007-03-01  Paul Brook  <paul@codesourcery.com>
25725
25726         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
25727         modes to LDRD for DImode.
25728         (output_move_double): Fixup out of range ldrd/strd.
25729         (vfp_secondary_reload_class): Rename...
25730         (coproc_secondary_reload_class): ... to this.  Add wb argument.
25731         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
25732         coproc_secondary_reload_class for CLASS_IWMMXT.
25733         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
25734         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
25735
25736 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
25737
25738         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
25739         unroll factor by the estimated number of iterations.
25740         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
25741         than prefetch latency.
25742
25743         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
25744         decode_caches_intel, detect_caches_intel): New functions.
25745         (host_detect_local_cpu): Use detect_caches_amd and
25746         detect_caches_intel.
25747
25748 2007-03-01  Richard Henderson  <rth@redhat.com>
25749
25750         * expr.c (emit_move_complex_push): Export.
25751         (emit_move_complex_parts): Split out from ...
25752         (emit_move_complex): ... here.
25753         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
25754         * config/i386/i386.md (movcdi): New.
25755
25756 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
25757
25758         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
25759         size of mode1 to check for tieable modes in MMX case.
25760
25761 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
25762
25763         * Makefile.in (rtlanal.o): Depend on tree.h.
25764         * rtl.h (offset_within_section_p, split_const): Declare.
25765         * rtlanal.c: Include tree.h.
25766         (offset_within_block_p): New function, taken from
25767         mips_offset_within_object_p.
25768         (split_const): New function, taken from mips_split_const.
25769         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
25770         Declare.
25771         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
25772         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
25773         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
25774         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
25775         (m68k_illegitimate_symbolic_constant_p): New function.
25776         * config/m68k/m68k.md (movsi): Remove misleading predicates.
25777         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
25778         symbolic constant that might be outside the symbol's section,
25779         move the symbol first and then add the offset.
25780         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
25781         Override.
25782         * config/mips/mips.c (mips_split_const): Delete.
25783         (mips_offset_within_object_p): Delete.
25784         (mips_symbolic_constant_p): Use offset_within_section_p and
25785         split_const instead of mips_offset_within_object_p and
25786         mips_split_const.
25787         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
25788         (mips_legitimize_const_move, print_operand_reloc)
25789         (mips_dangerous_for_la25_p): Use split_const instead of
25790         mips_split_const.
25791
25792 2007-02-28  Eric Christopher  <echristo@apple.com>
25793
25794         * Makefile.in (install-include-dir): Don't rm -rf include.
25795
25796 2007-02-28  Richard Guenther  <rguenther@suse.de>
25797
25798         PR middle-end/30364
25799         * fold-const.c (fold_binary): Do not associate expressions
25800         with more than one variable for integer types that do not wrap.
25801
25802 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
25803
25804         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
25805         Delete, and replace with...
25806         (fold_builtin_call_array): This.  Update callers to use it.
25807         * fold-const.c (fold_build_call_list): Delete, and replace with...
25808         (fold_build_call_array): This.
25809         (fold_build_call_list_initializer): Delete, and replace with...
25810         (fold_build_call_array_initializer): This.
25811         * tree.h: Update declarations to reflect above changes.
25812
25813         * c-typeck.c (build_function_call): Store converted arguments
25814         in a stack-allocated array instead of building a list.
25815         (convert_arguments): Store arguments in the array passed in as an
25816         argument, and return the actual number of arguments.
25817         * c-format.c: (check_function_format): Pass arguments in an
25818         array instead of a list.
25819         * c-common.c (check_function_nonnull): Likewise.
25820         (check_function_sentinel): Likewise.
25821         (check_function_arguments): Likewise.
25822         * c-common.h: Update declarations to reflect above changes.
25823
25824 2007-02-28  Jan Hubicka  <jh@suse.cz>
25825
25826         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
25827         PRED_NEGATIVE_RETURN): Update outcomes.
25828
25829 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
25830
25831         * calls.c (emit_library_call_value_1): Handle partial registers
25832         correctly when building up CALL_INSN_FUNCTION_USAGE.
25833
25834 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25835
25836         * pa/predicates.md (move_src_operand): Allow zero for mode.
25837         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
25838         move pattern.
25839
25840 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
25841
25842         PR target/30970
25843         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
25844         *movv2df_internal): Enable pattern only for valid operand
25845         combinations.
25846         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
25847         tie only 128bit modes. For MMX registers, tie only 64bit modes.
25848
25849 2007-02-27  Mike Stump  <mrs@apple.com>
25850
25851         * config/darwin-crt3.c: Avoid compilation when compiling for a
25852         kext multilib.
25853
25854 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
25855
25856         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
25857         FIXED_INCLUDE_DIR.
25858         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
25859         for fixed headers and limits.h.
25860         (install-include-dir, install-headers-tar, install-headers-cpio,
25861         install-headers-cp, real-install-headers-tar,
25862         real-install-headers-cpio, real-install-headers-cp): Handle
25863         include-fixed as well as include.
25864         (install-mkheaders): Don't install files that go only in include
25865         not include-fixed.
25866         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
25867         from GCC_INCLUDE_DIR.
25868         * gcc.c (process_command): Remove special -BstageN/ handling.
25869         (do_spec_1): Add include-fixed directories.
25870
25871 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25872
25873         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
25874         _smulsi3_highpart.
25875         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
25876         New functions.
25877         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
25878         patterns.
25879
25880 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
25881
25882         * c-common.c (get_priority): Add check for
25883         SUPPORTS_INIT_PRIORITY.
25884
25885 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25886
25887         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
25888
25889         * config/bfin/bfin.c: Include "cfglayout.h".
25890         (MAX_LSETUP_DISTANCE): New macro.
25891         (struct loop_info): New members incoming, incoming_src and
25892         incoming_dest.  Delete member predecessor.
25893         (length_for_loop): New function.
25894         (bfin_optimize_loop): Handle more different loop structures.
25895         (bfin_discover_loop): Rework detection of predecessor blocks by
25896         examining incoming edges.
25897         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
25898         bfin_reorg_loops.
25899         (bfin_reorder_loops): New function.
25900         (bfin_reorg_loops): Use these three new functions.
25901
25902         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
25903         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
25904         (CONSTRAINT_LEN): Add entry for 'q'.
25905         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
25906         Add 'q' constraints.
25907         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
25908         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
25909
25910         * config/bfin/bfin.md (add_with_carry): New pattern.
25911         (s_or_u, su_optab, su_modifier): New code macros/attrs.
25912         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
25913         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
25914         support unsigned multiplies too.  Removed incorrect commutativity from
25915         operand 1 constraint where appropriate.
25916         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
25917         patterns.
25918         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
25919         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
25920         New patterns.
25921         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
25922         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
25923         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
25924         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
25925         usmulhisi_hh_huh): New patterns.
25926
25927         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
25928         lshifthi3): Fix output template to use half reg for operand 2.
25929
25930         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
25931         instead of R2.
25932
25933         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
25934
25935 2007-02-27  Andreas Schwab  <schwab@suse.de>
25936
25937         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
25938
25939 2007-02-27  Jan Hubicka  <jh@suse.cz>
25940
25941         * predict.c (last_basic_block_p): Remove.
25942         (tree_estimate_probability): Update return heuristic for commonized
25943         return blocks.
25944
25945 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25946
25947         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
25948
25949 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25950
25951         * doc/include/gcc-common.texi (versionsubtitle): New macro.
25952         * doc/cpp.texi: Standardize title page.
25953         * doc/cppinternals.texi: Likewise.
25954         * doc/gcc.texi: Standardize title page, remove version number
25955         from copyright page.
25956         * doc/gccint.texi: Likewise.
25957         * doc/install.texi: Standardize title page, add table of
25958         contents.
25959
25960 2007-02-26  Jan Hubicka  <jh@suse.cz>
25961
25962         * predict.def: Set outcomes according to more recent results.
25963         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
25964         Remove dead predictors.
25965         * predict.c (return_prediction): Fix pasto.
25966
25967 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25968
25969         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
25970         change; avoid a memory leak when returning early.
25971
25972 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
25973
25974         * c-decl.c (static_ctors): Move to c-common.c.
25975         (static_dtors): Likewise.
25976         (finish_function): Use c_record_cdtor_fn.
25977         (build_cdtor): Move to c-common.c.
25978         (c_write_global_declarations): Use c_build_cdtor_fns.
25979         * c-common.h (static_ctors): Declare.
25980         (static_dtors): Likewise.
25981         (c_record_cdtor_fn): Likewise.
25982         (c_build_cdtor_fns): Likewise.
25983         * c-common.c (static_ctors): New variable.
25984         (static_dtors): Likewise.
25985         (c_record_cdtor_fn): New function.
25986         (build_cdtor): Move from c-decl.c
25987         (c_build_cdtor_fns): New function.
25988
25989         * output.h (assemble_addr_to_section): Declare.
25990         (get_cdtor_priority_section): Likewise.
25991         * varasm.c (assemble_addr_to_section): New function.
25992         (get_cdtor_priority_section): Likewise.
25993         (default_named_section_asm_out_destructor): Use them.
25994         (destor_dtor_section_asm_out_destructor): Likewise.
25995         (default_named_section_asm_out_constructor): Likewise.
25996         (default_ctor_section_asm_out_constructor): Likewise.
25997         * config.gcc (*-*-vxworks*): Include vxworks.o.
25998         * config/t-vxworks (vxworks.o): New target.
25999         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
26000         (TARGET_ASM_CONSTRUCTOR): Define.
26001         (TARGET_ASM_DESTRUCTOR): Likewise.
26002         (vxworks_asm_out_constructor): Declare.
26003         (vxworks_asm_out_destructor): Likewise.
26004
26005         * c-common.c (get_priority): Check that we have not just an
26006         INTEGER_CST, but an integer constant with integeral type.
26007
26008 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
26009
26010         PR tree-optimization/30938
26011         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
26012         use &dt[nargs-1] instead of &dt[nargs] in the call to
26013         vect_is_simple_use().
26014
26015 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
26016
26017         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
26018         from register elimination as PRE_MODIFY / POST_MODIFY increments.
26019         Do not attempt to handle MEM inside auto-inc expressions.
26020         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
26021         of a register modified by an auto-inc expression.  However, do handle
26022         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
26023         (elimination_effects): Prohibit elimination of a register modified
26024         by an auto-inc expression.  Disable register elimination rules whose
26025         target register is modified by an auto-inc expression with variable
26026         increment.
26027
26028 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
26029
26030         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
26031         off-by-one error.
26032         (array_at_struct_end_p): New function.
26033         (idx_infer_loop_bounds): Use it.
26034         (estimate_numbers_of_iterations_loop): Export.
26035         * predict.c (predict_loops): Use estimated_loop_iterations_int.
26036         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
26037         (tree_estimate_probability): Call record_loop_exits.
26038         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
26039         (estimated_loop_iterations, estimated_loop_iterations_int,
26040         estimated_loop_iterations_tree): New functions.
26041         (analyze_siv_subscript_cst_affine,
26042         compute_overlap_steps_for_affine_1_2,
26043         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
26044         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
26045         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
26046         (PRED_LOOP_ITERATIONS_GUESSED): New.
26047         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
26048         * cfgloop.h (estimate_numbers_of_iterations_loop,
26049         estimated_loop_iterations_int): Declare.
26050
26051 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
26052
26053         * doc/extend.texi: Document optional priority argument to
26054         constructors and destructors.
26055         * tree.c (init_priority_for_decl): Adjust GTY markers.
26056         (init_ttree): Use priority-info hash functions for
26057         init_priority_for_decl.
26058         (tree_map_eq): Rename to ...
26059         (tree_map_base_eq): ... this.
26060         (tree_map_marked_p): Rename to ...
26061         (tree_map_base_marked_p): ... this.
26062         (tree_map_base_hash): New function.
26063         (decl_init_priority_lookup): Rework.
26064         (decl_fini_priority_lookup): New function.
26065         (decl_priority_info): New function.
26066         (decl_init_priority_insert): Use it.
26067         (decl_fini_priority_insert): Likewise.
26068         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
26069         hierarchy.
26070         (decl_restrict_base_insert): Likewise.
26071         (decl_debug_expr_insert): Likewise.
26072         (decl_value_expr_lookup): Likewise.
26073         (decl_value_expr_insert): Likewise.
26074         * tree.h (priority_type): New type.
26075         (decl_init_priority_lookup): Use priority_type.
26076         (decl_fini_priority_lookup): New function.
26077         (decl_init_priority_insert): Use priority_type.
26078         (decl_fini_priority_insert): New function.
26079         (DECL_HAS_INIT_PRIORITY): Tweak comments.
26080         (DECL_INIT_PRIORITY): Likewise.
26081         (SET_DECL_INIT_PRIORITY): Add comment.
26082         (DECL_FINI_PRIORITY): New macro.
26083         (SET_DECL_FINI_PRIORITY): Likewise.
26084         (DEFAULT_INIT_PRIORITY): Document.
26085         (MAX_INIT_PRIORITY): Likewise.
26086         (MAX_RESERVED_INIT_PRIORITY): Likewise.
26087         (tree_map_base): New type.
26088         (tree_map_base_eq): New function.
26089         (tree_map_base_hash): Likewise.
26090         (tree_map_base_marked_p): Likewise.
26091         (tree_map): Inherit from tree_map_base.
26092         (tree_map_eq): Make it a macro.
26093         (tree_map_marked_p): Likewise.
26094         (tree_int_map): Inherit from tree_map_base.
26095         (tree_int_map_eq): Make it a macro.
26096         (tree_int_map_hash): Likewise.
26097         (tree_int_map_marked_p): Likewise.
26098         (tree_priority_map): New type.
26099         (tree_priority_map_eq): New macro.
26100         (tree_priority_map_hash): Likewise.
26101         (tree_priority_map_marked_p): Likewise.
26102         * varasm.c (emults_decl): Adjust for refactoring of tree_map
26103         hierarchy.
26104         (emutls_common_1): Likewise.
26105         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
26106         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
26107         of tree_map hierarchy.
26108         * tree-cfg.c (move_stmt_r): Likewise.
26109         (new_label_mapper): Likewise.
26110         * c-tree.h (c_expand_body): Move to ...
26111         * c-common.h (c_expand_body): ... here.
26112         * c-decl.c (c_expand_body): Move to ...
26113         * c-common.c (c_expand_body): ... here.
26114         (c_common_attribute_table): Allow 1 argument for the constructor
26115         and destructor attributes.
26116         (get_priority): New function.
26117         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
26118         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
26119
26120 2007-02-24  Jan Hubicka  <jh@suse.cz>
26121
26122         PR middle-end/30509
26123         * tree-inline.c (copy_bb): Produce exact copy of EH info when
26124         copying for inlining.
26125
26126 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26127             Jan Hubicka  <jh@suse.cz>
26128
26129         PR target/30778
26130         * i386.c (counter_mode): New function.
26131         (expand_set_or_movmem_via_loop): Use it.
26132         (expand_movmem_epilogue): Likewise; fix pasto.
26133         (ix86_expand_movmem): Do emit guard even for constant counts.
26134         (ix86_expand_setmem): Likewise.
26135
26136 2007-02-25  Nick Clifton  <nickc@redhat.com>
26137
26138         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
26139         (JUMP_TABLES_IN_TEXT_SECTION): Define.
26140
26141 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26142
26143         PR target/30770
26144         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
26145         count argument with 0x10, not with 0x16.
26146         (expand_setmem_epilogue): Ditto.
26147
26148 2007-02-24  Mike Stump  <mrs@apple.com>
26149
26150         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
26151         symbols.
26152
26153 2007-02-24  Richard Guenther  <rguenther@suse.de>
26154
26155         PR middle-end/30951
26156         * fold-const.c (fold_binary): Fold x +- CST op x for
26157         EQ_EXPR and NE_EXPR.
26158
26159 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26160
26161         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
26162
26163 2007-02-24  Jan Hubicka  <jh@suse.cz>
26164
26165         * cgraphunit.c (decide_is_function_needed): Honor
26166         -fkeep-inline-functions.
26167
26168 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26169
26170         * builtins.c (fold_builtin_modf): New.
26171         (fold_builtin_2): Use it.
26172
26173 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
26174
26175         * loop-iv.c (implies_p): Detect additional cases where A implies B.
26176         (determine_max_iter): Take additional LOOP arg; all callers changed.
26177         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
26178         one using simplifications.
26179         (simplify_using_initial_values): Return if the expression becomes
26180         invalid due to altered regs.
26181
26182 2007-02-23  DJ Delorie  <dj@redhat.com>
26183
26184         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
26185
26186 2007-02-23  Mike Stump  <mrs@apple.com>
26187
26188         * tlink.c (scan_linker_output): Parse linker messages from
26189         darwin9's linker better.
26190
26191 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
26192
26193         PR debug/29614
26194         * varpool.c (varpool_assemble_pending_decls): Set
26195         varpool_last_needed_node to null.
26196
26197 2007-02-23  DJ Delorie  <dj@redhat.com>
26198
26199         * config/i386/i386.c (ix86_data_alignment): Don't specify an
26200         alignment bigger than the object file can handle.
26201
26202 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
26203
26204         PR target/30825
26205         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
26206         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
26207         (*movsf_1): Penalize MMX moves.
26208
26209 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26210
26211         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
26212         2^32-1 or more times unless flag_unsafe_loop_optimizations.
26213
26214         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
26215
26216 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26217
26218         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
26219         (fold_builtin_1): Use them.
26220         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
26221         BUILT_IN_SIGNIFICAND.
26222
26223 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
26224
26225         * config/i386/i386.c (bdesc_1arg): Initialize
26226         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
26227         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
26228         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
26229         and IX86_BUILTIN_MOVSLDUP.
26230
26231 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
26232
26233         PR rtl-optimization/30841
26234         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
26235
26236 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26237
26238         * builtins.c (fold_builtin_frexp): New.
26239         (fold_builtin_2): Use it.
26240
26241 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
26242
26243         * doc/invoke.texi (Spec Files): Document getenv spec function.
26244
26245         * gcc.c (getenv_spec_function): New function.
26246         (static_spec_functions): Add it.
26247         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
26248         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
26249         header files.
26250
26251 2007-02-22  Michael Matz  <matz@suse.de
26252
26253         PR c++/29433
26254         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
26255         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
26256
26257 2007-02-22  Ian Lance Taylor  <iant@google.com>
26258
26259         PR debug/30898
26260         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
26261         (mem_loc_descriptor): Call it.
26262
26263 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
26264             Ira Rosen  <irar@il.ibm.com>
26265
26266         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
26267
26268 2007-02-22  Ira Rosen  <irar@il.ibm.com>
26269
26270         PR tree-optimization/30843
26271         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
26272         stores only after all the group is vectorized.
26273
26274 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
26275
26276         PR tree-optimization/30858
26277         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
26278         in the reduction cycle have a single use in the loop.
26279         * tree-vectorizer.h (relevant): Add documentation.
26280
26281 2007-02-20  Mike Stump  <mrs@apple.com>
26282
26283         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
26284         * configure: Regenerate.
26285
26286 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
26287
26288         Change the defaults of some parameters and options.
26289         * config/spu/spu-protos.h (spu_optimization_options): Declare.
26290         * config/spu/spu.c (spu_optimization_options): Add.
26291         (spu_override_options): Change params in spu_optimization_options.
26292         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
26293
26294         Register 127 is only 16 byte aligned when used as a frame pointer.
26295         * config/spu/spu-protos.h (spu_init_expanders): Declare.
26296         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
26297         HARD_FRAME_POINTER_REGNUM.
26298         (spu_legitimate_address): Use regno_aligned_for_reload.
26299         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
26300         aligned when frame_pointer_needed is true.
26301         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
26302         to 8 bits.
26303         * config/spu/spu.h (INIT_EXPANDERS): Define.
26304
26305         Make sure shift and rotate instructions have valid immediate operands.
26306         * config/spu/predicates.md (spu_shift_operand): Remove.
26307         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
26308         * config/spu/constraints.md (W, O): Extend range.
26309         * config/spu/spu.md (umask, nmask): Define.
26310         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
26311         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
26312         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
26313         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
26314         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
26315         (lshr<mode>3_reg): Fix rtl description.
26316
26317         Make sure mulhisi immediate operands are valid.
26318         * config/spu/predicates.md (imm_K_operand): Add.
26319         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
26320
26321         Generate constants using fsmbi and andi.
26322         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
26323         (print_operand, spu_split_immediate, classify_immediate,
26324         fsmbi_const_p): Handle IC_FSMBI2.
26325
26326         Correctly handle a CONST_VECTOR containing symbols.
26327         * config/spu/spu.c (print_operand): Handle HIGH correctly.
26328         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
26329         (immediate_load_p): Allow symbols that use 2 instructions to create.
26330         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
26331         with symbols when flag_pic is set.
26332         (const_vector_immediate_p): New.
26333         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
26334         accept a CONST_VECTOR with symbols.
26335         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
26336         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
26337         correctly.
26338         * config/spu/spu.md (high, low): Delete.
26339         (low_<mode>): Define.
26340
26341         Remove INTRmode and INTR_REGNUM, which didn't work.
26342         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
26343         of INTR_REGNUM.
26344         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
26345         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
26346         peephole2 pattern): Don't use INTR or 131.
26347         (movintrcc): Delete.
26348         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
26349         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
26350         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
26351         (UNSPEC_SET_INTR): Add.
26352         * config/spu/spu-modes.def (INTR): Remove.
26353
26354         More accurate warnings about run-time relocations.
26355         * config/spu/spu.c (reloc_diagnostic): Test in_section.
26356
26357         Correctly warn about immediate arguments to specific intrinsics.
26358         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
26359         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
26360         the instruction predicate.
26361
26362         Fix tree check errors with latest update.
26363         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
26364         CALL_EXPR_ARG.
26365         (spu_expand_builtin): Use CALL_EXPR_FN.
26366
26367         Add missing specific intrinsics.
26368         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
26369         si_bislede.
26370         * config/spu/spu_internals.h: Ditto.
26371
26372         Fix incorrect operand modifiers.
26373         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
26374         * config/spu/spu.md (xor<mode>3): Change %S to %J.
26375
26376         Optimize one case of zero_extend of a vec_select.
26377         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
26378
26379         Accept any immediate for hbr.
26380         * config/spu/spu.md (hbr): Change s constraints to i.
26381
26382 2007-02-21  Paul Brook  <paul@codesourcery.com>
26383
26384         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
26385         condexec_count when skipping USE and CLOBBER.
26386
26387 2007-02-21  Nick Clifton  <nickc@redhat.com>
26388
26389         * common.opt (Warray-bounds): Add Warning attribute.
26390         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
26391         Likewise.
26392         (fsized-zeroes): Add Optimization attribute.
26393         (fsplit-wide-types, ftree-scev-cprop): Likewise.
26394         * c.opt (Wc++0x-compat): Add Warning attribute.
26395
26396 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
26397
26398         PR middle-end/30761
26399         * reload1.c (eliminate_regs_in_insn): In the single_set special
26400         case, attempt to re-recognize the insn before falling back to
26401         having reload fix it up.
26402
26403 2007-02-20  Eric Christopher  <echristo@gmail.com>
26404
26405         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
26406         Rewrite accordingly.
26407         (frv_read_iacc_argument): Ditto.
26408         (frv_expand_set_builtin): Take a call instead of arglist, update for
26409         above changes.
26410         (frv_expand_unop_builtin): Ditto.
26411         (frv_expand_binop_builtin): Ditto.
26412         (frv_expand_cut_builtin): Ditto.
26413         (frv_expand_binopimm_builtin): Ditto.
26414         (frv_expand_voidbinop_builtin): Ditto.
26415         (frv_expand_int_void2arg): Ditto.
26416         (frv_expand_prefetches): Ditto.
26417         (frv_expand_voidtriop_builtin): Ditto.
26418         (frv_expand_voidaccop_builtin): Ditto.
26419         (frv_expand_load_builtin): Ditto.
26420         (frv_expand_store_builtin): Ditto.
26421         (frv_expand_mdpackh_builtin): Ditto.
26422         (frv_expand_mclracc_builtin): Ditto.
26423         (frv_expand_mrdacc_builtin): Ditto.
26424         (frv_expand_mwtacc_builtin): Ditto.
26425         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
26426         calls for above.
26427
26428 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
26429
26430         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
26431         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
26432         cmpb instruction.
26433         (HAVE_GAS_DFP): Check for assembler support of decimal floating
26434         point instructions.
26435         * configure: Regenerate.
26436         * config.in: Regenerate.
26437         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
26438         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
26439         masks to power6 and power6x and to POWERPC_MASKS.
26440         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26441         _ARCH_PWR6.
26442         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
26443         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
26444         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
26445         Access PROTOTYPE as variable, not mask.
26446
26447 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26448
26449         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
26450         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
26451         * combine.c (adjust_for_new_dest): Use it.
26452         * postreload.c (reload_combine): Likewise.
26453
26454 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26455
26456         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
26457         notes on an insn with multiple sets, even if single_set returns
26458         non-NULL for that insn.
26459
26460 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26461
26462         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
26463         scalbn and scalbln.
26464
26465 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
26466
26467         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
26468         if user didn't pass it.
26469         * config/i386/darwin.h (CC1_SPEC): Likewise.
26470         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
26471         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
26472         -mmacosx-version-min.
26473
26474 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26475             Uros Bizjak  <ubizjak@gmail.com>
26476
26477         * optabs.h (enum optab_index): Add new OTI_scalb.
26478         (scalb_optab): Define corresponding macro.
26479         * optabs.c (init_optabs): Initialize scalb_optab.
26480         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
26481         patterns.
26482         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
26483         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
26484         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
26485         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
26486         flag_unsafe_math_optimizations is set.
26487
26488         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
26489         to implement scalbf, scalb and scalbl built-ins as inline x87
26490         intrinsics.
26491
26492 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26493             DJ Delorie <dj@redhat.com>
26494
26495         PR other/30824
26496         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
26497         (diagnostic_report_diagnostic): ... here, and turn them into real
26498         errors. If warnings are inhibited, no need to do anything.
26499
26500 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
26501
26502         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
26503         better code generation.
26504
26505 2007-02-20  Ben Elliston  <bje@au.ibm.com>
26506
26507         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
26508
26509 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
26510
26511         * config/alpha/alpha.c, config/alpha/alpha.md,
26512         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
26513         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
26514         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
26515         config/arm/lib1funcs.asm: Follow spelling conventions.
26516
26517         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
26518         config/fr30/fr30.md, config/i386/i386.h,
26519         config/iq2000/iq2000.h, config/iq2000/predicates.md,
26520         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
26521         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
26522         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
26523         config/rs6000/altivec.md, config/rs6000/rs6000.c,
26524         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
26525         config/sparc/sparc.c, config/sparc/sparc.h,
26526         config/sparc/sparc.md, config/spu/constraints.md,
26527         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
26528         conventions.
26529
26530 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
26531
26532         PR target/29943
26533         * varasm.c (use_blocks_for_decl_p): Return false for decls with
26534         alias attribute.
26535
26536 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26537
26538         * doc/invoke.texi (-ftree-lrs): Remove.
26539
26540 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
26541
26542         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
26543         NULL.
26544
26545 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
26546
26547         * config/ia64/ia64.c (ia64_expand_builtin): Use the
26548         new CALL_EXPR_FN macro for retrieving the function
26549         declaration of the input expression.
26550
26551 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26552
26553         * c.opt (Waddress): New.
26554         * common.opt (Walways-true): Delete.
26555         (Wstring-literal-comparison): Delete.
26556         * doc/invoke.texi (Warning Options): Delete -Walways-true and
26557         -Wstring-literal-comparison. Add -Waddress.
26558         (Waddress): New.
26559         (Walways-true): Delete.
26560         (Wstring-literal-comparison): Delete.
26561         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
26562         consistently instead of -Walways-true in example.
26563         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
26564         * c-typeck.c (parser_build_binary_op): Replace
26565         -Wstring-literal-comparison and -Walways-true with -Waddress.
26566         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
26567         with -Waddress.
26568
26569 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26570
26571         * tree-cfg.c (dump_function_to_file): Be prepared for functions
26572         without DECL_STRUCT_FUNCTION initialized.
26573
26574 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26575
26576         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
26577         due to calls to functions taking pointers as parameters.
26578
26579 2007-02-19  Richard Henderson  <rth@redhat.com>
26580
26581         PR debug/29558
26582         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
26583         in memory.
26584
26585 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
26586
26587         * config/s390/s390.c (s390_call_saved_register_used,
26588         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
26589         accessed to the new scheme.
26590
26591 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26592
26593         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
26594         (cris_print_index, cris_print_operand, cris_print_operand_address)
26595         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
26596         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
26597         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
26598         GET_CODE () == xxx.
26599         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
26600         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
26601         GO_IF_LEGITIMATE_ADDRESS): Ditto.
26602         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
26603         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
26604         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
26605         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
26606         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
26607         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
26608         (uminsi3, call, call_value): Ditto.
26609         (define_split: indir_to_reg_split, unnamed): Ditto.
26610
26611 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
26612
26613         PR tree-optimization/30975
26614         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
26615         wrong assert.
26616
26617 2007-02-18  Eric Christopher  <echristo@gmail.com>
26618
26619         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
26620         Remove use of arglist.
26621         (mips_expand_builtin): Remove use of arglist, pass in expr.
26622         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
26623         (mips_expand_builtin_movtf): Ditto.
26624         (mips_expand_builtin_compare): Ditto.
26625
26626 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26627
26628         * tree-sra.c (sra_build_assignment): Replace assertion
26629         checking with a comment explaining why it can't be done.
26630
26631 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26632
26633         PR middle-end/30833
26634         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
26635         during CALL_EXPR representation conversion.
26636         * tree-ssa-propagate.c (set_rhs): Likewise.
26637
26638 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26639
26640         * tree-sra.c (sra_build_assignment): Disable assertion checking
26641         for now.
26642
26643 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26644
26645         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
26646         instead of calling build2 with a GIMPLE_MODIFY_STMT.
26647         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
26648         Likewise.
26649         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
26650         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
26651         gimplify_init_ctor_eval_range, gimple_push_cleanup,
26652         gimplify_omp_for, gimplify_omp_atomic_pipeline,
26653         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
26654         force_gimple_operand): Likewise.
26655         * ipa-cp.c (constant_val_insert): Likewise.
26656         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
26657         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
26658         perfect_nestify): Likewise.
26659         * langhooks.c (lhd_omp_assignment): Likewise.
26660         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
26661         lower_copyprivate_clauses, lower_send_clauses,
26662         lower_send_shared_vars, expand_parallel_call,
26663         expand_omp_for_generic, expand_omp_for_static_nochunk,
26664         expand_omp_for_static_chunk, expand_omp_sections,
26665         lower_omp_single_copy, lower_omp_for_lastprivate,
26666         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
26667         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
26668         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
26669         Likewise.
26670
26671 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26672
26673         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
26674         config/sh/sh.md: Follow spelling conventions.
26675
26676         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
26677         config/frv/predicates.md: Follow spelling conventions.
26678
26679         * config/m68k/linux-unwind.h: Fix a comment typo.
26680         * target.h: Follow spelling conventions.
26681
26682 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26683
26684         PR rtl-optimization/28173
26685         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
26686         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
26687         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
26688         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
26689         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
26690
26691 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26692
26693         * builtins.c (fold_builtin_load_exponent): New.
26694         (fold_builtin_2): Use it.
26695
26696 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
26697
26698         PR rtl-optimization/30773
26699         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
26700         if we fail to attach a REG_EQUIV note.
26701
26702 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
26703             Roger Sayle  <roger@eyesopen.com>
26704
26705         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
26706
26707 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26708
26709         * calls.c (initialize_argument_information): Pass original EXP
26710         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
26711         code to split complex arguments here, as part of initializing the
26712         ARGS array.
26713         (expand_call): Remove code that builds a list of arguments and
26714         inserts implicit arguments into it.  Instead, just count how many
26715         implicit arguments there will be so we can determine the size of
26716         the ARGS array, and let initialize_argument_information do the work.
26717         (split_complex_values): Delete unused function.
26718
26719 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26720
26721         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
26722
26723 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26724
26725         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
26726         for arg pointer based indexed addressing.
26727
26728 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26729
26730         * config/ia64/ia64.h, config/ia64/ia64.md,
26731         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
26732         spelling conventions.
26733
26734 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26735
26736         * config/m68k/m68k.c (split_di): New.
26737         * config/m68k/m68k-protos.h: Declare split_di.
26738         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
26739           Improve predicate handling and split constant shifts.
26740
26741 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26742
26743         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
26744         parameter for register bitfield operations, general predicates
26745         cleanup
26746
26747 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26748
26749         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
26750         * config/m68k/linux-unwind.h: New file.
26751
26752 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26753
26754         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
26755         config/i386/athlon.md, config/ia64/ia64.md,
26756         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
26757         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
26758         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
26759         tree-ssa-loop-niter.c, tree-vect-analyze.c,
26760         tree-vect-transform.c: Fix comment typos.
26761
26762 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
26763
26764         * sched-deps.c (find_insn_list): Remove.
26765         * sched-int.h: Remove the prototype for find_insn_list.
26766
26767 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
26768
26769         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
26770         to linker.
26771         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
26772         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
26773         darwin_rs6000_override_options.
26774         (C_COMMON_OVERRIDE_OPTIONS): Expect
26775         darwin_macosx_version_min to be non-NULL always.
26776         (TARGET_C99_FUNCTIONS): Likewise.
26777         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
26778         (DARWIN_MINVERSION_SPEC): New.
26779         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
26780         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
26781         to cc1*.
26782         (DARWIN_MINVERSION_SPEC): New.
26783         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
26784         value.
26785         * config/darwin-c.c (darwin_cpp_builtins): Expect
26786         darwin_macosx_version_min to be non-NULL always.
26787
26788         * config/rs6000/rs6000.c: Clean up trailing whitespace.
26789
26790 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
26791
26792         * config/i386/i386.h (x86_use_xchgb): New.
26793         (TARGET_USE_XCHGB): New macro.
26794         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
26795         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
26796         Split after reload into bswaphi for shifts of 8.
26797         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
26798         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
26799         or when optimizing for size.
26800
26801 2007-02-16  Richard Guenther  <rguenther@suse.de>
26802             Christian Bruel  <christian.bruel@st.com>
26803
26804         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
26805         DECLs but prefer SSA_NAMEs over DECLs.
26806
26807 2007-02-16  Richard Guenther  <rguenther@suse.de>
26808
26809         * tree-flow-inline.h (single_imm_use_p): Remove.
26810         (zero_imm_uses_p): Likewise.
26811         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
26812         instead of single_imm_use_p.
26813         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
26814         zero_imm_uses_p.
26815
26816 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26817
26818         PR other/27843
26819         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
26820         nested double- and backquotes.
26821
26822 2007-02-15  Roger Sayle  <roger@eyesopen.com>
26823
26824         PR middle-end/30391
26825         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
26826         should be unreachable.
26827         (build2_stat): Allow construction of MODIFY_EXPR at any time.
26828         For the time being redirect GIMPLE_MODIFY_STMT to the new
26829         (renamed) build_gimple_modify_stmt_stat.
26830         (build2_gimple_stat): Rename to...
26831         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
26832         Always build a GIMPLE_MODIFY_STMT node.
26833         * tree.h (build2_gimple, build2_gimple_stat): Delete.
26834         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
26835         declarations.
26836
26837         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
26838         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
26839         * tree-complex.c (set_component_ssa_name, expand_complex_move,
26840         expand_complex_div_wide): Likewise.
26841         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
26842         * tree-ssa-loop-im.c (schedule_sm): Likewise.
26843         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
26844         * tree-ssa-loop-manip.c (create_iv): Likewise.
26845         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
26846         abs_replacement): Likewise.
26847         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
26848         realify_fake_stores): Likewise.
26849
26850         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
26851         node rather than a GIMPLE_MODIFY_STMT node.
26852         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
26853         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
26854         Likewise.
26855         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
26856         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
26857         GIMPLE_MODIFY_STMT.
26858
26859 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26860
26861         PR middle-end/30433
26862         * fold-const.c (fold_comparison): Add back the
26863         folding of constant complex comparisions.
26864
26865 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26866
26867         PR middle-end/30729
26868         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
26869         effects unknown to this function, return early.
26870
26871 2007-02-15  Ian Lance Taylor  <iant@google.com>
26872
26873         * lower-subreg.c (move_eh_region_note): New static function.
26874         (resolve_simple_move): Call it.
26875         (decompose_multiword_subregs): Track blocks for which we resolve a
26876         simple move which is also a control flow insn.  Pass them to
26877         find_many_sub_basic_blocks.
26878         (pass_lower_subreg): Add TODO_verify_flow.
26879         (pass_lower_subreg2): Likewise.
26880
26881 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26882             Brooks Moses  <brooks.moses@codesourcery.com>
26883             Lee Millward  <lee.millward@codesourcery.com>
26884
26885         * tree.h (enum tree_code_class): Add tcc_vl_exp.
26886         (VL_EXP_CLASS_P): New.
26887         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
26888         TREE_CODE_LENGTH.
26889         (TREE_OPERAND_CHECK_CODE): Likewise.
26890         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
26891         (TREE_RTL_OPERAND_CHECK): Likewise.
26892         (tree_operand_check_failed): Make second parameter the whole tree
26893         instead of its code.  Fixed callers.
26894         (VL_EXP_CHECK): New.
26895         (TREE_OPERAND_LENGTH): New.
26896         (VL_EXP_OPERAND_LENGTH): New.
26897         (CALL_EXPR_FN): New.
26898         (CALL_EXPR_STATIC_CHAIN): New.
26899         (CALL_EXPR_ARGS): New.
26900         (CALL_EXPR_ARG): New.
26901         (call_expr_nargs): New.
26902         (CALL_EXPR_ARGP): New.
26903         (build_nt_call_list): Declare.
26904         (build_vl_exp_stat): Declare.
26905         (build_vl_exp): New.
26906         (build_call_list): Declare.
26907         (build_call_nary): Declare.
26908         (build_call_valist): Declare.
26909         (build_call_array): Declare.
26910         (call_expr_arg): Declare.
26911         (call_expr_argp): Declare.
26912         (call_expr_arglist): Declare.
26913         (fold_build_call_list): Declare.
26914         (fold_build_call_list_initializer): Declare.
26915         (fold_call_expr): Declare to replace fold_builtin.
26916         (fold_builtin_fputs): Update to agree with modified definition.
26917         (fold_builtin_strcpy): Likewise.
26918         (fold_builtin_strncpy): Likewise.
26919         (fold_builtin_memory_chk): Likewise.
26920         (fold_builtin_stxcpy_chk): Likewise.
26921         (fold_builtin_strncpy_chk): Likewise.
26922         (fold_builtin_next_arg): Likewise.
26923         (fold_build_call_expr): Declare.
26924         (fold_builtin_call_list): Declare.
26925         (fold_builtin_call_valist): Declare.
26926         (build_call_expr): Declare.
26927         (validate_arglist): Update to agree with modified definition.
26928         (tree_operand_length): New.
26929         (call_expr_arg_iterator): New.
26930         (init_call_expr_arg_iterator): New.
26931         (next_call_expr_arg): New.
26932         (first_call_expr_arg): New.
26933         (more_call_expr_args_p): New.
26934         (FOR_EACH_CALL_EXPR_ARG): New.
26935
26936         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
26937         and tcc_gimple_stmt.
26938         (tree_code_size): Update documentation.  Use sizeof (tree) rather
26939         than sizeof (char *).
26940         (tree_size): Likewise.  Add case for tcc_vl_exp.
26941         (tree_node_structure): Add case for tcc_vl_exp.
26942         (contains_placeholder_p): Likewise.
26943         (substitute_in_expr): Likewise.
26944         (substitute_placeholder_in_expr): Likewise.
26945         (stabilize_reference_1): Likewise.
26946         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
26947         to diagnose breakage of this interface for constructing CALL_EXPRs.
26948         (build_nt): Add similar assertion here.
26949         (build_nt_call_list): New.
26950         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
26951         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
26952         TREE_CODE_LENGTH.
26953         (get_callee_fndecl): Use new CALL_EXPR accessors.
26954         (tree_operand_check_failed): Change parameters to pass entire node
26955         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
26956         (process_call_operands): New.
26957         (build_vl_exp_stat): New.
26958         (build_call_list): New.
26959         (build_call_nary): New.
26960         (build_call_valist): New.
26961         (build_call_array): New.
26962         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26963         (call_expr_arglist): New.
26964
26965         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
26966         tcc_vl_exp instead of a fixed-size tcc_expression.
26967
26968         * doc/c-tree.texi (CALL_EXPR): Document new representation and
26969         accessors for CALL_EXPRs.
26970         (AGGR_INIT_EXPR): Likewise.
26971
26972 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26973             Brooks Moses  <brooks.moses@codesourcery.com>
26974             Lee Millward  <lee.millward@codesourcery.com>
26975
26976         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
26977         (expand_builtin_nonlocal_goto): Change parameter to be entire
26978         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
26979         (expand_builtin_prefetch): Likewise.
26980         (expand_builtin_classify_type): Likewise.
26981         (mathfn_built_in): Return NULL_TREE instead of 0.
26982         (expand_errno_check): Use new CALL_EXPR accessors.
26983         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
26984         Return NULL_RTX instead of 0.
26985         (expand_builtin_mathfn_2): Likewise.
26986         (expand_builtin_mathfn_3): Likewise.
26987         (expand_builtin_interclass_mathfn): Likewise.
26988         (expand_builtin_sincos): Likewise.
26989         (expand_builtin_cexpi): Likewise.
26990         (expand_builtin_int_roundingfn): Likewise.
26991         (expand_builtin_int_roundingfn_2): Likewise.
26992         (expand_builtin_pow): Likewise.
26993         (expand_builtin_powi): Likewise.
26994         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
26995         of arglist, fixing callers appropriately.  Use new CALL_EXPR
26996         accessors and constructors.  Return NULL_RTX instead of 0.
26997         (expand_builtin_strstr): Likewise.
26998         (expand_builtin_strchr): Likewise.
26999         (expand_builtin_strrchr): Likewise.
27000         (expand_builtin_strpbrk): Likewise.
27001         (expand_builtin_memcpy): Likewise.
27002         (expand_builtin_mempcpy): Likewise.
27003         (expand_builtin_mempcpy_args): New.
27004         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
27005         (expand_builtin_memmove_args): New.
27006         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
27007         (expand_movstr): Likewise.
27008         (expand_builtin_strcpy): Likewise.
27009         (expand_builtin_strcpy_args): New.
27010         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
27011         (expand_builtin_strncpy): Likewise.
27012         (expand_builtin_memset): Likewise.
27013         (expand_builtin_memset_args): New.
27014         (expand_builtin_bzero): Similarly to expand_builtin_memset.
27015         (expand_builtin_memcmp): Likewise.
27016         (expand_builtin_strcmp): Likewise.
27017         (expand_builtin_strncmp): Likewise.
27018         (expand_builtin_strcat): Likewise.
27019         (expand_builtin_strncat): Likewise.
27020         (expand_builtin_strspn): Likewise.
27021         (expand_builtin_strcspn): Likewise.
27022         (expand_builtin_args_info): Likewise.
27023         (expand_builtin_va_start): Likewise.
27024         (gimplify_va_arg_expr): Likewise.
27025         (expand_builtin_va_end): Likewise.
27026         (expand_builtin_va_copy): Likewise.
27027         (expand_builtin_frame_address): Likewise.
27028         (expand_builtin_alloca): Likewise.
27029         (expand_builtin_bswap): Likewise.
27030         (expand_builtin_unop): Likewise.
27031         (expand_builtin_fputs): Likewise.
27032         (expand_builtin_expect): Likewise.
27033         (expand_builtin_fabs): Likewise.
27034         (expand_builtin_copysign): Likewise.
27035         (expand_builtin_printf): Likewise.
27036         (expand_builtin_fprintf): Likewise.
27037         (expand_builtin_sprintf): Likewise.
27038         (expand_builtin_init_trampoline): Likewise.
27039         (expand_builtin_signbit): Likewise.
27040         (expand_builtin_fork_or_exec): Likewise.
27041         (expand_builtin_sync_operation): Likewise.
27042         (expand_builtin_compare_and_swap): Likewise.
27043         (expand_builtin_lock_test_and_set): Likewise.
27044         (expand_builtin_lock_release): Likewise.
27045         (expand_builtin): Likewise.
27046         (builtin_mathfn_code): Likewise.
27047
27048         (fold_builtin_constant_p): Pass call arguments individually instead
27049         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27050         accessors and constructors.  Return NULL_TREE instead of 0.
27051         (fold_builtin_expect): Likewise.
27052         (fold_builtin_classify_type): Likewise.
27053         (fold_builtin_strlen): Likewise.
27054         (fold_builtin_nan): Likewise.
27055         (integer_valued_real_p): Likewise.
27056         (fold_trunc_transparent_mathfn): Likewise.
27057         (fold_fixed_mathfn): Likewise.
27058         (fold_builtin_cabs): Likewise.
27059         (fold_builtin_sqrt): Likewise.
27060         (fold_builtin_cbrt): Likewise.
27061         (fold_builtin_cos): Likewise.
27062         (fold_builtin_cosh): Likewise.
27063         (fold_builtin_tan): Likewise.
27064         (fold_builtin_sincos): Likewise.
27065         (fold_builtin_cexp): Likewise.
27066         (fold_builtin_trunc): Likewise.
27067         (fold_builtin_floor): Likewise.
27068         (fold_builtin_ceil): Likewise.
27069         (fold_builtin_round): Likewise.
27070         (fold_builtin_int_roundingfn): Likewise.
27071         (fold_builtin_bitop): Likewise.
27072         (fold_builtin_bswap): Likewise.
27073         (fold_builtin_logarithm): Likewise.
27074         (fold_builtin_hypot): Likewise.
27075         (fold_builtin_pow): Likewise.
27076         (fold_builtin_powi): Likewise.
27077         (fold_builtin_exponent): Likewise.
27078         (fold_builtin_memset): Likewise.
27079         (fold_builtin_bzero): Likewise.
27080         (fold_builtin_memory_op): Likewise.
27081         (fold_builtin_bcopy): Deleted; call site changed to invoke
27082         fold_builtin_memory_op directly.
27083         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
27084         (fold_builtin_strncpy): Likewise.
27085         (fold_builtin_memcmp): Likewise.
27086         (fold_builtin_strcmp): Likewise.
27087         (fold_builtin_strncmp): Likewise.
27088         (fold_builtin_signbit): Likewise.
27089         (fold_builtin_copysign): Likewise.
27090         (fold_builtin_isascii): Likewise.
27091         (fold_builtin_toascii): Likewise.
27092         (fold_builtin_isdigit): Likewise.
27093         (fold_builtin_fabs): Likewise.
27094         (fold_builtin_abs): Likewise.
27095         (fold_builtin_fmin_fmax): Likewise.
27096         (fold_builtin_carg): Likewise.
27097         (fold_builtin_classify): Likewise.
27098         (fold_builtin_unordered_cmp): Likewise.
27099
27100         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
27101         New functions split out from fold_builtin_1.
27102         (fold_builtin_n): New.
27103         (fold_builtin_varargs): New.
27104         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
27105         instead.
27106         (fold_call_expr): New.
27107         (build_function_call_expr): Rewrite to use new helper function.
27108         (fold_builtin_call_list): New.
27109         (build_call_expr): New.
27110         (fold_builtin_call_valist): New.
27111         (rewrite_call_expr): New.
27112         (validate_arg): New.
27113         (validate_arglist): Change parameter to be entire CALL_EXPR instead
27114         of an arglist.  Change return type to bool.  Use new CALL_EXPR
27115         accessors.
27116
27117         (fold_builtin_strstr): Pass call arguments individually instead
27118         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27119         accessors and constructors.  Return NULL_TREE instead of 0.
27120         (fold_builtin_strchr): Likewise.
27121         (fold_builtin_strrchr): Likewise.
27122         (fold_builtin_strpbrk): Likewise.
27123         (fold_builtin_strcat): Likewise.
27124         (fold_builtin_strncat): Likewise.
27125         (fold_builtin_strspn): Likewise.
27126         (fold_builtin_strcspn): Likewise.
27127         (fold_builtin_fputs): Likewise.
27128         (fold_builtin_next_arg): Likewise.
27129         (fold_builtin_sprintf): Likewise.
27130
27131         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
27132         NULL_RTX instead of 0.
27133         (expand_builtin_memory_chk): Likewise.
27134         (maybe_emit_chk_warning): Likewise.
27135         (maybe_emit_sprintf_chk_warning): Likewise.
27136
27137         (fold_builtin_object_size): Pass call arguments individually instead
27138         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27139         accessors and constructors.  Return NULL_TREE instead of 0.
27140         (fold_builtin_memory_chk): Likewise.
27141         (fold_builtin_stxcpy_chk): Likewise.
27142         (fold_builtin_strncpy_chk): Likewise.
27143         (fold_builtin_strcat_chk): Likewise.
27144         (fold_builtin_strcat_chk): Likewise.
27145         (fold_builtin_strncat_chk): Likewise.
27146         (fold_builtin_sprintf_chk): Likewise.
27147         (fold_builtin_snprintf_chk): Likewise.
27148         (fold_builtin_printf): Likewise.
27149         (fold_builtin_vprintf): Likewise.
27150
27151         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
27152         constructors.
27153         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
27154         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27155         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
27156         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
27157         (fold_unary): Likewise.
27158         (fold_binary): Likewise.
27159         (fold_ternary): Remove CALL_EXPR case, since they are no longer
27160         ternary expressions.
27161         (fold): Add logic for tcc_vl_exp.
27162         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
27163         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27164         (fold_build3_stat): Add assertion to flag broken interface for
27165         constructing CALL_EXPRs.
27166         (fold_build_call_list): New.
27167         (fold_build_call_list_initializer): New.
27168         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
27169         constructors.
27170         (fold_strip_sign_ops): Likewise.
27171
27172 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27173             Brooks Moses  <brooks.moses@codesourcery.com>
27174             Lee Millward  <lee.millward@codesourcery.com>
27175
27176         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
27177         accessors and dump arguments explicitly.
27178
27179         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
27180         TREE_CODE_LENGTH.
27181         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
27182         explicitly.
27183         (print_call_name): Use new CALL_EXPR accessors.
27184
27185         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
27186         CALL_EXPR arguments explicitly instead of as a list.  Use
27187         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27188
27189         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
27190         (vrp_visit_stmt): Likewise.
27191
27192         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
27193         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
27194         TREE_CODE_LENGTH.
27195         (force_move_till_expr): Likewise.
27196
27197         * targhooks.c (default_external_stack_protect_fail): Use
27198         build_call_expr instead of build_function_call_expr.
27199         (default_hidden_stack_protect_fail): Likewise.
27200
27201         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
27202         build the call.
27203
27204         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
27205         and walk arguments explicitly.
27206
27207         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
27208         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27209         (expand_simple_operations): Likewise.
27210         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
27211
27212         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
27213         of TREE_CODE_LENGTH.
27214         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
27215
27216         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
27217         instead of TREE_CODE_LENGTH.
27218
27219         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
27220         (tree_ic_transform): Likewise.
27221         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
27222         parameter instead of arglist.  Fix callers.
27223         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
27224         (tree_stringops_transform): Likewise.
27225         (tree_indirect_call_to_profile): Likewise.
27226         (tree_stringops_values_to_profile): Likewise.
27227
27228         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
27229         (eliminate_tail_call): Likewise.
27230
27231         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
27232
27233         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
27234         Use TREE_OPERAND_LENGTH and generalize to handle any number of
27235         operands.
27236         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
27237
27238         * omp-low.c (build_omp_barrier): Use build_call_expr.
27239         (lower_rec_input_clauses): Likewise.
27240         (lower_reduction_clauses): Likewise.
27241         (expand_parallel_call): Likewise.
27242         (maybe_catch_exception): Likewise.
27243         (expand_omp_for_generic): Likewise.
27244         (expand_omp_for_static_nochunk): Likewise.
27245         (expand_omp_sections): Likewise.
27246         (lower_omp_single_simple): Likewise.
27247         (lower_omp_single_copy): Likewise.
27248         (lower_omp_master): Likewise.
27249         (lower_omp_ordered): Likewise.
27250         (lower_omp_critical): Likewise.
27251
27252         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
27253         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
27254
27255         * tree-gimple.c (is_gimple_call_addr): Fix doc.
27256         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
27257         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
27258
27259         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
27260         and generalize to handle any number of operands.
27261         (chrec_contains_undetermined): Likewise.
27262         (tree_contains_chrecs): Likewise.
27263         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
27264
27265         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
27266
27267         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
27268         fold_call_expr instead of fold_builtin.
27269         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
27270         match declarations there.
27271         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
27272         updates.
27273
27274         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
27275         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27276
27277         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
27278         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
27279
27280         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
27281         accessors.
27282
27283         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
27284         (execute_cse_sincos): Use new CALL_EXPR accessors.
27285
27286         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
27287
27288         * gimple-low.c (lower_function_body): Use build_call_expr.
27289         (lower_builtin_setjmp): Likewise.
27290
27291         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
27292         (set_storage_via_libcall): Likewise.
27293         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
27294         instead of TREE_CODE_LENGTH.
27295         (expand_expr_real_1): Use new CALL_EXPR accessors.
27296
27297         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
27298         generalize to handle any number of operands.
27299         (TB_parent_eq): Likewise.
27300
27301         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
27302         (strip_builtin_expect): Likewise.
27303
27304         * function.c (gimplify_parameters): Use build_call_expr.
27305
27306         * tree-vectorizer.c (vect_is_simple_reduction): Use
27307         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27308
27309         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
27310         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
27311
27312         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
27313         iterators.
27314
27315         * gimplify.c (build_stack_save_restore): Use build_call_expr.
27316         (gimplify_decl_expr): Likewise.
27317         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
27318         Use new CALL_EXPR iterators.
27319         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
27320         (gimplify_modify_expr_to_memset): Likewise.
27321         (gimplify_variable_sized_compare): Likewise.
27322         (gimplify_omp_atomic_fetch_op): Likewise.
27323         (gimplify_omp_atomic_pipeline): Likewise.
27324         (gimplify_omp_atomic_mutex): Likewise.
27325         (gimplify_function_tree): Likewise.
27326
27327         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
27328         (call_expr_flags): Likewise.
27329         (expand_call): Likewise.
27330
27331         * except.c (expand_builtin_eh_return_data_regno): Pass entire
27332         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27333         accessors.
27334
27335         * coverage.c (create_coverage): Use build_call_expr.
27336
27337         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
27338         (temp_call_expr_obstack): New.
27339         (pool_copy_list): Delete.
27340         (temp_copy_call_expr): New.
27341         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
27342         CALL_EXPR accessors.  Get rid of special goo for copying argument
27343         lists and use temp_copy_call_expr instead.
27344         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
27345         CALL_EXPR accessors.
27346         (create_expression_by_pieces): Likewise.  Use build_call_array
27347         to construct the result instead of fold_build3.
27348         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
27349         dealing with argument lists.
27350         (init_pre): Remove references to expression_node_pool and
27351         list_node_pool.  Init temp_call_expr_obstack instead.
27352         (fini_pre): Remove references to expression_node_pool and
27353         list_node_pool.
27354
27355         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
27356         and walk arguments explicitly instead of as a list.
27357
27358         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
27359         (mx_register_decls): Likewise.
27360         (mudflap_register_call): Likewise.
27361         (mudflap_finish_file): Likewise.
27362
27363         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
27364         (ipa_callsite_compute_param): Likewise.
27365
27366         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
27367         accessors and constructor.
27368
27369         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
27370         accessors and constructor.
27371         (convert_tramp_reference): Likewise.
27372         (convert_call_expr): Likewise.
27373         (finalize_nesting_tree_1): Likewise.
27374
27375         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
27376         accessors.
27377
27378         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
27379
27380         * tree-inline.c (initialize_inlined_parameters): Pass entire
27381         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27382         accessors.
27383         (estimate_num_insns_1): Use new CALL_EXPR accessors.
27384         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
27385
27386         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
27387         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27388         (vectorizable_reduction): Likewise.
27389         (vectorizable_call): Use new CALL_EXPR iterators.
27390         (vectorizable_conversion): Use build_call_expr.
27391         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
27392         (vect_gen_widened_results_half): Use build_call_expr.
27393         (vect_setup_realignment): Likewise.
27394         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
27395
27396         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
27397         (pass_through_call): Likewise.
27398         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
27399         fold_builtin.
27400
27401         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
27402         (tree_gen_pow2_profiler): Likewise.
27403         (tree_gen_one_value_profiler): Likewise.
27404         (tree_gen_ic_func_profiler): Likewise.
27405         (tree_gen_average_profiler): Likewise.
27406         (tree_gen_ior_profiler): Likewise.
27407
27408         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
27409         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
27410         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27411
27412         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
27413         of TREE_CODE_LENGTH.
27414
27415         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
27416         of TREE_CODE_LENGTH.
27417
27418         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
27419         constructor.
27420         (convert_to_integer): Likewise.
27421
27422         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
27423         accessors.
27424
27425 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27426             Brooks Moses  <brooks.moses@codesourcery.com>
27427             Lee Millward  <lee.millward@codesourcery.com>
27428
27429         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
27430         accessors.
27431         * config/frv/frv.c (frv_expand_builtin): Likewise.
27432         * config/s390/s390.c (s390_expand_builtin): Likewise.
27433
27434         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
27435         (sparc_expand_builtin): Use new CALL_EXPR accessors.
27436
27437         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
27438         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
27439         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
27440         (ix86_expand_store_builtin): Likewise.
27441         (ix86_expand_unop_builtin): Likewise.
27442         (ix86_expand_unop1_builtin): Likewise.
27443         (ix86_expand_sse_compare): Likewise.
27444         (ix86_expand_sse_comi): Likewise.
27445         (ix86_expand_vec_init_builtin): Likewise.
27446         (ix86_expand_vec_ext_builtin): Likewise.
27447         (ix86_expand_vec_set_builtin): Likewise.
27448         (ix86_expand_builtin): Use new CALL_EXPR accessors.
27449
27450         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
27451         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
27452
27453         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
27454         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27455         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
27456
27457         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
27458         build_call_expr.
27459         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
27460         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
27461         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27462         (altivec_expand_abs_builtin): Likewise.
27463         (rs6000_expand_binop_builtin): Likewise.
27464         (altivec_expand_predicate_builtin): Likewise.
27465         (altivec_expand_lv_builtin): Likewise.
27466         (spe_expand_stv_builtin): Likewise.
27467         (altivec_expand_stv_builtin): Likewise.
27468         (rs6000_expand_ternop_builtin): Likewise.
27469         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
27470         (altivec_expand_st_builtin): Likewise.
27471         (altivec_expand_dst_builtin): Likewise.
27472         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
27473         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27474         (altivec_expand_vec_set_builtin): Likewise.
27475         (altivec_expand_vec_ext_builtin): Likewise.
27476         (altivec_expand_builtin): Use new CALL_EXPR accessors.
27477         (spe_expand_builtin): Likewise.
27478         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
27479         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27480         (spe_expand_evsel_builtin): Likewise.
27481         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
27482         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
27483
27484         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
27485         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27486         (arm_expand_unop_builtin): Likewise.
27487         (arm_expand_builtin): Use new CALL_EXPR accessors.
27488
27489         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
27490         accessors.
27491
27492         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
27493         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
27494         Fix callers.
27495         (bfin_expand_unop_builtin): Likewise.
27496         (bfin_expand_builtin): Use new CALL_EXPR accessors.
27497
27498 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27499             Brooks Moses  <brooks.moses@codesourcery.com>
27500             Lee Millward  <lee.millward@codesourcery.com>
27501
27502         * c-semantics.c (build_stmt): Add internal diagnostic check.
27503
27504         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
27505         accessors.  Print arguments explicitly instead of as a list.
27506
27507         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
27508
27509         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
27510         (c_finish_omp_flish): Likewise.
27511
27512         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
27513         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
27514         instead of TREE_CODE_LENGTH.
27515         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
27516         (c_warn_unused_result): Likewise.
27517
27518 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27519
27520         PR c/26494
27521         * doc/invoke.texi (Warning Options): Remove
27522         -Werror-implicit-function-declaration.
27523         (Wimplicit-function-declaration): Update description.
27524         * opts.c (common_handle_option): Move handling of -Werror=* to...
27525         (enable_warning_as_error): ...here.
27526         * opts.h (enable_warning_as_error): Declare.
27527         * c-decl.c (implicit_decl_warning): Unless
27528         -Wno-implicit-function-declaration is given, emit a pedwarn if
27529         -std=c99 or emit a warning if -Wimplicit-function-declaration.
27530         * c.opt (Wimplicit-function-declaration): Replace
27531         mesg_implicit_function_declaration with
27532         warn_implicit_function_declaration.
27533         * c-opts.c (c_common_handle_option):
27534         -Werror-implicit-function-declaration is exactly equal as
27535         -Werror=implicit-function-declaration.
27536         (set_Wimplicit): Replace mesg_implicit_function_declaration with
27537         warn_implicit_function_declaration.
27538         (c_common_post_options): -Wimplict-function-declaration is enabled
27539         by default by -std=c99, otherwise is disabled by default.
27540         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
27541
27542 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27543
27544         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
27545         DECL on the rhs to a DECL on the lhs for debug info purposes if the
27546         former is ignored but not the latter.
27547
27548 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27549
27550         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
27551         is made and the reference doesn't use the alias set of its type,
27552         do not create the temporary using that type.
27553
27554 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
27555
27556         * jump.c: Remove prototypes for delete_computation and
27557         delete_prior_computation.
27558
27559 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27560
27561         * jump.c (get_label_after): Delete.
27562         (get_label_before, delete_computation, delete_jump,
27563         delete_prior_computation, follow_jumps): Move...
27564         * reorg.c (delete_computation, delete_prior_computation): ... here...
27565         (get_label_before, delete_jump): ... making these static ...
27566         (follow_jumps): ... and simplifying this since it only runs after
27567         reload.
27568         * rtl.h (get_label_after, get_label_before, delete_jump,
27569         follow_jumps): Delete prototypes.
27570
27571 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27572
27573         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
27574
27575 2007-02-15  Nick Clifton  <nickc@redhat.com>
27576
27577         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
27578         order to prevent it from being munged by the target.
27579
27580 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
27581
27582         * config/i386/i386.md: Remove misleading comment.
27583
27584 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27585
27586         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
27587         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
27588         invalid patterns.
27589
27590 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27591
27592         * tree-sra.c (instantiate_missing_elements): Canonicalize
27593         bit-field types.
27594         (sra_build_assignment): New.
27595         (generate_copy_inout, generate_element_copy,
27596         generate_element_zero, generate_one_element_init): Use it.
27597
27598 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27599
27600         * tree-sra.c (instantiate_missing_elements): Canonicalize
27601         bit-field types.
27602         (sra_build_assignment): New.
27603         (generate_copy_inout, generate_element_copy,
27604         generate_element_zero, generate_one_element_init): Use it.
27605
27606 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27607
27608         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
27609         limbo die nodes.
27610
27611 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
27612
27613         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
27614         types as aggregates not scalars.
27615         * function.c (assign_stack_temp_for_type): Likewise.
27616
27617 2007-02-14  Roger Sayle  <roger@eyesopen.com>
27618             Zdenek Dvorak  <dvorakz@suse.cz>
27619
27620         * tree-dump.c (dump_switch_p_1): Require exact match of the option
27621         name.
27622
27623 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
27624
27625         * passes.c (next_pass_1): Clear the next field of the copied
27626         pass structure.
27627
27628 2007-02-14  Richard Henderson  <rth@redhat.com>
27629
27630         * tree-sra.c (early_sra): New.
27631         (decl_can_be_decomposed_p): Deny va_list if early_sra.
27632         (tree_sra_early, pass_sra_early): New.
27633         * tree-pass.h (pass_sra_early): Declare.
27634         * passes.c (init_optimization_passes): Use it.
27635
27636 2007-02-14  Richard Guenther  <rguenther@suse.de>
27637
27638         * flags.h (issue_strict_overflow_warning): Convert to a macro.
27639
27640 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
27641
27642          PR tree-optimization/30771
27643         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
27644         also phi nodes.
27645         (vect_analyze_operations): Induction phis can now be marked as
27646         used_in_loop.
27647         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
27648         Update documentation accordingly.
27649
27650 2007-02-14  Nick Clifton  <nickc@redhat.com>
27651
27652         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
27653         most 3 arguments are supported.
27654         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
27655
27656 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
27657
27658         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
27659         Ensure dst->current is valid.
27660
27661 2007-02-13  Paul Brook  <paul@codesourcery.com>
27662
27663         * config.gcc: Add arm*-*-uclinux-*eabi.
27664         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
27665         (SUBTARGET_EXTRA_LINK_SPEC): Define.
27666         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
27667         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
27668         (LINK_SPEC): Define.
27669         (LIB_SPEC): Define.
27670         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
27671         register.
27672         * config/arm/uclinux-eabi.h: New file.
27673         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
27674         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
27675         based targets.
27676
27677 2007-02-13  Ian Lance Taylor  <iant@google.com>
27678
27679         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
27680         * flags.h (warn_strict_overflow): Declare.
27681         (enum warn_strict_overflow_code): Define.
27682         (issue_strict_overflow_warning): New static inline function.
27683         * opts.c (warn_strict_overflow): New variable.
27684         (common_handle_option): Handle OPT_Wstrict_overflow and
27685         OPT_Wstrict_overflow_.
27686         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
27687         OPT_Wall.
27688         * fold-const.c: Include intl.h.
27689         (fold_deferring_overflow_warnings): New static variable.
27690         (fold_deferred_overflow_warning): New static variable.
27691         (fold_deferred_overflow_code): New static variable.
27692         (fold_defer_overflow_warnings): New function.
27693         (fold_undefer_overflow_warnings): New function.
27694         (fold_undefer_and_ignore_overflow_warnings): New function.
27695         (fold_deferring_overflow_warnings_p): New function.
27696         (fold_overflow_warning): New static function.
27697         (make_range): Add strict_overflow_p parameter.  Change all
27698         callers.
27699         (extract_muldiv, extract_muldiv_1): Likewise.
27700         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
27701         tree_expr_nonnegative_p.
27702         (fold_negate_expr): Call fold_overflow_warning.
27703         (fold_range_test): Likewise.
27704         (fold_comparison): Likewise.
27705         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
27706         instead of tree_expr_nonnegative_p.
27707         (tree_expr_nonnegative_warnv_p): Rename from
27708         tree_expr_nonnegative_p, add strict_overflow_p parameter.
27709         (tree_expr_nonnegative_p): New function.
27710         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
27711         strict_overflow_p parameter.
27712         (tree_expr_nonzero_p): New function.
27713         * passes.c (verify_interpass_invariants): New static function.
27714         (execute_one_pass): Call it.
27715         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
27716         warnings.
27717         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
27718         (estimate_numbers_of_iterations): Likewise.
27719         (scev_probably_wraps_p): Likewise.
27720         * tree-ssa-ccp.c: Include "toplev.h".
27721         (evaluate_stmt): Defer fold overflow warnings until we know we are
27722         going to optimize.
27723         (struct fold_stmt_r_data): Add stmt field.
27724         (fold_stmt_r): Defer fold overflow warnings until we know we
27725         optimized.
27726         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
27727         (fold_stmt_inplace): Likewise.
27728         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
27729         (cleanup_control_expr_graph): Defer fold overflow warnings until
27730         we know we are going to optimize.
27731         * tree-cfg.c (fold_cond_expr_cond): Likewise.
27732         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
27733         Likewise.
27734         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
27735         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
27736         * tree-ssa-loop-manip.c (create_iv): Likewise.
27737         * c-typeck.c (build_conditional_expr): Likewise.
27738         (build_binary_op): Likewise.
27739         * tree-vrp.c (vrp_expr_computes_nonzero): Call
27740         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
27741         (extract_range_from_unary_expr): Likewise.
27742         * simplify-rtx.c (simplify_const_relational_operation): Warn when
27743         assuming that signed overflow does not occur.
27744         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
27745         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
27746         (fold_defer_overflow_warnings): Declare.
27747         (fold_undefer_overflow_warnings): Declare.
27748         (fold_undefer_and_ignore_overflow_warnings): Declare.
27749         (fold_deferring_overflow_warnings_p): Declare.
27750         (tree_expr_nonzero_warnv_p): Declare.
27751         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
27752         of warning options.
27753         (Warning Options): Document -Wstrict-overflow.
27754         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
27755         (tree-ssa-ccp.o): Likewise.
27756         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
27757         (fold-const.o): Depend on intl.h.
27758
27759 2007-02-13  Ian Lance Taylor  <iant@google.com>
27760
27761         PR middle-end/30751
27762         * lower-subreg.c (resolve_simple_move): Decompose subregs in
27763         addresses.
27764
27765 2007-02-13  Stuart Hastings  <stuart@apple.com>
27766
27767         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
27768
27769 2007-02-13  Richard Henderson  <rth@redhat.com>
27770
27771         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
27772         handled_component_p before looking for the indirect_ref.
27773
27774 2007-02-13  Richard Henderson  <rth@redhat.com>
27775
27776         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
27777         remove flags clobber.
27778         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
27779         (bswaphi_lowpart): New.
27780         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
27781         remove TARGET_BSWAP test.  Delete expander of the same name.
27782
27783         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
27784         (expand_unop): Use them.
27785
27786 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
27787
27788         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
27789         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
27790         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
27791         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
27792         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
27793         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
27794         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
27795         assembler dialect choice from asm templates.
27796
27797 2007-02-12  Richard Henderson  <rth@redhat.com>
27798
27799         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
27800         (fixuns_trunc<SSEMODEF>si2): Use it.
27801         * config/i386/sse.md (vec_setv4sf_0): Export.
27802         * config/i386/i386.c (ix86_build_const_vector): Export.
27803         (ix86_split_convert_uns_si_sse): Rename from
27804         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
27805         * config/i386/i386-protos.h: Update.
27806
27807 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27808
27809         PR c/29521
27810         * c-typeck.c (c_finish_return): Improve warning message.
27811
27812 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27813
27814         * alias.c (find_symbolic_term): Delete unused function.
27815
27816 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
27817
27818         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
27819         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
27820         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
27821
27822 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27823
27824         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
27825         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
27826         the function, temporarily point the debug interface to the null one.
27827
27828 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27829
27830         * dwarf2out.c (round_up_to_align): New static function.
27831         (field_byte_offset): Use it to round the offset.
27832
27833 2007-02-12  Richard Henderson  <rth@redhat.com>
27834
27835         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
27836         (inswl_const): Export.
27837
27838 2007-02-12  Richard Henderson  <rth@redhat.com>
27839
27840         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
27841         result mode of the libcall, convert back to outmode.
27842
27843 2007-02-12  Roger Sayle  <roger@eyesopen.com>
27844
27845         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
27846         (bswapdi2): New define_expand to implement 32-bit implementation.
27847
27848 2007-02-12  Nick Clifton  <nickc@redhat.com>
27849
27850         * doc/invoke.texi (Overall Options): Document --help=.
27851         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
27852         (cc1_options): Pass --help= on to cc1.
27853         (display_help): Add description of --help=.
27854         (process_command): Add code to handle --help=.  Allow translated
27855         --help and --target-help switches to be passed on to compiler
27856         sub-process.
27857         (main): Remove unused if statement.
27858         * opts.c (columns): Remove.
27859         (LEFT_COLUMN): Define.
27860         (wrap_help): Add columns argument.
27861         (print_filtered_help): Change parameters to be an include bitmask,
27862         an exclude bitmask, an any bitmask and the column width.  Move the
27863         code to display the params list here.  Add code to display the
27864         status of options rather than their descriptions if the quiet flag
27865         is not active.
27866         (print_specific_help): Change parameters to be an include bitmask,
27867         an exclude bitmask and an any bitmask.  Move code to look up the
27868         column width here.  Decide upon the title for an options listing.
27869         (common_handle_options): Add code to handle --help=.  Adapt code
27870         for --help and --target-help to use the revised form of the
27871         print_specific_help function.
27872         (print_help): Delete.
27873         (print_param_help): Delete.
27874         (print_switch): Delete.
27875         * opts.h (cl_lang_count): Add prototype.
27876         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
27877         CL_MAX_OPTION_CLASS): New defines.
27878         * optc-gen.awk: Add construction of cl_lang_count.
27879         * c.opt: Add Warning attribute to warning options and Optimization
27880         attribute to optimization options.
27881         * common.opt: Likewise.
27882         Add --help=.
27883         Add -fhelp and -ftarget-help as aliases for the transformed --help
27884         and --target-help options.
27885         * opt-functions.awk: Add code to handle Warning and Optimization
27886         attributes.
27887
27888 2007-02-12  Richard Henderson  <rth@redhat.com>
27889
27890         * config/alpha/constraints.md: New file.
27891         * config/alpha/alpha.c: Include tm-constrs.h.
27892         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
27893         alpha_extra_constraint): Remove.
27894         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
27895         * config/alpha/alpha-protos.h: Update.
27896         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
27897         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
27898         (EXTRA_CONSTRAINT): Remove.
27899         * config/alpha/alpha.md: Include constraints.md.
27900         (adddi splitter): Use satisfies_constraint_*.
27901         * config/alpha/predicates.md (add_operand): Likewise.
27902         (sext_add_operand, addition_operation): Likewise.
27903
27904 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
27905
27906         PR tree-optimization/29145
27907         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
27908         in our handling of restrict qualified pointers.
27909
27910 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27911
27912         PR middle-end/7651
27913         * doc/invoke.texi (Wunused-value): Update description.
27914         (Wextra): Delete item.
27915         * opts.c (set_Wextra): Don't use the value of Wextra to set the
27916         value of Wunused-value.
27917         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
27918         (c_finish_stmt_expr): Don't check extra_warnings.
27919         (emit_side_effect_warnings): The caller is responsible to check
27920         warn_unused_value.
27921
27922 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27923             Matt Thomas  <matt@3am-software.com>
27924
27925         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
27926
27927 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27928
27929         * simplify-rtx.c (simplify_relational_operation_1): Optimize
27930         comparisons of POPCOUNT against zero.
27931         (simplify_const_relational_operation): Likewise.
27932
27933 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27934
27935         * doc/invoke.texi (Wextra): Delete outdated paragraph.
27936
27937 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27938
27939         * dwarf2out.c (root_type): Delete unused function.
27940
27941 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27942
27943         * genattrtab.c (contained_in_p): Delete unused function.
27944         (write_expr_attr_cache): Likewise.
27945
27946 2007-02-11  Jan Hubicka  <jh@suse.cz>
27947
27948         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
27949         previous patch.
27950
27951 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
27952
27953         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
27954         to add the REG_EQ* note.
27955         * see.c (see_merge_one_use_extension): Likewise.
27956         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
27957         turn REG_EQUAL notes into REG_EQUIV notes if the target
27958         register may have more than one set.
27959         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
27960         * gcse.c (try_replace_reg): Likewise.
27961         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
27962         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
27963         more than one REG_EQUIV note.
27964         * reload1.c (gen_reload): Use set_unique_reg_note.
27965
27966 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
27967
27968         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
27969         (ix86_builtin_conversion): New function.
27970
27971 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
27972
27973         PR target/29487
27974         * tree.h (DECL_REPLACEABLE_P): New macro.
27975         * except.c (set_nothrow_function_flags): Likewise.
27976
27977 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
27978             Ira Rosen  <irar@il.ibm.com>
27979             Dorit Nuzman  <dorit@il.ibm.com>
27980
27981         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
27982         * targhooks.c (default_builtin_vectorized_conversion): New.
27983         * targhooks.h (default_builtin_vectorized_function): New declaration.
27984         * target.h (struct vectorize): Add builtin_conversion field.
27985         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
27986         stmt_vec_info_type value.
27987         (vectorizable_conversion): New declaration.
27988         * tree-vect-analyze.c (vect_analyze_operations): Add
27989         vectorizable_conversion call.
27990         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
27991         * tree-vect-transform.c (vectorizable_conversion): New function.
27992         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
27993         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
27994         mode.
27995         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
27996         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
27997         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
27998         or ALTIVEC_BUILTIN_VCFSX.
27999
28000 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28001
28002         PR target/30634
28003         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
28004         CONST_DOUBLE and operand 0 is a hard register.
28005         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
28006         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
28007         is a hard floating-point register.
28008
28009 2007-02-10  Richard Henderson  <rth@redhat.com>
28010             Jakub Jelinek  <jakub@redhat.com>
28011             Alexandre Oliva  <aoliva@redhat.com>
28012
28013         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
28014         * builtin-types.def (BT_WORD): Make unsigned.
28015         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
28016         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
28017         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
28018         * c-decl.c (grokdeclarator): Don't error if !have_tls.
28019         * c-parser.c (c_parser_omp_threadprivate): Likewise.
28020         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
28021         emulated tls.
28022         * expr.c (emutls_var_address): New.
28023         (expand_expr_real_1): Expand emulated tls.
28024         (expand_expr_addr_expr_1): Likewise.
28025         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
28026         * output.h (emutls_finish): Declare.
28027         * toplev.c (compile_file): Call it.
28028         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
28029         address before wrapping in CONST.
28030         * varasm.c (emutls_htab, emutls_object_type): New.
28031         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
28032         (get_emutls_object_name, get_emutls_object_type): New.
28033         (get_emutls_init_templ_addr, emutls_decl): New.
28034         (emutls_common_1, emutls_finish): New.
28035         (assemble_variable): When emulating tls, swap decls; generate
28036         constructor for the emutls objects.
28037         (do_assemble_alias): When emulating tls, swap decl and target name.
28038         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
28039         for emulated tls.
28040         * varpool.c (decide_is_variable_needed): Look at force_output.
28041         Recurse for emulated tls.
28042         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
28043         with decide_is_variable_needed.
28044         * emutls.c: New file.
28045         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
28046         tls_object for real tls.
28047
28048 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
28049
28050         PR rtl-optimization/29599
28051         * reload1.c (eliminate_regs_in_insn): Take the destination
28052         mode into account when computing the offset.
28053
28054 2007-02-09  Stuart Hastings  <stuart@apple.com>
28055             Richard Henderson  <rth@redhat.com>
28056
28057         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28058         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28059         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
28060         fixuns_truncdfhi2): New.
28061         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
28062         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
28063         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
28064         (floatunssidf2): Allow nonimmediate source.
28065         * config/i386/sse.md (movdi_to_sse): New.
28066         (vec_concatv2di): Drop '*'.
28067         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
28068         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28069         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
28070         New.
28071         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
28072         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28073         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
28074         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
28075         (ix86_build_signbit_mask): Fix decl of v, refactor to call
28076         ix86_build_const_vector.
28077         (x86_emit_floatuns): Rewrite.
28078
28079 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28080
28081         * genautomata.c (longest_path_length): Delete unused function.
28082         (struct state): Delete unused longest_path_length.
28083         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
28084         (get_free_state): Delete unused.
28085
28086 2007-02-09  Jan Hubicka  <jh@suse.cz>
28087
28088         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
28089         * doc/invoke.texi (inline-unit-growth): Update default value.
28090
28091         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
28092         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
28093         (rebuild_cgraph_edges): Likewise.
28094         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
28095         (dump_cgraph_node): Dump frequencies.
28096         (cgraph_clone_edge): Add frequency scales.
28097         (cgraph_clone_node): Add freuqnecy.
28098         * cgraph.h (cgraph_edge): Add freuqnecy argument.
28099         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
28100         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
28101         * tree-pass.h (TODO_rebuild_frequencies): New constant.
28102         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
28103         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
28104         (save_inline_function_body): Likewise.
28105         * ipa-inline.c: inluce rtl.h
28106         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
28107         (cgraph_edge_badness): Use frequencies.
28108         (cgraph_decide_recursive_inlining): Update clonning.
28109         (cgraph_decide_inlining_of_small_function): Dump frequency.
28110         * predict.c (estimate_bb_frequencies): Export.
28111         * predict.h (estimate_bb_frequencies): Declare.
28112         * tree-inline.c (copy_bb): Watch overflows.
28113         (expand_call_inline): Update call of cgraph_create_edge.
28114         (optimize_inline_calls): Use TODO flags to update frequnecies.
28115         * passes.h: Include predict.h
28116         (init_optimization_passes): Move profile ahead.
28117         (execute_function_todo): Handle TODO_rebuild_frequencies.
28118
28119 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28120
28121         * config/alpha/alpha.c (emit_insxl): Force the first operand of
28122         the insbl or inswl pattern into a register.
28123
28124 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28125
28126         * config/ia64/ia64.md (bswapdi2): New define_insn.
28127
28128 2007-02-09  Richard Henderson  <rth@redhat.com>
28129
28130         * config/i386/constraints.md (Ym): New constraint.
28131         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
28132         (movdi_1_rex64): Split sse and xmm general register moves from
28133         memory move alternatives.  Use conditional register constraints.
28134         (movsf_1, movdf_integer): Likewise.
28135         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
28136         (movdf_integer_rex64): New.
28137         (pushsf_rex64): Fix output constraints.
28138         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
28139         (sse2_stored): Likewise.
28140         (sse2_storeq_rex64): New.
28141         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
28142         amd and not generic.
28143         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
28144         for optimize_size.  Remove SF/DFmode hack.
28145
28146 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
28147
28148         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
28149         (bit_SSE4a): New.
28150
28151 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
28152             Richard Sandiford  <richard@codesourcery.com>
28153
28154         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
28155         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
28156         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
28157         m68k/t-mlib to tmake_file.
28158         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
28159         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
28160         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
28161         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
28162         variable is not empty, add t-$m68k_arch_family to tmake_file.
28163         Add t-mlibs to tmake_file.
28164         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
28165         * config/m68k/t-cf: New file.
28166         * config/m68k/t-m68k: Likewise.
28167         * config/m68k/t-mlibs: Likewise.
28168         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28169         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28170         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28171         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28172         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
28173         Delete.
28174         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
28175         (INSTALL_LIBGCC): Delete.
28176         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28177         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28178         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28179         (M68K_MLIB_CPU): Define.
28180         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28181         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28182         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
28183
28184 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
28185             Richard Guenther  <rguenther@suse.de>
28186
28187         PR middle-end/23361
28188         * fold-const.c (fold_comparison): Handle obfuscated comparisons
28189         against INT_MIN/INT_MAX.
28190         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
28191         file if a loop is removed.
28192
28193 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
28194
28195         * calls.c (store_one_arg): Pass correct alignment to
28196         emit_push_insn for non-BLKmode values.
28197         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
28198         unaligned stack slot via a suitably aligned slot.
28199
28200 2007-02-08  DJ Delorie  <dj@redhat.com>
28201
28202         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
28203         warnings.
28204         (legal_subregs): Use unsigned char, make const.
28205         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
28206
28207 2007-02-08  Paul Brook  <paul@codesourcery.com>
28208
28209         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
28210         special interworking needed.
28211
28212 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
28213
28214         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
28215         conditional to __SSE2__.
28216         (Entries below should have been added to first ChangeLog
28217         entry for amdfam10 dated 2007-02-05)
28218         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
28219         defined.
28220         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
28221         defined.
28222         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
28223         defined.
28224
28225 2007-02-08  DJ Delorie  <dj@redhat.com>
28226
28227         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
28228         * config/m32c/m32c.c (legal_subregs): New.
28229         (m32c_illegal_subreg_p): New.
28230         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
28231         unsupported subregs of hard regs.
28232
28233 2007-02-08  Jan Hubicka  <jh@suse.cz>
28234
28235         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
28236         the same one; always update histograms.
28237
28238 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28239
28240         * passes.c (init_optimization_passes): Tidy comment.
28241
28242 2007-02-08  Roger Sayle  <roger@eyesopen.com>
28243
28244         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
28245         strip zero_extend, bswap and rotates from POCOUNT's argument.
28246         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
28247         zero_extend and rotates from PARITY's argument.
28248         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
28249         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
28250         of an integer constant at compile-time.
28251
28252 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28253
28254         PR 30562
28255         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
28256         Update all users.
28257         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
28258         users.
28259         (init_alias_info):
28260         * tree-ssa-live.c (remove_unused_locals): Do not remove
28261         TREE_ADDRESSABLE variables.
28262         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
28263         * tree-ssa-operands.c (add_virtual_operand): Remove argument
28264         FOR_CLOBBER.  Update all users.
28265         If VAR has an associated alias set, add a virtual operand for
28266         it if no alias is found to conflict with the memory reference.
28267
28268 2007-02-07  Jan Hubicka  <jh@suse.cz>
28269             Robert Kidd <rkidd@crhc.uiuc.edu>
28270
28271         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
28272
28273 2007-02-07  Ian Lance Taylor  <iant@google.com>
28274
28275         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
28276
28277 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28278
28279         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
28280         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
28281         tablejumpdi, movsi_to_cr_one): Remove constraints from
28282         define_expand's match_operands.
28283
28284 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28285
28286         * global.c (compute_regsets): Move declatation of "i" inside of
28287         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
28288
28289 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
28290
28291         PR c++/30703
28292         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
28293         of INDIRECT_REF <RESULT_DECL>.
28294
28295         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
28296
28297 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
28298             Kaz Kojima  <kkojima@gcc.gnu.org>
28299
28300         PR target/29746
28301         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
28302         properly.
28303         (sh_initialize_trampoline): Add parentheses to avoid a warning.
28304
28305 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
28306
28307         * doc/loop.texi: Document possibility not to perform disambiguation
28308         of loops with multiple latches.
28309         * cfgloopmanip.c (alp_enum_p): Removed.
28310         (add_loop): Handle subloops.  Use get_loop_body_with_size.
28311         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
28312         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
28313         the new forwarder block.
28314         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
28315         Handle the case latch is NULL.
28316         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
28317         modifications when marking loop exits.
28318         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
28319         be modified.
28320         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
28321         disambiguate_loops_with_multiple_latches.
28322         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
28323         before fix_loop_structure.
28324         * cfgloop.c: Include pointer-set.h and output.h.
28325         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
28326         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
28327         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
28328         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
28329         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
28330         disambiguate_multiple_latches, get_loop_body_with_size,
28331         disambiguate_loops_with_multiple_latches): New functions.
28332         (flow_loop_dump): Dump multiple latch edges.
28333         (flow_loop_nodes_find): Handle loops with multiple latches.
28334         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
28335         (glb_enum_p): Modified.
28336         (get_loop_body): Use get_loop_body_with_size.
28337         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
28338         (AVOID_CFG_MODIFICATIONS): New constant.
28339         (disambiguate_loops_with_multiple_latches, add_loop,
28340         get_loop_body_with_size): Declare.
28341         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
28342
28343 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
28344
28345         PR inline-asm/28686
28346         * global.c (compute_regsets): New function.
28347         (global_alloc): Refactored ELIMINABLE_REGSET
28348         and NO_GLOBAL_ALLOC_REGS computation out.
28349         (rest_of_handle_global_alloc): Call compute_regsets()
28350         for non-optimizing case.
28351
28352 2007-02-06  Richard Henderson  <rth@redhat.com>
28353
28354         * config/i386/constraints.md (Y2): Rename from Y.
28355         (Yi): New constraint.
28356         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
28357         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
28358         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
28359         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
28360         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
28361         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
28362         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
28363         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
28364         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
28365         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
28366         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
28367         vec_extractv2si_1): Change Y constraints to Y2.
28368         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
28369         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
28370         Change Y constraints to Y2.
28371         (sse2_loadld): Change Y constraints to x.
28372
28373 2007-02-06  Roger Sayle  <roger@eyesopen.com>
28374
28375         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
28376         (parity<mode>2): New define_expand using rs6000_emit_parity.
28377         * config/rs6000/rs6000.c (rs6000_emit_popcount,
28378         rs6000_emit_parity): New functions.
28379         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
28380         rs6000_emit_parity): Prototype here.
28381
28382 2007-02-06  Ian Lance Taylor  <iant@google.com>
28383
28384         * lower-subreg.c (simple_move_operand): Reject CONST.
28385         (resolve_clobber): Call validate_change rather than directly
28386         assigning to XEXP (pat, 0).
28387
28388 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28389
28390         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
28391         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
28392         (tree-cfg.o): Remove hashtab.h dependency.
28393
28394         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
28395         (struct ivopts_data): Change niters to pointer_map_t.
28396         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
28397         (niter_for_exit): Create pointer_map on demand.  Change for
28398         pointer_map API.
28399         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
28400         (free_loop_data): Destroy data->niters if created and reset field.
28401         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
28402         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
28403
28404         * tree-ssa-reassoc.c: Include pointer-set.h.
28405         (bb_rank): Change to long *.
28406         (operand_rank): Change to pointer_map_t.
28407         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
28408         (insert_operand_rank): Accept long.
28409         (operand_entry_hash, operand_entry_eq): Remove.
28410         (get_rank): Return long.  Adjust for changes above.
28411         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
28412         and operand_rank.
28413         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
28414
28415         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
28416         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
28417         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
28418         is not NULL.
28419         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
28420         directly since it cannot be NULL.
28421         (get_vi_for_tree): Rewrite for pointer_map API.
28422         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
28423         (init_alias_vars): Create vi_for_tree as pointer_map.
28424         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
28425
28426         * tree-cfg.c: Don't include hashtab.h.
28427         (edge_to_cases): Declare as pointer_map.
28428         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
28429         Delete.
28430         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
28431         (start_recording_case_labels): Create edge_to_cases as pointer_map.
28432         (end_recoding_case_labels): Cleanup edge_to_cases manually before
28433         destroying it.
28434         (record_switch_edge): Delete.
28435         (get_cases_for_edge): Adjust for pointer_map API, inline
28436         record_switch_edge (rewritten for new API), remove goto.
28437
28438 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28439
28440         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
28441         * tree-nested.c: Include pointer-set.h.
28442         (var_map_elt, var_map_eq, var_map_hash): Delete.
28443         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
28444         to pointer_map_t's.
28445         (nesting_info_bitmap_obstack): New.
28446         (lookup_field_for_decl): Adjust for pointer_map API.
28447         (lookup_tramp_for_decl): Adjust for pointer_map API.
28448         (get_nonlocal_debug_decl): Adjust for pointer_map API.
28449         (get_local_debug_decl): Adjust for pointer_map API.
28450         (convert_nl_goto_reference): Adjust for pointer_map API.
28451         (convert_nl_goto_receiver): Adjust for pointer_map API.
28452         (create_nesting_tree): Create outside GGC space.  Create bitmap on
28453         the new obstack.  Create field_map and var_map as pointer_maps.
28454         (free_nesting_tree): Adjust for changes to create_nesting_tree.
28455         (root): Delete.
28456         (lower_nested_functions): Move root here, no need to NULL it.
28457         Initialize and release the obstack.
28458
28459 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
28460
28461         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
28462         Remove prototypes and make them non-static.
28463         (struct tree_int_map): Remove.
28464         * tree.h (struct tree_int_map): Move here, turning TO into an
28465         unsigned int.
28466         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
28467
28468         * tree.h (TREE_COMPLEXITY): Remove.
28469         (struct tree_exp): Remove complexity field.
28470         * tree.c (build1_stat): Don't set it.
28471
28472 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
28473             Victor Kaplansky  <victork@il.ibm.com>
28474
28475         * tree-vectorizer.c (vect_is_simple_use): Support induction.
28476         (vect_is_simple_reduction): Support reduction with induction as
28477         one of the operands.
28478         (vect_is_simple_iv_evolution): Fix formatting.
28479         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
28480         formatting.  Don't mark induction phis for vectorization.
28481         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
28482         * tree-vect-transform.c (get_initial_def_for_induction): New function.
28483         (vect_get_vec_def_for_operand): Support induction.
28484         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
28485         induction case.
28486         (vectorizable_reduction): Support reduction with induction as one of
28487         the operands.
28488         (vectorizable_type_demotion): Use def-type of stmt argument rather
28489         than dummy def-type.
28490
28491         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
28492         flag_tree_scev_cprop.
28493         * common.opt (tree-scev-cprop): New flag.
28494
28495         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
28496         call to vect_get_new_vect_var.
28497
28498 2007-02-06  Ira Rosen  <irar@il.ibm.com>
28499
28500         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
28501         vectype is not NULL.
28502         (vect_pattern_recog_1): Likewise.
28503
28504 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28505
28506         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
28507         (fold_negate_expr): Likewise.
28508
28509 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
28510
28511         PR debug/30189
28512         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
28513         even if cv-qualification is the same.
28514
28515 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
28516
28517         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
28518         __enable_execute_stack on completion.
28519
28520 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28521
28522         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
28523         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
28524         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
28525         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
28526         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
28527         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
28528         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
28529         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
28530
28531 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28532
28533         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
28534         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
28535         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
28536         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
28537         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
28538         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
28539         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
28540         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
28541         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
28542         umuldi3_highpart_rex64, umulsi3_highpart_insn,
28543         umulsi3_highpart_zext, smuldi3_highpart_rex64,
28544         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
28545         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
28546         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
28547         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
28548         sqrtextenddfxf2_i387): Added amdfam10_decode.
28549
28550         * config/i386/athlon.md (athlon_idirect_amdfam10,
28551         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
28552         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
28553         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
28554         athlon_ivector_store_amdfam10): New define_insn_reservation.
28555         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
28556         amdfam10.
28557
28558 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28559
28560         * config/i386/athlon.md (athlon_call_amdfam10,
28561         athlon_pop_amdfam10, athlon_lea_amdfam10): New
28562         define_insn_reservation.
28563         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
28564         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
28565         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
28566
28567 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28568
28569         * config/i386/athlon.md (athlon_sseld_amdfam10,
28570         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
28571         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
28572
28573 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28574
28575         * config/i386/athlon.md (athlon_sseins_amdfam10): New
28576         define_insn_reservation.
28577         * config/i386/i386.md (sseins): Added sseins to define_attr type
28578         and define_attr unit.
28579         * config/i386/sse.md: Set type attribute to sseins for insertq
28580         and insertqi.
28581
28582 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28583
28584         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
28585         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
28586         ssecomi_load_amdfam10, ssecomi_amdfam10,
28587         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
28588         define_insn_reservation.
28589         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
28590
28591 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28592
28593         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
28594         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
28595         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
28596         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
28597         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
28598         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
28599         define_insn_reservation.
28600
28601         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
28602         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
28603         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
28604         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
28605         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
28606
28607 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28608
28609         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
28610         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
28611         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
28612         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
28613         athlon_ssemul_load_k8): Added amdfam10.
28614
28615 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28616
28617         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
28618         (x86_sse_unaligned_move_optimal): New variable.
28619
28620         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
28621         m_AMDFAM10.
28622         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
28623         for unaligned vector SSE double/single precision loads for AMDFAM10.
28624
28625 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28626
28627         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
28628         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
28629         Define TARGET_CPU_DEFAULT_amdfam10.
28630         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
28631         (processor_type): Add PROCESSOR_AMDFAM10.
28632
28633         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
28634         processor_type in config/i386/i386.h.
28635         Enable imul peepholes for TARGET_AMDFAM10.
28636
28637         * config.gcc: Add support for --with-cpu option for amdfam10.
28638
28639         * config/i386/i386.c (amdfam10_cost): New variable.
28640         (m_AMDFAM10): New macro.
28641         (m_ATHLON_K8_AMDFAM10): New macro.
28642         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
28643         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
28644         x86_promote_QImode, x86_integer_DFmode_moves,
28645         x86_partial_reg_dependency, x86_memory_mismatch_stall,
28646         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
28647         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
28648         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
28649         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
28650         Enable/disable for amdfam10.
28651         (override_options): Add amdfam10_cost to processor_target_table.
28652         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
28653         processor_alias_table.
28654         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
28655         (ix86_adjust_cost): Add code for amdfam10.
28656
28657 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28658
28659         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
28660         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
28661         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
28662         * config/i386/i386.h: Add builtin definition for SSE4A.
28663         * config/i386/i386.md: Add support for ABM instructions
28664         (popcnt and lzcnt).
28665         * config/i386/sse.md: Add support for SSE4A instructions
28666         (movntss, movntsd, extrq, insertq).
28667         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
28668         Add -march=amdfam10 flag.
28669         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
28670         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
28671         and amdfam10.
28672         * doc/extend.texi: Add documentation for SSE4A builtins.
28673
28674 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
28675
28676         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
28677
28678 2007-02-05  Richard Guenther  <rguenther@suse.de>
28679
28680         * tree-vectorizer.h (vectorizable_function): Add argument type
28681         argument, change return type.
28682         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
28683         * tree-vect-transform.c (vectorizable_function): Handle extra
28684         argument, return vectorized function decl.
28685         (build_vectorized_function_call): Remove.
28686         (vectorizable_call): Handle calls with result and argument types
28687         differing.  Handle loop vectorization factor correctly.
28688         * targhooks.c (default_builtin_vectorized_function): Adjust for
28689         extra argument.
28690         * targhooks.h (default_builtin_vectorized_function): Likewise.
28691         * target.h (builtin_vectorized_function): Add argument type
28692         argument.
28693         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
28694         extra argument, allow vectorizing of lrintf.
28695         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
28696         documentation of target hook.
28697
28698 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
28699
28700         PR target/30665
28701         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
28702         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
28703         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
28704
28705 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28706
28707         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
28708         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
28709         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
28710         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
28711         before canonicalizing sincos to cexpi.
28712         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
28713
28714 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28715
28716         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
28717         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
28718         (alpha_init_builtins): Use alpha_add_builtins to process tables.
28719
28720 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28721
28722         * mips-tfile.c (initialize_init_file): Correct endianness test.
28723
28724 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
28725
28726         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
28727         the 'y' constraint.
28728
28729 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28730
28731         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
28732         saves in a PARALLEL before the register assignments.
28733
28734 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28735
28736         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
28737         DWARF_FRAME_RETURN_COLUMN to be a general register.
28738         * dwarf2out.c (init_return_column_size): New function, split from...
28739         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
28740         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
28741         to be nongeneral registers.
28742         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
28743         integer registers.
28744         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
28745         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
28746
28747 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28748
28749         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
28750
28751 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28752
28753         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
28754         (remove_path): Use can_remove_branch_p and remove_branch instead
28755         of loop_delete_branch_edge.
28756         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
28757         (tree_transform_and_unroll_loop): Remove dead branches immediately.
28758         Update profile using scale_dominated_blocks_in_loop.
28759         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
28760         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
28761         (can_remove_branch_p, remove_branch): Declare.
28762         * tree-cfg.c (tree_can_remove_branch_p): New function.
28763         (tree_cfg_hooks): Add tree_can_remove_branch_p.
28764         * cfgrtl.c (rtl_can_remove_branch_p): New function.
28765         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
28766
28767 2007-02-05  Jan Hubicka  <jh@suse.cz>
28768
28769         PR middle-end/30696
28770         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
28771         nodes in cgraph, don't remove offline copy of the function.
28772
28773 2007-02-04  Jan Hubicka  <jh@suse.cz>
28774
28775         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
28776         vectors might cause maybe_lookup_element_for_expr to be called
28777         on non-sra-candidate.
28778
28779 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28780
28781         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
28782         config/bfin/bfin.md, config/bfin/predicates.md: Follow
28783         spelling conventions.
28784
28785 2007-02-04  Richard Guenther  <rguenther@suse.de>
28786
28787         PR middle-end/30636
28788         * fold-const.c (try_move_mult_to_index): Make sure to not
28789         overflow one dimension of a multi-dimensional array access.
28790
28791 2007-02-04  Jan Hubicka  <jh@suse.cz>
28792
28793         * passes.c (init_optimization_passes): Reindent.
28794
28795 2007-02-04  Jan Hubicka  <jh@suse.cz>
28796             Eric Botcazou  <ebotcazou@adacore.com>
28797
28798         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
28799         (execute_fixup_cfg): Break out the abnormal goto code.
28800         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
28801         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
28802         (optimize_inline_calls): Call make_nonlocal_label_edges.
28803
28804 2007-02-04  Jan Hubicka  <jh@suse.cz>
28805
28806         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
28807         true when something was changed.
28808         (rename_ssa_copies): When something was changed, do
28809         TODO_remove_unused_locals.
28810         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28811         add TODO_remove_unused_locals when instruction was removed.
28812
28813 2007-02-04  Jan Hubicka  <jh@suse.cz>
28814
28815         * ipa-inline.c (try_inline): Improve debug output; work on already
28816         inline edges too.
28817         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
28818         call try_inline for already inlined edges too when flattening;
28819         inline also functions that make callee growth but overall unit size
28820         reduce.
28821
28822 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28823
28824         * config/m32c/bitops.md, config/m32c/jump.md,
28825         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
28826         config/m32r/m32r.h, config/m32r/m32r.md,
28827         config/m32r/predicates.md, config/m68hc11/larith.asm,
28828         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
28829         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
28830         config/mips/mips-protos.h, config/mips/mips.c,
28831         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
28832         config/mn10300/mn10300.h, config/mn10300/predicates.md,
28833         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
28834         spelling conventions.
28835
28836         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
28837         Follow spelling conventions.
28838
28839 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
28840
28841         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
28842         warn about C++0x compatibility.
28843
28844 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28845
28846         * config/h8300/h8300.c, config/h8300/h8300.h,
28847         config/h8300/h8300.md: Follow spelling conventions.
28848
28849 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
28850
28851         PR middle-end/30667
28852         * combine.c (try_combine): Do not substitute source operand
28853         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
28854
28855 2007-02-03  Jan Hubicka  <jh@suse.cz>
28856
28857         PR gcov-profile/30650
28858         * value-prof.c (stringop_block_profile): Fix handling of size counter;
28859         do not divide by zero for never executed counters.
28860         (tree_find_values_to_profile): Fix counters.
28861         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
28862
28863 2007-02-03  Ian Lance Taylor  <iant@google.com>
28864
28865         * lower-subreg.c (simple_move_operand): New static function,
28866         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
28867         operands.
28868         (simple_move): Call simple_move_operand.
28869         (find_decomposable_subregs): Add special handling of MEMs.
28870         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
28871         meaning of return value.  If we see a hard register, test whether
28872         it can store a word_mode value.  Change all callers.
28873
28874 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28875
28876         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
28877         ftrapv insns and expanders.
28878         (subdi3): Change define_expand operand 1 to arith11_operand, and
28879         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
28880         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
28881         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
28882         respectively.
28883
28884         PR middle-end/30174
28885         * varasm.c (notice_global_symbol): Treat global objects as weak when
28886         flag_shlib is true.
28887
28888 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28889
28890         * emit-rtl.c (dconstpi): Delete.
28891         (dconstsqrt2): New.
28892         (init_emit_once): Delete dconstpi and init dconstsqrt2.
28893         * real.h (dconstpi): Delete.
28894         (dconstsqrt2): New.
28895         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
28896         (fold_builtin_hypot): Likewise.
28897
28898 2007-02-03  Tom Tromey  <tromey@redhat.com>
28899
28900         PR driver/30246
28901         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
28902         -gcoff3, -gxcoff3, -gvms3 implies -dD.
28903
28904 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
28905
28906         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
28907         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
28908         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
28909         config/rs6000/cell.md, config/rs6000/darwin.h,
28910         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
28911         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
28912         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
28913         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
28914         typos.  Follow spelling conventions.
28915         * doc/invoke.texi: Follow spelling conventions.
28916
28917 2007-02-03  Roger Sayle  <roger@eyesopen.com>
28918
28919         * simplify-rtx.c (simplify_relational_operation_1): Implement some
28920         canonicalization transformations that attempt to simplify integer
28921         constant comparisons to become comparisons against zero.
28922
28923 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28924
28925         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
28926         fabs(x)*sqrt(2).
28927         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
28928         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
28929
28930 2007-02-02  Mike Stump  <mrs@apple.com>
28931
28932         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
28933         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
28934         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
28935         generate a branch island.
28936
28937 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
28938
28939         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
28940         (xtensa_legitimate_address_p): New.
28941         (xtensa_legitimize_address): New.
28942         (xtensa_output_addr_const_extra): New.
28943         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
28944         (BASE_REG_P): New.
28945         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
28946         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
28947         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
28948         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
28949         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
28950         (xtensa_legitimize_address): New.
28951         (xtensa_output_addr_const_extra): New.
28952
28953 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
28954
28955         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
28956
28957 2007-02-02  Ian Lance Taylor  <iant@google.com>
28958
28959         * expmed.c (expand_divmod): Add comment.
28960
28961 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
28962
28963         * emit-rtl.c (renumber_insns): Remove.
28964         * flags.h: Remove the extern for flag_renumber_insns.
28965         * rtl.h: Remove the prototype for renumber_insns.
28966         * toplev.c (flag_renumber_insns): Remove.
28967
28968 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
28969
28970         Revert for x86 darwin:
28971         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
28972
28973         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
28974         code before the following patch under TARGET_MACHO.
28975         (ix86_function_value_regno_p): Likewise.
28976
28977 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28978
28979         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
28980         COMPLEX_EXPR.
28981
28982 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28983
28984         PR target/29682
28985         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
28986         loads to general or fp registers.  Add comments.
28987         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
28988
28989 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
28990
28991         * pointer-set.c (insert_aux): Only return insertion slot.
28992         (pointer_set_insert): Adjust.
28993         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
28994         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
28995         pointer_map_traverse): New.
28996         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
28997         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
28998         pointer_map_contains, pointer_map_traverse): Declare.
28999
29000 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
29001
29002         PR middle-end/30473
29003         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
29004         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
29005
29006 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
29007
29008         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
29009
29010         (struct _dep): New type.
29011         (dep_t): New typedef.
29012         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
29013         (DEP_STATUS): New access macro.  The macro with the same name was
29014         renamed to DEP_LINK_STATUS.
29015         (dep_init): Declare function
29016
29017         (struct _dep_link): New type.
29018         (dep_link_t): New typedef.
29019         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
29020         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
29021         (DEP_LINK_STATUS): New macro.
29022         (debug_dep_links): New debug function.
29023
29024         (struct _deps_list): New type.
29025         (deps_list_t): New typedef.
29026         (DEPS_LIST_FIRST): New access macro.
29027         (FOR_EACH_DEP_LINK): New cycle macro.
29028         (create_deps_list, free_deps_list, delete_deps_list): Declare
29029         functions.
29030         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
29031         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
29032         (copy_deps_list_change_con): Ditto.
29033
29034         (move_dep_link): Declare function.
29035
29036         (struct _dep_node): New type.
29037         (dep_node_t): New typedef.
29038         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
29039
29040         (struct haifa_insn_data.back_deps): New field to hold backward
29041         dependencies of the insn.
29042         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
29043         to deps_list_t.
29044         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
29045         Change its type to deps_list_t.
29046         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
29047         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
29048         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
29049
29050         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
29051
29052         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
29053
29054         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
29055         and all callers.
29056         (dep_cost): Declare.
29057
29058         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
29059         (ds_to_dk, dk_to_ds): New functions.
29060
29061         (init_dep_1): New static function.
29062         (init_dep): New function.
29063         (copy_dep): New static function.
29064
29065         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
29066         functions.
29067         (detach_dep_link): New static function.
29068         (move_dep_link): New function.
29069
29070         (dep_links_consistent_p, dump_dep_links): New static functions.
29071         (debug_dep_links): New debugging function.
29072
29073         (deps_obstack, dl_obstack, dn_obstack): New static variables.
29074
29075         (alloc_deps_list, init_deps_list): New static functions.
29076         (create_deps_list): New function.
29077         (clear_deps_list): New static function.
29078         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
29079         (deps_list_consistent_p, dump_deps_list): New static functions.
29080         (debug_deps_list): New function.
29081         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
29082         functions.
29083         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
29084
29085         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
29086         use new scheduler dependencies lists.
29087         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
29088         (sched_analyze): Ditto.  Initialize dependencies lists.
29089         (add_forw_dep, compute_forward_dependences): Update to use new
29090         scheduler dependencies lists.
29091
29092         (init_dependency_caches): Init deps_obstack.
29093         (free_dependency_caches): Free deps_obstack.
29094
29095         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
29096         new scheduler dependencies lists.
29097         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
29098         (add_back_forw_dep, delete_back_forw_dep): Ditto.
29099
29100         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
29101         Update to use new scheduler dependencies lists.
29102         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
29103         (debug_dependencies): Ditto.
29104         (schedule_region): Update comments.
29105
29106         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
29107         scheduler dependencies lists.
29108         (schedule_ebb): Update comments.
29109
29110         * rtl.def (DEPS_LIST): Remove.
29111
29112         * lists.c (unused_deps_list): Remove.
29113         (free_list): Update assertions.
29114
29115         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
29116         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29117
29118         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
29119         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29120
29121         * haifa-sched.c (comments): Update.
29122         (insn_cost1): Remove.  Inline the code into insn_cost ().
29123         (insn_cost): Update to use new scheduler dependencies lists.  Move
29124         processing of the dependency cost to dep_cost ().
29125         (dep_cost): New function.  Use it instead of insn_cost () when
29126         evaluating cost of the dependency.  Use compatible interface to
29127         interact with the target.
29128         (priority): Update to use new scheduler dependencies lists.
29129         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
29130         with greater number of insns that depend on the insn.
29131         (schedule_insn): Update to use new scheduler dependencies lists.  Add
29132         code to free backward dependencies lists.  Inline and optimize code
29133         from resolve_dep () - see PR28071.
29134         (ok_for_early_queue_removal): Update to use new scheduler dependencies
29135         lists.  Update call to targetm.sched.is_costly_dependence hook.
29136
29137         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
29138         scheduler dependencies lists.
29139
29140         (resolve_dep): Remove.  Move the logic to schedule_insn ().
29141         (init_h_i_d): Initialize dependencies lists.
29142
29143         (process_insn_depend_be_in_spec): Rename to
29144         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
29145         dependencies lists.
29146         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
29147         Update to use new scheduler dependencies lists.
29148         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
29149
29150         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
29151         new scheduler dependencies lists.
29152         (build_intra_loop_deps): Ditto.
29153
29154         * target.h (struct _dep): Declare to use in
29155         gcc_target.sched.is_costly_dependence.
29156         (struct gcc_target.sched.adjust_cost): Fix typo.
29157         (struct gcc_target.sched.is_costly_dependence): Change signature to
29158         use single dep_t parameter instead of an equivalent triad.
29159         (struct gcc_target.sched.adjust_cost_2): Remove.
29160
29161         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
29162
29163         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
29164
29165         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
29166         documentation.
29167         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
29168
29169         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
29170         (REG_DEP_TRUE): Document.
29171
29172         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
29173         Change signature to correspond to the targetm.sched.adjust_cost hook.
29174         Update use in TARGET_SCHED_ADJUST_COST_2.
29175         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
29176         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
29177         new scheduler dependencies lists.
29178         (ia64_gen_check): Ditto.
29179
29180         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
29181         scheduler dependencies lists.
29182
29183         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
29184         signature to correspond to the targetm.sched.is_costly_dependence hook.
29185         (is_costly_group): Update to use new scheduler dependencies lists.
29186
29187         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
29188         instead of INSN_COST () macro.
29189
29190 2007-02-01  Ian Lance Taylor  <iant@google.com>
29191
29192         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
29193
29194 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
29195
29196         * pa.md (tp_load): Correct mfctl instruction syntax.
29197
29198 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
29199
29200         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
29201         altivec_padding_size calculation on AIX.  Improve comment, add
29202         assert to verify that it's right.
29203
29204         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
29205         64-bit.
29206
29207 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
29208
29209         PR inline-asm/28686
29210         * global.c (global_alloc): Add mising initialization of
29211         ELIMINABLE_REGSET.
29212
29213 2007-02-01  Roger Sayle  <roger@eyesopen.com>
29214
29215         * alias.c (init_alias_analysis): Correct whitespace.
29216         * bb-reorder.c (fix_edges_for_rarely_executed_code,
29217         partition_hot_cold_basic_blocks): Likewise.
29218         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
29219         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
29220         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
29221         fold_builtin_snprintf_chk, fold_builtin_printf,
29222         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
29223         do_mpfr_arg3, do_mpfr_sincos): Likewise.
29224         * cfgcleanup.c (cleanup_cfg): Likewise.
29225         * cfgexpand.c (tree_expand_cfg): Likewise.
29226         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
29227         * function.c (get_next_funcdef_no): Likewise.
29228         * gengtype.c (main): Likewise.
29229         * genmodes.c (main): Likewise.
29230         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
29231         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
29232         * ifcvt.c (noce_emit_move_insn): Likewise.
29233         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
29234         Likewise.
29235         * stor-layout.c (get_best_mode): Likewise.
29236         * tree-ssa-loop-niter.c (get_val_for): Likewise.
29237         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
29238         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
29239         perform_var_substitution, solve_graph): Likewise.
29240         * tree-vrp.c (vrp_finalize): Likewise.
29241
29242 2007-02-01  Ian Lance Taylor  <iant@google.com>
29243
29244         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
29245         high part of a paradoxical subreg, return a constant zero.
29246
29247 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
29248
29249         * toplev.c (lang_dependent_init): Call init_set_costs.
29250         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
29251
29252 2007-02-01  Richard Guenther  <rguenther@suse.de>
29253
29254         PR middle-end/30656
29255         * fold-const.c (fold_negate_expr): Allow negating a
29256         constant if overflow does not change.
29257
29258 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29259
29260         * doc/c-tree.texi (Expression trees): Improve markup.
29261         * doc/tm.texi (Register Classes, Addressing Modes)
29262         (Floating Point): Fix spacing after abbreviations.  Fix some
29263         typos.
29264
29265 2007-02-01  Ben Elliston  <bje@au.ibm.com>
29266
29267         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
29268         * doc/contrib.texi: Likewise.
29269         * doc/install.texi: Likewise.
29270
29271 2007-01-31  Richard Henderson  <rth@redhat.com>
29272             Ian Lance Taylor  <iant@google.com>
29273
29274         * lower-subreg.c: New file.
29275         * rtl.def (CONCATN): Define.
29276         * passes.c (init_optimization_passes): Add pass_lower_subreg and
29277         pass_lower_subreg2.
29278         * emit-rtl.c (update_reg_offset): New static function, broken out
29279         of gen_rtx_REG_offset.
29280         (gen_rtx_REG_offset): Call update_reg_offset.
29281         (gen_reg_rtx_offset): New function.
29282         * regclass.c: Revert patch of 2006-03-05, restoring
29283         reg_scan_update.
29284         (clear_reg_info_regno): New function.
29285         * dwarf2out.c (concatn_loc_descriptor): New static function.
29286         (loc_descriptor): Handle CONCATN.
29287         * common.opt (fsplit_wide_types): New option.
29288         * opts.c (decode_options): Set flag_split_wide_types when
29289         optimizing.
29290         * timevar.def (TV_LOWER_SUBREG): Define.
29291         * rtl.h (gen_reg_rtx_offset): Declare.
29292         (reg_scan_update): Declare.
29293         * regs.h (clear_reg_info_regno): Declare.
29294         * tree-pass.h (pass_lower_subreg): Declare.
29295         (pass_lower_subreg2): Declare.
29296         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
29297         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
29298         -fsplit-wide-types.
29299         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
29300         * Makefile.in (OBJS-common): Add lower-subreg.o.
29301         (lower-subreg.o): New target.
29302
29303 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29304
29305         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
29306
29307 2007-01-31  Anatoly Sokolov <aesok@post.ru>
29308
29309         PR target/19087
29310         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
29311
29312 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29313
29314         PR middle-end/29335
29315         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
29316
29317 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
29318
29319         * cfgloop.h: Include vec-prim.h.
29320         (enum li_flags): Remove LI_ONLY_OLD.
29321         (loop_iterator): Changed.
29322         (fel_next, fel_init): Iterate over loop tree.
29323         (FOR_EACH_LOOP_BREAK): New macro.
29324         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
29325         FOR_EACH_LOOP.
29326         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
29327         * modulo-sched.c (sms_schedule): Ditto.
29328         * tree-vectorizer.c (vectorize_loops): Ditto.
29329         * doc/loop.texi: Update information on loop numbering and behavior of
29330         FOR_EACH_LOOP wrto new loops.
29331         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
29332         add_to_evolution_1): Test nestedness of loops instead of comparing
29333         their numbers.
29334         * tree-chrec.c (chrec_fold_plus_poly_poly,
29335         chrec_fold_multiply_poly_poly, chrec_evaluate,
29336         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
29337         reset_evolution_in_loop): Ditto.
29338         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
29339
29340 2007-01-31  Dirk Mueller  <dmueller@suse.de>
29341
29342         * c-common.c (warn_about_parentheses): Separate warning about
29343         un-parenthized sequence of comparison operators from the one
29344         which is supposed to warn about x <= y <= z.
29345
29346 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
29347
29348         * optabs.h (enum optab_index): Add new OTI_isinf.
29349         (isinf_optab): Define corresponding macro.
29350         * optabs.c (init_optabs): Initialize isinf_optab.
29351         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
29352         patterns.
29353         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
29354         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
29355         using isinf_optab.
29356         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
29357         expand_builtin_interclass_mathfn.
29358         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
29359         * config/i386/i386.md (UNSPEC_FXAM): New constant.
29360         (fxam<mode>2_i387): New insn pattern.
29361         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
29362         built-in functions as x87 inline asm.
29363
29364 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29365
29366         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
29367
29368 2007-01-30  Eric Christopher  <echristo@apple.com>
29369
29370         * config.gcc: Add geode.
29371
29372 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29373
29374         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
29375         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
29376         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
29377         value-prof.c: Fix comment typos.
29378
29379 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29380
29381         PR c++/24745
29382         * doc/invoke.texi (Wpointer-arith): Document warning.
29383
29384 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
29385
29386         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
29387         the list of discrepancies from the draft TR.
29388
29389 2007-01-30  Dirk Mueller  <dmueller@suse.de>
29390
29391         PR c++/30601
29392         * doc/invoke.texi (-Wreturn-type): Update description to
29393         match new behavior.
29394
29395 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
29396
29397         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
29398
29399 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
29400
29401         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
29402         to handle optabs that operate on floating point input argument and
29403         output to integer output.
29404         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
29405         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
29406         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
29407         expand_builtin_interclass_mathfn ().
29408         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
29409         (ilogbsi2): Remove.
29410         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
29411         ilogbl built-in functions as x87 intrinsics.
29412
29413 2007-01-30  Richard Guenther  <rguenther@suse.de>
29414
29415         PR middle-end/27657
29416         * dwarf2out.c (reference_to_unused): Query varpool if the
29417         variable was output.
29418
29419 2007-01-30  Richard Guenther  <rguenther@suse.de>
29420
29421         PR middle-end/30313
29422         * passes.c (execute_one_pass): Reset in_gimple_form to not
29423         confuse non-unit-at-a-time mode.
29424
29425 2007-01-29  Roger Sayle  <roger@eyesopen.com>
29426             Richard Guenther  <rguenther@suse.de>
29427
29428         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
29429         avoid undefined behaviour on overflow.  Use force_fit_type_double
29430         to construct the constant with the specified TREE_OVERFLOW.
29431
29432 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29433
29434         * config/dfp-bit.c: Add parameterized support for fp exceptions.
29435         * config/dfp-bit.h: Ditto.
29436
29437 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29438
29439         * c-decl.c (pop_scope): Replace warnings with call to
29440         warn_for_unused_label.
29441         * c-common.h (warn_for_unused_label): Declare.
29442         * c-common.c (warn_for_unused_label): Define.
29443
29444 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29445
29446         * tree-optimize.c (update_inlined_to_pointers): Delete unused
29447         function.
29448
29449 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29450
29451         * Makefile.in (USER_H): Remove decfloat.h.
29452         * ginclude/decfloat.h: Delete, moving contents to ...
29453         * ginclude/float.h: Add support for decimal floating point,
29454         guarded by __STDC_WANT_DEC_FP__.
29455
29456 2007-01-29  Mike Stump  <mrs@apple.com>
29457
29458         * doc/gccint.texi (Top): Rename Loop Representation to Loop
29459         Analysis and Representation to resolve case insensitive conflict.
29460         * doc/loop.texi (Loop Analysis and Representation): Likewise.
29461
29462 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
29463
29464         * tree.h (struct tree_memory_tag): Add aliases member.
29465         (MTAG_ALIASES): New macro.
29466         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
29467         (add_may_alias): Remove pointer-set. Update for may_aliases being
29468         a bitmap.
29469         (mark_aliases_call_clobbered): Update for may_aliases being a
29470         bitmap.
29471         (compute_tag_properties): Ditto.
29472         (create_partition_for): Ditto.
29473         (compute_memory_partitions): Ditto.
29474         (dump_may_aliases_for): Ditto.
29475         (is_aliased_with): Ditto.
29476         (add_may_alias_for_new_tag): Ditto.
29477         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
29478         (compute_is_aliased): New function.
29479         (compute_may_aliases): Call compute_is_aliased).
29480         (init_alias_info): Initialize alias_bitmap_obstack.
29481         (union_alias_set_into): New function.
29482         (compute_flow_sensitive_aliasing): Use union_aliases_into.
29483         (have_common_aliases_p): Rewrite to take two bitmaps and use
29484         intersection.
29485         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
29486         Update for bitmaps.
29487         (finalize_ref_all_pointers): Update for add_may_alias changes.
29488         (new_type_alias): Ditto.
29489         * tree-flow-inline.h (may_aliases): Return a bitmap.
29490         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
29491         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
29492         may_aliases being a bitmap.
29493         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
29494         may_aliases now returns a bitmap.
29495         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
29496         being a bitmap.
29497         * tree-ssa-operands.c (add_virtual_operand): Update for
29498         may_aliases being a bitmap.
29499
29500 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
29501
29502         PR tree-optimization/30630
29503         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
29504         variable as changed.
29505
29506 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
29507
29508         PR c++/28266
29509         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
29510         expanded only once even if an error occurs.
29511
29512 2007-01-29  Ben Elliston  <bje@au.ibm.com>
29513
29514         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
29515         (__gcov_average_profiler): Likewise.
29516         (__gcov_ior_profiler): Likewise.
29517         (__gcov_merge_ior): Likewise.
29518
29519 2007-01-28  Jan Hubicka  <jh@suse.cz>
29520
29521         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
29522         * value-prof.c (stringop_block_profile): Likewise.
29523
29524 2007-01-28  Jan Hubicka  <jh@suse.cz>
29525
29526         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
29527         Add variant handling histograms; add wrapper.
29528         (clear_storage_via_libcall): Export.
29529         (emit_block_move_hints): Break out from ...; add histograms.
29530         (emit_block_move): ... this one.
29531         (clear_storage_hints): Break out from ...; add histograms.
29532         (clear_storage): ... this one.
29533         (set_storage_via_memset): Handle histogram.
29534         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
29535         (clear_storage_hints, clear_storage_via_libcall): Declare.
29536         (set_storage_via_setmem): Update prototype.
29537         * doc/md.texi (movmem, setmem): Document new arguments.
29538
29539         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
29540         Add new histograms.
29541         (stringop_block_profile): New global function.
29542         (tree_stringops_values_to_profile): Profile block size and alignment.
29543         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
29544         HIST_TYPE_IOR.
29545         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
29546         (stringop_block_profile): Declare.
29547         * builtins.c: Include value-prof.h.
29548         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
29549         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
29550         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
29551         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
29552         * profile.c (instrument_values): Add new counters.
29553         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
29554         calls.
29555         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
29556         (tree_init_edge_profiler): Build new profilers.
29557         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
29558         (pass_tree_profile): Add dump.
29559         (tree_profile_hooks): Update.
29560         * Makefile.in (LIBGCOV): Add new constants.
29561         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
29562         __gcov_ior_profiler): New.
29563         * i386.md (movmem/setmem expanders): Add new optional arguments.
29564
29565 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
29566
29567         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
29568
29569 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29570
29571         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
29572         (tree_unswitch_single_loop): Pass eni_size_weights to
29573         tree_num_loop_insns.
29574         * tree-ssa-loop-manip.c: Include tree-inline.h.
29575         (can_unroll_loop_p): Pass eni_size_weights to
29576         tree_num_loop_insns.
29577         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
29578         Pass eni_size_weights to estimate_num_insns.
29579         * tree.h (init_inline_once): Export.
29580         * toplev.c (backend_init): Call init_inline_once.
29581         * cgraphunit.c (cgraph_process_new_functions,
29582         cgraph_analyze_function): Pass eni_inlining_weights to
29583         estimate_num_insns.
29584         * ipa-inline.c (compute_inline_parameters): Ditto.
29585         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
29586         to estimate_num_insns.
29587         (try_unroll_loop_completely): Pass eni_size_weights to
29588         tree_num_loop_insns.
29589         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
29590         ot estimate_num_insns.
29591         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
29592         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
29593         * tree-inline.c (eni_inlining_weights, eni_size_weights,
29594         eni_time_weights): New variables.
29595         (init_inline_once): Initialize them.
29596         (struct eni_data): Mew.
29597         (estimate_num_insns_1, estimate_num_insns): Use weights.
29598         * tree-inline.h (struct eni_weights_d): New.
29599         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
29600         (estimate_num_insns): Declaration changed.
29601         * cfgloop.h (tree_num_loop_insns): Declaration changed.
29602         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
29603         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
29604
29605 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29606
29607         * tree-data-ref.c (conflict_fn): Assert that the number of affine
29608         relations in the conflict function is valid.
29609
29610 2007-01-27  Ian Lance Taylor  <iant@google.com>
29611
29612         * common.opt: Add fstrict-overflow.
29613         * opts.c (decode_options): Set flag_strict_overflow if -O2.
29614         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
29615         (TYPE_OVERFLOW_UNDEFINED): Define.
29616         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
29617         Replace all uses.
29618         * tree.h (TYPE_TRAP_SIGNED): Don't define.
29619         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
29620         (fold_negate_expr): Likewise.
29621         (make_range): Likewise.
29622         (extract_muldiv_1): Likewise.
29623         (maybe_canonicalize_comparison): Likewise.
29624         (fold_comparison): Likewise.
29625         (fold_binary): Likewise.
29626         (tree_expr_nonnegative_p): Likewise.
29627         (tree_expr_nonzero_p): Likewise.
29628         * tree-vrp.c (compare_values): Likewise.
29629         (extract_range_from_binary_expr): Likewise.
29630         (extract_range_from_unary_expr): Likewise.
29631         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
29632         Likewise.
29633         (nowrap_type_p): Likewise.
29634         * tree-scalar-evolution.c (simple_iv): Likewise.
29635         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
29636         (build_range_check): Likewise.
29637         (extract_muldiv_1): Likewise.
29638         (fold_comparison): Likewise.
29639         * tree-vrp.c (vrp_int_const_binop): Likewise.
29640         (extract_range_from_unary_expr): Likewise.
29641         * convert.c (convert_to_integer): Likewise.
29642         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
29643         (fold_comparison): Likewise.
29644         (fold_binary): Likewise.
29645         * optabs.c (optab_for_tree_code): Likewise.
29646         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
29647         * simplify-rtx.c (simplify_const_relational_operation): Check
29648         flag_strict_overflow and flag_trapv.
29649         (simplify_const_relational_operation): Likewise.
29650         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
29651         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
29652         -fstrict-overflow.
29653
29654 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29655
29656         * tree.c (tree_fold_gcd): Delete.
29657         * tree.h (tree_fold_gcd): Remove prototype.
29658         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
29659         test whether one constant integer is a multiple of another.  Instead
29660         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
29661         * fold-const.c (multiple_of_p): We've determined both TOP and
29662         BOTTOM are integer constants so we can call int_const_binop directly
29663         instead of the more generic const_binop.
29664
29665 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29666
29667         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
29668         1*X check that the constant hasn't overflowed, to preserve the
29669         TREE_OVERFLOW bit.
29670         (round_up): Provide an efficient implementation when rouding-up an
29671         INTEGER_CST to a power-of-two.
29672
29673 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29674
29675         * doc/sourcebuild.texi: Add comma for clarity.
29676         * doc/extend.texi: Fix some typos.
29677         * doc/passes.texi: Likewise.
29678         * doc/cppinternals.texi: Likewise.
29679         * doc/c-tree.texi: Likewise.
29680         * doc/tree-ssa.texi: Likewise.
29681         * doc/install.texi: Likewise.
29682
29683 2007-01-27  Jan Hubicka  <jh@suse.cz>
29684
29685         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
29686         (pass_sra): Do not require alias information.
29687         * passes.c (init_optimization_passes): Add SRA
29688
29689 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
29690
29691         * tracer.c (rest_of_handle_tracer): We already cleaned
29692         up the CFG in tracer() so don't do it here again.
29693         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
29694         cleanup_cfg here, either.  And don't call renumber_insns.
29695
29696         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
29697         and BB_HEAD are in the insn stream here.  Instead make sure
29698         that BB_INSN is valid on all insns.  Also, do check here that
29699         there are no pending branch predictions...
29700         (rtl_verify_flow_info): ...instead of doing it here.  Checks
29701         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
29702         here.
29703
29704 2007-01-26  Roger Sayle  <roger@eyesopen.com>
29705
29706         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
29707         function to simplify/factorize operand order canonicalization.
29708         (ix86_fixup_binary_operands): Reorganize using the above function.
29709         (ix86_binary_operator_ok): Likewise.
29710
29711 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
29712
29713         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
29714         file scope from optimize_attrs.
29715         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
29716         up search.
29717         (optimize_attrs): Clear insn_code_values after freeing it.
29718
29719 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29720
29721         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
29722         a parts.base assignment.
29723
29724 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29725
29726         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
29727         (compute_subscript_distance, initialize_data_dependence_relation,
29728         finalize_ddr_dependent, analyze_ziv_subscript,
29729         analyze_siv_subscript_cst_affine,
29730         compute_overlap_steps_for_affine_univar,
29731         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
29732         analyze_siv_subscript, analyze_miv_subscript,
29733         analyze_overlapping_iterations, subscript_dependence_tester_1,
29734         compute_self_dependence, free_dependence_relation): Work
29735         with affine_fn instead of chrecs.
29736         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
29737         common_affine_function, affine_function_base,
29738         affine_function_constant_p, affine_fn_op, affine_fn_plus,
29739         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
29740         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
29741         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
29742         (all_chrecs_equal_p): Removed.
29743         * tree-data-ref.h (affine_fn, conflict_function): New types.
29744         (struct subscript): Change type of conflicting_iterations_in_a
29745         and conflicting_iterations_in_b.
29746
29747 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
29748
29749         PR other/30182
29750         * config/pa/pa.h (TARGET_HPUX_11): New.
29751         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
29752         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
29753
29754 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
29755         Richard Guenther  <rguenther@suse.de>
29756
29757         * tree-ssa-structalias.c (solve_graph): Handle case
29758         we merged the variable to another.
29759
29760 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29761
29762         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
29763         functions.
29764
29765         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
29766         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
29767
29768 2007-01-25  DJ Delorie  <dj@redhat.com>
29769
29770         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
29771         allow changes to modes which don't fit in those registers.
29772
29773         * reload1.c (choose_reload_regs): Check for invalid subregs before
29774         computing their locations, not after.
29775
29776 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
29777
29778         PR 25127
29779         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
29780         save Altivec registers in an eh_return function.
29781         (compute_vrsave_mask): Likewise.
29782         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
29783         for saving Altivec registers.
29784         (rs6000_emit_prologue): Don't allocate stack twice in
29785         eh_return function.  Correct expected value of altivec_save_offset
29786         when using save_world.  Describe save of R0 to stack when using
29787         save_world.  Describe stack pointer adjustment when using
29788         save_world.  Remove duplicated eh_return parameter register saving.
29789         Update sp_offset variable after save_world.
29790         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
29791         darwin-world.asm.
29792         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
29793         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
29794         implies Altivec.
29795
29796 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29797
29798         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
29799
29800 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29801
29802         PR other/30182
29803         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
29804         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
29805
29806 2007-01-25  Richard Guenther  <rguenther@suse.de>
29807
29808         * doc/invoke.texi (-Wcoverage-mismatch): Document.
29809         * common.opt (-Wcoverage-mismatch): New warning option.
29810         * coverage.c (get_coverage_counts): Ignore coverage mismatch
29811         if -Wcoverage-mismatch is given.
29812
29813 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
29814
29815         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
29816         (ipcp_driver): Change to static definition.
29817         Add dumping of the ifunctions.
29818         (constant_val_insert): Remove unused parameter. Support for SSA.
29819         (ipcp_propagate_const): Support for SSA.
29820         (ipcp_profile_bb_print): Print only analyzed nodes.
29821         (ipcp_replace_map_create): Remove support for Fortran constant
29822         for now.
29823         * ipa-prop.c (ipa_method_modify_stmt,
29824         ipa_callsite_compute_param): Support for SSA.
29825         * ipa-prop.h (ipcp_driver): Remove declaration.
29826         (IS_VALID_TREE_MAP_INDEX): Add define.
29827
29828 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
29829
29830         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
29831
29832 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29833
29834         PR middle-end/30447
29835         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
29836         constant argument to cabs and do it without checking for
29837         -funsafe-math-optimizations.
29838
29839 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
29840
29841         * c-common.h (RID_FIRST_CXX0X): New.
29842         (RID_LAST_CXX0X): New.
29843         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
29844         by -Wall.
29845         * c.opt (Wc++0x-compat): New.
29846         * doc/invoke.texi (-Wc++0x-compat): Document.
29847
29848 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29849
29850         * builtins.c (fold_builtin_carg): New.
29851         (fold_builtin_1): Use it.
29852
29853 2007-01-24  Jan Hubicka  <jh@suse.cz>
29854
29855         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
29856
29857         * ipa-inline.c (initial_insns, max_insns): Delete.
29858         (compute_max_insns): New function.
29859         (cgraph_decide_inlining_of_small_function): Use it; take minimal
29860         amount of insns as base for code growth.
29861         (cgraph_decide_inlining): Make initial_insns local; do not compute
29862         max_insns.
29863         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
29864         * doc/invoke.texi (inline-unit-growth): Update docs.
29865
29866 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
29867
29868         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
29869         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
29870         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
29871         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
29872         for CPUs that have PTA_CX16 set.
29873
29874         PR middle-end/27416
29875         * gimplify.c (omp_check_private): New function.
29876         (gimplify_scan_omp_clauses): Use it for
29877         firstprivate/lastprivate/reduction.
29878
29879         PR middle-end/30494
29880         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
29881         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
29882
29883         PR middle-end/30421
29884         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
29885         If lower_lastprivate_clauses emits some statements, append them
29886         to dlist rather than body_p and to body_p append an initializer.
29887         (lower_omp_for): Adjust caller.
29888
29889 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
29890
29891         * target.h (globalize_decl_name): New.
29892         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29893         * output.h (default_globalize_decl_name): New.
29894         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
29895         globalize_label.
29896         (globalize_decl): Ditto.
29897         (default_globalize_decl_name): New.
29898         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
29899         (ia64_handle_version_id_attribute): New.
29900         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29901         (ia64_asm_output_external): Use globalize_decl_name instead
29902         of globalize_label.
29903         * doc/extend.texi (version_id): New pragma.
29904         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
29905
29906 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29907
29908         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
29909         _uleb128_t and _Unwind_SWord with _sleb128_t.
29910         * unwind-dw2.c (extract_cie_info, execute_stack_op,
29911         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
29912         Likewise.
29913         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
29914         * unwind-pe.h (read_uleb128, read_sleb128,
29915         read_encoded_value_with_base): Likewise.
29916         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
29917
29918 2007-01-24  Richard Guenther  <rguenther@suse.de>
29919
29920         * builtins.c (expand_builtin_cexpi): Get the fndecl
29921         for cexp in the correct way.
29922
29923 2007-01-24  Jan Hubicka  <jh@suse.cz>
29924
29925         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
29926         of calls.
29927
29928 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29929
29930         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
29931         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
29932         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
29933         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
29934         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
29935         __SIZEOF_PTRDIFF_T__.
29936         * doc/cpp.texi: Documentation for the new builtin macros added.
29937
29938 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
29939
29940         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
29941         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
29942         instead of operands[2] to avoid access past the end of array.
29943
29944 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
29945
29946         * reload1.c (emit_reload_insns): Pass the reload register
29947         for a non-spill output reload through forget_old_reloads_1.
29948
29949 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
29950
29951         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
29952         _SOFT_DOUBLE if doubles use software floating-point.
29953         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
29954         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29955         * config/rs6000/darwin-ldouble.c: Also compile functions for
29956         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
29957         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29958         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
29959         commented-out long double override.
29960         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
29961         * config/rs6000/eabispe.h: Likewise.
29962         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
29963         long double for non-SPE.
29964         (rs6000_handle_option): Likewise.
29965         (invalid_e500_subreg): Disallow more subregs involding DImode,
29966         DFmode, TImode or TFmode.
29967         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
29968         E500 double.
29969         (legitimate_lo_sum_address_p): Also check for TFmode for E500
29970         double.
29971         (rs6000_legitimize_address): Also handle TFmode for E500 double.
29972         (rs6000_legitimize_reload_address): Also handle TFmode for E500
29973         double.
29974         (rs6000_legitimate_address): Also check for TFmode for E500
29975         double.
29976         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
29977         (spe_build_register_parallel): Handle TFmode and TCmode.
29978         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
29979         double.
29980         (function_arg): Handle TFmode and TCmode for E500 double.
29981         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
29982         in general.
29983         (print_operand): Handle TFmode and TImode for %y.
29984         (rs6000_generate_compare): Handle TFmode comparisons for E500
29985         double.
29986         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
29987         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
29988         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
29989         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
29990         TFmode for E500 double.
29991         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
29992         (floatsidf2): Enable for E500 double.
29993         (movtf_softfloat): Use rs6000_nonimmediate_operand.
29994         (extenddftf2): Change to extenddftf2_fprs.
29995         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
29996         depending on TARGET_E500_DOUBLE.
29997         (extendsftf2): Enable for E500 double.
29998         (trunctfdf2): Enable for E500 double.
29999         (trunctfsf2): Change to trunctfsf2_fprs.
30000         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
30001         depending on TARGET_E500_DOUBLE.
30002         (floatsitf2): Enable for E500 double.
30003         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
30004         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
30005         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
30006         (negtf2): Change to negtf2_internal.
30007         (negtf2): New expander.
30008         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
30009         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
30010         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
30011         (movdi_internal32): Use rs6000_nonimmediate_operand.
30012         (unnamed splitter): Likewise.
30013         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
30014         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
30015         (SPE64TF, DITI): New mode macros.
30016         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
30017         modes.
30018         (frob_tf_ti): New.
30019         (frob_<mode>_di_2): New.
30020         (frob_tf_di_8_2): New.
30021         (frob_di_df): Change to frob_di_<mode>; allow more modes.
30022         (frob_ti_tf): New.
30023         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
30024         more modes.
30025         (frob_ti_<mode>_8_2): New.
30026         (frob_ti_tf_2): New.
30027         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
30028         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
30029         TFmode.
30030         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
30031         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
30032         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
30033         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
30034         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
30035         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
30036         tsttflt_gp): New.
30037
30038 2007-01-23  Ian Lance Taylor  <iant@google.com>
30039
30040         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
30041         insn-*.o first.
30042         (OBJS-archive): Reformat, alphabetize.
30043         (OBJS): Change out_object_file to OBJS-md.
30044
30045 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
30046
30047         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
30048         JUMP_P and CALL_P predicates where applicable.
30049         * config/i386/i386.c: Ditto.
30050         * config/i386/i386.md: Ditto.
30051         * config/i386/mmx.md: Ditto.
30052         * config/i386/predicates.md: Ditto.
30053
30054 2007-01-22  Andreas Schwab  <schwab@suse.de>
30055
30056         * config/m68k/m68k.h: Fix comment.
30057
30058 2007-01-22  Jan Hubicka  <jh@suse.cz>
30059
30060         * passes.c (init_optimization_passes): Do not rerun
30061         pass_early_warn_uninitialized.
30062
30063 2007-01-22  Richard Guenther  <rguenther@suse.de>
30064
30065         PR tree-optimization/30038
30066         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
30067         function.
30068         (execute_cse_sincos_1): Likewise.
30069         (execute_cse_sincos): Likewise.
30070         (gate_cse_sincos): Likewise.
30071         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
30072         the cexpi() canonicalization of sincos().
30073         * tree-pass.h (pass_cse_sincos): Declare.
30074         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
30075
30076 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
30077
30078         PR rtl-optimization/29329
30079         * combine.c (replaced_rhs_insn): Rename to i2mod.
30080         (replaced_rhs_value): Rename to i2mod_new_rhs.
30081         (i2mod_old_rhs): New global variable.
30082         (combine_instructions): Adjust for above change.  Save a copy of
30083         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
30084         note are substituted in the second instruction.
30085         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
30086         ditch the note if it pertains to the second eliminated register
30087         and this register is mentioned in i2mod_old_rhs.
30088
30089         Revert:
30090         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
30091
30092         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
30093         the insn to which the note was originally attached.
30094
30095 2007-01-21  Jan Hubicka  <jh@suse.cz>
30096
30097         * ipa-inline.c (inlining_mode): Comment, move up.
30098         (cgraph_decide_inlining_incrementally): Do not perform inlining
30099         itself; fix handling of flattening of self recursive functions.
30100         (cgraph_find_cycles): Remove.
30101         (cgraph_flatten_node): Remove.
30102         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
30103         (try_inline): New function.
30104         (cgraph_early_inlining): Update call of
30105         cgraph_decide_inlining_incrementally.  Apply inlining here.
30106         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
30107
30108 2007-01-21  Dirk Mueller  <dmueller@suse.de>
30109
30110         PR bootstrap/30511
30111         * tree-vrp.c (check_array_bounds): do not warn
30112         about ADDR_EXPR's of ARRAY_REF's which are immediately
30113         used in binary expressions.
30114
30115 2007-01-21  Ira Rosen  <irar@il.ibm.com>
30116
30117         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
30118         read_write_dep and macros for its access.
30119         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
30120         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
30121         argument, call vect_check_interleaving for every independent pair of
30122         data-refs. Mark loads that access the same memory location as a store
30123         in the loop.
30124         (vect_check_dependences): Remove.
30125         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
30126         call, fix the call to vect_analyze_data_ref_dependence.
30127         (vect_analyze_data_ref_access): For statements that access the same
30128         data-ref, check that they are not stores; for loads, check that there
30129         is no store that access the same location.
30130
30131 2007-01-20  Roger Sayle  <roger@eyesopen.com>
30132             Joseph Myers  <joseph@codesourcery.com>
30133
30134         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
30135         (-fdump-rtl-stack): Likewise.
30136         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
30137         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
30138         (-mpt-fixed): Use @minus{} for minus sign.
30139         (Using Precompiled Headers): Fix under/overfull hbox.
30140
30141 2007-01-20  Jan Hubicka  <jh@suse.cz>
30142
30143         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
30144         place within annotation.
30145
30146 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30147
30148         * pa.c (output_move_double): Change array size of xoperands to 4.
30149
30150 2007-01-20  Jan Hubicka  <jh@suse.cz>
30151
30152         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
30153         as temporary.
30154
30155 2007-01-19  Ian Lance Taylor  <iant@google.com>
30156
30157         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
30158         constant to unsigned HOST_WIDE_INT before negating.
30159
30160 2007-01-19  Ian Lance Taylor  <iant@google.com>
30161
30162         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
30163         to unsigned.
30164         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
30165         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30166         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
30167         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
30168         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30169         (realloc_vdef, realloc_vuse): Change second parameter to
30170         unsigned.
30171         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
30172         fields to unsigned.
30173         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
30174         unsigned. Change x and lim locals to unsigned.
30175         (realloc_vdef, realloc_vuse): Change num_elem parameter to
30176         unsigned.
30177         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
30178         (copy_virtual_operands): Change i and n locals to unsigned.
30179
30180 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30181
30182         PR middle-end/29335
30183         * builtins.c (fold_builtin_1): Handle builtin fdim.
30184
30185 2007-01-20  Jan Hubicka  <jh@suse.cz>
30186
30187         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
30188         * tree-ssa-structalias.c (compute_points_to_sets): Do call
30189         init_alias_heapvars.
30190         (init_alias_heapvars): Initialize only when not already initialized.
30191         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
30192
30193 2007-01-19  Roger Sayle  <roger@eyesopen.com>
30194
30195         * common.opt (fsigned-zeros): New command line option.
30196         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
30197         of flag_unsafe_math_optimizations.
30198         * opts.c (set_fast_math_flags): The -ffast-math command line option
30199         implies -fno-signed-zeros.
30200         (fast_math_flags_set_p): Likewise.
30201
30202         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
30203         the documentation of -ffast-math appropriately.  Wrap long lines.
30204
30205 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
30206
30207         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
30208         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
30209
30210 2007-01-19  Tomas Bily  <tbily@suse.cz>
30211
30212         * cgraphunit.c (cgraph_finalize_function): Updating of pid
30213         * tree-profile.c:
30214         (tree_init_ic_make_global_vars): New function
30215         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
30216         (tree_gen_ic_profiler): New function
30217         (tree_gen_ic_func_profiler): New function
30218         (tree_profiling): Added calling of tree_gen_ic_func_profiler
30219         (tree_profile_hooks): Added hook for indirec/virtual calls
30220         * value-prof.c (tree_find_values_to_profile): New case for
30221         indirect calls
30222         (tree_values_to_profile): Call for determining indirect/virtual
30223         counters
30224         (tree_indirect_call_to_profile): New function
30225         (tree_ic_transform): New function
30226         (tree_ic): New function
30227         (find_func_by_pid): New function
30228         (init_pid_map): New function
30229         (tree_value_profile_transformations): Added check for
30230         indirect/virtual call transformation
30231         * value-prof.h (enum hist_type): New counter type for
30232         indirect/virtual calls
30233         (profile_hooks): Added new hook for profiling indirect/virtual
30234         calls
30235         * profile.c (instrument_values): New case for indirect/virtual
30236         call added
30237         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
30238         (GCOV_COUNTER_V_INDIR): New counter type
30239         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
30240         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
30241         call added
30242         * cgraph.c: Definition of cgraph_max_pid
30243         (cgraph_create_node): Default init of pid attribute
30244         * cgraph.h: Declaration of cgraph_max_pid
30245         (struct cgraph_node): Added pid attribute
30246         * libgcov.c (__gcov_indirect_call_profiler): New function
30247         (__gcov_one_value_profiler_body): New function
30248         (__gcov_one_value_profiler): Body was moved to
30249         __gcov_one_value_profiler_body and calls it
30250
30251 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
30252
30253         * doc/gty.texi (Options): Document the mark_hook option to GTY.
30254         * gengtype.c (write_types_data, write_func_for_structure,
30255         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
30256         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
30257         (walk_type, write_func_for_structure): Generate the mark_hook if
30258         needed.
30259
30260 2007-01-19  Jan Hubicka  <jh@suse.cz>
30261
30262         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
30263         'early' argument take inlining mode argument specifying whether to
30264         inline for size/speeed or all functions; add support for flattening;
30265         improve dumpting.
30266         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
30267
30268 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30269
30270         PR c++/17947
30271         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
30272         the name of the declared identifier.
30273
30274 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30275
30276         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
30277         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
30278         duplicate evaluation.
30279
30280 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30281
30282         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
30283         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
30284         to XFMode, use acosxf2 and truncate result to requested mode.
30285         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
30286         (asin<mode>2): Similarly, with asin expanders.
30287         (*fscalexf4_i387): Rename from *fscalexf4.
30288         (expNcorexf3): New expander.
30289         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
30290         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
30291         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
30292         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
30293         patterns for SSE math.
30294         (exp10<mode>2): Similarly, with exp10 expanders.
30295         (exp2<mode>2): Similarly, with exp2 expanders.
30296         (expm1<mode>2): Similarly, with expm1 expanders.
30297         (ldexp<mode>3): Similarly, with ldexp expanders.
30298         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
30299         Use gen_truncxf<mode>2_i387_noop to truncate result.
30300
30301 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30302
30303         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
30304         for ColdFire targets.
30305
30306 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
30307             Richard Sandiford  <richard@codesourcery.com>
30308
30309         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
30310         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
30311         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
30312         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
30313         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30314         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30315
30316 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30317
30318         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
30319         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
30320         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
30321         (*adddi_dilshr32_cf): New pattern.
30322         (adddi3, subdi3): Remove first alternatives.
30323
30324 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30325
30326         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
30327         implemented using move.l, do not use its cc result for floating-point
30328         comparisons.
30329
30330 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30331
30332         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
30333         from accepting 's' constraints if flag_pic.
30334
30335 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30336
30337         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
30338         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
30339         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
30340         condition from TARGET_68881 to TARGET_HARD_FLOAT.
30341
30342 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
30343
30344         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
30345         ColdFire alternatives.
30346         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
30347         * config/m68k/m68k.md (clzsi2): Define for ColdFire
30348         architectures that support ff1 instruction.
30349
30350 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30351             Julian Brown  <julian@codesourcery.com>
30352
30353         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
30354         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
30355         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
30356         Add commentary.
30357
30358 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30359
30360         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
30361         and return a bool.
30362         (output_move_const_into_data_reg, output_move_simode_const): Delete.
30363         * config/m68k/m68k.c (const_method, const_int_cost): Take a
30364         HOST_WIDE_INT instead of an rtx.
30365         (m68k_rtx_costs): Update call accordingly.
30366         (output_move_const_into_data_reg): Likewise.  Fix formatting.
30367         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
30368         Return a bool.
30369         (output_move_simode_const): Update calls after above changes.
30370         Rework to use automatic variables and predicates like MEM_P.
30371         * config/m68k/m68k.md (pushexthisi_const): Update call to
30372         valid_mov3q_const.
30373
30374 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30375
30376         * tree-ssa-alias.c (perform_var_substitution): Fix typo
30377         in dump_flags test.
30378
30379 2007-01-19  Richard Guenther  <rguenther@suse.de>
30380
30381         * builtins.c (expand_builtin_cexpi): Fall back to expanding
30382         via cexp in case sincos is not available.
30383
30384 2007-01-19  Richard Guenther  <rguenther@suse.de>
30385
30386         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
30387         * defaults.h (TARGET_HAS_SINCOS): Default to off.
30388         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
30389         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
30390         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
30391         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
30392         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
30393         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
30394
30395 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30396
30397         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
30398         New insn patterns.
30399         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
30400         (atan2xf3): Directly generate RTL pattern.
30401         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
30402         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30403         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30404         disable patterns for SSE math.
30405         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
30406         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30407         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30408         disable patterns for SSE math.
30409
30410 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
30411
30412         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
30413
30414 2007-01-18  Roger Sayle  <roger@eyesopen.com>
30415
30416         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
30417         VIEW_CONVERT_EXPR to the same type as it's operand.
30418
30419 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
30420
30421         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
30422         configured for long double 128.
30423
30424 2007-01-18  Mike Stump  <mrs@apple.com>
30425
30426         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
30427         error.
30428
30429 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
30430
30431         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
30432         type correct.
30433
30434 2007-01-18  Jan Hubicka  <jh@suse.cz>
30435
30436         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
30437         greater than NUM_VOP_FREE_BUCKETS.
30438
30439 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
30440
30441         * tree-ssa-structalias.c: Update comments.
30442         (ptabitmap_obstack): Removed.
30443         (pta_obstack): New.
30444         (oldpta_obstack): Ditto.
30445         (stats): Add a few members.
30446         (struct variable_info): Remove node, complex, address_taken, and
30447         indirect_target members. Add oldsolution member.
30448         (new_var_info): Do not initialize removed members.
30449         (constraint_expr_type): Remove INCLUDES.
30450         (constraint_graph): Add size, implicit_preds, rep,
30451         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
30452         (FIRST_REF_NODE): New macro.
30453         (LAST_REF_NODE): Ditto.
30454         (FIRST_ADDR_NODE): Ditto.
30455         (find): New function.
30456         (unite): Ditto.
30457         (dump_constraint): Do not handle INCLUDES.
30458         (insert_into_complex): Do not insert duplicate constraints.
30459         (condense_varmap_nodes): Renamed and rewritten into ...
30460         (merge_node_constraints): This. Also fix bug in handling of
30461         offseted copy constraints.
30462         (clear_edges_for_node): No longer need to deal with preds at all,
30463         or removing associated preds/succs.
30464         (merge_graph_nodes): Deal with indirect_cycles.
30465         Don't deal with predecessors.
30466         (add_implicit_graph_edge): New function.
30467         (add_pred_graph_edge): Ditto.
30468         (add_graph_edge): Don't deal with predecessors.
30469         (build_constraint_graph): Removed.
30470         (build_pred_graph): New function.
30471         (build_succ_graph): Ditto.
30472         (struct scc_info): Removed in_component. Added roots, dfs, and
30473         node_mapping. Remove visited_index, unification_queue.
30474         (scc_visit): Deal with union-find we do now.
30475         Deal with cycles with REF nodes.
30476         (collapse_nodes): Renamed and rewritten to ...
30477         (unify_nodes): This.
30478         (process_unification_queue): Removed.
30479         (topo_visit): Cleanup
30480         (do_da_constraint): Use find.
30481         (do_sd_constraint): Ditto.
30482         (do_ds_constraint): Ditto.
30483         (do_complex_constraint): Ditto.
30484         (init_scc_info): Update for removed and added members.
30485         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
30486         (find_indirect_cycles): This.
30487         (equivalence_class): New variable.
30488         (label_visit): New function.
30489         (perform_variable_substitution): Rewritten.
30490         (free_var_substitution_info): New function.
30491         (find_equivalent_node): Ditto.
30492         (move_complex_constraints): Ditto.
30493         (eliminate_indirect_cycles): Ditto.
30494         (solve_graph): Only propagate changed bits.
30495         Use indirect cycle elimination.
30496         Use find.
30497         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
30498         (tree_id_eq): Renamed to ...
30499         (tree_vi_eq): This. Update for member change
30500         (insert_id_for_tree): Renamed and rewritten to ...
30501         (insert_vi_for_tree): This.
30502         (lookup_id_for_tree): Renamed and rewritten to ...
30503         (lookup_vi_for_tree): This.
30504         (get_id_for_tree): Renamed and rewritten to ...
30505         (get_vi_for_tree): Ditto.
30506         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
30507         (process_constraint): Don't handle INCLUDES.
30508         Remove special ADDRESSOF case.
30509         (find_func_aliases): Rewrite to use vi functions instead of id
30510         ones.
30511         (create_function_info_for): Ditto.
30512         (create_variable_info_for): Ditto.
30513         (intra_create_variable_infos): Ditto.
30514         (merge_smts_into): Ditto.
30515         (find_what_p_points_to): Ditto.
30516         (init_base_vars): Ditto.
30517         (init_alias_vars): Ditto.
30518         (remove_preds_and_fake_succs): New function.
30519         (dump_sa_points_to_info): Dump new stats.
30520         (dump_solution_for_var): Use find.
30521         (set_used_smts): Fix formatting.
30522         (compute_points_to_sets): Updated for new functions.
30523         (ipa_pta_execute): Ditto.
30524
30525 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30526             Richard Sandiford  <richard@codesourcery.com>
30527
30528         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
30529         parallels.
30530         * calls.c (expand_call): If the return value is a PARALLEL,
30531         extract its first member.
30532         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
30533         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30534         use FUNCTION_EXTRA_EPILOGUE.
30535         (m68k_function_value): Return a PARALLEL if the return value
30536         is of a pointer type.
30537         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
30538         (FUNCTION_EXTRA_EPILOGUE): Remove.
30539         * config/m68k/m68k.md (D0_REG): New constant.
30540
30541 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30542
30543         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30544         output a NOP for empty epilogues.
30545
30546 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30547
30548         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
30549         before function.  Extend register save check to include all
30550         registers, not just integer ones.
30551
30552 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30553
30554         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
30555         (m68k_use_return_insn): ...this.
30556         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
30557         * config/m68k/m68k.c (use_return_insn): Rename to...
30558         (m68k_use_return_insn): ...this.
30559         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
30560         of USE_RETURN_INSN.
30561
30562 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30563
30564         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
30565         nearest even, fix denormal rounding overflow.
30566
30567 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30568
30569         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
30570         f%$smove and f%$move.
30571         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
30572         (extendsfdf2_cf): Use fdmove instead of f%&move.
30573         (truncdfsf2_cf): Use fsmove instead of f%$smove.
30574         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
30575
30576 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30577
30578         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
30579         GPR<-GPR moves.
30580
30581 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30582
30583         * real.h (real_format): Add a canonical_nan_lsbs_set field.
30584         (coldfire_single_format): Declare.
30585         (coldfire_double_format): Likewise.
30586         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
30587         of qnan_msb_set to determine the lower bits of a canonical
30588         NaN significand.
30589         (encode_ieee_double): Likewise.
30590         (encode_ieee_quad): Likewise.
30591         (ieee_single_format): Initialize canonical_nan_lsbs_set.
30592         (mips_single_format): Likewise.
30593         (ieee_double_format): Likewise.
30594         (mips_double_format): Likewise.
30595         (ieee_extended_motorola_format): Likewise.
30596         (ieee_extended_intel_96_format): Likewise.
30597         (ieee_extended_intel_128_format): Likewise.
30598         (ieee_extended_intel_96_round_53_format): Likewise.
30599         (ibm_extended_format): Likewise.
30600         (mips_extended_format): Likewise.
30601         (ieee_quad_format): Likewise.
30602         (mips_quad_format): Likewise.
30603         (vax_f_format): Likewise.
30604         (vax_d_format): Likewise.
30605         (vax_g_format): Likewise.
30606         (i370_single_format): Likewise.
30607         (i370_double_format): Likewise.
30608         (decimal_single_format): Likewise.
30609         (decimal_double_format): Likewise.
30610         (decimal_quad_format): Likewise.
30611         (c4x_single_format): Likewise.
30612         (c4x_extended_format): Likewise.
30613         (real_internal_format): Likewise.
30614         (coldfire_single_format): New real_format.
30615         (coldfire_double_format): Likewise.
30616         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
30617         canonical_nan_lsbs_set.
30618         (pdp11_d_format): Likewise.
30619         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
30620         if TARGET_COLDFIRE_CPU.
30621
30622 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30623
30624         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
30625         (output_call, m68k_legitimize_call_address): Declare.
30626         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
30627         parenthesees.  Add support for a 'W' constraint.
30628         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
30629         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
30630         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
30631         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
30632         variables.
30633         (override_options): Initialize them.  Do not set flag_no_function_cse
30634         for TARGET_ID_SHARED_LIBRARY.
30635         (m68k_output_pic_call): Delete.
30636         (m68k_legitimize_call_address): New function.
30637         (print_operand): Remove the %o prefix.  Handle the %p prefix.
30638         (output_call): New function.
30639         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
30640         target address from the GOT if symbolic jumps are not allowed.
30641         * config/m68k/m68k.md (call, general_operand): Do not set
30642         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
30643         Merge separate flag_pic and !flag_pic define_insns into...
30644         (*call, *call_value): ...these new patterns.  Match the address
30645         rather than the containing MEM and require it to be a call_operand.
30646         Use output_call to generate the asm template.
30647         * config/m68k/predicates.md (const_call_operand): New predicate.
30648         (call_operand): Likewise.
30649
30650 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30651
30652         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
30653         (STACK_GROWS_DOWNWARD): Define to 1.
30654         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
30655         comments, emphasizing that these values are only defaults.
30656         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
30657         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
30658
30659 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30660
30661         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
30662
30663 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30664             Richard Sandiford  <richard@codesourcery.com>
30665
30666         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
30667         (FP_REGNO_P): New macros.
30668         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
30669         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
30670         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
30671         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
30672
30673 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30674
30675         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30676         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
30677         to $tmake_file.
30678         * config/m68k/t-floatlib: New file, extracting common code from...
30679         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
30680         * config/m68k/t-uclinux: Here.
30681         * config/m68k/fpgnulib.c: Do not compile extendeed precision
30682         routines on ColdFire targets.
30683
30684 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30685
30686         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30687         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
30688         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
30689         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
30690         explicitly set MOTOROLA to 1.
30691         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
30692
30693 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30694             Nathan Sidwell  <nathan@codesourcery.com>
30695
30696         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
30697         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
30698         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
30699         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
30700         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
30701         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
30702         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
30703         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
30704         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
30705         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30706         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
30707         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
30708         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
30709         (DBX_REGISTER_NUMBER): Delete.
30710         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
30711         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30712         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
30713
30714 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30715
30716         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
30717         * config/flat.h: New file.
30718         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
30719         OBJECT_FORMAT_FLAT.
30720         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
30721         indirect references for -msep-data or -mid-shared-library.
30722         Do not use PC-relative code addresses either.
30723         * config/m68k/m68k.c (override_options): Restrict -fPIC error
30724         to -mpcrel.
30725         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
30726         for shared libraries and crt1.o for executables.  Use crti.o and
30727         crtbegin.o.
30728         (ENDFILE_SPEC): Use crtend.o and crtn.o.
30729         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
30730         Do not add -elf2flt or -shared-lib-id options here.
30731         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
30732         Pass -shared-lib-id if -mid-shared-library, taking the library
30733         identifier from -mshared-library-id if given, otherwise
30734         defaulting to 0.
30735         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
30736         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
30737         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
30738         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
30739         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
30740         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
30741         and crtend.o.
30742         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
30743         jump sequence for ISA A and ISA A+.
30744         (PICJUMP): Likewise.
30745
30746 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30747
30748         * config.gcc (m68k-*-uclinux*): Base the port on the common
30749         and m68k GNU/Linux files rather than on the generic ELF ones.
30750         * config/m68k/uclinux.h (TARGET_VERSION): Override.
30751         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
30752
30753 2007-01-18  Julian Brown  <julian@codesourcery.com>
30754             Richard Sandiford  <richard@codesourcery.com>
30755
30756         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
30757         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30758         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
30759         before redefining.
30760         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
30761         80 unconditionally.
30762         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30763
30764 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30765
30766         * doc/install.texi: Document m68k-uclinuxoldabi.
30767         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
30768         * config/m68k/uclinux-oldabi.h: New file, copied from
30769         config/m68k/uclinux.h.
30770
30771 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
30772
30773         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
30774         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
30775         (m32r_compute_frame_size): Use unsigned for regno.
30776         (m32r_reload_lr): Use gen_frame_mem.
30777         (pop): New.
30778         (m32r_output_function_epilogue): Don't output the function epilogue
30779         textually here.
30780         (m32r_expand_epilogue): New.
30781         (direct_return): Return false if the function has the interrupt
30782         attribute.
30783         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
30784         * config/m32r/m32r.md (epilogue): New expander.
30785         (return_lr, return_rte): New insns.
30786         (return): Make it expander.
30787         (return_normal): New expander.
30788
30789 2007-01-18  Josh Conner  <jconner@apple.com>
30790
30791         PR target/30485
30792         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
30793         support for UNLE, UNLT, UNGE, and UNGT.
30794
30795 2007-01-18  Jan Hubicka  <jh@suse.cz>
30796
30797         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
30798         * tree-tailcall (add_virtual_phis): Likewise.
30799         (optimize_tail_call): Return TODOs.
30800         (execute_tail_calls): Return TODOs.
30801         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
30802         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
30803         changed.
30804         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
30805         Cleanup cfg using TODO.
30806         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
30807         * passes.c (execute_function_todo): When cleanup did something, remove
30808         unused locals.
30809         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
30810         (make_edges): Don't cleanup_cfg.
30811
30812 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
30813
30814         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
30815         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
30816         operate on the top of stack.
30817         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
30818         register handling of instructions that output to the second
30819         stack slot.
30820         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
30821         (move_for_stack_reg): Special-case check for dead destination
30822         stack slot for constant load of 1.0 inside UNSPEC_TAN.
30823
30824         * config/i386/i386.md (UNSPEC_TAN): New constant.
30825         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
30826         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
30827         to correctly model move of constant 1.0 to top stack slot.
30828         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
30829         (unnamed peephole2 pattern): Remove corresponding peephole2
30830         pattern that optimizes tan insn and loading of constant 1.0.
30831         (tanxf2): Use fptanxf4_i387.
30832         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
30833         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
30834         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30835         disable patterns for SSE math.
30836         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
30837         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
30838
30839 2007-01-18  Dirk Mueller  <dmueller@suse.de>
30840             Richard Guenther <rguenther@suse.de>
30841
30842         PR diagnostic/8268
30843         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
30844         * common.opt (Warray-bounds): Add new warning option.
30845         * c-opts.c (c_common_handle_option): Define -Warray-bounds
30846         if -Wall is given.
30847         * Makefile.in: make tree-vrp.o depend on toplev.h
30848         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
30849         is enabled.
30850         (check_array_refs, check_array_bounds, check_array_ref): New.
30851
30852 2007-01-18  Jan Hubicka  <jh@suse.cz>
30853
30854         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
30855         (execute_ssa_ccp): Return flags conditionally.
30856         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
30857         changed.
30858         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
30859
30860 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
30861
30862         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
30863         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
30864
30865         * Makefile.c (GTFILES): Add cfglayout.h.
30866         * gengtype.c (open_base_files): Likewise.
30867         * cfglayout.c (cfg_layout_function_footer,
30868         cfg_layout_function_header) Reindent to make gengtype happy.
30869         * cfglayout.h (cfg_layout_function_footer,
30870         cfg_layout_function_header): Add GTY(()) marker.
30871
30872         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
30873
30874 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30875
30876         * genautomata.c (write_automata): Include xstrerror output in the
30877         error message if writing the DFA description file fails.
30878
30879 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
30880
30881         * config/mips/mips-protos.h (mips_output_external): Make it
30882         return void.
30883         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
30884         * config/mips/mips.c (irix_output_external_libcall): Likewise.
30885         (extern_list): Likewise.
30886         (extern_head): Likewise.
30887         (TARGET_ASM_FILE_END): Likewise.
30888         (mips_file_end): Likewise.
30889         (mips_output_external): Rewritten.
30890
30891 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30892
30893         * genpreds.c (write_insn_preds_c): Only write out the function
30894         body for regclass_for_constraint if we have register constraints.
30895
30896 2007-01-17  Tom Tromey  <tromey@redhat.com>
30897
30898         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
30899         * doc/install.texi (Testing): Use sourceware.org.
30900         (Binaries): Likewise.
30901         (Specific): Likewise.
30902         * doc/contrib.texi (Contributors): Use sourceware.org.
30903
30904 2007-01-17  Anatoly Sokolov <aesok@post.ru>
30905
30906         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
30907         (AVR_ENHANCED): Rename to ...
30908         (AVR_HAVE_MUL): ... new.
30909         (avr_enhanced_p): Rename to ...
30910         (avr_have_mul_p): ... new.
30911         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
30912         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
30913         * config/avr/avr.c (avr_enhanced_p): Rename to ...
30914         (avr_have_mul_p): ... new.
30915         (base_arch_s): Rename 'enhanced' to 'have_mul'.
30916         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
30917         'avr_enhanced_p' and 'enhanced'.
30918         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
30919         AVR_HAVE_MUL instead of AVR_ENHANCED.
30920         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30921         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
30922         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
30923         instead of AVR_ENHANCED.
30924         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30925         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
30926         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
30927
30928 2007-01-17  Ian Lance Taylor  <iant@google.com>
30929
30930         * vec.h (VEC_reserve_exact): Define.
30931         (vec_gc_p_reserve_exact): Declare.
30932         (vec_gc_o_reserve_exact): Declare.
30933         (vec_heap_p_reserve_exact): Declare.
30934         (vec_heap_o_reserve_exact): Declare.
30935         (VEC_OP (T,A,reserve_exact)): New static inline function, three
30936         versions.
30937         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
30938         negative parameter.
30939         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
30940         (VEC_OP (T,A,copy)) [all versions]: Likewise.
30941         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
30942         * vec.c (calculate_allocation): Add exact parameter.  Change all
30943         callers.
30944         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
30945         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
30946         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
30947         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
30948         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
30949         (vec_heap_p_reserve_exact): New function.
30950         (vec_heap_o_reserve_exact): New function.
30951
30952 2007-01-17  Jan Hubicka  <jh@suse.cz>
30953
30954         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
30955
30956 2007-01-17  Eric Christopher  <echristo@apple.com>
30957
30958         * config.gcc: Support core2 processor.
30959
30960 2007-01-16  Jan Hubicka  <jh@suse.cz>
30961
30962         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
30963         the names, just unlink the chain so we don't crash on dangling
30964         pointers
30965         to dead SSA names.
30966
30967 2007-01-16  Jan Hubicka  <jh@suse.cz>
30968
30969         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
30970         * tree-pass.h: Reorder to make IPA passes appear toegher.
30971         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
30972         Declare.
30973         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
30974         parameters, do not call early inliner.
30975         * ipa-inline.c: Update comments.  Include tree-flow.h
30976         (cgraph_decide_inlining): Do not compute inlining parameters.
30977         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
30978         be called with function context set up.
30979         (pass_ipa_inline): Remove unreachable functions before pass.
30980         (cgraph_early_inlining): Simplify assuming to be called from the
30981         PM as local pass.
30982         (pass_early_inline): New pass.
30983         (cgraph_gate_ipa_early_inlining): New gate.
30984         (pass_ipa_early_inline): Turn into simple wrapper.
30985         (compute_inline_parameters): New function.
30986         (gate_inline_passes): New gate.
30987         (pass_inline_parameters): New pass.
30988         (apply_inline): Move here from tree-optimize.c
30989         (pass_apply_inline): New pass.
30990         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
30991         transforming.
30992         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
30993         doing them by hand.
30994         (tree_function_versioning): Do not allocate dummy struct function.
30995         * tree-inline.h (optimize_inline_calls): Update prototype.
30996         * tree-optimize.c (execute_fixup_cfg): Export.
30997         (pass_fixup_cfg): Remove
30998         (tree_rest_of_compilation): Do not apply inlines.
30999         * tree-flow.h (execute_fixup_cfg): Declare.
31000         * Makefile.in (gt-passes.c): New.
31001         * passes.c: Include gt-passes.h
31002         (init_optimization_passes): New passes.
31003         (nnodes, order): New static vars.
31004         (do_per_function_toporder): New function.
31005         (execute_one_pass): Dump current pass here.
31006         (execute_ipa_pass_list): Don't dump current pass here.
31007
31008 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
31009
31010         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
31011         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
31012
31013 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
31014
31015         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
31016         (strong_alias): Define.
31017         (__gcc_qmul): Provide non-FMA for soft-float.
31018         (__gcc_qdiv): Same.
31019         (__gcc_qneg): New.
31020         (__gcc_qeq): New.
31021         (__gcc_qle): New.
31022         (__gcc_qge): New.
31023         (__gcc_qunord): New.
31024         (__gcc_stoq): New.
31025         (__gcc_dtoq): New.
31026         (__gcc_qtos): New.
31027         (__gcc_qtod): New.
31028         (__gcc_qtoi): New.
31029         (__gcc_qtou): New.
31030         (__gcc_itoq): New.
31031         (__gcc_utoq): New.
31032         (fmsub): New.
31033         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
31034         soft-float functions.
31035         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
31036         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
31037         about long double soft float.
31038
31039 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
31040             Tehila Meyzels  <tehila@il.ibm.com>
31041
31042         * tree-vectorizer.h (is_pattern_stmt_p): New.
31043         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
31044         formatting (tabs instead of spaces). Cleanup and clarify setting
31045         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
31046         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
31047         (vectorizable_type_demotion): Check that types are integral.
31048         (vectorizable_type_promotion): Likewise.
31049         (vectorizable_store): Fix typo.  Eliminate new-line at end of
31050         comments.
31051
31052 2007-01-16  Jan Hubicka  <jh@suse.cz>
31053
31054         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
31055         cgraph edges too.
31056
31057 2007-01-15  Eric Christopher  <echristo@apple.com>
31058
31059         * ifcvt.c: Include vec.h, vecprim.h.
31060         (check_cond_move_block): New argument regs.
31061         Reorganize. Add registers used to regs.
31062         (cond_move_process_if_block): Use regs set above as
31063         loop bounds.
31064
31065 2007-01-15  Eric Christopher  <echristo@apple.com>
31066
31067         * config/darwin.h: Update copyright.
31068         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
31069         (LINK_COMMAND_SPEC): Add -u.
31070         (LINK_SPEC): Fix umbrella for above.
31071
31072 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
31073
31074         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
31075         glibc CVS.
31076
31077 2007-01-15  Tom Tromey  <tromey@redhat.com>
31078
31079         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
31080         * doc/install.texi (Testing): Don't mention jacks.
31081         (Configuration): Document --enable-java-maintainer-mode.  Move
31082         --with-java-home to libgcj-specific section.  Document
31083         --with-ecj-jar.
31084         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
31085
31086 2007-01-15  Jan Hubicka  <jh@suse.cz>
31087
31088         * tree-ssa-dce.c (DCE_TODOs): New.
31089         (propagate_necessity): Return if something changed.
31090         (eliminate_unnecessary_stmts): Likewise.
31091         (perform_tree_ssa_dce): Return TODO flags when needed.
31092         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
31093
31094 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
31095
31096         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
31097         (fyl2x_extend<mode>xf3_i387): New insn pattern.
31098         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
31099         patterns using X87MODEF12 mode macro.  Extend operand 1
31100         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
31101         (log10<mode>2): Ditto.
31102         (log2<mode>2): Ditto.
31103         (log1p<mode>2): Ditto.
31104         (logb<mode>2): Ditto.
31105         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
31106         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
31107         (*fxtractxf3_i387): Rename from *fxtractxf3.
31108         (fxtract_extend<mode>xf3_i387): New insn pattern.
31109         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
31110         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
31111         and gen_fyl2xxf3_i387().
31112
31113 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
31114
31115         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
31116         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
31117         get_loop_exit_edges.  Changed return type to bool.
31118         * cfgloop.h (fix_loop_placement): Declaration removed.
31119
31120 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
31121
31122         * param.h (MIN_VECT_LOOP_BOUND): New.
31123         * params.def (MIN_VECT_LOOP_BOUND): New.
31124         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
31125         argument - minimum threshold for number of iterations.
31126         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
31127         argument to declaration.
31128         * tree-vect-analyze.c (vect_analyze_operations): Check value of
31129         MIN_VECT_LOOP_BOUND.
31130         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
31131         slpeel_tree_peel_loop_to_edge with additional argument.
31132         (vect_do_peeling_for_alignment): Likewise.
31133         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
31134
31135 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
31136
31137         PR target/30413
31138         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
31139         operands of size 1.
31140
31141 2007-01-14  Jan Hubicka  <jh@suse.cz>
31142
31143         * tree-dfa.c (remove_referenced_var): New function.
31144         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
31145         prune referenced vars list too.
31146         * tree-flow.h (remove_referenced_var): Declare.
31147
31148 2007-01-14  Jan Hubicka  <jh@suse.cz>
31149
31150         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
31151         separately.
31152         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
31153         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
31154         * except.h (verify_eh_throw_table_statements): Kill prototype.
31155         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
31156         into call exrepssions.
31157         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
31158         eh trhow verifier.
31159         * tree-cfg.c: Include pointer-set.h.
31160         (verify_node_sharing): Work on pointer set.
31161         (verify_eh_throw_stmt_node): New.
31162         (verify_stmts): Use pointers sets, verify throw_stmt.
31163
31164 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
31165
31166         * ipa-reference.c (analyze_function): Consider also addresses taken
31167         in phi nodes.
31168
31169 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31170
31171         * c-typeck.c (null_pointer_constant_p): Replace use of
31172         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31173         (build_c_cast): Likewise.
31174
31175 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31176
31177         * tree.h (force_fit_type_double): Remove unused final argument.
31178         * c-common.c (constant_expression_warning): Replace use of
31179         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31180         (convert_and_check): Likewise.
31181         (shorten_compare): Update call to force_fit_type_double.
31182         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
31183         * convert.c (convert_to_pointer): Update call to
31184         force_fit_type_double.
31185         * fold-const.c (force_fit_type_double): Remove overflowed_const
31186         argument.
31187         (int_const_binop, fold_convert_const_int_from_int,
31188         fold_convert_const_int_from_real, fold_div_compare,
31189         fold_sign_changed_comparison, fold_unary, fold_negate_const,
31190         fold_abs_const, fold_not_const): Remove the final argument from
31191         calls to force_fit_type_double.
31192
31193 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31194
31195         * configure.ac: Set insn to "nop" for spu-*-* also.
31196         * configure: Regenerate.
31197
31198 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
31199
31200         * builtins.def : Add BUILT_IN_FREE.
31201
31202 2007-01-12  Jan Hubicka  <jh@suse.cz>
31203
31204         PR tree-optimization/30443
31205         * tree-inline.c (tree_function_versioning): Do not optimize when
31206         cloning for inlining.
31207
31208 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
31209
31210         * doc/loop.texi: Document recording of loop exits.
31211         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
31212         (update_single_exits_after_duplication,
31213         update_single_exit_for_duplicated_loop,
31214         update_single_exit_for_duplicated_loops): Removed.
31215         (duplicate_loop_to_header_edge): Do not call
31216         update_single_exits_after_duplication and
31217         update_single_exit_for_duplicated_loops.
31218         (loop_version): Do not update single_exit information.
31219         (fix_loop_structure): Use record_loop_exits instead of
31220         mark_single_exit_loops.
31221         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
31222         the lists of loop exits.
31223         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
31224         split_edge, merge_blocks): Update the lists of loop exits.
31225         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
31226         loop_optimizer_init.
31227         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
31228         of mark_single_exit_loops.
31229         (loop_optimizer_finalize): Call release_recorded_exits.
31230         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
31231         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
31232         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
31233         update single exit information.
31234         * lambda-code.c (perfect_nestify): Ditto.
31235         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
31236         (mark_single_exit_loops): Removed.
31237         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
31238         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
31239         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
31240         functions.
31241         (get_loop_exit_edges, single_exit): Use recorded exit lists.
31242         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
31243         (verify_loop_structure): Verify consistency of the exit lists.
31244         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
31245         (set_single_exit): Removed.
31246         * cfgloop.h (struct loop_exit): New function.
31247         (struct loop): single_exit_ field replaced by exits field.
31248         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
31249         LOOPS_HAVE_RECORDED_EXITS.
31250         (struct loops): Added exits hash.
31251         (mark_single_exit_loops, set_single_exit): Declaration removed.
31252         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
31253
31254 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31255
31256         * doc/invoke.texi: Avoid use of @headitem.
31257
31258 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31259
31260         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
31261
31262 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31263
31264         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
31265         list of targets.
31266
31267 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31268             Richard Sandiford  <richard@codesourcery.com>
31269
31270         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
31271         * config/m68k/m68k.opt: Resort options.
31272         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
31273
31274 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31275             Richard Sandiford  <richard@codesourcery.com>
31276
31277         * doc/invoke.texi: Document the macros that are defined by
31278         m68k's -mtune and -mhard-float options.
31279         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
31280         (m68k_cpp_cpu_family): Likewise.
31281         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
31282         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
31283         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
31284         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
31285         (m68k_cpp_cpu_family): Likewise.
31286
31287 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31288
31289         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
31290         macros besides mc68000 as tuning macros.  Use a switch statement
31291         to set them and mcpu32.
31292
31293 2007-01-12  Julian Brown  <julian@codesourcery.com>
31294
31295         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
31296         (TARGET_68040_ONLY): Rename to...
31297         (TARGET_68040): ...this.
31298         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
31299         * config/m68k/m68k.md: Likewise.
31300
31301 2007-01-12  Julian Brown  <julian@codesourcery.com>
31302             Nathan Sidwell  <nathan@codesourcery.com>
31303             Richard Sandiford  <richard@codesourcery.com>
31304
31305         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
31306         the -mcpu= argument associated with the --with-cpu setting.
31307         Define M68K_DEFAULT_TUNE to the default -mtune= option,
31308         if different from the one implied by the -mcpu setting.
31309         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
31310         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
31311         * doc/invoke.texi: Mention ColdFire in the introduction to the
31312         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
31313         -mno-div and -mhard-float options.  Make -m68881 a synonym for
31314         -mhard-float.  Document the previously-undocumented -m5206e,
31315         -m528x, -m5307 and -m5407 options.  Tweak the existing option
31316         documentation for consistency.
31317         * doc/install.texi: Mention new --with-cpu arguments.
31318         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
31319         default CPU if neither -mcpu nor -march are specified.
31320         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
31321         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
31322         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
31323         using m68k_tune to decide between families that implement the
31324         same ISA.  Use m68k_tune to set __mcfv4e__.
31325         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
31326         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
31327         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
31328         (FL_ISA_C, FL_ISA_MMU): New macros.
31329         (MASK_COLDFIRE): Delete.
31330         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
31331         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
31332         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
31333         (TARGET_HARD_FLOAT): Do not define here.
31334         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
31335         (TUNE_68000): New macro.
31336         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
31337         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
31338         (TUNE_CFV2): Redefine in terms of m68k_tune.
31339         (uarch_type, target_device, fpu_type): New enums.
31340         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
31341         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
31342         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
31343         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
31344         (FL_FOR_isa_c): New macros.
31345         (m68k_isa): New enum.
31346         (m68k_target_selection): New structure.
31347         (all_devices, all_isas, all_microarchs): New tables.
31348         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
31349         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
31350         (MASK_ALL_CPU_BITS): Delete.
31351         (m68k_find_selection): New function.
31352         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
31353         Map the legacy target options to a combination of the new ones.
31354         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
31355         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
31356         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
31357         settings.
31358         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
31359         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
31360         properties.
31361         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
31362         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
31363         * config/m68k/m68k-devices.def: New file.
31364
31365 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31366             Nathan Sidwell  <nathan@codesourcery.com>
31367
31368         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
31369         (SUBTARGET_EXTRA_SPECS): New macros.
31370         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
31371         use %(asm_cpu_spec) instead.
31372         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
31373         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
31374         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
31375         (EXTRA_SPECS): Rename to...
31376         (SUBTARGET_EXTRA_SPECS): ...this.
31377
31378 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31379             Richard Sandiford  <richard@codesourcery.com>
31380             Julian Brown  <julian@codesourcery.com>
31381
31382         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
31383         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
31384         to the configuration's default CPU.
31385         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
31386         Remove default masks.
31387         (m680[012]0-*-*): Set the default with_cpu to the first part of
31388         the target name.
31389         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
31390         (m68k*-*-linux): Extend the --with-cpu handling to...
31391         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
31392         and m68010.  Don't set target_cpu_default2.
31393         * doc/install.texi: Document --with-cpu for m68k.
31394         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
31395         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
31396         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
31397         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
31398         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
31399         (ASM_SPEC): Remove use of %(asm_cpu_default).
31400         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
31401         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
31402         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
31403         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
31404         __HAVE_FPU__ if TARGET_HARD_FLOAT.
31405         (TARGET_DEFAULT): Delete.
31406         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
31407         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
31408         (CPP_CPU_SPEC): Delete.
31409         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
31410         the appropriate string.
31411         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
31412         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
31413         (ASM_SPEC): Don't use %(asm_default_spec).
31414         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
31415         TARGET_DEFAULT and add MASK_68881.
31416         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
31417
31418 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31419
31420         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
31421         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
31422         MASK_68010 alongside MASK_68020.
31423         * doc/invoke.texi: Document -m68010.
31424         * config/m68k/m68k.opt (m68010): New.
31425         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
31426         if TUNE_68010.
31427         (TUNE_68010): New macro.
31428         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
31429         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
31430         (M68K_CPU_m68332): Add MASK_68010.
31431         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
31432         fallback definition.
31433         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
31434         defines.
31435         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
31436         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
31437         to all entries that use MASK_68020.
31438         (output_move_simode_const, output_move_himode, output_move_qimode)
31439         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
31440         instead of TARGET_68020 to select clr behavior.  Remove comment
31441         about there being no TARGET_68010.
31442         * config/m68k/m68k.md: Likewise throughout.
31443
31444 2007-01-12  Julian Brown  <julian@codesourcery.com>
31445
31446         * config/m68k/m68k.h (TARGET_ISAB): New macro.
31447         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
31448         * config/m68k/m68k.md: Likewise.
31449
31450 2007-01-12  Julian Brown  <julian@codesourcery.com>
31451
31452         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
31453         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
31454
31455 2007-01-12  Julian Brown  <julian@codesourcery.com>
31456
31457         * config/m68k/m68k.h (TUNE_68040_60): New macro.
31458         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
31459         * config/m68k/m68k.md: Likewise.
31460
31461 2007-01-12  Julian Brown  <julian@codesourcery.com>
31462             Richard Sandiford  <richard@codesourcery.com>
31463
31464         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
31465         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
31466         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
31467         TARGET_CPU32.
31468         (TARGET_CPU32): Rename to...
31469         (TUNE_CPU32): ...this.
31470         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
31471         (TUNE_CFV2): New macros.
31472         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
31473         remove conditions that are implied by TARGET_68020.
31474         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
31475         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
31476         (m68k_output_function_epilogue): Likewise.
31477         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
31478         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
31479         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
31480         non-68000 timings.  Refactor multiplication and division costs.
31481         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
31482         TUNE_CPU32 instead of TARGET_CPU32.
31483         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
31484         and TUNE_68060 instead of TARGET_68060.
31485         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
31486         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
31487         TARGET_CPU32.
31488         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
31489         && !TARGET_COLDFIRE" to choose between moveq and clr.
31490         Likewise in the unnamed movsf pattern.
31491         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
31492         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
31493         ashiftrt pattern.
31494
31495 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31496
31497         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
31498         of tabbing before backslashes.
31499
31500 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31501
31502         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
31503         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
31504         (ASM_OUTPUT_INTERNAL_LABEL): Define.
31505
31506 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31507
31508         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
31509         find_interesting_uses_cond.
31510         (find_interesting_uses_cond): Use extract_cond_operands.
31511         (rewrite_use_compare): Use extract_cond_operands and
31512         force_gimple_operand_bsi.  Do not call update_stmt.
31513         (determine_use_iv_cost_condition): Use extract_cond_operands.
31514         Return cheaper of using original bound and changing the exit bound.
31515
31516 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31517
31518         PR tree-optimization/29516
31519         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
31520         most_expensive_mult_to_index, addr_to_parts,
31521         create_mem_ref, maybe_fold_tmr): Make the type of
31522         fields of TARGET_MEM_REF sizetype.
31523         (move_fixed_address_to_symbol, move_pointer_to_base):
31524         New functions.
31525         * tree.def (TARGET_MEM_REF): Add comment on types of
31526         the operands.
31527
31528 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
31529
31530         * c-common.c (vector_types_convertible_p): Treat opaque types as
31531         always convertible if they have the same size, but not otherwise.
31532
31533 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
31534
31535         * ifcvt.c (struct noce_if_info): Add comments to the fields.
31536         Remove the b_unconditional field.
31537         (noce_try_sign_mask): Do not look at b_unconditional.
31538         (noce_process_if_block): Do not use merge_if_blocks.  Update
31539         the CFG here.  Do not set b_unconditional.
31540         (cond_move_process_if_block): Likewise.
31541         (find_cond_trap): Likewise.
31542         (check_cond_move_block): Require simple jump insns at the end
31543         of the basic block.
31544
31545 2007-01-11  Jan Hubicka  <jh@suse.cz>
31546
31547         PR tree-optimization/1046
31548         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
31549         when alias info is not ready.
31550         (pass_tail_recursion): Do not require aliasing.
31551         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
31552         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
31553         * tree-ssa-copy.c (pass_copy_prop): Likewise.
31554         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
31555         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
31556         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
31557         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
31558         before inlining.
31559         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
31560         When aliasing is not build, mark statement as volatile.
31561
31562 2007-01-11  Tom Tromey  <tromey@redhat.com>
31563
31564         PR preprocessor/15185, PR preprocessor/20989:
31565         * doc/cppopts.texi <-MT>: Update description of algorithm for
31566         computing default target.
31567         <-M, -MD>: Reword "basename" text.
31568
31569 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31570
31571         * builtins.c (expand_builtin_pow, expand_builtin_powi,
31572         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
31573         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
31574         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
31575         fold_builtin_bswap, real_constp, fold_builtin_pow,
31576         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
31577         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
31578         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31579         * convert.c (convert_to_pointer): Likewise.
31580         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
31581         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
31582         const_binop, fold_convert_const_int_from_int,
31583         fold_convert_const_int_from_real,
31584         fold_convert_const_real_from_real, sign_bit_p,
31585         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
31586         fold_sign_changed_comparison, fold_unary, fold_comparison,
31587         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
31588         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
31589         * print-tree.c (print_node_brief, print_node): Likewise.
31590         * stor-layout.c (place_field, layout_type): Likewise.
31591         * tree-chrec.c (keep_cast): Likewise.
31592         * tree.c (build_vector, build_real, build_real_from_int_cst,
31593         build_complex): Likewise.
31594
31595 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31596
31597         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
31598         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
31599
31600 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
31601
31602         * configure.ac (strict1_warn): Rename to strict_warn.
31603         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
31604         cc_set_by_configure, quoted_cc_set_by_configure,
31605         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
31606         all_boot_languages, all_stagestuff): Remove.
31607         (target_list): Remove bootstrap targets.
31608         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
31609         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
31610         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
31611         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
31612         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
31613         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
31614         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
31615         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
31616         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
31617         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
31618         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
31619         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
31620         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
31621         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
31622         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
31623         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
31624         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
31625         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
31626         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
31627         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
31628         (mostlyclean): Adjust.
31629         (clean, distclean): Don't mention bootstrap stuff.
31630         * configure: Regenerate.
31631         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
31632         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
31633         treelang/config-lang.in (stagestuff): Remove.
31634         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
31635         stageprofile, stagefeedback, stagestuff): Remove mention.
31636
31637 2007-01-11  Nick Clifton  <nickc@redhat.com>
31638
31639         * config/mcore/predicates.md (mcore_general_movesrc_operand):
31640         Accept CONSTs.
31641         (mcore_general_movdst_operand): Do not accept CONST_INTs.
31642         (mcore_arith_K_S_operand): Run the test for the S constraint not
31643         the test for the M constraint.
31644         (mcore_addsub_operand): Do not accept integer values that are
31645         larger than 32 bits.
31646         * config/mcore/mcore.md: Remove unused constraints from split.
31647         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
31648         (addsi3): Likewise.
31649         (allocate_stack): Likewise.
31650         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
31651         operands to 32 bits.
31652         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
31653         INTVAL.
31654         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
31655         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
31656         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
31657         mcore_output_bclri, mcore_output_andn, output_inline_const,
31658         mcore_output_move, mcore_output_movedouble): Likewise.
31659         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
31660         (output_inline_const): Likewise.
31661         (output_inline_const): Fix format strings used in sprintf
31662         statements.
31663         * config/mcore/mcore-protos.h: Update prototypes for changed
31664         functions in mcore.c.
31665         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
31666         HOST_WIDE_INT and not int.
31667         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
31668         CONST_OK_FOR_N): Likewise.
31669         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
31670         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
31671         an INTVAL.
31672
31673 2007-01-10  Jan Hubicka  <jh@suse.cz>
31674
31675         * tree-vrp.c (remove_range_assertions): Release defs.
31676         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
31677         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
31678
31679 2007-01-10  Paul Brook  <paul@codesourcery.com>
31680
31681         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
31682         * config/arm/arm.md (mulsi3subsi): New insn.
31683
31684 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
31685
31686         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
31687         (tree_transform_and_unroll_loop): New.
31688         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
31689         Declare.
31690
31691 2007-01-10  Robert Kennedy <jimbob@google.com>
31692
31693         * fold-const.c (fold_comparison): Fold comparisons like (x *
31694         1000 < 0) to (x < 0).
31695
31696 2007-01-10  Ian Lance Taylor  <iant@google.com>
31697
31698         * tree-pretty-print.c (dump_generic_node): Print parentheses when
31699         operands have the same priority.
31700
31701 2007-01-10  Tom Tromey  <tromey@redhat.com>
31702
31703         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
31704         (fold_binary): Likewise.
31705         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
31706         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
31707         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
31708         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
31709         * langhooks.h (struct lang_hooks): Removed field
31710         'can_use_bit_fields_p'.
31711
31712 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
31713
31714         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
31715
31716 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
31717
31718         * function.c (get_last_funcdef_no): New function.
31719         * function.h (get_last_funcdef_no): Declare.
31720         * tree-inline.c (initialize_cfun): Add initialization.
31721         (tree_function_versioning): Cleanup.
31722
31723 2007-01-10  Jan Hubicka  <jh@suse.cz>
31724
31725         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
31726         PHIs.
31727
31728 2007-01-10  Sa Liu  <saliu@de.ibm.com>
31729             Ben Elliston  <bje@au.ibm.com>
31730
31731         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
31732         for SAVE_NONLOCAL and Pmode for any other save level.
31733         * spu-protos.h (spu_restore_stack_block): Declare.
31734         * spu.md (save_stack_block): Remove.
31735         (restore_stack_block): Call spu_restore_stack_block.
31736         * spu.c (spu_restore_stack_block): New function.
31737         (spu_expand_epilogue): Remove old comment.
31738
31739 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
31740
31741         PR tree-optimization/30322
31742         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
31743         (cand_value_at): Return the value as aff_tree.
31744         (may_eliminate_iv): Convert the bound from aff_tree to tree.
31745         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
31746         aff_combination_mult): New functions.
31747         (aff_combination_add): Use aff_combination_add_cst.
31748         (aff_combination_convert): Allow conversions to a wider type.
31749         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
31750         * tree-affine.h (aff_combination_mult): Declare.
31751
31752 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
31753
31754         * doc/tm.texi: Update documentation to reflect reality of exec
31755         and start file search behaviours. Update copyright year.
31756         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
31757         header file directories.
31758
31759 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
31760
31761         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
31762         (*cosxf2): Rename to cosxf2_i387.
31763         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
31764         using X87MODEF12 mode macro. Rename patterns to
31765         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
31766         for SSE math.
31767         (*cosdf2, *cossf2): Ditto.
31768         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
31769         to match extended input operands.
31770         (sincos<mode>3): New expander.
31771         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
31772         insn patterns and corresponding splitters.
31773
31774 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
31775
31776         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
31777         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
31778
31779 2007-01-09  Nicolas Pitre  <nico@cam.org>
31780
31781         PR target/30173
31782         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
31783
31784 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31785
31786         * target.h (struct gcc_target): New field library_rtti_comdat.
31787         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
31788         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
31789         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
31790         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
31791
31792 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31793
31794         * doc/invoke.texi (Optimize Options): Correct description of -O0.
31795
31796 2007-01-08  Richard Guenther  <rguenther@suse.de>
31797
31798         * tree.h (force_fit_type_double): Export.
31799         (force_fit_type): Remove.
31800         * fold-const.c (force_fit_type_double): New function.
31801         (force_fit_type): Remove.
31802         (int_const_binop): Use it.
31803         (fold_convert_const_int_from_int): Likewise.
31804         (fold_convert_const_int_from_real): Likewise.
31805         (fold_div_compare): Likewise.
31806         (fold_sign_changed_comparison): Likewise.
31807         (fold_unary): Likewise.
31808         (fold_negate_const): Likewise.
31809         (fold_abs_const): Likewise.
31810         (fold_not_const): Likewise.
31811         * c-common.c (shorten_compare): Use force_fit_type_double.
31812         * convert.c (convert_to_pointer): Likewise.
31813
31814 2007-01-08  Richard Guenther  <rguenther@suse.de>
31815
31816         * tree.h (build_int_cst_wide_type): Export.
31817         * tree.c (build_int_cst_wide_type): New function.
31818         (build_int_cst_wide): Fix comment.
31819         * builtins.c (fold_builtin_object_size): Use build_int_cst
31820         to build -1 or 0 of the correct type.  Use fit_double_type
31821         to check for overflow.
31822         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
31823         to build the mask.
31824         (decode_field_reference): Likewise.
31825         (all_ones_mask_p): Likewise.
31826         (native_interpret_int): Use build_int_cst_wide_type.
31827         (fold_binary): Use build_int_cst_type to build an all-ones
31828         value.
31829         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
31830
31831 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
31832
31833         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
31834
31835 2007-01-09  Ben Elliston  <bje@au.ibm.com>
31836
31837         * genautomata.c (STATS_OPTION): New option.
31838         (stats_flag): New flag.
31839         (gen_automata_option): Handle it.
31840         (initiate_automaton_gen): Ditto.
31841         (write_automata): Output statistics only if stats_flag is
31842         set. Likewise, output time statistics only if time_flag is set.
31843         * doc/md.texi (Processor pipeline description): Document new flag.
31844
31845 2007-01-08  Richard Guenther  <rguenther@suse.de>
31846
31847         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
31848         * tree.c (build_int_cst_type): Likewise.
31849         (size_in_bytes): Don't call force_fit_type on the result.
31850         (int_fits_type_p): Use fit_double_type.
31851         * fold-const.c (fit_double_type): New function.
31852         (force_fit_type): Use it.
31853         * tree.h (fit_double_type): Export.
31854
31855 2007-01-08  Jan Hubicka  <jh@suse.cz>
31856
31857         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
31858         * ipa.c (function_and_variable_visibility): Fix return type.
31859
31860 2007-01-08  Richard Guenther  <rguenther@suse.de>
31861
31862         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
31863         of offset to build the index.
31864         * tree-pretty-print.c (dump_generic_node): Don't build negated
31865         const just for printing.
31866         * c-pretty-print.c (pp_c_integer_constant): Likewise.
31867         * builtins.c (fold_builtin_int_roundingfn): Check if result
31868         fits the type by using force_fit_type and comparing the result.
31869         * predict.c (predict_loops): Use compare_tree_int for comparison.
31870         * tree.c (build_int_cst): Fall back to integer_type_node for
31871         NULL_TREE type.
31872         (build_int_cst_wide): Assert type is non-null.
31873
31874 2007-01-08  Roberto Costa  <roberto.costa@st.com>
31875
31876         * tree-vrp.c (extract_range_from_cond_expr): New.
31877         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
31878         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
31879         as expressions.
31880         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
31881         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
31882         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
31883         used as expressions.
31884         * tree-object-size.c (cond_expr_object_size): New.
31885         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
31886
31887 2007-01-08  Jan Hubicka  <jh@suse.cz>
31888
31889         * tree-ssa-forwprop.c (forward_propagate_into_cond,
31890         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
31891         statement.
31892
31893 2007-01-08  Richard Guenther  <rguenther@suse.de>
31894
31895         PR tree-optimization/23603
31896         * tree-vrp.c (set_value_range_to_truthvalue): New function.
31897         (extract_range_from_binary): Fall back to truthvalue instead of
31898         varying for TRUTH_*_EXPR.
31899         (extract_range_from_comparison): Fall back to truthvalue instead of
31900         varying.
31901         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
31902         if all visited PHI values were constant.
31903
31904 2007-01-08  Jan Hubicka  <jh@suse.cz>
31905
31906         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
31907         (cgraph_analyze_function): break out from ...
31908         (cgraph_finalize_compilation_unit): ... here.
31909         (cgraph_expand_function): Remove forgoten commented out line.
31910         (cgraph_optimize): Analyze functions.
31911
31912 2007-01-08  Jan Hubicka  <jh@suse.cz>
31913
31914         * tree-pas.h (TODO_remove_function): New flag.
31915         (TODO_update*): Renumber.
31916         (pass_ipa_increase_alignment,
31917         pass_ipa_function_and_variable_visibility): New passes.
31918         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
31919         (cgraph_function_and_variable_visibility): Move to ipa.c
31920         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
31921         cgraph_increase_alignment.
31922         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
31923         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
31924         calling tree-inline.
31925         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
31926         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
31927         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
31928         (gate_increase_alignment): New function.
31929         (pass_ipa_increase_alignment): New pass.
31930         * ipa.c: Inline tree-pass.h and timevar.h
31931         (function_and_variable_visibility): Move here from cgraphunit.c
31932         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
31933         * passes.c (init_optimization_passes): Add the two new passes.
31934         (execute_todo): Handle cgraph_remove_functions.
31935
31936 2007-01-08  Nick Clifton  <nickc@redhat.com>
31937
31938         * config/frv/predicates.md (reg_or_0_operand): Accept
31939         CONST_DOUBLEs.
31940
31941 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
31942
31943         * config/bfin/rtems.h, config/bfin/t-rtems: New.
31944         * config.gcc: Add bfin*-rtems*.
31945
31946 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31947
31948         * c.opt: Add -flax-vector-conversions.
31949         * c-typeck.c (convert_for_assignment): Pass flag to
31950         vector_types_convertible_p to allow emission of note.
31951         (digest_init): Likewise.
31952         * c-opts.c: Handle -flax-vector-conversions.
31953         * c-common.c (flag_lax_vector_conversions): New.
31954         (vector_types_convertible_p): Unless -flax-vector conversions
31955         has been passed, disallow conversions between vectors with
31956         differing numbers of subparts and/or element types.  If such
31957         a conversion is disallowed, possibly emit a note on the first
31958         occasion only to inform the user of -flax-vector-conversions.
31959         The new last argument specifies this.
31960         * c-common.h (flag_lax_vector_conversions): New.
31961         (vector_types_convertible_p): Add extra argument.
31962         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
31963         char_type_node for V*QI type vectors.
31964         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
31965         Update to satisfy new typechecking rules.
31966         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
31967         C and C++ variants.
31968         * doc/invoke.texi (C Dialect Options): Document
31969         -flax-vector-conversions.
31970
31971 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31972
31973         PR tree-optimization/29877
31974         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
31975         a register variable on the RHS to not be replaceable.
31976
31977 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
31978         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
31979         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
31980         const_simm15, const_pow2, const_npow2): Added.
31981         * config/score/misc.md (insv, extv, extzv, movmemsi,
31982         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
31983         * config/score/score.c (score_address_cost, score_select_cc_mode):
31984         Added.
31985         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
31986         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
31987         Update score_print_operand.
31988         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
31989         Adjust register allocate order and update some macro define.
31990         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
31991         mdx_block_move_straight, mdx_block_move_loop_head,
31992         mdx_block_move_loop_body, mdx_block_move_loop_foot,
31993         mdx_block_move_loop, mdx_block_move): Added.
31994         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
31995         mdp_limm): Updated and fix some bug and typo.
31996         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
31997         (movsf, movdf, doloop_end): Added.
31998
31999 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
32000
32001         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
32002         config/arm/thumb2.md: Fix comment typos.
32003         * doc/extend.texi: Fix a typo.
32004
32005 2007-01-07  Eric Christopher  <echristo@apple.com>
32006
32007         * configure.ac: Check for __stack_chk_fail for darwin.
32008         * configure: Regenerate.
32009
32010 2007-01-07  Richard Guenther  <rguenther@suse.de>
32011
32012         * tree-vrp.c (extract_range_from_assert): CSE calls to
32013         compare_values where possible.
32014         (extract_range_from_unary_expr): Likewise.
32015
32016 2007-01-07  Anatoly Sokolov <aesok@post.ru>
32017
32018         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
32019         * config/avr/avr.c (call_insn_operand): Delete function.
32020         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
32021         instead of register number. Use predicates.
32022         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
32023         call_insn_operand): Add.
32024
32025 2007-01-06  Jan Hubicka  <jh@suse.cz>
32026
32027         * tree-pass.h (pass_build_cgraph_edges): Declare.
32028         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
32029         (visited_nodes): Remove.
32030         (cgraph_create_edges): Move to cgraphbuild.c; rename to
32031         build_cgrpah_edges; make visited_nodes local.
32032         (cgraph_process_new_functions): DO not call initialize_inline_failed.
32033         (record_references_in_initializer): Move to cgraphbuild.c
32034         (initialize_inline_failed, rebuild_cgraph_edges,
32035         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
32036         (verify_cgraph_node): Make visited_nodes local.
32037         (cgraph_analyze_function): Do not call cgraph_create_edges and
32038         initialize_inline_failed.
32039         (cgraph_expand_function): Do not call cgraph_lower_function;
32040         assert that function is already lowered.
32041         * Makefile.in (cgraphbuild.o): New.
32042         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
32043         at the end of lowering passes.
32044
32045 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
32046
32047         * ifcvt.c (cond_move_convert_if_block): New function, code
32048         factored out from...
32049         (cond_move_process_if_block): ...here.  Call the new function
32050         on the THEN and ELSE blocks.
32051         (merge_if_block): Do not copy global_live_at_end, merge_blocks
32052         already takes care of this.
32053
32054 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32055
32056         PR c/19978
32057         * tree.h (TREE_OVERFLOW_P): New.
32058         * c-typeck.c (parser_build_unary_op): Warn only if result
32059         overflowed and operands did not.
32060         (parser_build_binary_op): Likewise.
32061         (convert_for_assignment): Remove redundant overflow_warning.
32062         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
32063
32064 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32065
32066         * c-typeck.c (store_init_value): Split over two lines to follow
32067         the GNU coding style.
32068
32069 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
32070
32071         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
32072         __GXX_EXPERIMENTAL_CXX0X__.
32073         * doc/cpp.texi: Same.
32074
32075 2007-01-05  Richard Guenther  <rguenther@suse.de>
32076
32077         PR middle-end/27826
32078         * tree.c (get_narrower): Do not construct COMPONENT_REFs
32079         with mismatched types.  Instead explicitly build a
32080         conversion NOP_EXPR.
32081
32082 2007-01-05  Ian Lance Taylor  <iant@google.com>
32083
32084         * c-common.c (decl_with_nonnull_addr_p): New function.
32085         (c_common_truthvalue_conversion): Call it.
32086         * c-typeck.c (build_binary_op): Likewise.
32087         * c-common.h (decl_with_nonnull_addr_p): Declare.
32088
32089 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
32090
32091         PR c/30360
32092         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
32093         denom against 0.0.
32094
32095 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
32096
32097         * doc/install.texi (Final install): Document the fact that
32098         the GNAT runtime should not be stripped.
32099
32100 2007-01-04  Jan Hubicka  <jh@suse.cz>
32101
32102         * tree-inline.c (fold_marked_statements): Update operand caches
32103         and EH after folding
32104
32105 2007-01-04  Ian Lance Taylor  <iant@google.com>
32106
32107         * c-common.c (check_function_nonnull): Whitespace fix.
32108
32109 2007-01-04  Jan Hubicka  <jh@suse.cz>
32110
32111         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
32112         comitted older version of patch.
32113         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
32114         function, celanup cfg and collect garbage.
32115
32116 2007-01-04  Mike Stump  <mrs@apple.com>
32117
32118         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
32119         (clean): Likewise.
32120
32121 2007-01-04  Eric Christopher  <echristo@apple.com>
32122
32123         * libgcc2.c (__bswapsi2): Use SItype.
32124         (__bswapdi2): Use DItype.
32125         * libgcc2.h: Update for above.
32126
32127 2007-01-04  Paul Brook  <paul@codesourcery.com>
32128
32129         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
32130         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
32131         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
32132         umulsidi3, umulsidi3adddi, smulsi3_highpart,
32133         umulsi3_highpart): Make conditional on !arm_arch6.
32134         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
32135         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
32136         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
32137         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
32138         umulsi3_highpart_v6): New insns.
32139
32140 2007-01-04  Roger Sayle  <roger@eyesopen.com>
32141
32142         * fold-const.c (fold_convert): When casting an expression to void,
32143         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
32144         have a type.  Instead of attempting to build a NOP_EXPR, return
32145         these "special" trees directly.
32146
32147 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
32148
32149         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
32150         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
32151         rs6000_cost->fp not 0 as adjustment for outer NEG.
32152
32153 2007-01-04  Jan Hubicka  <jh@suse.cz>
32154
32155         * cgraph.c (cgraph_release_function_body): New function.
32156         (cgraph_remove_node): Use it.
32157         * cgraph.h (cgraph_release_function_body): Declare.
32158         * cgraphunit.c (cgraph_expand_function): Use it.
32159         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
32160         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
32161         is initialized and while compilation of other function is running.
32162         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
32163         statement CFG annotations from here to ...
32164         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
32165
32166 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
32167
32168         * cfgloop.h (enum li_flags): Make the constants powers of two.
32169
32170 2007-01-04  Jan Hubicka  <jh@suse.cz>
32171
32172         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
32173         set.
32174         (fold_marked_statements): New function.
32175         (optimize_inline_calls, tree_function_versioning): Fold new statements.
32176         * tree-inline.h (copy_body_data): Add statements_to_fold.
32177
32178 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
32179
32180         * config.gcc: Mention libgcc/config.host.
32181         * Makefile.in: Update comments mentioning libgcc.
32182         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
32183         (all.cross, start.encap, rest.encap, rest.cross): Update
32184         dependencies for libgcc move.
32185         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
32186         (clean-target, clean-target-libgcc): Delete.
32187         (srcdirify, GCC_EXTRA_PARTS): New macros.
32188         (libgcc-support, libgcc.mvars): New rules.
32189         (distclean): Remove mention of mklibgcc.
32190         (install): Don't reference INSTALL_LIBGCC.
32191         (install-common): Don't reference EXTRA_PARTS.
32192         (install-libgcc, install-multilib): Delete rules.
32193         * mklibgcc.in: Delete file.
32194         * doc/configfiles.texi: Don't mention mklibgcc.
32195
32196         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
32197         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
32198         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
32199         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
32200         (mklibgcc, ldblspecs): Likewise.
32201
32202         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
32203         (posixpre.def): Use $(T).
32204         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
32205         (SHLIB_SRC, SHLIB_INSTALL): Delete.
32206         (SHLIB_LINK): Make dummy.
32207         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
32208
32209         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
32210
32211         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
32212         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
32213         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
32214         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
32215
32216         * configure.ac (all_outputs): Remove mklibgcc.
32217         * configure: Regenerated.
32218
32219 2007-01-03  Josh Conner  <jconner@apple.com>
32220
32221         PR middle-end/29683
32222         * calls.c (compute_argument_addresses): Set stack and stack_slot
32223         for partial args, too.
32224         (store_one_arg): Use locate.size.constant for the size when
32225         generating a save_area.
32226
32227 2007-01-03  Robert Kennedy <jimbob@google.com>
32228
32229         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
32230         whose definitions are deleted due to basic block merging.
32231
32232 2007-01-03  Paul Brook  <paul@codesourcery.com>
32233
32234         PR target/16634
32235         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
32236         functions.
32237         (use_return_insn): Return 0 for Thumb interrupt functions.
32238         (print_multi_reg): Add rfe argument for IRQ returns.
32239         (arm_output_epilogue): Pop interrupt return address directly into PC.
32240         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
32241
32242 2007-01-03  Paul Brook  <paul@codesourcery.com>
32243
32244         Merge from sourcerygxx-4_1.
32245         * config/arm/thumb2.md: New file.
32246         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
32247         Thumb-2.
32248         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
32249         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32250         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
32251         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
32252         tables.
32253         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32254         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
32255         comptibility.
32256         * config/arm/ieee754-sf.S: Ditto.
32257         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
32258         (thumb1_base_register_rtx_p): ... to this.
32259         (thumb_index_register_rtx_p): Rename...
32260         (thumb1_index_register_rtx_p): ... to this.
32261         (thumb_output_function_prologue): Rename...
32262         (thumb1_output_function_prologue): ... to this.
32263         (thumb_legitimate_address_p): Rename...
32264         (thumb1_legitimate_address_p): ... to this.
32265         (thumb_rtx_costs): Rename...
32266         (thumb1_rtx_costs): ... to this.
32267         (thumb_compute_save_reg_mask): Rename...
32268         (thumb1_compute_save_reg_mask): ... to this.
32269         (thumb_final_prescan_insn): Rename...
32270         (thumb1_final_prescan_insn): ... to this.
32271         (thumb_expand_epilogue): Rename...
32272         (thumb1_expand_epilogue): ... to this.
32273         (arm_unwind_emit_stm): Rename...
32274         (arm_unwind_emit_sequence): ... to this.
32275         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
32276         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
32277         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
32278         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
32279         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
32280         thumb2_output_casesi): New functions.
32281         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
32282         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
32283         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
32284         THUMB2_WORK_REGS): Define.
32285         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
32286         arm_condexec_mask, arm_condexec_masklen)): New variables.
32287         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
32288         (arm_override_options): Check new CPU capabilities.
32289         Set new architecture flag variables.
32290         (arm_isr_value): Handle v7m interrupt functions.
32291         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
32292         Thumb-2.
32293         (const_ok_for_arm): Handle Thumb-2 constants.
32294         (arm_gen_constant): Ditto.  Use movw when available.
32295         (arm_function_ok_for_sibcall): Return false for v7m interrupt
32296         functions.
32297         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
32298         (thumb_find_work_register, arm_load_pic_register,
32299         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
32300         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
32301         print_multi_reg, output_mov_long_double_fpa_from_arm,
32302         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
32303         output_mov_double_fpa_from_arm, output_move_double,
32304         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
32305         output_return_instruction, arm_output_function_prologue,
32306         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
32307         arm_output_mi_thunk, thumb_set_return_address): Ditto.
32308         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
32309         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
32310         (arithmetic_instr, shift_op): Use arm_shift_nmem.
32311         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
32312         '!' and 'L'.
32313         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
32314         (thumb_expand_prologue): Use thumb_set_frame_pointer.
32315         (arm_file_start): Output directive for unified syntax.
32316         (arm_unwind_emit_set): Handle stack alignment instruction.
32317         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
32318         Add v6t2, v7, v7a, v7r and v7m.
32319         (RETLDM): Add Thumb-2 code.
32320         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
32321         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
32322         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
32323         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
32324         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
32325         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
32326         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
32327         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
32328         ADJUST_INSN_LENGTH): Define.
32329         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
32330         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
32331         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
32332         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
32333         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
32334         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
32335         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
32336         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
32337         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
32338         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
32339         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
32340         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
32341         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
32342         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
32343         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
32344         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
32345         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
32346         cortex-m3.
32347         * config/arm/arm-tune.md: Regenerate.
32348         * config/arm/arm-protos.h: Update prototypes.
32349         * config/arm/vfp.md: Enable patterns for Thumb-2.
32350         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
32351         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
32352         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
32353         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
32354         * config/arm/libunwind.S: Add Thumb-2 code.
32355         * config/arm/constraints.md: Update include Thumb-2.
32356         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
32357         * config/arm/ieee754-df.S: Ditto.
32358         * config/arm/bpabi.S: Ditto.
32359         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
32360         * config/arm/predicates.md (low_register_operand,
32361         low_reg_or_int_operand, thumb_16bit_operator): New.
32362         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
32363         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
32364         * config/arm/t-arm-elf: Add armv7 multilib.
32365         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
32366         Include thumb2.md.
32367         (UNSPEC_STACK_ALIGN, ce_count): New.
32368         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
32369         arm_zero_extendsidi2, arm_zero_extendqidi2): New
32370         insns/expanders.
32371         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
32372         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
32373         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
32374         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
32375         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
32376         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
32377         insns.
32378         * doc/extend.texi: Document ARMv7-M interrupt functions.
32379         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
32380
32381 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
32382
32383         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
32384         (struct _Unwind_Context): Rename args_size to flags, remove
32385         signal_frame field, add a new args_size field and version field.
32386         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
32387         _Unwind_IsExtendedContext): New inline functions.
32388         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
32389         Assume by_value array is only present if _Unwind_IsExtendedContext.
32390         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
32391         _Unwind_IsSignalFrame.
32392         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
32393         (uw_update_context_1): Use _Unwind_SetSignalFrame.
32394         (uw_init_context_1): Initialize context->flags to
32395         EXTENDED_CONTEXT_BIT.
32396         * config/rs6000/linux-unwind.h (frob_update_context): Use
32397         _Unwind_SetSignalFrame.
32398
32399 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32400
32401         PR middle-end/30353
32402         * gimplify.c (gimplify_modify_expr_complex_part): Move below
32403         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
32404         the value.
32405
32406 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
32407
32408         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
32409         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
32410         RET, AT_SP): Remove.
32411         * config/i386/i386.md (*sse_prologue_save_insn): Use return
32412         instead of RET.
32413
32414         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32415         * cfgbuild.c (find_basic_blocks): Likewise.
32416         * cfgrtl.c (rtl_create_basic_block): Likewise.
32417         * function.c (temp_slots_at_level): Likewise.
32418         * reg-stack.c (stack_regs_mentioned): Likewise.
32419         * regclass.c (allocate_reg_info): Likewise.
32420         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32421         set_bb_for_stmt, move_block_to_fn): Likewise.
32422         * tree-complex.c (tree_lower_complex): Likewise.
32423         * vec.h (VEC_safe_grow_cleared): New.
32424
32425         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
32426
32427 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
32428
32429         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
32430         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
32431         to loop_version.
32432         * cfgloopmanip.c (scale_loop_frequencies): Export.
32433         (loopify): Scale the frequencies by prescribed coefficients.
32434         (set_zero_probability): New function.
32435         (duplicate_loop_to_header_edge): Improve updating of frequencies.
32436         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
32437         and frequencies according to arguments.
32438         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
32439         correctly.
32440         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
32441         * modulo-sched.c (sms_schedule): Set probabilities for entering
32442         versioned loop correctly.
32443         * tree-vect-transform.c (vect_transform_loop): Ditto.
32444         * cfgloop.h (loopify, loop_version): Declaration changed.
32445         (scale_loop_frequencies): Declared.
32446
32447 2007-01-02  Jan Hubicka  <jh@suse.cz>
32448
32449         * cgraph.c: Include tree-flow.h
32450         (cgraph_add_new-function): Handle IPA_SSA mode; execute
32451         early_local_passes.
32452         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
32453         * tree-pass.h (pass_all_early_optimizations): Declare.
32454         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
32455         early_local_passes.
32456         (cgraph_analyze_function): Do early_local_passes.
32457         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32458         Do not add referenced vars.
32459         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
32460         SSA form.
32461         (gate_all_early_local_passes): New gate.
32462         (pass_early_local_passes): Use new gate.
32463         (execute_early_local_optimizations): New functions.
32464         (gate_all_early_optimizations): New gate.
32465         (pass_all_early_optimizations): New pass.
32466         (execute_free_datastructures): Free SSA only when initialized.
32467         (gate_init_datastructures): Init only when optimizing.
32468         (tree_lowering_passes): Do early local passes when called late.
32469         * tree-profile.c (do_tree_profiling): Don't profile functions added
32470         late.
32471         (do_early_tree_profiling, pass_early_tree_profile): Kill.
32472         * tree-cfg.c (update_modified_stmts): Do not update when operands are
32473         not active.
32474         * passes.c (init_optimizations_passes): Reorder so we go into SSA
32475         during early_local_passes.
32476         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
32477
32478
32479 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32480
32481         * Makefile.in: Update copyright year.
32482
32483 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32484
32485         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
32486         in $(lang_checks) and check-consistency targets.
32487
32488 2007-01-02  Jan Hubicka  <jh@suse.cz>
32489
32490         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32491         Do not add referenced vars.
32492         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
32493         are not active.
32494         * passes.c (init_optimization_passes): Put mudflap_2 after
32495         free_datastructures.
32496
32497 2007-01-02  Jan Hubicka  <jh@suse.cz>
32498
32499         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
32500         Set NOTHROW flag on call statements proved to be nothrow.
32501         Update statement of local calls so new pure/const functions are
32502         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
32503         goto receivers.
32504         (tree_rest_of_compilation): Register hooks and initialize bitmap
32505         early. Do not set after_inlining flag.
32506
32507 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
32508
32509         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
32510         HOST_BITS_PER_LONGLONG
32511
32512 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
32513
32514         PR c/19977
32515         * c-typeck.c (store_init_value): Don't emit pedantic overflow
32516         warning for non-static initializers.
32517
32518 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
32519
32520         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
32521         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
32522         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
32523         Always use set_unique_reg_note to add REG_EQUAL notes.
32524
32525 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32526
32527         Revert:
32528         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32529
32530         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32531         * cfgbuild.c (find_basic_blocks): Likewise.
32532         * cfgrtl.c (rtl_create_basic_block): Likewise.
32533         * function.c (temp_slots_at_level): Likewise.
32534         * reg-stack.c (stack_regs_mentioned): Likewise.
32535         * regclass.c (allocate_reg_info): Likewise.
32536         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32537         set_bb_for_stmt, move_block_to_fn): Likewise.
32538         * tree-complex.c (tree_lower_complex): Likewise.
32539         * vec.h (VEC_safe_grow_cleared): New.
32540
32541 2007-01-02  Ian Lance Taylor  <iant@google.com>
32542
32543         * c-common.c (c_common_truthvalue_conversion): When warning about
32544         using an assignment as a truth value, set TREE_NO_WARNING.
32545
32546 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32547
32548         PR middle-end/7651
32549         * c.opt (Wold-style-declaration): New.
32550         * doc/invoke.texi (C-only Warning Options): New.
32551         (Wold-style-declaration): Document it.
32552         (Wextra): Enabled by -Wextra.
32553         * c-opts.c (c_common_post_options): Enabled by -Wextra.
32554         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
32555         -Wold-style-declaration.
32556
32557 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32558
32559         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32560         * cfgbuild.c (find_basic_blocks): Likewise.
32561         * cfgrtl.c (rtl_create_basic_block): Likewise.
32562         * function.c (temp_slots_at_level): Likewise.
32563         * reg-stack.c (stack_regs_mentioned): Likewise.
32564         * regclass.c (allocate_reg_info): Likewise.
32565         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32566         set_bb_for_stmt, move_block_to_fn): Likewise.
32567         * tree-complex.c (tree_lower_complex): Likewise.
32568         * vec.h (VEC_safe_grow_cleared): New.
32569
32570 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
32571
32572         * c-common.c (c_common_nodes_and_builtins): Since variants of
32573         void_type_node get built before it is given a name, we need to
32574         give those variants the name, too.
32575         (complete_array_type): We need to work with the canonical main
32576         type of the array, from which we will build the qualified version.
32577         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
32578         * print-tree.c (print_node): Display canonical type information
32579         for each type.
32580         * stor-layout.c (layout_type): When we don't know the
32581         alignment of a type for which we're building an array, we end up
32582         guessing wrong, so make the type require structural equality.
32583         * tree.c (make_node_stat): When we build a new type, it is its
32584         own canonical type.
32585         (build_type_attribute_qual_variant): When building an attribute
32586         variant, its canonical type is the non-attribute variant. However,
32587         if the attributes are target-dependent and they differ, we need to
32588         use structural equality checks for this type.
32589         (build_qualified_type): A qualified type is not equivalent to its
32590         unqualified variant; set the canonical type appropriately.
32591         (build_distinct_type_copy): When building a distinct type from
32592         another type, the new type is its own canonical type.
32593         (build_variant_type_copy): When building a new type variant, we
32594         assume that it is equivalent to the original type.
32595         (build_pointer_type_for_mode): When building a pointer type, also
32596         build a canonical type pointer.
32597         (build_reference_type_for_mode): When building a reference type,
32598         also build a canonical type reference.
32599         (build_index_type): When we can't hash an index type (e.g.,
32600         because its maximum value is negative), the index type requires
32601         structural equality tests.
32602         (build_array_type): Build the canonical form of an array type.
32603         (build_function_type): Function types require structural equality,
32604         because they contain default arguments, attributes, etc.
32605         (build_method_type_directly): Ditto for method types.
32606         (build_offset_type): Build the canonical offset type.
32607         (build_complex_type): Build the canonical vector type.
32608         (make_vector_type): Build the canonical vector type.
32609         * tree.h (TYPE_CANONICAL): New.
32610         (TYPE_STRUCTURAL_EQUALITY_P): New.
32611         (SET_TYPE_STRUCTURAL_EQUALITY): New.
32612         (struct tree_type): Added "canonical" field.
32613         * params.h (VERIFY_CANONICAL_TYPES): New.
32614         * doc/c-tree.texi (TYPE_CANONICAL): Document.
32615         (TYPE_STRUCTURAL_EQUALITY_P): Document.
32616         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
32617         * doc/invoke.texi (verify-canonical-types): Document --param
32618         parameter for verifying canonical types.
32619
32620 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32621
32622         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
32623         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
32624         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
32625         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
32626         tm_file.
32627         * config/rs6000/e500.h: New.
32628         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
32629         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
32630         Remove.
32631         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
32632         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
32633         TARGET_E500_DOUBLE): Remove.
32634         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
32635         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
32636         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
32637         * config/rs6000/rs6000.c (rs6000_override_options): Use
32638         CHECK_E500_OPTIONS.
32639
32640 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32641
32642         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
32643         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
32644         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
32645         rs6000_emit_cmove): Don't check TARGET_E500.
32646         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
32647         sordered): Don't check TARGET_E500.
32648
32649 2007-01-01  Eric Christopher  <echristo@apple.com>
32650
32651         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
32652         HARD_REGISTER_NUM_P.
32653
32654 2007-01-01  Roger Sayle  <roger@eyesopen.com>
32655
32656         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
32657         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
32658         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
32659         eq/ne Y".
32660
32661 2007-01-01  Mike Stump  <mrs@apple.com>
32662
32663         * configure.ac: Remove support for building with Apple's gcc-3.1.
32664
32665 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32666
32667         PR middle-end/30311
32668         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
32669         REG is a hard register.  Do not modify REG before calling
32670         subreg_nregs.
32671         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
32672         multiple of the size of YMODE for certain lowpart cases.
32673
32674 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32675
32676         PR middle-end/30253
32677         * gimplify (voidify_wrapper_expr): Update for
32678         GIMPLE_MODIFY_STMT.
32679
32680 2007-01-01  Andreas Schwab  <schwab@suse.de>
32681
32682         PR target/29166
32683         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
32684         save of BR0 in extra_spill_size instead of spill_size.
32685         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
32686         area.
32687         (ia64_expand_epilogue): Restore BR0 from its new location.
32688
32689 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32690
32691         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
32692         Use a temporary variable if the left hand side is not a gimple
32693         register.
32694
32695 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32696
32697         * gimplify.c (gimplify_return_expr): Make the temporary variable
32698         for the return expression, a gimple register variable.
32699
32700 2007-01-01  Jan Hubicka  <jh@suse.cz>
32701
32702         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
32703         INSN_LIST.
32704
32705 2007-01-01  Mike Stump  <mrs@apple.com>
32706
32707         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
32708         .literal16.
32709         * config/darwin.c (machopic_select_rtx_section): Use
32710         HAVE_GAS_LITERAL16.
32711         (darwin_mergeable_constant_section): Likewise.
32712         * configure: Regenerate.
32713         * config.in: Regenerate.
32714
32715 2007-01-01  Jan Hubicka  <jh@suse.cz>
32716             Andrew Pinski  <pinskia@gmail.com>
32717
32718         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
32719         before starting IPA passes.