OSDN Git Service

6d0a5468922ac39f634f288aabdc4857d8e2cd53
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-11-21  Hans-Peter Nilsson  <hp@axis.com>
2
3         * regclass.c (init_reg_autoinc): Fix typo preventing test of
4         secondary output reload when setting forbidden_inc_dec_class.
5
6 2007-11-21  Richard Guenther  <rguenther@suse.de>
7
8         PR tree-optimization/34148
9         * tree-ssa-structalias.c (create_variable_info_for): Do not use
10         field-sensitive PTA for single-element structures.
11         * tree-ssa-alias.c (create_overlap_variables_for): Do not create
12         SFTs for single-element structures.
13
14 2007-11-20  Richard Guenther  <rguenther@suse.de>
15
16         PR middle-end/34154
17         * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
18         of the signed INT_CST_LT.
19         * stmt.c (expand_case): Likewise.
20         (estimate_case_costs): Likewise.
21
22 2007-11-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
23
24         * read-rtl.c (fatal_expected_char): Print EOF as text rather that
25         its binary representation.
26
27 2007-11-20  Richard Guenther  <rguenther@suse.de>
28
29         * tree-ssa-operands.c (add_virtual_operand): Consistently prune
30         accesses.
31
32 2007-11-20  Thiemo Seufer  <ths@mips.com>
33
34         * config/mips/mips.c (mips_file_start): Add support for
35         flagging 32-bit code with -mfp64 floating-point.
36
37 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
38
39         PR c/34146
40         * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
41         (c_gimplify_expr): Use it.
42
43 2007-11-20  Ben Elliston  <bje@au.ibm.com>
44
45         * config/spu/spu_mfcio.h: Fix typo.
46
47 2007-11-20  Ben Elliston  <bje@au.ibm.com>
48
49         * unwind.inc: Comment that unwind-sjlj.c includes this file.
50
51 2007-11-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
52             Ben Elliston  <bje@au.ibm.com>
53
54         * config/spu/mfc_tag_release.c: New file.
55         * config/spu/mfc_multi_tag_release.c: Likewise.
56         * config/spu/mfc_multi_tag_reserve.c: Likewise.
57         * config/spu/mfc_tag_release.c: Likewise.
58         * config/spu/mfc_tag_reserve.c: Likewise.
59         * config/spu/mfc_tag_table.c: Likewise.
60         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
61         (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
62         * config/spu/spu_mfcio.h: Avoid <stdint.h>.
63         (uint64_t): Typedef if __IN_LIBGCC2 is defined.
64         (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
65         (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
66         mfc_multi_tag_release): Likewise.
67         (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
68         __mfc_multi_tag_release): Declare.
69
70 2007-11-19  Jason Merrill  <jason@redhat.com>
71
72         PR debug/28834, debug/29436, c/32326
73         * tree.c (build_type_attribute_qual_variant): Refuse to make
74         a distinct copy of a struct/enum type.  Use build_distinct_type_copy.
75         * doc/extend.texi (Type Attributes): Don't encourage people to add
76         attributes to struct/enum types in a typedef.  Fix
77         transparent_union example.
78
79         * tree-inline.c (remap_type_1): Remove code that's redundant with
80         remap_type.
81         (build_duplicate_type): Set id.copy_decl.
82         * c-common.c (handle_transparent_union_attribute): Simplify logic.
83
84 2007-11-19  Peter Bergner  <bergner@vnet.ibm.com>
85
86         * config/rs6000/rs6000.c (invalid_e500_subreg,
87         rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
88         rs6000_legitimize_address, rs6000_legitimize_reload_address,
89         rs6000_legitimate_address, function_arg_advance,
90         spe_build_register_parallel, rs6000_spe_function_arg,
91         rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
92         emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
93         rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
94         TDmode similarly to DFmode and TFmode.
95         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
96         DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
97
98 2007-11-19  Eric Botcazou  <ebotcazou@adacore.com>
99
100         * stor-layout.c (lang_adjust_rli): Delete.
101         (set_lang_adjust_rli): Likewise.
102         (layout_type): Do not call lang_adjust_rli hook.
103         * tree.h (set_lang_adjust_rli): Delete.
104
105 2007-11-19  Bernd Schmidt  <bernd.schmidt@analog.com>
106         
107         * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
108         n_dregs_to_save and n_pregs_to_save.
109         (n_pregs_to_save, n_dregs_to_save): Use it.  New argument CONSECUTIVE;
110         all callers changed.
111         (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
112         able to save single D/P registers that aren't saved by the push/pop
113         multiple insns.
114
115 2007-11-19  Richard Guenther  <rguenther@suse.de>
116
117         PR tree-optimization/34099
118         * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
119         MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
120         if only one operand is undefined.
121
122 2007-11-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
123
124         PR tree-optimization/34036
125         * opts.c (set_fast_math_flags): Do not set flags in common
126         with set_unsafe_math_optimizations_flags, invoke it directly.
127         (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
128         and flag_signed_zeros.
129         * toplev.c (process_options): Force flag_associative_math to 0 and
130         warn, if it is set and either flag_trapping_math or flag_signed_zeros
131         is set too.
132         * doc/invoke.texi (Optimize Options): Document the new behavior
133         of -funsafe-math-optimizations, that -fassociative-math requires
134         both -fno-signed-zeros and -fno-trapping-math and make it clear
135         that -fno-trapping-math requires -fno-signaling-nans.  Refactor
136         documentation of -ffast-math.
137
138 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
139
140         PR rtl-optimization/34132
141         * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
142         and insn.
143
144         PR middle-end/33335
145         * optabs.h (optab_table): Change type to struct optab from optab.
146         (convert_optab_table): Similarly.
147         Adjust all _optab macros to expand to addresses of optab_table
148         resp. convert_optab_table elements rather than the values of the
149         elements.
150         * optabs.c (optab_table): Change typype to struct optab from optab.
151         If compiled by recent GCC, initialize all the insn_code fields in
152         the array using designated range initializers.
153         (convert_optab_table): Similarly.
154         (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
155         set_conv_libfunc): Into libfunc_entry's optab field store index within
156         optab_table resp. convert_optab_table array instead of difference
157         between two separately malloced addresses.
158         (new_optab): Add op argument, don't return anything.  Initialize
159         just the insn_code field in handlers array and only when needed.
160         (init_optab, init_optabv): Add op argument, don't return anything.
161         Adjust new_optab caller.
162         (new_convert_optab): Removed.
163         (init_convert_optab): Add op argument, don't return anything, don't
164         call new_convert_optab.  If needed, initialize insn_code field in
165         handlers array.
166         (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
167         callers.
168         (debug_optab_libfuncs): Adjust uses of optab_table and
169         convert_optab_table arrays.
170
171 2007-11-18  Richard Guenther  <rguenther@suse.de>
172
173         PR tree-optimization/34127
174         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
175         Make code match up the comments, require compatibility of the
176         pointed-to types.
177
178 2007-11-17  Richard Guenther  <rguenther@suse.de>
179
180         PR middle-end/34130
181         * fold-const.c (extract_muldiv_1): Do not move negative
182         constants inside ABS_EXPR.
183
184 2007-11-16  Ian Lance Taylor  <iant@google.com>
185
186         * collect2.c (dump_file): If a demangled symbol is followed by a
187         space, make sure we output at least one space.
188
189 2007-11-16  Richard Guenther  <rguenther@suse.de>
190
191         PR middle-end/34030
192         * fold-const.c (fold_binary): Use correct types for folding
193         1 << X & Y to Y >> X & 1.
194
195 2007-11-16  Richard Guenther  <rguenther@suse.de>
196
197         PR tree-optimization/33870
198         * tree.h (struct tree_memory_tag): Add base_for_components flag.
199         (struct tree_struct_field_tag): Remove nesting_level field.
200         (SFT_NESTING_LEVEL): Remove.
201         (SFT_BASE_FOR_COMPONENTS_P): Add.
202         * tree-flow.h (struct fieldoff): Remove nesting_level field.  Add
203         base_for_components flag.
204         (push_fields_onto_fieldstack): Remove nesting_level parameter.
205         * tree-ssa-alias.c (create_sft): Likewise.  Add base_for_components
206         parameter.
207         (create_overlap_variables_for): Deal with it.
208         * tree-dfa.c (dump_subvars_for): Likewise.
209         (dump_variable): Likewise.
210         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
211         Set base_for_components for first elements of sub-structures.
212         (create_variable_info_for): Handle base_for_components.
213         (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
214         pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
215         * tree-ssa-operands.c (ref_nesting_level): Remove.
216         (add_vars_for_offset): Remove full_ref parameter, always add
217         the offset of the pointed-to SFT.
218         (add_virtual_operand): Adjust for changed signature of
219         add_vars_for_offset.
220
221 2007-11-16  Sa Liu  <saliu@de.ibm.com>
222
223         * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined 
224         floatunssidf2 and floatunsdidf2.
225
226 2007-11-16  Richard Guenther  <rguenther@suse.de>
227
228         PR tree-optimization/34113
229         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
230         Use correct conversion direction for checking type compatibility.
231
232 2007-11-16  Richard Guenther  <rguenther@suse.de>
233
234         PR tree-optimization/34099
235         * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
236         that produce UNDEFINED result if at least one of its operands
237         is UNDEFINED.  By default the result is only UNDEFINED if all
238         operands are UNDEFINED.
239
240 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
241
242         PR driver/30460
243         * gcc.c (init_spec): Don't initialize asm_debug here...
244         (main): ... but here.
245
246 2007-11-07  Tom Tromey  <tromey@redhat.com>
247
248         * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to
249         'func'. 
250         * tree-parloops.c (create_loop_fn): Use set_cfun.
251         * gengtype.c (open_base_files): Emit #undef cfun.
252         * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
253         * function.h (cfun): New define.
254         * function.c: Undefine cfun.
255
256 2007-11-07  Eric B. Weddington  <eweddington@cso.atmel.com>
257
258         * config/avr/avr.c (avr_mcu_types): Add attiny88.
259         * config/avr/avr.h (LINK_SPEC): Likewise.
260         (CRT_BINUTILS_SPECS): Likewsie.
261         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
262
263 2007-11-15  Jakub Jelinek  <jakub@redhat.com>
264
265         PR middle-end/23848
266         * tree-ssa-ccp.c (optimize_stack_restore): New function.
267         (execute_fold_all_builtins): Call optimize_stack_restore for
268         BUILT_IN_STACK_RESTORE.
269
270 2007-11-15  Paolo Bonzini  <bonzini@gnu.org>
271
272         * fwprop.c (try_fwprop_subst): Skip profitability check for forward
273         propagation into an address; that's done in should_replace_address.
274                 
275 2007-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
276
277         * config/spu/spu-protos.h (legitimate_const): Remove prototype.
278         * config/spu/spu.c (legitimate_const): Remove.
279         (classify_immediate): Inline call to legitimate_const.
280         (spu_legitimate_address): Likewise.  Allow SYMBOL_REF + CONST_INT
281         for any constant, not just -512 .. 511.
282
283 2007-11-15  Sa Liu  <saliu@de.ibm.com>
284
285         * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
286         condition from HONOR_NANS test.
287         * config/spu/spu.md (ceq_df): Always generate comparison code
288         inline, including checks for NaNs and infinities.
289         (cgt_df): Likewise.
290         (cgt_v2df): Likewise.
291         (cmpdf): Make this expander unconditional.
292
293 2007-11-15  Richard Guenther  <rguenther@suse.de>
294
295         * tree-ssa-alias.c (create_overlap_variables_for): Make sure
296         to only create SFTs if we also create variable infos for PTA.
297         * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping
298         SFTs.
299
300 2007-11-15  Richard Guenther  <rguenther@suse.de>
301
302         * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
303         type for TBAA pruning.
304         (find_what_p_points_to): Call set_uids_in_ptset with the original
305         pointer, not the decl of the solution we collapsed to.
306
307 2007-11-14  David Daney  <ddaney@avtrex.com>
308
309         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
310         to find sigcontext.
311
312 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
313
314         PR target/33923
315         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
316         for registers in BR_REGS class.
317
318 2007-11-14  Jakub Jelinek  <jakub@redhat.com>
319
320         PR middle-end/34088
321         * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
322         init_ssa_operands has not been called for cfun.
323
324 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
325
326         PR tree-optimization/34046
327         * cfg.c (update_bb_profile_for_threading): Avoid the division for the
328         scaling if the old probability is greater than the new base.
329
330 2007-11-14  Sebastian Pop  <sebastian.pop@amd.com>
331
332         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
333         unused edges after loop duplication.
334
335 2007-11-14  Uros Bizjak  <ubizjak@gmail.com>
336
337         * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
338         (enum target_cpu_default): ... this enum.
339         (TARGET_CPU_DEFAULT_NAMES): Remove macro.  Move initializer to ...
340         * config/i386/i386.c (override_options): ... here.
341         * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
342         TARGET_CPU_DEFAULT_i486.
343
344 2007-11-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
345
346         * global.c (rest_of_handle_global_alloc): Fix comment typos.
347         * config/sh/sh.c (sh_rtx_costs): Likewise.
348         * ChangeLog: Likewise.
349
350 2007-11-13  Sebastian Pop  <sebastian.pop@amd.com>
351
352         * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
353         should not be of pointer type.
354
355 2007-11-13  Michael Meissner  <michael.meissner@amd.com>
356
357         * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate
358         line.
359
360 2007-11-13  Sterling Augustine  <sterling@tensilica.com>
361             Bob Wilson  <bob.wilson@acm.org>
362         
363         * config/xtensa/unwind-dw2-xtensa.c: New.
364         * config/xtensa/unwind-dw2-xtensa.h: New.
365         * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
366         (DWARF2_UNWIND_INFO): Remove.
367         (DWARF_FRAME_REGISTERS): Define.
368         (EH_RETURN_DATA_REGNO): Define.
369         * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
370         (eh_return): New.
371         * config/xtensa/t-xtensa (LIB2ADDEH): Define.
372         
373 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
374
375         * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
376         -fsched-stalled-insns.
377
378         PR tree-optimization/34063
379         * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
380         as first chrec_fold_plus operand rather than second.
381
382 2007-11-13  Diego Novillo  <dnovillo@google.com>
383
384         PR tree-optimization/33870
385         * tree.h (strcut tree_memory_tag): add field unpartitionable.
386         remove field in_nested_struct.
387         (struct tree_struct_field_tag): add field nesting_level.
388         (sft_in_nested_struct): remove.
389         (sft_nesting_level): define.
390         (sft_unpartitionable_p): define.
391         * tree-ssa-alias.c (mem_sym_score): if mp->var is not
392         partitionable, return long_max.
393         (compute_memory_partitions): do not partition sfts marked
394         unpartitionable.
395         (create_sft): add argument nesting_level.  set
396         sft_nesting_level with it.  update all users.
397         (create_overlap_variables_for): show nesting level.
398         * tree-dfa.c (dump_subvars_for): likewise.
399         (dump_variable): likewise.
400         show whether the sft is partitionable or not.
401         * tree-flow.h (struct fieldoff): remove field
402         in_nested_struct.
403         add field nesting_level.
404         * tree-ssa-structalias.c (struct variable_info): remove
405         field in_nested_struct.
406         (push_fields_onto_fieldstack): add argument
407         nesting_level.  update all users.
408         update documentation.
409         update pair->nesting_level with nesting_level.
410         make recursive calls with nesting_level + 1.
411         (set_uids_in_ptset): if an sft is added to the points-to
412         set, mark it as unpartitionable.
413         * tree-ssa-operands.c (ref_nesting_level): new.
414         (add_vars_for_offset): call it.
415         add argument full_ref.  update
416         callers.
417         if var is inside a nested structure and the nesting level
418         of full_ref is lower than the nesting level of var,
419         adjust offset by the offset of var.
420
421 2007-11-13  Victor Kaplansky  <victork@il.ibm.com>
422
423         PR tree-optimization/32582
424         * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
425
426 2007-11-12  Danny Smith  <dannysmith@users.sourceforge.net>
427
428         * doc/extend.texi (dllimport): Document that pointers to dllimport'd
429         functions can be used as constant.
430
431 2007-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
432
433         PR rtl-optimization/34035
434         * cse.c (cse_cfg_altered): New global variable.
435         (cse_jumps_altered): Make boolean.
436         (recorded_label_ref): Likewise.
437         (cse_insn): Adjust for above changes.
438         (cse_extended_basic_block): Likewise.  Set cse_cfg_altered
439         if dead edges have been purged.
440         (cse_main): Change return value specification and adjust code.
441         (rest_of_handle_cse): Adjust for above change.
442         (rest_of_handle_cse2): Likewise.
443         * gcse.c (rest_of_handle_gcse): Likewise.
444
445 2007-11-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
446             Michael Meissner  <michael.meissner@amd.com>
447
448         * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
449         get the appropriate suffix for the coms* instruction.
450         (sse5_pcmov_<mode>): Restrict operands of pcmov
451         for scalar case to be only xmm registers and not memory.
452
453         * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
454         constraints to follow the mnemonics for the pcmov instruction   
455
456 2007-11-12  Richard Sandiford  <rsandifo@nildram.co.uk>
457
458         PR target/34042
459         * config/mips/mips.c (mips_return_fpr_single): New function.
460         (mips_function_value): Use it when returning single-field
461         aggregates in FPRs.
462         (mips_expand_call): Handle the PARALLELs created by
463         mips_return_fpr_single.
464
465 2007-11-12  Richard Guenther  <rguenther@suse.de>
466
467         PR middle-end/34070
468         * fold-const.c (fold_binary): If testing for non-negative
469         operands with tree_expr_nonnegative_warnv_p make sure to
470         use op0 which has all (sign) conversions retained.
471
472 2007-11-12  Richard Guenther  <rguenther@suse.de>
473
474         PR middle-end/34027
475         * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
476         (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
477
478 2007-11-12  Ira Rosen  <irar@il.ibm.com>
479
480         PR tree-optimization/33953
481         * tree-vect-transform.c (vectorizable_operation): In case of SLP,
482         allocate vec_oprnds1 according to the number of created vector
483         statements. In case of shift with scalar argument, store scalar operand
484         for every vector statement to be created for the SLP node. Fix a
485         comment.
486
487 2007-11-10  Steven Bosscher  <stevenb.gcc@gmail.com>
488
489         * gcse.c (CUID_INSN): Remove.
490         (cuid_insn): Ditto.
491         (alloc_gcse_mem): Don't allocate cuid_insn.
492         (free_gcse_mem): Don't free cuid_insn.
493
494 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
495
496         PR fortran/34020
497         * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
498         nops.
499
500         PR middle-end/34018
501         * tree-inline.h (copy_body_data): Add regimplify field.
502         * tree-inline.c (copy_body_r): Set id->regimplify to true
503         if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
504         substitutions.
505         (copy_bb): Clear id->regimplify before walk_tree, if it is
506         set afterwards, regimplify the whole statement.
507
508         PR tree-optimization/33680
509         * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
510         if the added cast involves variable length types.
511
512 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
513             Maxim Kuvyrkov  <maxim@codesourcery.com>
514
515         * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
516         instead of TRUE_BARRIER for jumps.  Add register dependencies
517         even when reg_pending_barrier is set.
518
519 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
520
521         * haifa-sched.c (haifa_classify_insn): Rename to ...
522         (haifa_classify_rtx): ...  this.  Improve handling of COND_EXECs,
523         handle PARALLELs by recursing.  Use it ...  
524         (haifa_classify_insn): ...  here.  Reimplement.
525
526 2007-11-09  Richard Guenther  <rguenther@suse.de>
527
528         * bitmap.h (bitmap_single_bit_set_p): Declare.
529         * bitmap.c (bitmap_single_bit_set_p): New function.
530         * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
531         (maybe_create_global_var): Use bitmap_empty_p.
532
533 2007-11-09  Paolo Bonzini  <bonzini@gnu.org>
534             Jakub Jelinek  <jakub@redhat.com>
535
536         PR rtl-optimization/34012
537         * fwprop.c (try_fwprop_subst): Do not replace if the new
538         SET_SRC has a higher cost than the old one.
539
540 2007-11-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
541
542         PR rtl-optimization/33732
543         * reload.c (push_reload): Check that the REG_DEAD note was referring
544         to a hardreg or to a pseudo that has been assigned exactly one hardreg
545         before considering it in order to select the reload register.
546         (combine_reloads): Likewise.
547         (find_dummy_reload): Likewise.
548
549 2007-11-09  Richard Guenther  <rguenther@suse.de>
550
551         * tree-flow.h (struct ptr_info_def): Make escape_mask a
552         ENUM_BITFIELD.
553         (struct ptr_info_def): Likewise.
554         (enum escape_type): Also use bit zero.
555
556 2007-11-09  Richard Guenther  <rguenther@suse.de>
557
558         PR tree-optimization/33604
559         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
560         Disregard changes in CV qualifiers of pointed to types for
561         forward propagating ADDR_EXPRs.
562         * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
563         expression.
564
565 2007-11-09  Richard Sandiford  <rsandifo@nildram.co.uk>
566
567         * dse.c (find_shift_sequence): Always choose an integer mode for
568         new_mode.
569         (replace_read): Require both the read and store mode to be
570         integer ones.  Remove a then-redundant FLOAT_P check.
571
572 2007-11-08  Richard Guenther  <rguenther@suse.de>
573
574         * tree-dfa.c (remove_referenced_var): If removing a
575         variable which has subvars, also remove those from
576         the referenced vars.  Do not create a variable annotation.
577
578 2007-11-08  Bob Wilson  <bob.wilson@acm.org>
579
580         * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
581         argument for gen_entry calls.
582         * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
583         (entry): Use the new attribute value.  Remove unused first operand.
584
585 2007-11-08  Tom Tromey  <tromey@redhat.com>
586
587         * c-parser.c (c_parser_translation_unit): Use location in error.
588         (c_parser_external_declaration): Likewise.
589         (c_parser_declaration_or_fndef): Likewise.
590         (c_parser_enum_specifier): Likewise.
591         (c_parser_struct_or_union_specifier): Likewise.
592         (c_parser_struct_declaration): Likewise.
593         (c_parser_typeof_specifier): Likewise.
594         (c_parser_parms_list_declarator): Likewise.
595         (c_parser_asm_string_literal): Likewise.
596         (c_parser_braced_init): Likewise.
597         (c_parser_initelt): Likewise.
598         (c_parser_compound_statement_nostart): Likewise.
599         (c_parser_statement_after_labels): Likewise.
600         (c_parser_do_statement): Likewise.
601         (c_parser_asm_statement): Likewise.
602         (c_parser_conditional_expression): Likewise.
603         (c_parser_unary_expression): Likewise.
604         (c_parser_sizeof_expression): Likewise.
605         (c_parser_postfix_expression): Likewise.
606         (c_parser_postfix_expression_after_paren_type): Likewise.
607         (c_parser_objc_class_instance_variables): Likewise.
608         (c_parser_objc_method_definition): Likewise.
609         (c_parser_objc_methodprotolist): Likewise.
610         (c_parser_pragma): Likewise.
611         (c_parser_omp_clause_num_threads): Likewise.
612         (c_parser_omp_clause_schedule): Likewise.
613         (c_parser_omp_all_clauses): Likewise.
614         (c_parser_omp_sections_scope): Likewise.
615         (c_parser_label): Use location of label, not colon.
616
617 2007-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
618
619         PR target/33774
620         * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
621         IN_TARGET_LIBS.
622
623 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
624
625         PR middle-end/33826
626         * ipa-pure-const.c (static_execute): Added code to keep recursive
627         functions from being marked as pure or const.
628         * ipa-utils.c (searchc): Fixed comment.
629                 
630 2007-11-08  Tom Tromey  <tromey@redhat.com>
631
632         * common.opt (fshow-column): Default to 0.
633         * configure: Rebuilt.
634         * configure.ac (--enable-mapped-location): Default to 'yes'.
635
636 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
637
638         * common.opt: Add pointer to doc/options.texi.
639         * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
640         -fipa-reference): Add or correct doc.  Sorted options list for -Os
641         -O, -O2.
642
643 2007-11-07  Bernhard Fischer  <aldot@gcc.gnu.org>
644
645         PR target/16350
646         * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
647         * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
648         TARGET_BIG_ENDIAN_DEFAULT.  Use for MULTILIB_DEFAULTS.
649         (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
650         (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
651         * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
652         to TARGET_BIG_ENDIAN_DEFAULT.
653         (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
654         * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
655         to TARGET_BIG_ENDIAN_DEFAULT.
656
657 2007-11-07  Diego Novillo  <dnovillo@google.com>
658
659         * tree.h (struct tree_struct_field_tag): Move field
660         in_nested_struct ...
661         (struct tree_memory_tag): ... here.
662
663 2007-11-07  Diego Novillo  <dnovillo@google.com>
664
665         PR 33870
666         * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
667         (SFT_IN_NESTED_STRUCT): Define.
668         * tree-dfa.c (dump_subvars_for): Show offset of each
669         sub-var.
670         * tree-flow.h (struct fieldoff): Add field in_nested_struct.
671         * tree-ssa-structalias.c (struct variable_info): Likewise.
672         (push_fields_onto_fieldstack): If OFFSET is positive,
673         set in_nested_struct.
674         (create_variable_info_for): Copy setting of
675         in_nested_struct from the field offset object.
676         (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
677         variable info object.
678         * tree-ssa-operands.c (add_vars_for_offset): If VAR
679         belongs to a nested structure, adjust OFFSET by
680         SFT_OFFSET(VAR).
681
682 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
683
684         PR rtl-optimization/33737
685         * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
686         target block after computing the probabilities of outgoing edges.
687         Cap the frequency to BB_FREQ_MAX.
688         * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
689         frequency of the basic block if it has been reused.
690
691 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
692
693         PR rtl-optimization/33822
694         * rtl.h (REG_OFFSET): Fix comment.
695         * var-tracking.c (INT_MEM_OFFSET): New macro.
696         (var_mem_set): Use it.
697         (var_mem_delete_and_set): Likewise.
698         (var_mem_delete): Likewise.
699         (same_variable_part_p): Likewise.
700         (vt_get_decl_and_offset): Likewise.
701         (offset_valid_for_tracked_p): New predicate.
702         (count_uses): Do not track locations with invalid offsets.
703         (add_uses): Likewise.
704         (add_stores): Likewise.
705
706 2007-11-07  Tom Tromey  <tromey@redhat.com>
707
708         * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
709         (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
710
711 2007-11-07  Dmitry Zhurikhin  <zhur@ispras.ru>
712             Andrey Belevantsev  <abel@ispras.ru>
713
714         * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
715         generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
716         (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
717         Save calculated max_asap in it.         
718         (sms_schedule): Calculate maxii using max_asap.
719
720 2007-11-07  Andreas Krebbel  <krebbel1@de.ibm.com>
721
722         * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
723         with -mhard-dfp/-mno-hard-dfp.
724
725 2007-11-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
726             Jakub Jelinek  <jakub@redhat.com>
727
728         PR middle-end/33670
729         * haifa-sched.c (check_sched_flags): Remove.
730         (sched_init): Don't call it.
731
732 2007-11-06  Diego Novillo  <dnovillo@google.com>
733
734         * tree-flow.h (struct fieldoff): Reformat comment.
735         Document fields.
736         * tree-ssa-operands.c: Tidy top-level comments.
737         (add_vop): Likewise.
738         (add_vars_for_offset): Tidy parameter formatting..
739         (get_addr_dereference_operands): Likewise.
740         (get_indirect_ref_operands): Likewise.
741         (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
742         <OMP_ATOMIC_STORE>: Likewise.
743
744 2007-11-06  Rask Ingemann Lambertsen  <rask@sygehus.dk>
745
746         PR target/32787
747         * config/i386/driver-i386.c: Test for __GNUC__ instead of
748         GCC_VERSION which is always defined.
749
750 2007-11-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
751
752         PR target/30961
753         * reload1.c (find_reloads): Also check in_reg when handling a
754         simple move with an input reload and a destination of a hard
755         register.
756
757 2007-11-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
758
759         * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
760         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
761         TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
762         TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
763         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
764         (m68k_sched_attr_type2): New function.
765         (sched_adjust_cost_state): New static variable.
766         (m68k_sched_adjust_cost): New static function implementing
767         scheduler hook.
768         (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
769         New static variables.
770         (m68k_sched_variable_issue): New static function implementing
771         scheduler hook.
772         (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
773         (sched_dump_split_class): New static function.
774         (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
775         variables.
776         (sched_dump_dfa_class, m68k_sched_dump): New static function.
777         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
778         m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
779         m68k_sched_dfa_post_advance_cycle): New static functions implementing
780         scheduler hooks.
781
782         * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
783         (CPU_UNITS_QUERY): Define.
784
785         * config/m68k/cf.md: New file.
786         * config/m68k/m68.md (cf.md): New include.
787
788 2007-11-06  Tom Tromey  <tromey@redhat.com>
789
790         PR c++/32256, PR c++/32368:
791         * function.c (saved_in_system_header): New global.
792         (push_cfun): Save in_system_header.
793         (pop_cfun): Restore in_system_header.
794         (push_struct_function): Save in_system_header.
795
796 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
797
798         PR c++/33977
799         PR c++/33886
800         * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
801         (complete_array_type): Set canonical type appropriately.
802         * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
803         C and C++ front ends now have different versions of this function,
804         because the C++ version needs to maintain canonical types here.
805
806 2007-11-04  Razya Ladelsky  <razya@il.ibm.com>
807         
808         * tree-parloops.c (reduction_info): Remove reduction_init field.
809         (initialize_reductions): Remove creation of the reduction_init variable.
810         (struct data_arg): Remove.
811         (add_field_for_reduction, create_stores_for_reduction): New functions.
812         (add_field_for_name): Remove reduction handling.
813         (separate_decls_in_loop): Call add_field_for_reduction,
814         create_stores_for_reduction.
815
816 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
817
818         PR tree-optimization/33458
819         * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
820         !is_gimple_val PHI argument, gimplify it and insert it on edge.
821
822         PR tree-optimization/33993
823         * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
824         rather than build_constructor_from_list if all list values are
825         constants.
826         (get_initial_def_for_induction): Use build_vector instead of
827         build_constructor_from_list.
828
829 2007-11-05  Mark Mitchell  <mark@codesourcery.com>
830
831         PR target/33579
832         * tree.h (DECL_INIT_PRIORITY): Do not require
833         DECL_HAS_INIT_PRIORITY_P.
834         (DECL_FINI_PRIORITY): Likewise.
835         * tree.c (decl_init_priority_lookup): Remove assert.
836         (decl_fini_priority_insert): Likewise.
837         * cgraphunit.c (static_ctors): Make it a VEC.
838         (static_dtors): Likewise.
839         (record_cdtor_fn): Adjust accordingly.
840         (build_cdtor): Generate multiple functions for each initialization
841         priority.
842         (compare_ctor): New function.
843         (compare_dtor): Likewise.
844         (cgraph_build_cdtor_fns): Sort the functions by priority before
845         calling build_cdtor.
846         (cgraph_build_static_cdtor): Put the priority in the function's
847         name.
848
849 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
850
851         PR driver/32632
852         * common.opt: Add shared and pie.
853
854 2007-11-05  Bob Wilson  <bob.wilson@acm.org>
855
856         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
857         replace references to virtual_stack_vars_rtx in goto_handler.
858
859 2007-11-05  Paul Brook  <paul@codesourcery.com>
860
861         * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
862         * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
863         (arm_file_start): Don't set Tag_ABI_PCS_wchar_t.  Call
864         arm_lang_output_object_attributes_hook.
865         * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
866         (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
867         * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
868         prototype.
869         * config/arm/t-arm.c (arm.o): New rule.
870         * config/arm/arm-c.c: New file.
871
872 2007-11-05  Nick Clifton  <nickc@redhat.com>
873             Sebastian Pop  <sebastian.pop@amd.com>
874
875         PR tree-optimization/32540
876         PR tree-optimization/33922
877         * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
878         * tree-ssa-pre.c: Include params.h.
879         (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
880         to limit the maximum length of the PA set for a given block.
881         * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
882         * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
883
884 2007-11-05  Nathan Sidwell  <nathan@codesourcery.com>
885
886         * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
887         __fixunssfDI): Make return type unsigned.
888         * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
889         __fixunssfDI): Make return type unsigned.
890
891 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
892
893         PR tree-optimization/33856
894         * tree-data-ref.c (get_references_in_stmt): Don't add
895         REFERENCE_CLASS_P trees to references vector if get_base_address
896         returns NULL on them.
897
898 2007-11-05  Alexandre Oliva  <aoliva@redhat.com>
899
900         * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
901
902 2007-11-04  Andrew Pinski  <pinskia@gmail.com>
903
904         PR middle-end/32931
905         * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
906         for TRUTH_NOT_EXPR to type.
907
908 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
909
910         * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
911
912 2007-11-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
913
914         PR fortran/10220
915         * dwarf2out.c (add_calling_convention_attribute): Change
916         second argument. Set calling convention to DW_CC_program for
917         Fortran main program.
918         (gen_subprogram_die): Adjust to new prototype for
919         add_calling_convention_attribute.
920
921 2007-11-03  Dorit Nuzman  <dorit@il.ibm.com>
922
923         PR tree-optimization/33987
924         * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
925         Fix indentation.
926         (vectorizable_reduction): Add type check.
927
928 2007-11-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
929
930         PR c/29062
931         * c-parser.c (c_parser_statement_after_labels): Error if a
932         declaration is parsed after a label.
933         
934 2007-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
935
936         PR debug/33921
937         * reorg.c (emit_delay_sequence): Do not clear the locator on
938         the jump instruction.
939
940 2007-11-03  Jakub Jelinek  <jakub@redhat.com>
941
942         PR middle-end/33670
943         * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
944         current sched region.
945
946 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
947
948         * config/ia64/ia64.c (struct reg_write_state): Change into
949         unsigned short bitfields rather than unsigned int, decrease
950         first_pred to just 10 bits.
951         (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
952         into two char array.
953         (rws_insn_set, rws_insn_test): New functions.
954         (in_safe_group_barrier): New variable.
955         (rws_update): Remove first argument, always set rws_sum array.
956         (rws_access_regno): Use rws_insn_set macro.  Only call rws_update
957         or update rws_sum if !in_safe_group_barrier, adjust rws_update
958         args.
959         (rtx_needs_barrier): Use rws_insn_test macro.
960         (safe_group_barrier_needed): Don't save/restore rws_sum array,
961         instead set/clear in_safe_group_barrier flag.
962
963 2007-11-02  Bob Wilson  <bob.wilson@acm.org>
964
965         * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
966         REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
967         pointer or frame pointer.
968         * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
969         (MUST_USE_SJLJ_EXCEPTIONS): Define.
970         (DWARF2_UNWIND_INFO): Define.
971         (INCOMING_RETURN_ADDR_RTX): Define.
972         (DWARF_FRAME_RETURN_COLUMN): Define.
973
974 2007-11-02  Tom Tromey  <tromey@redhat.com>
975
976         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
977         traversing pool.
978
979 2007-11-02  Diego Novillo  <dnovillo@google.com>
980
981         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
982         argument from function pointer ANALYZE_EXPR.  Update all
983         users.
984         * cgraph.c (debug_cgraph_node): New.
985         (debug_cgraph): New.
986
987 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
988
989         PR rtl-optimization/33648
990         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
991         the newly created basic block.
992
993 2007-11-01  Richard Guenther  <rguenther@suse.de>
994
995         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
996
997 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
998
999         PR rtl-optimization/33828
1000         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
1001         of VBEIN and VBEOUT.
1002
1003 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
1004
1005         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
1006         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
1007         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
1008
1009 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
1010
1011         * gcc.c (getenv_spec_function): Escape the environment variable's
1012         value.
1013
1014 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1015
1016         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
1017         show that CSE means common subexpression elimination.  Change wording
1018         for -fsee and define LCM.  Remove capitalization of optimizations
1019         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
1020
1021 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1022
1023         PR testsuite/25352
1024         * doc/sourcebuild.texi (Test Directives): Document that xfail
1025         has no effect for dg-do except when dg-do-what is "run".
1026
1027 2007-11-01  Tom Tromey  <tromey@redhat.com>
1028
1029         * c-decl.c (grokdeclarator): Set decl source locations.
1030         * c-parser.c (c_parser_enum_specifier): Set location.
1031         (c_parser_struct_or_union_specifier): Likewise.
1032
1033 2007-11-01  Tom Tromey  <tromey@redhat.com>
1034
1035         * print-tree.c (print_node): Print column number.
1036
1037 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
1038
1039         PR debug/33537
1040         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
1041         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
1042         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
1043
1044         PR rtl-optimization/33673
1045         * gcse.c (cprop_jump): If a conditional jump has been optimized
1046         into unconditional jump, make the remaining normal edge fallthru
1047         and delete the jump insn.
1048
1049 2007-11-01  Ben Elliston  <bje@au.ibm.com>
1050
1051         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
1052         (set_mem_attrs_from_reg): Likewise.
1053
1054 2007-11-01  Michael Matz  <matz@suse.de>
1055
1056         PR tree-optimization/33961
1057         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
1058         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
1059         (add_or_mark_expr): New argument 'store', using it to search
1060         the hash table.
1061         (nt_init_block): Adjust calls to add_or_mark_expr.
1062
1063 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
1064
1065         PR target/31507
1066         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
1067         for the first push_operand.
1068
1069 2007-10-31  Revital Eres  <eres@il.ibm.com>
1070
1071         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
1072         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
1073         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
1074         movmisalignv2sf, vcondv2sf): New.
1075         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
1076         UNSPEC_EXTODD_V2SF): Define new constants.
1077         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
1078         paired_emit_vector_cond_expr): New.
1079         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
1080         * config/rs6000/rs6000.c (paired_expand_vector_move,
1081         paired_emit_vector_cond_expr, paired_emit_vector_compare):
1082         New functions.
1083         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
1084
1085 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
1086
1087         PR tree-optimization/32377
1088         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
1089         work also for unknown number of iterations.
1090         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
1091         number of iterations is not known.
1092
1093 2007-10-31  Richard Guenther  <rguenther@suse.de>
1094
1095         PR middle-end/33779
1096         * fold-const.c (extract_muldiv_1): Make sure to not introduce
1097         new undefined integer overflow.
1098         (fold_binary): Avoid useless conversion.
1099
1100 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1101
1102         PR target/33948
1103         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P
1104         check.
1105
1106 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
1107
1108         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
1109
1110         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
1111         with -mhard-dfp/-mno-hard-dfp.
1112         * config/s390/s390.opt: Likewise.
1113         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
1114         definition.
1115
1116 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1117
1118         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
1119
1120 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1121
1122         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
1123         optimization options.
1124         (Optimize Options): Add -fdce and -fdse to the list of optimizations
1125         enabled by -O.  Document -fdce and -fdse.
1126
1127 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
1128
1129         PR c++/33709
1130         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
1131         convert second operand of COMPOUND_EXPR to the original type of
1132         that argument.
1133
1134 2007-10-30  Richard Guenther  <rguenther@suse.de>
1135
1136         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
1137         of loop adding SFTs as virtual operands.
1138
1139 2007-10-30  Richard Guenther  <rguenther@suse.de>
1140
1141         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
1142
1143 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
1144
1145         PR tree-optimization/32893
1146         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
1147         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
1148
1149 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1150
1151         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
1152         x86_64 versions.
1153         (sub_ddmmss): Likewise.
1154         (umul_ppmm): Likewise.
1155         (udiv_qrnnd): Likewise.
1156
1157 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
1158
1159         PR testsuite/24841
1160         * doc/sourcebuild.texi (Test Directives): Document that dg-require
1161         directives must come before dg-additional-sources.
1162
1163 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
1164
1165         PR tree-optimization/33723
1166         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
1167         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
1168
1169 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
1170
1171         PR tree-optimization/33614
1172         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
1173         if they can't be reduced to VECTOR_CSTs and aren't legitimate
1174         initializer constants.
1175
1176 2007-10-29  Richard Guenther  <rguenther@suse.de>
1177
1178         PR tree-optimization/33870
1179         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
1180         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
1181         SFTs.
1182
1183 2007-10-29  Richard Guenther  <rguenther@suse.de>
1184
1185         * passes.c (init_optimization_passes): Exchange store_copy_prop
1186         with copy_prop.
1187         * tree-pass.h (pass_store_copy_prop): Remove.
1188         * tree-ssa-copy.c (do_store_copy_prop): Remove.
1189         (stmt_may_generate-copy): Do not handle store_copy_prop.
1190         (get_copy_of_val): Likewise.
1191         (set_copy_of_val): Likewise.
1192         (copy_prop_visit_assignment): Likewise.
1193         (copy_prop_visit_stmt): Likewise.
1194         (copy_prop_visit_phi_node): Likewise.
1195         (init_copy_prop): Likewise.
1196         (execute_copy_prop): Likewise.
1197         (do_copy_prop): Remove.
1198         (gate_store_copy_prop): Likewise.
1199         (store_copy_prop): Likewise.
1200         (pass_store_copy_prop): Likewise.
1201         (pass_copy_prop): Call execute_copy_prop.
1202         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
1203         * common.opt (ftree-store-copy-prop): Mark obsolete.
1204         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
1205
1206 2007-10-29  Ian Lance Taylor  <iant@google.com>
1207
1208         * ifcvt.c (noce_can_store_speculate_p): New static function.
1209         (noce_process_if_block): Call it.
1210         (if_convert): Remove recompute_dominance parameter.  Change all
1211         callers.
1212
1213 2007-10-29  Richard Guenther  <rguenther@suse.de>
1214
1215         * tree-flow-inline.h (get_subvar_at): Use binary search.
1216         (get_first_overlapping_subvar): New function to binary search
1217         for the first overlapping subvar.
1218         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
1219         just handle adding subvars for a pointed-to subvar.  Optimize
1220         and use get_first_overlapping_subvar.
1221         (add_vars_for_bitmap): Fold into single caller.
1222         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
1223         and non pointed-to bits of add_vars_for_offset.
1224
1225 2007-10-29  Revital Eres  <eres@il.ibm.com> 
1226
1227         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
1228
1229 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
1230             Zdenek Dvorak  <ook@ucw.cz>
1231
1232         OMP_ATOMIC Changes,
1233         reduction support for automatic parallelization.
1234
1235         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
1236         OMP_ATOMIC_STORE.
1237         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
1238         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
1239         and OMP_ATOMIC_STORE.
1240         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1241         * gimple-low.c (lower_stmt): Same.
1242         * gimplify.c (gimplify_expr): Same.
1243         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
1244         gimplify_omp_atomic_mutex): Remove.
1245         (gimplify_omp_atomic): Change it to simply gimplify the
1246         statement instead of expanding it.
1247         * omp-low.c: Add includes to optabs.h, cfgloop.h.
1248         (expand_omp_atomic, expand_omp_atomic_pipeline,
1249         goa_stabilize_expr, expand_omp_atomic_mutex,
1250         expand_omp_atomic_fetch_op): New functions to implement
1251         expansion of OMP_ATOMIC.
1252         (expand_omp, build_omp_regions_1): Add support for
1253         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
1254         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
1255         OMP_ATOMIC_STORE.
1256         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
1257         OMP_ATOMIC_STORE.
1258         * tree-parloops.c: add include to tree-vectorizer.h.
1259         (reduction_info): New structure for reduction.
1260         (reduction_list): New list to represent list of reductions per loop.
1261         (struct data_arg): New helper structure for reduction.
1262         (reduction_info_hash, reduction_info_eq, reduction_phi,
1263         initialize_reductions, create_call_for_reduction,
1264         create_phi_for_local_result, create_call_for_reduction_1,
1265         create_loads_for_reductions, create_final_loads_for_reduction):
1266         New functions.
1267         (loop_parallel_p): Identify reductions, add reduction_list parameter.
1268         (separate_decls_in_loop_name): Support reduction variables.
1269         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
1270         call create_loads_for_reduction for each reduction.
1271         (canonicalize_loop_ivs): Identify reductions, add reduction_list
1272         parameter.
1273         (transform_to_exit_first_loop): Add reduction support, add
1274         reduction_list parameter.
1275         (gen_parallel_loop): Add reduction_list parameter.  Add call
1276         separate_decls_in_loop with
1277         the new argument.  Traverse reductions and call
1278         initialize_reductions, create_call_for_reduction.
1279         (parallelize_loops): Create and delete the reduction list.
1280         (add_field_for_name): Change use of data parameter.  Add fields for
1281         reductions.
1282         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
1283         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
1284         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1285         * tree-inline.c (estimate_num_insns_1): add cases for
1286         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1287         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1288         * tree-ssa-operands.c (get_addr_dereference_operands):
1289         New function.  Subroutine of get_indirect_ref_operands.
1290         (get_indirect_ref_operands): Call get_addr_dereference_operands.
1291         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
1292
1293
1294 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
1295
1296         * config/cris/cris.c: Include df.h.
1297         (cris_address_cost): Add gcc_assert for canonicalization
1298         assumptions.  For PLUS with MULT or register, correct
1299         test for register in other arm.  Tweak comments.
1300
1301 2007-10-28  Richard Guenther  <rguenther@suse.de>
1302
1303         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
1304         telling if the var is to be treated as points-to location.
1305         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
1306         (add_virtual_operand): Only recurse into MPTs if aliases
1307         is from a NMT.
1308
1309 2007-10-28  Richard Guenther  <rguenther@suse.de>
1310
1311         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
1312         (add_vars_for_bitmap): Do not recurse further.  Only add vars
1313         for pointed-to SFTs.
1314         (add_virtual_operand): Re-instantiate loop to add operands for
1315         aliases.  Recurse into MPTs.
1316         (get_indirect_ref_operands): If we fall back to use a pointers
1317         SMT, make sure to not prune based on the access offset and size.
1318
1319 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
1320
1321         PR tree-opt/33589
1322         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
1323         the eh information on the statement.
1324
1325 2007-10-28  Richard Guenther  <rguenther@suse.de>
1326
1327         * tree-flow.h (subvar_t): Make it a VEC.
1328         (struct subvar): Remove.
1329         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
1330         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
1331         variable subvars.
1332         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
1333         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
1334         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
1335         (set_initial_properties): Likewise.
1336         (setup_pointers_and_addressables): Likewise.
1337         (new_type_alias): Likewise.
1338         (create_overlap_variables_for): Likewise.
1339         * tree-dfa.c (dump_subvars_for): Likewise.
1340         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
1341         (get_expr_operands): Likewise.
1342         (add_to_addressable_set): Likewise.
1343         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
1344
1345 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
1346
1347         PR tree-optimization/33920
1348         * tree-if-conv.c (tree_if_conversion): Force predicate of single
1349         successor bb to true when predecessor bb has NULL predicate.
1350         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
1351
1352 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1353
1354         * config/mips/mips.md: Add combiner patterns for DImode extensions
1355         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
1356         for consistency.
1357
1358 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1359
1360         PR target/33895
1361         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
1362
1363 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1364
1365         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
1366         LIBCALL notes if they are about to be moved to the same insn.
1367
1368 2007-10-27  Richard Guenther  <rguenther@suse.de>
1369
1370         PR tree-optimization/33870
1371         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
1372         duplication.  Remove redundant call to access_can_touch_variable.
1373         (add_vars_for_bitmap): New helper for recursing over MPT contents.
1374         (add_virtual_operand): Use it.
1375
1376 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1377
1378         PR fortran/31608
1379         * pa.h (ASM_PN_FORMAT): Delete define.
1380
1381 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
1382
1383         * doc/invoke.texi (Option Summary, optimizations): Remove
1384         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
1385         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
1386         -fsplit-wide-types to match later entry.  Break up a long line.
1387         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
1388         missing @gol to the end of a line.
1389         (Optimization Options): Remove -fbounds-check, which is also
1390         documented under Code Generation Options.  Remove =n from
1391         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
1392         to -fcprop-registers to match other options, and say when it is
1393         enabled rather than disabled.  Remove extra index entry for
1394         -fno-cx-limited-range.  Add index entries for -fstack-protector
1395         and -fstack-protector-all.
1396         (Code Gen Options): Add index entry for -ftls-model.
1397
1398 2007-10-26  Anatoly Sokolov <aesok@post.ru>
1399
1400         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
1401         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
1402         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
1403         expand_epilogue, output_movhi): Don't handle 'main' function.
1404         (avr_attribute_table): Add 'OS_task' function attribute.
1405         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
1406         'is_OS_task' field.
1407         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
1408         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
1409         'main' function.
1410         * config/avr/avr.opt (minit-stack): Remove.
1411
1412 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
1413
1414         * tree-nested.c (get_trampoline_type): Fix thinko.
1415
1416 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
1417
1418         PR c++/33601
1419         * tree.c (build_offset_type): Build canonical type based on the
1420         TYPE_MAIN_VARIANT of the base type.
1421
1422 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
1423
1424         * reorg.c (emit_delay_sequence): Move insn locator from the
1425         first insn to the sequence.
1426
1427 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
1428
1429         * ipa-pure-const.c (check_decl): Return immediately when
1430         pure_const_state has been set to IPA_NEITHER.
1431
1432 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1433
1434         PR tree-optimization/33833
1435         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
1436         and convert init to sizetype in inner_base construction.
1437
1438 2007-10-25  Richard Guenther  <rguenther@suse.de>
1439
1440         * tree-flow.h (mem_sym_stats): Remove.
1441         (dump_mem_sym_stats_for_var): Declare.
1442         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
1443         (mem_sym_stats): Move ...
1444         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
1445         (mem_sym_score): Rename from ...
1446         (pscore): ... this.  Remove.
1447         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
1448         not the frequencies.
1449         (compare_mp_info_entries): Make sort stable by disambiguating
1450         on DECL_UID.
1451
1452 2007-10-25  Ira Rosen  <irar@il.ibm.com>
1453
1454         PR tree-optimization/33866
1455         * tree-vect-transform.c (vectorizable_store): Check operands of all
1456         the stmts in the group of strided accesses. Get def stmt type for each
1457         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
1458
1459 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
1460
1461         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
1462         (Yt): Rename register constraint to Y2.
1463         * config/i386/sse.md: Use renamed register constraints.
1464         * config/i386/mmx.md: Ditto.
1465         * config/i386/i386.md: Ditto.
1466
1467 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1468
1469         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
1470
1471 2007-10-24  Chao-ying Fu  <fu@mips.com>
1472
1473         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
1474         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
1475
1476 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1477             Olga Golovanevsky <olga@il.ibm.com>
1478         
1479         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
1480         the compiler that wr.wrap and wr.domain are initialized in
1481         any case.
1482
1483 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
1484
1485         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
1486         to print gcov_type values.
1487
1488 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
1489
1490         * config/avr/avr.h: Do not include progmem_section definition when
1491         building with IN_TARGET_LIBS.
1492
1493 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1494
1495         PR target/33755
1496         * config/mips/mips.c (mips_lo_sum_offset): New structure.
1497         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
1498         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
1499         (mips_orphaned_high_part_p: New functions.
1500         (mips_avoid_hazard): Don't check INSN_P here.
1501         (mips_avoid_hazards): Rename to...
1502         (mips_reorg_process_insns): ...this.  Cope with
1503         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
1504         or turn them into nops.
1505         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
1506         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
1507         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
1508         (mips_override_options): Set flag_delayed_branch to 0.
1509
1510 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1511
1512         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
1513         MIPS-specific implementation details.
1514         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
1515         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
1516         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
1517         for targets with movmemsi.
1518         (MOVE_BY_PIECES_P): Define.
1519         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
1520         (mips_block_move_loop): Add a bytes_per_iter argument.
1521         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
1522         Update call to mips_block_move_loop.
1523
1524 2007-10-24  Michael Matz  <matz@suse.de>
1525
1526         PR debug/33868
1527         * var-tracking.c (variable_union): Don't break after one loop
1528         iteration but only when a difference is found.
1529         (dump_variable): Also print DECL_UID.
1530
1531 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1532
1533         * ipa-type-escape.h: Expose function
1534         is_array_access_through_pointer_and_index.
1535         * ipa-type-escape.c
1536         (is_array_access_through_pointer_and_index):
1537         Add three new parameters. Add support of
1538         POINTER_PLUS_EXPR tree code.
1539
1540 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
1541
1542         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
1543         * tree-pass.h: Add pass_ipa_struct_reorg.
1544         * common.opt: Add ipa-struct-reorg flag.
1545         * Makefile.in: Add ipa-strcut-reorg.o compilation.
1546         * passes.c: Add pass pass_ipa_struct_reorg.
1547         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
1548         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
1549
1550 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1551
1552         PR tree-optimization/33804
1553         * tree-vect-transform.c (vectorizable_operation): Remove the
1554         checks that the vectorization is worthwhile from the transformation
1555         phase.
1556
1557 2007-10-24  Ira Rosen  <irar@il.ibm.com>
1558
1559         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
1560         vectype cannot be determined for the scalar type.
1561         (vect_analyze_slp_instance): Likewise.
1562         * tree-vect-transform.c (vect_model_reduction_cost): Change the
1563         return type to bool. Return false if vectype cannot be determined 
1564         for the scalar type.
1565         (vect_get_constant_vectors): Return false if vectype cannot be
1566         determined for the scalar type.
1567         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
1568         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
1569         vectorizable_reduction): Likewise.      
1570
1571 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1572
1573         * config.gcc: For a FreeBSD target, parse the value of ${target}
1574         to determine the value of FBSD_MAJOR, instead of adding an
1575         explicit check for every possible FreeBSD major version.
1576
1577 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
1578
1579         PR rtl-optimization/33846
1580         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
1581
1582 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
1583
1584         PR tree-optimization/33860
1585         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
1586         interleaved accesses in case the dr is inside the inner-loop during
1587         outer-loop vectorization.
1588
1589 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
1590
1591         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
1592         Document MEM_POINTER.  Replace mentions of "integrated"
1593         field with "return_val".  Delete outdated stuff.
1594
1595 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
1596
1597         * config/rs6000/rs6000.c (rs6000_override_options): Set
1598         rs6000_altivec_abi on AIX.
1599         (conditional_register_usage): Set VR20:31 fixed on AIX.
1600
1601 2007-10-23  Richard Guenther  <rguenther@suse.de>
1602
1603         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
1604         SSA_NAME pointers.
1605
1606 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
1607         David S. Miller  <davem@davemloft.net>
1608
1609         * df-scan.c (df_get_call_refs): Mark global registers as both a
1610         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
1611
1612 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
1613
1614         PR tree-optimization/33834
1615         PR tree-optimization/33835
1616         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
1617         stmts need to be checked for success seperately.
1618         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
1619         Remove the check that stmt is not LIVE.
1620         (vectorizable_assignment, vectorizable_induction): Likewise.
1621         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1622         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
1623         Likewise.
1624         (vectorizable_live_operation): Check that op is not NULL. 
1625
1626 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
1627
1628         * doc/invoke.texi (Optimization Options): In the summary, show
1629         that the value for options -falign-jumps, -falign-labels,
1630         -falign-loops, -falign-functions, -fsched-stalled-insns, and
1631         -fsched-stalled-insns-dep is optional.  In the summary, show that
1632         -fsched-stalled-insns takes an optional argument and that
1633         -fparallelize-loops takes an argument.  Add opindex for several
1634         optimization options, and fix typos in the opindex commands for
1635         several others.  In the descriptions for -fsched-stalled-insns
1636         and -fsched-stalled-insns-dep, show the options with and without
1637         values.
1638
1639 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
1640
1641         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
1642         produced.
1643         * config/avr/avr.h (LINK_SPEC): Likewise.
1644         (CRT_BINUTILS_SPECS): Likewsie.
1645         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1646
1647 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
1648
1649         PR rtl-optimization/33644
1650         * cfgcleanup.c: Do not include dce.h.
1651         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
1652         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
1653         * dce.c (something_changed): Delete.
1654         (libcall_dead_p): New predicate.
1655         (delete_unmarked_insns): Use it to delete dead libcalls.
1656         Deal with REG_LIBCALL and REG_RETVAL notes.
1657         (prescan_libcall_for_dce): New function.
1658         (prescan_insns_for_dce): Use it to deal with libcalls.
1659         (mark_reg_dependencies): Do nothing special for libcalls.
1660         (dce_process_block): Likewise.
1661         (fast_dce): Delete unused local variable.
1662         (run_fast_dce): Do not return a value.
1663         * dce.h (struct df): Delete.
1664         (run_fast_dce): Adjust prototype.
1665         * optabs.c (libcall_id): Delete.
1666         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
1667         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
1668         * reload1.c (reload): Delete REG_LIBCALL_ID case.
1669         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
1670         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
1671         notes instead of REG_LIBCALL_ID notes.
1672         * reg-notes.def (LIBCALL_ID): Delete.
1673         * Makefile.in (see.o): Add dce.h dependency.
1674         (cfgcleanup.o): Remove dce.h dependency.
1675
1676 2007-10-22  Michael Matz  <matz@suse.de>
1677
1678         PR tree-optimization/33855
1679         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
1680         and VECTOR_TYPE.
1681
1682 2007-10-22  Ira Rosen  <irar@il.ibm.com>
1683
1684         PR tree-optimization/33854
1685         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1686         FLOAT_EXPR to the list of promotion operations. 
1687
1688 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1689
1690         PR target/29473
1691         PR target/29493
1692         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
1693         (print_reg): Print register prefix only with AT&T asm syntax. 
1694         Support pc_rtx for RIP register.
1695         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
1696         relative addressing.  Always print segment register prefix with AT&T
1697         asm syntax and never with Intel asm syntax.
1698         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
1699         Fix prefix for 16-byte XFmode operands.
1700         (output_addr_const_extra): Support Intel asm syntax.
1701         (x86_file_start): Don't use register prefix with Intel asm syntax.
1702         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
1703         ("return_internal_long"): Fix Intel asm syntax output.
1704         ("set_got_rex64"): Support Intel asm syntax.
1705         ("set_rip_rex64"): Likewise.
1706         ("set_got_offset_rex64"): Likewise.
1707         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
1708         syntax.
1709         ("*tls_global_dynamic_64"): Likewise.
1710         ("*tls_local_dynamic_base_64"): Likewise.
1711         ("*load_tp_si")("*load_tp_di"): Likewise.
1712         ("*add_tp_si")("*add_tp_di"): Likewise.
1713         ("*tls_dynamic_lea_64"): Likewise.
1714         ("*sibcall_value_1_rex64_v"): Likewise.
1715         ("stack_tls_protect_set_si"): Likewise.
1716         ("stack_tls_protect_set_di"): Likewise.
1717         ("stack_tls_protect_test_si"): Likewise.
1718         ("stack_tls_protect_test_di"): Likewise.
1719         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
1720         syntax output.
1721         ("*movv2sf_internal_rex64"): Likewise.
1722         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
1723         (__get_cpuid_max): Likewise.
1724
1725 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1726
1727         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
1728         the STRICT_P argument type "bool" rather than "int".
1729         (mips_legitimate_address_p): Likewise.
1730         (fp_register_operand, lo_operand): Delete.
1731         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1732         (mips_emit_scc): Rename to...
1733         (mips_expand_scc): ...this.
1734         (gen_conditional_branch): Rename to...
1735         (mips_expand_conditional_branch): ...this.
1736         (gen_conditional_move): Rename to...
1737         (mips_expand_conditional_move): ...this.
1738         (mips_gen_conditional_trap): Rename to...
1739         (mips_expand_conditional_trap): ...this and take an rtx code instead
1740         of an operands array.
1741         (mips_expand_call): Give the SIBCALL_P argument type "bool"
1742         rather than "int".
1743         (mips_emit_fcc_reload): Rename to...
1744         (mips_expand_fcc_reload): ...this.
1745         (init_cumulative_args): Rename to...
1746         (mips_init_cumulative_args): ...this and remove the libname argument.
1747         (function_arg_advance): Rename to...
1748         (mips_function_arg_advance): ...this.
1749         (function_arg): Rename to...
1750         (mips_function_arg): ...this and use "rtx" instead of
1751         "struct rtx_def *".
1752         (function_arg_boundary): Rename to...
1753         (mips_function_arg_boundary): ...this.
1754         (mips_expand_unaligned_load): Rename to...
1755         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1756         and BITPOS arguments type "HOST_WIDE_INT".
1757         (mips_expand_unaligned_store): Rename to...
1758         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1759         and BITPOS arguments type "HOST_WIDE_INT".
1760         (override_options): Rename to...
1761         (mips_override_options): ...this.
1762         (print_operand): Rename to...
1763         (mips_print_operand): ...this.
1764         (print_operand_address): Rename to...
1765         (mips_print_operand_address): ...this.
1766         (mips_output_ascii): Remove the PREFIX argument.
1767         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1768         rather than "int".
1769         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1770         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
1771         of "struct rtx_def *".
1772         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1773         rather than "int".
1774         (build_mips16_call_stub): Delete.
1775         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1776         (mips_use_ins_ext_p): Give the second and third arguments type
1777         "HOST_WIDE_INT" rather than "rtx".
1778         * config/mips/mips.h: Update after the above changes.  Tweak comments
1779         and formatting.
1780         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
1781         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
1782         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1783         element type from "char" to "bool".
1784         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
1785         (mips_cpu_info_table): Delete.
1786         * config/mips/mips.md: Update after the above changes.  Tweak some
1787         formatting.
1788         * config/mips/mips-ps-3d.md: Likewise.
1789         * config/mips/mips.c: Tweak comments and formatting.
1790         Use NULL-like macros rather than 0 in various places.
1791         (mips_section_threshold): Rename to...
1792         (mips_small_data_threshold): ...this and give it an unsigned type.
1793         (num_source_filenames): Remove explicit initialization.
1794         (sdb_label_count): Likewise.
1795         (sym_lineno): Delete.
1796         (set_noat): Make static.
1797         (mips_branch_likely): Likewise, and give it type "bool".
1798         (mips_isa_info): Rename to...
1799         (mips_isa_option_info): ...this.
1800         (mips_flag_delayed_branch): Rename to...
1801         (mips_base_delayed_branch): ...this.
1802         (mips_split_addresses): Delete.
1803         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
1804         element type from "char" to "bool".
1805         (mips_regno_to_class): Add an explicit array size.
1806         (mips16_flipper): Change from type "int" to type "bool".
1807         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
1808         (mips_tls_operand_p): Rename to...
1809         (mips_tls_symbol_p): ...this.
1810         (mips_global_symbol_p): Remove redundant "const".
1811         (mips_offset_within_alignment_p): Simplify.
1812         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
1813         to STRICT_P and give it type bool.
1814         (mips_valid_base_register_p): Likewise.
1815         (mips_classify_address): Likewise.
1816         (mips_legitimate_address_p): Likewise.
1817         (mips16_unextended_reference_p): Take the offset as an
1818         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
1819         (mips_const_insns): Use IN_RANGE.
1820         (mips_force_temporary): Remove an unnecessary copy_rtx.
1821         (mips16_gp_pseudo_reg): Simplify.
1822         (mips_split_symbol): Remove an unnecessary copy_rtx.
1823         (mips_legitimize_tls_address): Only create registers if we need them.
1824         (mips_legitimize_address): Use mips_split_plus.
1825         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
1826         variable COST to NUM_OPS.
1827         (mips_legitimize_move): Use gen_lowpart.
1828         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
1829         (m16_check_op): Use IN_RANGE.
1830         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
1831         (mips_split_doubleword_move): Pass booleans to mips_subword.
1832         (mips_output_move): Store the mode in a local variable.
1833         Explicitly assert that this function does not deal with
1834         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
1835         cases more consistent.
1836         (mips_relational_operand_ok_p): Rename to...
1837         (mips_int_order_operand_ok_p): ...this.
1838         (mips_canonicalize_comparison): Rename to...
1839         (mips_canonicalize_int_order_test): ...this.
1840         (mips_emit_int_relational): Rename to...
1841         (mips_emit_int_order_test): ...this.  Store the mode in a local
1842         variable.
1843         (mips_reverse_fp_cond_p): Rename to...
1844         (mips_reversed_fp_cond): ...this.
1845         (mips_emit_compare): Make the order of the statements more consistent.
1846         (mips_emit_scc): Rename to...
1847         (mips_expand_scc): ...this.
1848         (gen_conditional_branch): Rename to...
1849         (mips_expand_conditional_branch): ...this.
1850         (gen_conditional_move): Rename to...
1851         (mips_expand_conditional_move): ...this.  Build the condition
1852         separately from the main pattern.
1853         (mips_gen_conditional_trap): Rename to...
1854         (mips_expand_conditional_trap): ...this and take an rtx code instead
1855         of an operands array.  Simplify.
1856         (init_cumulative_args): Rename to...
1857         (mips_init_cumulative_args): ...this.  Use memset rather than a
1858         copy from a zeroed static.  Use prototype_p and stdarg_p.
1859         (mips_arg_info): Rename to...
1860         (mips_get_arg_info): ...this and put the INFO argument first.
1861         (function_arg): Rename to...
1862         (mips_function_arg): ...this and use "rtx" instead of
1863         "struct rtx_def *".  Only split structures into chunks if 
1864         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
1865         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
1866         comparison with REAL_TYPE.  Rename local variable REG to REGNO
1867         and make it unsigned.
1868         (function_arg_advance): Rename to...
1869         (mips_function_arg_advance): ...this.
1870         (function_arg_boundary): Rename to...
1871         (mips_function_arg_boundary): ...this.
1872         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
1873         with MODE_INT.
1874         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
1875         comparison with REAL_TYPE.
1876         (mips_function_value): Remove the FUNC argument.  Rename local
1877         variable UNSIGNEDP to UNSIGNED_P.
1878         (mips_return_in_memory): Use IN_RANGE.
1879         (mips_setup_incoming_varargs): Pass a boolean rather than an int
1880         to FUNCTION_ARG_ADVANCE.
1881         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
1882         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
1883         SIZE and RSIZE if needed.
1884         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
1885         rather than "int".
1886         (build_mips16_function_stub): Rename to...
1887         (mips16_build_function_stub): ...this.
1888         (build_mips16_call_stub): Rename to...
1889         (mips16_build_call_stub): ...this.  Make static, and return a
1890         "bool" rather than an "int".  Rename the ARG_SIZE argument to
1891         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
1892         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
1893         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
1894         rather than "int".
1895         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
1896         are not sibling ones.
1897         (mips_emit_fcc_reload): Rename to...
1898         (mips_expand_fcc_reload): ...this.
1899         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
1900         "HOST_WIDE_INT".
1901         (mips_expand_unaligned_load): Rename to...
1902         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
1903         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
1904         SUBREG_BYTE check.
1905         (mips_expand_unaligned_store): Rename to...
1906         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
1907         and BITPOS arguments type "HOST_WIDE_INT".
1908         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
1909         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
1910         Use IN_RANGE.
1911         (mips_init_split_addresses): Replace with...
1912         (mips_split_addresses_p): ...this new function.
1913         (mips_init_relocs): Check mips_split_addresses_p () rather than
1914         mips_split_addresses.  Always initialize mips_split_p with booleans.
1915         (print_operand_reloc): Rename to...
1916         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
1917         a fatal_error.
1918         (print_operand): Rename to...
1919         (mips_print_operand): ...this.
1920         (print_operand_address): Rename to...
1921         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
1922         (mips_in_small_data_p): Simplify.
1923         (mips_output_ascii): Remove the PREFIX argument and "register"
1924         keywords.  Use the STRING parameter directly and cast to
1925         "unsigned char".
1926         (mips16e_collect_argument_save_p): Use IN_RANGE.
1927         (mips_function_has_gp_insn): Simplify.
1928         (mips_set_return_address): Use BITSET_P.
1929         (mips_restore_gp): Use a separate statement to pick the base
1930         register.
1931         (mips_output_function_prologue): Use a local FRAME variable.
1932         (mips_save_reg): Pass booleans to mips_subword.
1933         (mips_expand_prologue): Use a local FRAME variable.  Use
1934         cprestore_size to detect when .cprestore is needed.
1935         (mips_restore_reg): Use GP_REG_FIRST.
1936         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
1937         rather than "int".  Use local FRAME and REGNO variables.
1938         (mips_can_use_return_insn): Return a "bool" rather than an "int".
1939         (mips_secondary_reload_class): Give the IN_P argument type "bool"
1940         rather than "int".
1941         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
1942         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
1943         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
1944         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
1945         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
1946         (builtin_description): Rename to...
1947         (mips_builtin_description): ...this.
1948         (mips_bdesc): Rename to...
1949         (mips_ps_bdesc): ...this.
1950         (sb1_bdesc): Rename to...
1951         (mips_sb1_bdesc): ...this.
1952         (dsp_bdesc): Rename to...
1953         (mips_dsp_bdesc): ...this.
1954         (dsp_32only_bdesc): Rename to...
1955         (mips_dsp_32only_bdesc): ...this.
1956         (bdesc_map): Rename to...
1957         (mips_bdesc_map): ...this.
1958         (bdesc_arrays): Rename to...
1959         (mips_bdesc_arrays): ...this.
1960         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
1961         Tweak error message.
1962         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
1963         Rename local variables I and J to OPNO and ARGNO respectively.
1964         Assert that the number of arguments is no more than the number of
1965         input operands.
1966         (mips_expand_builtin_compare): Use an array of arguments rather
1967         than an array of operands.  Assert that the number of operands is
1968         as expected.
1969         (add_constant): Rename to...
1970         (mips16_add_constant): ...this.  Use XNEW.
1971         (dump_constants_1): Rename to...
1972         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
1973         (dump_constants): Rename to...
1974         (mips16_emit_constants): ...this.
1975         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
1976         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
1977         Assign mips16_p to was_mips16_p.
1978         (mips_parse_cpu): Tweak warning message.
1979         (override_options): Rename to...
1980         (mips_override_options): ...this.  Move the mips_cost initialization
1981         out of the "shared with GAS" block.  Quote option names in error
1982         messages.
1983         (mips_conditional_register_usage): Make local variable REGNO unsigned.
1984         (mips_order_regs_for_local_alloc): Remove register keyword.
1985
1986 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1987
1988         * system.h (IN_RANGE): Cast each argument individually.
1989
1990 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1991
1992         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
1993         MIPS16 code unless using o32 or o64.  
1994
1995 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1996
1997         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
1998         for modes smaller than 4 bytes.
1999         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
2000         FPR alternatives.
2001
2002 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2003
2004         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
2005         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
2006         (ASM_OUTPUT_ALIGNED_BSS): Delete.
2007         * config/mips/mips.c (mips_output_aligned_bss): Delete.
2008
2009 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2010
2011         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
2012         sibling calls to "mips16" functions if the function satisfies
2013         const_call_insn_operand.
2014
2015 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2016
2017         * config/mips/mips.c (mips_va_start): Fix types in calls
2018         to build_int_cst.
2019
2020 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2021
2022         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
2023         if ISA_HAS_FP4.
2024
2025 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2026
2027         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
2028         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
2029         instead of checking mips_isa.
2030
2031 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2032
2033         * doc/invoke.texi (-mpaired-single): Don't say that the option
2034         requires 64-bit code.
2035         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
2036         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
2037         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
2038         V2SF if ISA_MIPS32R2.
2039         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
2040         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
2041         to ISA_HAS_NMADD_NMSUB.
2042         (mips_split_doubleword_move): Handle V2SF.
2043         (mips_modes_tieable_p): New function.
2044         (override_options): Report a warning rather than an error when
2045         -mpaired-single is used on ISAs that don't support it; use
2046         ISA_HAS_PAIRED_SINGLE to check that case.
2047         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
2048         and DF move splitters with a single MOVE64 splitter, thereby adding
2049         a V2SF splitter too.
2050         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
2051         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
2052         (HALFMODE): Add V2SF.
2053         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
2054         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
2055         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
2056         (movv2sf_hardfloat_32bit): New pattern.
2057         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
2058         TARGET_DOUBLE_FLOAT conditions.
2059
2060 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
2061
2062         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
2063         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
2064         64-bit register in 64-bit libgcc.
2065
2066 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
2067
2068         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
2069         * config/avr/avr.h (LINK_SPEC): Likewise.
2070         (CRT_BINUTILS_SPECS): Likewsie.
2071         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2072
2073 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2074
2075         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
2076         and -Wfatal-errors together.
2077         
2078 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
2079
2080         PR target/33812
2081         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
2082         change for vrsave, ie restore after frame pop.
2083
2084 2007-10-19  David S. Miller  <davem@davemloft.net>
2085
2086         * config/sparc/niagara2.md: Fix copyright notice.
2087
2088 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
2089
2090         PR tree-optimization/23820
2091         PR tree-optimization/24309
2092         PR tree-optimization/33766
2093         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
2094         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
2095         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
2096         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
2097         * tree-loop-linear.c (perfect_loop_nest_depth): New.
2098         (linear_transform_loops): Use perfect_loop_nest_depth.
2099         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
2100         should have a single condition: their exit.
2101
2102 2007-10-19  Richard Guenther  <rguenther@suse.de>
2103
2104         PR middle-end/33816
2105         PR middle-end/32921
2106         * stor-layout.c (layout_type): Assert that aggregates do not
2107         have their alias sets set.
2108         * alias.c (get_alias_set): Return alias set zero for incomplete
2109         types, return the alias set of the element for incomplete array
2110         types, but do not remember these.
2111
2112 2007-10-19  Richard Guenther  <rguenther@suse.de>
2113
2114         Revert
2115         2007-10-19  Richard Guenther  <rguenther@suse.de>
2116
2117         PR middle-end/32921
2118         * tree.c (build_array_type): Do not re-layout unbound array
2119         types.
2120
2121 2007-10-19  Richard Guenther  <rguenther@suse.de>
2122
2123         PR middle-end/32921
2124         * tree.c (build_array_type): Do not re-layout unbound array
2125         types.
2126
2127 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2128
2129         * config/mips/mips.c (mips_canonicalize_comparison):  Check
2130         mips_relational_operand_ok_p before trying to rewrite the test.
2131         Only calculate PLUS_ONE if needed.
2132         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
2133         here.
2134
2135 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2136
2137         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
2138         calculation.
2139
2140 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2141
2142         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
2143         the call uses the incoming value of $2.
2144
2145 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2146
2147         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
2148         rather then gen_rtx_MEM.
2149         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
2150         gen_rtx_MEM.
2151         (mips_set_return_address): Likewise.
2152         (mips_restore_gp): Likewise.
2153
2154 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2155
2156         * config/mips/mips.c (gpr_mode): Delete.
2157         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
2158         instead of gpr_mode.
2159         (mips_for_each_saved_reg): Likewise.
2160         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2161         (override_options): Don't initialize gpr_mode.
2162         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
2163
2164 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2165
2166         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
2167         case last.
2168         (mips_class_max_nregs): Calculate the smallest consituent register
2169         size and use that to determine an upper bound on the number of
2170         registers.
2171
2172 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2173
2174         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
2175         split out from...
2176         (mips_expand_epilogue): ...here.
2177         (mips_mdebug_abi_name): New function, split out from...
2178         (mips_file_start): ...here.
2179         (mips_hard_regno_mode_ok_p): New function, split out from...
2180         (override_options): ...here.
2181         (mips_expand_builtin_1): New function, split out from...
2182         (mips_expand_buitin): ...here.  Abort if we don't recognize
2183         the function.
2184
2185 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2186
2187         * config/mips/mips.c (build_mips16_function_stub): Load the
2188         target address into $1 before transfering the arguments.
2189         Don't use ".set noreorder".
2190         (build_mips16_call_stub): Likewise.
2191
2192 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2193
2194         * config/mips/mips.c (mips_output_32bit_xfer): New function.
2195         (mips_output_64bit_xfer): Likewise.
2196         (mips16_fp_args): Rename to...
2197         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
2198         with a DIRECTION argument.  Use mips_output_32bit_xfer and
2199         mips_output_64bit_xfer.
2200         (build_mips16_function_stub): Update accordingly.
2201         (mips16_fpret_double): Delete.
2202         (build_mips16_call_stub): Update after above changes.
2203         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
2204         of mips16_fpret_double.  Use GP_REG_RETURN.
2205
2206 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2207
2208         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
2209         use asm_out_file instead.
2210         (build_mips16_function_stub): Likewise.
2211         (build_mips16_call_stub, mips_output_function_prologue): Update
2212         accordingly.
2213
2214 2007-10-18  David S. Miller  <davem@davemloft.net>
2215
2216         Add Niagara-2 support.
2217         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
2218         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
2219         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
2220         (include): Add inclusion of niagara2.md
2221         * config/sparc/sparc.c (niagara2_costs): New.
2222         (sparc_override_options): Add niagara2 entry to cpu_default[]
2223         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
2224         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
2225         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
2226         (sparc_initialize_trampoline): Handle niagara2 like niagara.
2227         (sparc64_initialize_trampoline): Likewise.
2228         (sparc_use_sched_lookahead): Likewise.
2229         (sparc_issue_rate): Likewise.
2230         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
2231         mcpu=niagara2
2232         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
2233         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
2234         TARGET_CPU_niagara2.
2235         (PROCESSOR_NIAGARA2): New.
2236         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
2237         (BRANCH_COST): Likewise.
2238         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
2239         * config/sparc/sol2.h: Likewise.
2240         * config/sparc/niagara2.md: New file.
2241
2242 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2243
2244         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
2245         and fp_reg_size.
2246         (mips_compute_frame_info): Remove associated code.
2247         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
2248
2249 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2250
2251         * config/mips/mips-protos.h (compute_frame_size): Delete.
2252         * config/mips/mips.h: Update comments.
2253         * config/mips/mips.c (mips_frame_info): Remove initialized.
2254         (compute_frame_size): Rename to...
2255         (mips_compute_frame_info): ...this and make static.  Remove the
2256         SIZE argument and return no value.  Remove the setting of initialized.
2257         Update rest of file accordingly.
2258         (mips_set_return_address): Don't call compute_frame_size.
2259         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
2260         Don't call compute_frame_size.
2261
2262 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2263
2264         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
2265         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
2266         mips_hard_frame_pointer_required.
2267         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
2268         large MIPS16 frames.
2269         * config/mips/mips.c (mips_frame_pointer_required): New function.
2270
2271 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2272
2273         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
2274         and hard_frame_pointer_offset.
2275         (mips_debugger_offset): Use hard_frame_pointer_offset.
2276         (mips16e_collect_argument_save_p): Likewise.
2277         (compute_frame_size): Initialize arg_pointer_offset and
2278         hard_frame_pointer_offset.
2279         (mips_initial_elimination_offset): Use them.
2280         (mips_output_function_prologue): Use hard_frame_pointer_offset.
2281         (mips_expand_prologue, mips_expand_epilogue): Likewise.
2282
2283 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2284
2285         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
2286         profiling code.
2287         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
2288         "unsigned int" rather than "int" and put them with the other
2289         register-related fields.  Put expanded comments above fields
2290         rather than to their right.
2291         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
2292         with a NUM_REGS_PTR argument.
2293         (mips16e_save_restore_pattern_p): Update accordingly.
2294         (compute_frame_size): Clarify frame diagram.  Rewrite.
2295
2296 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2297
2298         * config/mips/mips-ftypes.def: New file.
2299         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
2300         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
2301         (mips_function_type): Redefine using mips-ftypes.def.
2302         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
2303         (mips_builtin_vector_type): New function.
2304         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
2305         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
2306         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
2307         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
2308         macros.
2309         (mips_build_function_type): New function.
2310         (mips_init_builtins): Use it to create types lazily.
2311
2312 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2313
2314         * config/mips/mips.h (set_volatile): Delete.
2315         * config/mips/mips.c (set_volatile): Delete.
2316         (mips_print_operand_punctuation): New function, split out from
2317         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
2318         Use the same character ordering in the code and the comments.
2319         Use a recursive call to handle '*'.  Abort on unknown characters.
2320         (mips_init_print_operand_punct): New function, split out from
2321         override_options.
2322         (mips_print_int_branch_condition): New function, split out from
2323         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
2324         to report unexpected codes.
2325         (mips_print_float_branch_condition): New function, split out from
2326         print_operand.  Use output_operand_lossage to report unexpected codes.
2327         (print_operand): Rework to use a case statement.  Use the
2328         same letter ordering in the code and the comments.  Use
2329         output_operand_lossage to report unexpected codes and
2330         reverse_condition to handle inverted branch conditions.
2331         (override_options): Use mips_init_print_operand_punct.
2332
2333 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2334
2335         * config/mips/mips.h: Move variable declarations to end of file and
2336         enclose them all in #ifndef USED_FOR_TARGET.
2337         * config/mips/mips.c: Reorder functions into more logical groups,
2338         and so that callees appear before callers.  Put the targetm
2339         initializer at the end of the file.  Remove forward static
2340         declarations where possible.
2341         (mips_init_builtins): Add "static" to definition.
2342         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
2343
2344 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2345
2346         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
2347         (TARGET_MAX_ANCHOR_OFFSET): Delete.
2348         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
2349         (mips_set_mips16_mode): Initialize min_anchor_offset and
2350         max_anchor_offset directly to constants.
2351
2352 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2353
2354         * config/mips/mips.c: Delete trailing whitespace.
2355
2356 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2357
2358         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
2359         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
2360         and pick the first.
2361         * config/mips/mips.md (load_call<mode>): Don't make the unspec
2362         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
2363
2364 2007-10-18  David Daney  <ddaney@avtrex.com>
2365
2366         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
2367         reg_offset variable to calculate register locations.
2368
2369 2007-10-18  Richard Guenther  <rguenther@suse.de>
2370
2371         * tree-ssa.c (uid_ssaname_map_eq): New function.
2372         (uid_ssaname_map_has): Likewise.
2373         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
2374         * tree-flow.h (struct gimple_df): Make default_defs a
2375         uid_ssaname map.
2376         * tree-dfa.c (gimple_default_def): Deal with it.
2377         (set_default_def): Likewise.
2378
2379 2007-10-18  Richard Guenther  <rguenther@suse.de>
2380
2381         * tree-flow.h (struct gimple_df): Make referenced_vars
2382         a uid_decl_map.
2383         (uid_decl_map_eq): Declare.
2384         (uid_decl_map_hash): Likewise.
2385         * tree-ssa.c (uid_decl_map_eq): New function.
2386         (uid_decl_map_hash): Likewise.
2387         (init_tree_ssa): Make referenced_vars a uid_decl_map.
2388         * tree-flow-inline.h (first_referenced_var): Deal with
2389         the referenced_vars representation change.
2390         (next_referenced_var): Likewise.
2391         * tree-dfa.c (referenced_var_lookup): Likewise.
2392         (referenced_var_check_and_insert): Likewise.
2393         (remove_referenced_var): Likewise.
2394
2395 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
2396
2397         * config/mips/mips.c (mips_dwarf_register_span): New.
2398         (TARGET_DWARF_REGISTER_SPAN): Define.
2399
2400 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
2401
2402         * config.gcc : update score-*-elf(extra_objs).
2403         * config/score/mac.md : Remove.
2404         * config/score/misc.md : Remove.
2405         * config/score/score7.md : Remove.
2406         * config/score/score-mdaux.h : Remove.
2407         * config/score/score-mdaux.c : Remove.
2408         * config/score/score-version.h : Remove.
2409         * config/score/score-generic.md : New.
2410         * config/score/score3.h : New.
2411         * config/score/score3.c : New.
2412         * config/score/score7.h : New.
2413         * config/score/score7.c : New.
2414         * config/score/mul-div.S : add flush_cache score3 support.
2415         * config/score/elf.h : Fix some typos.
2416         * config/score/score.md : merge score3 and score7 pattern.
2417         * config/score/score.c : use to seperate which target it used.
2418         * config/score/score.h : use to seperate the target macro.
2419         * config/score/score.opt : remove -mmac option , add -mscore3,
2420         -mscore3d and -march OPTION support.
2421  
2422 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2423
2424         * cfgexpand.c (expand_stack_vars): Add checking to make sure
2425         that the offset of a variable is not greater than the size
2426         of the paritition.
2427
2428 2007-10-17  Anatoly Sokolov <aesok@post.ru>
2429
2430         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
2431         atmega88p, atmega168p and atmega328p devices.
2432         * config/avr/avr.h (LINK_SPEC): (Ditto.).
2433         (CRT_BINUTILS_SPECS): (Ditto.).
2434         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2435
2436 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2437
2438         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
2439         * ddg.c: Ditto.
2440         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
2441         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
2442         (print_insn): Move declaration to ...
2443         * rtl.h (print_insn): ... here.
2444
2445 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2446
2447         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
2448         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
2449         m68k_sched_branch_type): Move declarations to ...
2450         * config/m68/m68k-protos.h: ... here.
2451
2452 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2453
2454         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
2455
2456 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2457
2458         * config/avr/avr.c (avr_mcu_types): Add attiny48.
2459         * config/avr/avr.h (LINK_SPEC): Likewise.
2460         (CRT_BINUTILS_SPECS): Likewsie.
2461         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2462
2463 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
2464
2465         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
2466         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
2467         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2468
2469 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2470
2471         PR middle-end/33794
2472         * reg-stack.c (move_for_stack_reg): Swap input argument of
2473         UNSPEC_TAN insn to the top of the stack.
2474
2475 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
2476
2477         PR target/32961
2478         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
2479         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
2480         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
2481         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
2482         immediate shift value.
2483         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
2484         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
2485         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
2486         Remove macros for !__OPTIMIZE__ case.
2487
2488 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
2489
2490         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
2491         directness anymore.
2492         (perform_var_substitution): Only DFS from real nodes. Don't test
2493         for directness.
2494         (unite_pointer_equivalences): Fix broken test.
2495
2496 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
2497
2498         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
2499         altivec sp_offset.  Rearrange sp_offset assignments to
2500         correspond to stack adjustments.  Use frame_reg_rtx for
2501         SPE register restores.  Correct SPE stack adjustment.
2502
2503 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2504
2505         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
2506         * toplev.c (check_global_declaration_1): Use appropriate warning
2507         option instead of unnamed warning.
2508         * stor-layout.c (layout_decl): Likewise.
2509         * c-typeck.c (build_conditional_expr): Likewise.
2510         (build_compound_expr): Fix wrong comment.
2511         (build_binary_op): Use appropriate warning option instead of
2512         unnamed warning.
2513         * cfgexpand.c (tree_expand_cfg): Likewise.
2514         * tree-optimize.c (tree_rest_of_compilation): Likewise.
2515         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
2516         (execute_warn_function_return): Likewise.
2517         * stmt.c (warn_if_unused_value): Likewise.
2518
2519 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
2520
2521         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
2522         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
2523         similar devices.
2524         (CRT_BINUTILS_SPECS): Likewsie.
2525         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2526
2527 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
2528
2529         PR target/33594
2530         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
2531
2532 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
2533
2534         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
2535         (fini_dce): Only release them for the fast pass.
2536         (end_ud_dce): Delete.
2537         (rest_of_handle_ud_dce): Do not modify df_in_progress.
2538         Call fini_dce instead of end_ud_dce.
2539         (rest_of_handle_fast_dce): Do not modify df_in_progress.
2540         (run_fast_df_dce): Reset df_in_progress to false on exit.
2541
2542 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
2543             Maxim Kuvyrkov  <maxim@codesourcery.com>
2544
2545         * target.h (unspec_may_trap_p): New target hook.
2546         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
2547         * targhooks.c (default_unspec_may_trap_p): Default implementation of
2548         the hook.
2549         * targhooks.h (default_unspec_may_trap_p): Declare it.
2550         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
2551         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
2552         * rtl.h (may_trap_p_1): Declare.
2553         
2554         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
2555         override default hook implementation.
2556         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
2557         hook.
2558
2559 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2560
2561         * doc/invoke.texi (Wextra): Move it just after Wall, list the
2562         options enabled by Wextra and mention Wuninitialized.
2563         
2564 2007-10-15  Nigel Stephens  <nigel@mips.com>
2565
2566         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
2567
2568 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2569
2570         PR tree-optimization/33136
2571         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
2572
2573 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2574
2575         PR tree-optimization/33735
2576         PR tree-optimization/33572
2577         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
2578         2007-10-09's change.
2579         * except.c (duplicate_eh_regions): Don't look for prev_try
2580         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
2581
2582 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
2583
2584         PR middle-end/33706
2585         * tree-inline.c (copy_bb): Use bsi_replace to replace a
2586         __builtin_va_arg_pack-containing call stmt.
2587
2588 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
2589
2590         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
2591         program flag.
2592
2593 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
2594
2595         PR tree-optimization/33619
2596         * tree-ssa-ter.c (is_replaceable_p): Return false for all
2597         calls.
2598
2599 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
2600
2601         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
2602
2603 2007-10-15  Richard Guenther  <rguenther@suse.de>
2604
2605         * fold-const.c (extract_array_ref): Remove.
2606         (fold_comparison): Handle POINTER_PLUS_EXPR with the
2607         generic address expression comparison folding.  Remove
2608         the folding that used extract_array_ref.
2609
2610 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2611
2612         PR target/33133
2613         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
2614         speculation type of insn can be changed before trying to do that.
2615
2616 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
2617
2618         * dse.c (struct insn_info): Add 'frame_read' field.
2619         (scan_insn): For the call to a const function, set frame_read if
2620         reload has been run.
2621         If the insn reads the frame, kill the frame related stores.
2622         (scan_reads_nospill): Likewise.
2623
2624 2007-10-14  Jason Merrill  <jason@redhat.com>
2625
2626         * tree-eh.c (optimize_double_finally): Don't assume that the
2627         cleanup we're duplicating is only one statement.
2628
2629 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
2630
2631         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
2632         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
2633         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
2634         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
2635         tree-vect-transform.c: Fix comment typos.
2636         * doc/extend.texi: Fix a typo.
2637
2638         * c-common.h: Remove the prototype for c_expand_body.
2639         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
2640         * tree.h: Remove the prototype for fold_build_call_expr.
2641
2642         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
2643         Remove.
2644         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
2645
2646 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
2647
2648         * config/rs6000/aix53.h: New file.
2649         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
2650         (TARGET_ALTIVEC_ABI): Same.
2651         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
2652         (TARGET_ALTIVEC_ABI): Delete.
2653         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
2654         stanza defaulting to aix5.3.
2655
2656 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2657
2658         * config/i386/i386.md (SI_REG, DI_REG): New constants.
2659         (strmov): Use defined constants.
2660         (cmpstrnsi): Likewise.
2661         * config/i386/i386.c (decide_alg): Use defined constants.
2662         (ix86_expand_strlen): Likewise.
2663
2664 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
2665
2666         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
2667         * var-tracking.c (micro_operation_def): Update comment on u.loc.
2668         (mode_for_reg_attrs, var_lowpart): New functions.
2669         (add_uses): Consider recording a lowpart of LOC for MO_USE.
2670         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
2671         or copy is known, set LOC to the SET that performs the set, instead
2672         of the destination.
2673         (find_src_status, find_src_set_src): Remove LOC parameter.
2674         Replace INSN with the source value.
2675         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
2676         handling MO_SET and MO_COPY.  Update the calls to find_src_status
2677         and find_src_set_src.
2678
2679 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
2680
2681         PR 11001
2682         * config/i386/i386.md (strmov): Check for esi and edi usage.
2683         * config/i386/i386.c (decide_alg): Check whether we can use a
2684         rep prefix and adjust algorithm choice accordingly.
2685         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
2686
2687 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2688
2689         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
2690
2691 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2692
2693         * global.c (build_insn_chain): Formatting fixes.
2694
2695 2007-10-12  Richard Guenther <rguenther@suse.de>
2696
2697         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
2698         combining both operands require either both have single uses
2699         or combining to a constant.
2700
2701 2007-10-12  Richard Guenther  <rguenther@suse.de>
2702
2703         PR middle-end/26198
2704         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
2705         a rhs with side-effects or which is a load.
2706         (forward_propagate_into_cond): Also try combining both operands.
2707
2708 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
2709
2710         PR tree-optimization/33742
2711         * tree-vect-transform.c (vectorizable_operation): Return false
2712         if get_vectype_for_scalar_type for scalar_dest can't be determined.
2713         (vectorizable_call): Same for rhs_type and lhs_type.
2714
2715 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
2716
2717         PR tree-optimization/33645
2718         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
2719         pass it to walk_tree.
2720         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
2721         When calling set_is_used on a VAR_DECL, if data is not NULL and
2722         its DECL_UID is in the bitmap, call mark_all_vars_used on its
2723         DECL_INITIAL after clearing the bit in bitmap.
2724         (remove_unused_locals): Adjust mark_all_vars_used callers.
2725         Instead of removing unused global vars from unexpanded_var_list
2726         immediately record them in bitmap, call mark_all_vars_used on
2727         all used global vars from unexpanded_var_list and only purge
2728         global vars that weren't found used even during that step.
2729  
2730 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2731
2732         * gthr-posix.h (__gthread_active_init): Create detached instead of
2733         joinable thread when testing whether threads are active on hppa-hpux.
2734         * gthr-posix95.h (__gthread_active_init): Likewise.
2735
2736 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2737
2738         PR middle-end/33676
2739         * global.c (build_insn_chain): Include insn that occur between
2740         basic blocks.
2741         
2742 2007-10-11  Tom Tromey  <tromey@redhat.com>
2743
2744         * gengtype-yacc.y: Delete.
2745
2746 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
2747
2748         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
2749         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
2750         function_value_32, function_value_64, function_value_ms_64,
2751         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
2752         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
2753         Use new constants.
2754
2755 2007-10-11  Richard Guenther  <rguenther@suse.de>
2756
2757         * gcse.c (hash_scan_set): If the next nonnote insn is in
2758         a different basic block insert the set.
2759
2760 2007-10-11  Richard Guenther  <rguenther@suse.de>
2761
2762         PR middle-end/33724
2763         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
2764         (verify_gimple_expr): Use it to verify pointer-to types for
2765         ADDR_EXPRs.
2766
2767 2007-10-11  Richard Guenther  <rguenther@suse.de>
2768
2769         PR c/33726
2770         * c-typeck.c (build_array_ref): Do not strip qualifiers from
2771         the array element type.
2772
2773 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
2774
2775         PR rtl-optimization/33638
2776         * dse.c (struct insn_info): Remove 'stack_read' field,
2777         add 'stack_pointer_based' field.
2778         (record_store): For a store with non-constant base, record
2779         whether it is stack pointer based.
2780         (scan_insn): For the call to a const function, remove stack
2781         pointer based stores from the list of local active stores.
2782         (scan_reads_nospill): Delete code dealing with const functions.
2783
2784 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
2785
2786         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
2787         to HOST_WIDE_INT.
2788         (conflict_p, set_conflict, set_conflicts): Likewise.
2789         * global.c (global_alloc): Likewise.
2790         * ra.h: Update prototypes.
2791
2792 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
2793
2794         * opth-gen.awk: Fixed generation of comment stating the origin
2795           of options.h
2796
2797 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
2798
2799         Revert:
2800         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2801         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2802         and '%}', respectively.
2803
2804         Revert:
2805         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2806         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2807         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2808         and '}'.
2809         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2810         meant to be output.
2811
2812         Revert:
2813         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2814         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
2815         syntax for ASSEMBLER_DIALECT.
2816         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
2817
2818 2007-10-10  Revital Eres  <eres@il.ibm.com>
2819
2820         * modulo-sched.c (check_nodes_order): Dump the final order of
2821         the nodes.
2822         (get_sched_window): Add dump info.
2823         (calculate_order_params): Dump order params of the nodes.
2824
2825 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2826
2827         PR middle-end/33669
2828         * ra-conflict.c (record_one_conflict_between_regnos, 
2829         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
2830         (global_conflicts): Enhanced incorrect check.
2831         
2832 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
2833
2834         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
2835         if flag_exceptions is not set.
2836         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
2837         assemble_name rather than incorrectly emulating it.
2838
2839         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
2840         friends are removed from G++.
2841
2842 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2843
2844         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
2845         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
2846         enabling them is redundant. Don't check two times for
2847         c_dialect_cxx.
2848         
2849 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
2850
2851         * ra-conflict.c (record_one_conflict_between_regnos): Revert
2852         the last change.
2853         (set_conflicts_for_earlyclobber): Likewise.
2854         (global_conflicts): Likewise.
2855
2856 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2857
2858         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
2859         and '%}', respectively.
2860
2861 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
2862
2863         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
2864         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
2865         and '}'.
2866         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
2867         meant to be output.
2868
2869 2007-10-09  Richard Guenther  <rguenther@suse.de>
2870
2871         PR middle-end/33692
2872         * gimplify.c (canonicalize_component_ref): Honor qualifiers
2873         of referenced structure and component.
2874
2875 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
2876
2877         PR middle-end/33669
2878         * ra-conflict.c (record_one_conflict_between_regnos,
2879         set_conflicts_for_earlyclobber, global_conflicts): Improved
2880         logging.
2881         (global_conflicts): Removed incorrect check.
2882
2883 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2884
2885         PR tree-optimization/33615
2886         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
2887         if the statement might throw.  Fix formatting.
2888
2889 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
2890
2891         PR tree-optimization/33615
2892         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
2893         if the rhs might throw.
2894
2895 2007-10-09  Jan Hubicka  <jh@suse.cz>
2896
2897         * invoke.texi (align-threshold, align-loop-iterations): Document.
2898         * final.c: Include cfgloop.h, params.h
2899         (compute_alignments): Dump decisions and compare them with loop
2900         structure; honor given parameters.
2901         (pass_compute_alignments): New dump file.
2902         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
2903         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
2904
2905 2007-10-09  James E. Wilson  <wilson@specifix.com>
2906
2907         PR tree-optimization/33655
2908         PR middle-end/22156
2909         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
2910         convert it to bitsizetype before size_binop call.
2911
2912 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
2913
2914         PR tree-optimization/33572
2915         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
2916         the absence of a corresponding edge from the exit block.
2917
2918 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
2919
2920         PR middle-end/22156
2921         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
2922         bit-field layout.
2923         (sra_build_assignment): Likewise.  Set up mask depending on
2924         precision, not type.
2925         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
2926         computing bit masks.
2927         (sra_build_elt_assignment): Don't view-convert from signed to
2928         unsigned.
2929         (sra_explode_bitfield_assignment): Use bit-field type if
2930         possible.  Use BYTES_BIG_ENDIAN.
2931
2932 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
2933
2934         PR middle-end/22156
2935         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
2936         the original stmt can throw.
2937         (sra_build_bf_assignment): Fix type mismatch when applying negated
2938         mask.
2939
2940 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
2941
2942         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
2943         '#pragma mark' to be executed at preprocessing time.
2944
2945 2007-10-08  Ollie Wild  <aaw@google.com>
2946
2947         * varasm.c (compare_constant): Removed call to
2948         lang_hooks.expand_constant.
2949         (copy_constants): Removed call to lang_hooks.expand_constant.
2950         (compute_reloc_for_constant): Removed call to
2951         lang_hooks.expand_constant.
2952         (output_addressed_constants): Removed call to
2953         lang_hooks.expand_constant.
2954         (constructor_static_from_elts_p): Removed call to
2955         lang_hooks.expand_constant.
2956         (output_constant): Removed calls to lang_hooks.expand_constant.
2957         * langhooks.h (struct lang_hooks): Removed field expand_constant.
2958         * langhooks-def.h (lhd_return_tree): Removed.
2959         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
2960         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
2961         * langhooks.c (lhd_return_tree): Removed.
2962
2963 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
2964
2965         * combine.c (setup_incoming_promotions): Ensure that
2966         arguments that have not undergone mode promotions do not
2967         incorrectly get marked as being sign- or zero-extended.
2968
2969 2007-10-08  Richard Guenther  <rguenther@suse.de>
2970
2971         PR middle-end/33693
2972         PR middle-end/33695
2973         PR middle-end/33697
2974         * fold-const.c (fold_binary): Use correct types in folding
2975         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
2976         and building of RROTATE_EXPR.
2977
2978 2007-10-08  Richard Guenther  <rguenther@suse.de>
2979
2980         PR middle-end/33691
2981         PR middle-end/33694
2982         PR middle-end/33696
2983         * fold-const.c (fold_binary): Use the correct types when
2984         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
2985         (fold_binary): Use the correct types when folding
2986         (-A) - B to (-B) - A.
2987         (fold_unary): Use the correct types when folding ~(X).
2988
2989 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2990
2991         * doc/invoke.texi (Wall): fix formatting issues.
2992         
2993 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
2994
2995         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
2996         truncated shift counts.
2997
2998 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
2999
3000         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
3001         syntax for ASSEMBLER_DIALECT.
3002         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
3003
3004 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3005             Nathan Froyd  <froydnj@codesourcery.com>
3006
3007         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
3008         when determining whether to record INCOMING_RETURN_ADDR_RTX.
3009
3010 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3011
3012         Revert:
3013         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3014
3015         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3016         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3017         the function, temporarily point the debug interface to the null one.
3018
3019 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3020
3021         PR tree-optimization/33655
3022         PR middle-end/22156
3023         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
3024         elements.
3025
3026 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3027
3028         PR tree-optimization/33572
3029         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
3030         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
3031         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
3032         return PHI node.
3033         (copy_edges_for_bb): Handle nonlocal label edges.
3034         (make_nonlocal_label_edges): Deleted.
3035         (optimize_inline_calls): Don't call it.
3036
3037 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
3038
3039         * gthr-single.h: Revert last change.
3040
3041 2007-10-05  Michael Matz  <matz@suse.de>
3042
3043         PR middle-end/33667
3044         * lower-subreg.c (decompose_multiword_subregs): Use
3045         validate_unshare_change().
3046
3047 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
3048
3049         * ra-conflict.c: Include "sparseset.h".
3050         (conflicts): Change to HOST_WIDEST_FAST_INT.
3051         (allocnos_live): Redefine variable as a sparseset.
3052         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
3053         Delete macros.
3054         (allocno_row_words): Removed global variable.
3055         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
3056         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
3057         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
3058         (record_one_conflict_between_regnos): Cache allocno values and reuse.
3059         Use set_conflict_p.
3060         (record_one_conflict): Update uses of allocnos_live to use
3061         the sparseset routines.  Use set_conflicts_p.
3062         (mark_reg_store): Likewise.
3063         (set_reg_in_live): Likewise.
3064         (global_conflicts): Update uses of allocnos_live.
3065         Use the new adjacency list to visit an allocno's neighbors
3066         rather than iterating over all possible allocnos.
3067         Call set_conflicts_p to setup conflicts rather than adding
3068         them manually.
3069         * global.c: Comments updated.  
3070         (CONFLICTP): Delete define.
3071         (regno_compare): New function.  Add prototype.
3072         (global_alloc): Sort the allocno to regno mapping according to
3073         which basic blocks the regnos are referenced in.  Modify the
3074         conflict bit matrix to a compressed triangular bitmatrix.
3075         Only allocate the conflict bit matrix and adjacency lists if
3076         we are actually going to allocate something.
3077         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
3078         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
3079         allocno's neighbors rather than iterating over all possible allocnos.
3080         (mirror_conflicts): Removed function.
3081         (dump_conflicts): Iterate over regnos rather than allocnos so
3082         that all dump output will be sorted by regno number.
3083         Use the FOR_EACH_CONFLICT macro.
3084         * ra.h: Comments updated.
3085         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
3086         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
3087         Add prototypes.
3088         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
3089         (adjacency_list_d, adjacency_iterator_d): New types.
3090         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
3091         adjacency_iter_next, regno_basic_block): New static inline functions.
3092         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
3093         (conflict_p): Add function prototype.
3094         * sparseset.h, sparseset.c: New files.
3095         * Makefile.in (OBJS-common): Add sparseset.o.
3096         (sparseset.o): New rule.
3097
3098 2007-10-05  Richard Guenther  <rguenther@suse.de>
3099
3100         PR middle-end/33666
3101         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
3102         to (long long)ptr.
3103
3104 2007-10-05  Michael Matz  <matz@suse.de>
3105
3106         PR inline-asm/33600
3107         * function.c (match_asm_constraints_1): Check for input
3108         being used in the outputs.
3109
3110 2007-10-05  Richard Guenther  <rguenther@suse.de>
3111
3112         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
3113
3114 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
3115
3116         PR target/33635
3117         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
3118         subset checks.  Make the cost of FPR -> FPR moves depend on
3119         mips_mode_ok_for_mov_fmt_p.
3120
3121 2007-10-04  Doug Kwan  <dougkwan@google.com>
3122
3123         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
3124         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3125         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3126         support of conditional variables.
3127         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
3128         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3129         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3130         support of conditional variables.
3131         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
3132         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3133         conditional variables.
3134         * gthr.h: Update comments to document new interface.
3135
3136 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
3137
3138         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
3139         DECL_IGNORED_P.
3140
3141 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3142
3143         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
3144
3145 2007-10-04  Richard Guenther  <rguenther@suse.de>
3146
3147         PR middle-end/33641
3148         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
3149         does not need to be of INTEGER_TYPE.
3150         (verify_gimple_2): New function split out from ...
3151         (verify_gimple_1): ... here.  ICE if there was an error during
3152         verification.
3153
3154 2007-10-04  Michael Matz  <matz@suse.de>
3155
3156         PR rtl-optimization/33653
3157         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
3158         * dse.c (scan_insn): Same.
3159
3160 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3161
3162         * config.gcc: Remove USE_GAS for m68k targets.
3163
3164 2007-10-04  Richard Guenther  <rguenther@suse.de>
3165
3166         PR tree-optimization/33627
3167         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
3168         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
3169         split out from ...
3170         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
3171         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
3172
3173 2007-10-04  Anatoly Sokolov <aesok@post.ru>
3174
3175         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
3176         commands_in_epilogues): Remove variables.
3177         (avr_file_start): Remove unneded initializations of commands_in_file,
3178         commands_in_prologues and commands_in_epilogues variables.
3179         (avr_file_end): Remove dead code.
3180
3181 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
3182
3183         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
3184         MOTOROLA is to true.
3185
3186 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
3187
3188         PR target/33635
3189         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
3190         (mips_split_doubleword_move): ...this.
3191         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
3192         use natural endianness for multi-format FPR values.
3193         (mips_split_64bit_move): Rename to...
3194         (mips_split_doubleword_move): ...this and extend to 64-bit words.
3195         Use move_doubleword_fpr* patterns for moves involving FPRs.
3196         (mips_save_reg): Update the call to mips_split_64bit_move.
3197         (mips_secondary_reload_class): Return NO_REGS for any reload of a
3198         nonzero constant into an FPR if the constant can be forced to memory.
3199         * config/mips/mips.md: Update the splitter calls to
3200         mips_split_64bit_move.
3201         (UNSPEC_LOAD_DF_LOW): Rename to...
3202         (UNSPEC_LOAD_LOW): ...this.
3203         (UNSPEC_LOAD_DF_HIGH): Rename to...
3204         (UNSPEC_LOAD_HIGH): ...this.
3205         (UNSPEC_STORE_DF_HIGH): Rename to...
3206         (UNSPEC_STORE_WORD): ...this.
3207         (SPLITF): New mode iterator.
3208         (HALFMODE): New mode attribute.
3209         (movtf): New expander.
3210         (*movtf_internal): New define_insn_and_split.
3211         (move_doubleword_fpr<mode>): New expander.
3212         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
3213         with...
3214         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
3215         (mfhc1<mode>): ...these more general patterns.
3216
3217 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3218
3219         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
3220
3221 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
3222
3223         * gcse.c (hash_scan_set): Insert set in insn before note at
3224         the end of basic block.
3225
3226 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
3227
3228         PR tree-optimization/33576
3229         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
3230         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
3231         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
3232         (remove_iv): Declared.
3233         * lambda-code.c (remove_iv): Not static.
3234         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
3235         Don't remove ivs there, save ivs in the buffer.
3236
3237 2007-10-03  Jason Merrill  <jason@redhat.com>
3238
3239         PR c++/15764
3240         * tree-eh.c (same_handler_p): New fn.
3241         (optimize_double_finally): New fn.
3242         (refactor_eh_r): New fn.
3243         (refactor_eh): New fn.
3244         (pass_refactor_eh): New pass.
3245         * tree-pass.h: Declare it.
3246         * passes.c (init_optimization_passes): Add it.
3247
3248 2007-10-03  Doug Kwan  <dougkwan@google.com>
3249         Richard Guenther  <rguenther@suse.de>
3250
3251         PR debug/31899
3252         * dwarf2out.c (reference_to_unused): Disable sanity checking,
3253         be conservative instead.
3254
3255 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3256
3257         PR fortran/26682
3258         * doc/invoke.texi (-fwhole-program): Document that Fortran
3259         doesn't support this option.
3260
3261 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
3262
3263         PR middle-end/33617
3264         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
3265         expand_expr.
3266
3267 2007-10-02  David Daney  <ddaney@avtrex.com>
3268
3269         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
3270         against constant zero.
3271         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
3272         operand.
3273
3274 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
3275
3276         * ra-conflict.c: New file.
3277         * ra.h: New file.
3278         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
3279         usage to DF_LIVE usage.
3280         (reload): Remove reference to df_get_live_top.
3281         * rtlanal.c (subreg_nregs_with_regno): New function.  
3282         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
3283         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
3284         (df_has_eh_preds): Removed.
3285         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
3286         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
3287         bb_has_eh_pred.
3288         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
3289         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
3290         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
3291         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
3292         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
3293         (global_alloc): Turn off rescanning insns after call to
3294         global_conflicts and added call to set_preferences.
3295         (global_conflicts): Moved to ra-alloc.c.
3296         (set_preferences_1, set_preferences): New function.
3297         (mirror_conflicts): Changed types for various variables.
3298         (mark_elimination): Change DF_RA_LIVE
3299         usage to DF_LIVE usage.
3300         (build_insn_chain): Rewritten from scratch and made local.
3301         (print_insn_chain, print_insn_chains): New functions.
3302         (dump_conflicts): Do not print conflicts for fixed_regs.
3303         (rest_of_handle_global_alloc): Turn off insn rescanning.
3304         * hard-reg-set.h: Fixed comment.
3305         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
3306         usage to DF_LIVE usage and delete refs to TOP sets.
3307         (block_alloc): Mark regs as live if they are in the artificial
3308         defs at top of block.
3309         (find_stack_regs): New function.
3310         (rest_of_handle_local_alloc): Changed urec problem to live
3311         problem and do not turn off df rescanning.
3312         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
3313         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
3314         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
3315         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
3316         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
3317         fields in df_ref_flags.  The rest have been renumbered.  
3318         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
3319         at -O1.
3320         * rtl.h (subreg_nregs_with_regno): New function.
3321         * df-problems.c: (df_get_live_out, df_get_live_in,
3322         df_get_live_top): Removed reference to DF_RA_LIVE.
3323         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
3324         df_live_alloc, df_live_reset, df_live_local_finalize,
3325         df_live_free): Make top set only if different from in set.
3326         (df_lr_top_dump, df_live_top_dump): Only print top set if
3327         different from in set.
3328         (df_lr_bb_local_compute): Removed unnecessary check.
3329         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
3330         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
3331         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
3332         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3333         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
3334         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
3335         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
3336         df_urec_add_problem): Removed.
3337         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
3338         bb_has_eh_pred. 
3339         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
3340         * basic_block.h (bb_has_abnormal_pred): New function.
3341         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
3342         usage to DF_LIVE usage.
3343         
3344 2007-10-02  Revital Eres  <eres@il.ibm.com>
3345
3346         * config/rs6000/predicates.md (easy_vector_constant): Return false
3347         for 750CL paired vectors.
3348         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
3349         vector constant.
3350         (vec_initv2sf): Add new description.
3351         (vconcatsf): Likewise.
3352         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
3353         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
3354
3355 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3356
3357         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
3358         sinking the last stmt in a BB.
3359
3360 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
3361
3362         PR middle-end/22156
3363         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
3364         (sra_hash_tree): Handle BIT_FIELD_REFs.
3365         (sra_elt_hash): Don't hash bitfld blocks.
3366         (sra_elt_eq): Skip them in parent compares as well.  Handle
3367         BIT_FIELD_REFs.
3368         (build_element_name_1): Handle BIT_FIELD_REFs.
3369         (instantiate_element): Propagate nowarn from parents.  Create
3370         BIT_FIELD_REF for variables that are widened by scalarization.
3371         Gimple-zero-initialize all bit-field variables that are not
3372         part of parameters that are going to be scalarized on entry.
3373         (instantiate_missing_elements_1): Return the sra_elt.
3374         (canon_type_for_field): New.
3375         (try_instantiate_multiple_fields): New.  Infer widest possible
3376         access mode from decl or member type, but clip it at word
3377         size, and only widen it if a field crosses an alignment
3378         boundary.
3379         (instantiate_missing_elements): Use them.
3380         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3381         (scalar_bitfield_p): New.
3382         (sra_build_assignment): Optimize assignments from scalarizable
3383         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
3384         counts.
3385         (REPLDUP): New.
3386         (sra_build_bf_assignment): New.  Optimize assignments to
3387         scalarizable BIT_FIELD_REFs.
3388         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
3389         assignments to full variables.
3390         (generate_copy_inout): Use the new macros and functions.
3391         (generate_element_copy): Likewise.  Handle bitfld differences.
3392         (generate_element_zero): Don't recurse for blocks.  Use
3393         sra_build_elt_assignment.
3394         (generate_one_element_init): Take elt instead of var.  Use
3395         sra_build_elt_assignment.
3396         (generate_element_init_1): Adjust.
3397         (bitfield_overlap_info): New struct.
3398         (bitfield_overlaps_p): New.
3399         (sra_explode_bitfield_assignment): New.  Adjust widened
3400         variables to account for endianness.
3401         (sra_sync_for_bitfield_assignment): New.
3402         (scalarize_use): Re-expand assignment to/from scalarized
3403         BIT_FIELD_REFs.  Explode or sync needed members for
3404         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
3405         (scalarize_copy): Use REPLDUP.
3406         (scalarize_ldst): Move assert before dereference.  Adjust EH
3407         handling.
3408         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3409
3410 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
3411
3412         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
3413         Rename CR_* constants to CMP_*.  Fix spacing.
3414
3415 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3416
3417         PR other/33585
3418         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
3419         to be processed with the special script doc/install.texi2html.
3420         
3421 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3422
3423         * doc/invoke.texi (Wall): List the options enabled by Wall.
3424         (Wstrict-aliasing): Add missing @option.
3425         
3426 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
3427
3428         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
3429         rather than gen_lowpart to change a register from DImode to DFmode.
3430         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
3431         both FROM and TO are integer modes that are no bigger than 4 bytes.
3432         (mips_mode_ok_for_mov_fmt_p): New function.
3433         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
3434         (mips_secondary_reload_class): Tweak formatting and comments.
3435         Use reg_class_subset_p instead of direct comparisons with
3436         classes.  Only allow direct FPR<->FPR moves for modes that
3437         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
3438         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
3439         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
3440         (*movdi_64bit): Likewise.
3441         (*movsi_internal): Likewise.
3442         (*movhi_internal): Likewise.
3443         (*movqi_internal): Likewise.
3444
3445 2007-09-30  Diego Novillo  <dnovillo@google.com>
3446
3447         PR 33593
3448         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
3449         throw an exception.
3450
3451 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
3452
3453         PR tree-optimization/33597
3454         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
3455         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
3456
3457 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
3458
3459         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
3460         instead of variants of (!reload_in_progress && !reload_completed).
3461         (x86_expand_vector_move): Ditto.
3462
3463 2007-09-28  Ollie Wild  <aaw@google.com>
3464
3465         Revert
3466         2007-09-27  Ollie Wild  <aaw@google.com>
3467
3468         * varasm.c (compare_constant): Removed call to
3469         lang_hooks.expand_constant.
3470         (copy_constants): Removed call to lang_hooks.expand_constant.
3471         (compute_reloc_for_constant): Removed call to
3472         lang_hooks.expand_constant.
3473         (output_addressed_constants): Removed call to
3474         lang_hooks.expand_constant.
3475         (constructor_static_from_elts_p): Removed call to
3476         lang_hooks.expand_constant.
3477         (output_constant): Removed calls to lang_hooks.expand_constant.
3478         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3479         * langhooks-def.h (lhd_return_tree): Removed.
3480         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3481         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3482         * langhooks.c (lhd_return_tree): Removed.
3483
3484 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3485
3486         PR target/33347
3487         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
3488         argument to gen_selb.
3489
3490 2007-09-28  Chao-ying Fu  <fu@mips.com>
3491
3492         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
3493         * doc/libgcc.texi (Fixed-point fractional library routines):
3494         Fix typos for neg and cmp functions.
3495
3496 2007-09-28  Michael Matz  <matz@suse.de>
3497
3498         PR rtl-optimization/33552
3499         * function.c (match_asm_constraints_1): Check for overlap in
3500         inputs and replace all occurences.
3501
3502 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
3503
3504         * config/mips/mips.c (override_options): Fix comment typo.
3505
3506 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
3507
3508         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
3509         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
3510         * config/bfin/t-bfin-linux (crti.o): Don't build.
3511         (crtn.o): Likewise.
3512         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3513         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
3514         (crtn.o): Likewise.
3515         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
3516
3517 2007-09-27  Ollie Wild  <aaw@google.com>
3518
3519         * varasm.c (compare_constant): Removed call to
3520         lang_hooks.expand_constant.
3521         (copy_constants): Removed call to lang_hooks.expand_constant.
3522         (compute_reloc_for_constant): Removed call to
3523         lang_hooks.expand_constant.
3524         (output_addressed_constants): Removed call to
3525         lang_hooks.expand_constant.
3526         (constructor_static_from_elts_p): Removed call to
3527         lang_hooks.expand_constant.
3528         (output_constant): Removed calls to lang_hooks.expand_constant.
3529         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3530         * langhooks-def.h (lhd_return_tree): Removed.
3531         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3532         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3533         * langhooks.c (lhd_return_tree): Removed.
3534
3535 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3536
3537         PR middle-end/33436
3538         * expr.c (emit_group_load_1): Split constant double when destination
3539         length is half source length.
3540
3541 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
3542
3543         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
3544         (mips_cpu_info): Add tune_flags.
3545         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
3546         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
3547         Remove end marker.
3548         (override_options): Remove deprecation code.  Use branch-likely
3549         instructions for optimize_size or if the tuning flags do not
3550         suggest otherwise.  Tweak warning.
3551         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
3552
3553 2007-09-27  Matthias Klose  <doko@ubuntu.com>
3554
3555         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
3556         multilib osdirname if it exists.
3557         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
3558
3559 2007-09-27  Ian Lance Taylor  <iant@google.com>
3560
3561         PR tree-optimization/33565
3562         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
3563         assignments of comparisons.
3564         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
3565         parameter.  Change caller.  Defer overflow warnings around call to
3566         fold_binary.
3567         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
3568         TREE_NO_WARNING is set on the statement.
3569         * tree-ssa-forwprop.c
3570         (tree_ssa_forward_propagate_single_use_vars): Don't test
3571         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
3572         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3573
3574 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
3575
3576         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
3577         reduce offset by units of 0x10000 for SPE vector modes or modes
3578         used with E500 double instructions.
3579
3580 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
3581
3582         * simplify-rtx.c (comparison_result): New.
3583         (simplify_const_relational_operation): Use it instead of the five
3584         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
3585         Improve bounds-checking optimizations; remove subsumed POPCOUNT
3586         optimizations.  Extract nonzero_address_p optimizations into a
3587         separate "if" together with optimizations where op1 is const0_rtx.
3588         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
3589         floating-point arguments too when appropriate.  Hoist test for ABS
3590         outside the final switch statement.
3591         * cse.c (fold_rtx): Don't look for an IOR equivalent of
3592         folded_arg0 if we found a constant equivalent.  Remove
3593         transformations done in simplify-rtx.c for "op0 RELOP op0".
3594
3595 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
3596
3597         * builtins.c (expand_builtin, expand_builtin_object_size,
3598         expand_builtin_memory_chk, maybe_emit_chk_warning,
3599         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
3600         for diagnostics.
3601         * expr.c (expand_expr_real_1): Likewise.
3602         * langhooks-def.h (struct diagnostic_info): Add forward decl.
3603         (lhd_print_error_function): Add third argument.
3604         * langhooks.h (struct diagnostic_info): Add forward decl.
3605         (struct lang_hooks): Add third argument to print_error_function.
3606         * diagnostic.h (diagnostic_info): Add abstract_origin field.
3607         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
3608         second argument.
3609         (diagnostic_report_current_function): Likewise.
3610         * toplev.c (announce_function): Pass NULL as second argument to
3611         diagnostic_set_last_function.
3612         * diagnostic.c (diagnostic_report_current_function): Add second
3613         argument, pass it as third argument to lang_hooks.print_error_function.
3614         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
3615         to diagnostic_report_current_function.
3616         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
3617         and message.abstract_origin.
3618         (verbatim): Initialize abstract_origin.
3619         * pretty-print.h (text_info): Add abstract_origin field.
3620         * pretty-print.c (pp_base_format): Handle %K.
3621         * langhooks.c (lhd_print_error_function): Add third argument.  If
3622         diagnostic->abstract_origin, print virtual backtrace.
3623         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
3624         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
3625         (init_dynamic_diag_info): Likewise.
3626
3627 2007-09-26  David Daney  <ddaney@avtrex.com>
3628
3629         PR target/33479
3630         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
3631         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
3632         sync_old_nand<mode>, sync_new_nand<mode>,
3633         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
3634         Update length attributes.
3635         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
3636         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
3637         length attributes.
3638         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
3639         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
3640         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
3641         post-loop sync.
3642
3643 2007-09-26  Richard Guenther  <rguenther@suse.de>
3644
3645         PR tree-optimization/33563
3646         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
3647         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
3648         aggregate stores.
3649         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
3650         get_use_of_stmt_lhs.
3651
3652 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
3653
3654         PR c/25309
3655         * c-common.c (complete_array_type): Diagnose too-large arrays and
3656         set type to error_mark_node.
3657
3658 2007-09-26  Richard Guenther  <rguenther@suse.de>
3659
3660         PR tree-optimization/30375
3661         PR tree-optimization/33560
3662         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
3663         with calls.
3664
3665         Revert
3666         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
3667
3668         * tree-ssa-dse.c (aggregate_vardecl_d): New.
3669         (dse_global_data): Add aggregate_vardecl field.
3670         (dse_possible_dead_store_p): New.
3671         Add prev_defvar variable.
3672         Allow immediate uses and previous immediate uses to differ
3673         if they are setting different parts of the whole.
3674         (get_aggregate_vardecl): New.
3675         (dse_record_partial_aggregate_store): New.
3676         (dse_whole_aggregate_clobbered_p): New.
3677         (dse_partial_kill_p): New.
3678         Call dse_maybe_record_aggregate_store().
3679         When checking whether a STMT and its USE_STMT refer to the
3680         same memory address, check also for partial kills that clobber
3681         the whole.
3682         Move some variable definitions to the block where they are used.
3683         (aggregate_vardecl_hash): New.
3684         (aggregate_vardecl_eq): New.
3685         (aggregate_vardecl_free): New.
3686         (aggregate_whole_store_p): New.
3687         (tree_ssa_dse): Initialize and free aggregate_vardecl.
3688         Mark which aggregate stores we care about.
3689
3690 2007-09-25  DJ Delorie  <dj@redhat.com>
3691
3692         PR target/33551
3693         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
3694         XINT.
3695
3696 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
3697
3698         PR target/33524
3699         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
3700         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
3701         for vector int32 -> int64 conversions.  Don't write beyond the end
3702         of the allocated vector for int32 -> int64 conversions.
3703
3704 2007-09-25  Revital Eres  <eres@il.ibm.com>
3705
3706         * config/rs6000/paired.h (paired_sel): New.
3707         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
3708         (rs6000_expand_ternop_builtin): Pass zero const_double operand
3709         when expanding selv2sf.
3710         * config/rs6000/rs6000.h (rs6000_builtins): Add
3711         PAIRED_BUILTIN_SELV2SF4.
3712
3713 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
3714
3715         PR c/32295
3716         * c-typeck.c (default_conversion): Call require_complete_type
3717         before perform_integral_promotions.
3718         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
3719         (build_c_cast): Call require_complete_type except for casts to
3720         void types.
3721         (convert_for_assignment): Call require_complete_type.
3722
3723 2007-09-25  Revital Eres  <eres@il.ibm.com>
3724
3725         * config/spu/spu.md: Fix doloop pattern.
3726
3727 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
3728
3729         * config/bfin/bfin.c (expand_prologue_reg_save,
3730         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
3731         and ASTAT moved here...
3732         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
3733         ... from here.  New argument ALL; callers changed.
3734         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
3735         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
3736         have the "saveall" attribute.
3737
3738 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
3739
3740         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
3741         bogus target macro.
3742         (INCOMING_REGNO, OUTGOING_REGNO): Define.
3743         * config/mmix/mmix.c (mmix_opposite_regno): New function.
3744         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
3745
3746         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
3747         with REG_P tests before REGNO access.
3748
3749 2007-09-24  DJ Delorie  <dj@redhat.com>
3750
3751         PR target/31482
3752         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
3753         constraint.
3754         (movqicc_<code>_<mode>): Likewise.
3755         (movhicc_<code>_<mode>): Likewise.
3756
3757 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3758
3759         PR target/33184
3760         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
3761         register for reload.
3762
3763 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
3764
3765         PR c++/14688
3766         * config/i386/i386.c (ix86_comp_type_attributes): Check
3767         METHOD_TYPE too.
3768
3769 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3770
3771         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
3772         "move.l %a4,%a4" to produce nops.
3773         * config/m68k/m68k.c (override_options): Reset align options,
3774         if neccessary align macro isn't avaible.
3775
3776 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3777
3778         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
3779
3780 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3781
3782         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
3783         the basic block.
3784         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
3785         reload is completed.
3786         (peephole pattern): Convert most of them to RTL peephole pattern.
3787
3788 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
3789
3790         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
3791         (moved from fp compare patterns).
3792         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
3793         Cleanup predicates to relieve reload.
3794         (conditional_trap): Reject conditional trap with fp condition.
3795         * config/m68k/predicates.md (fp_src_operand): New, reject
3796         certain constants early.
3797
3798 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
3799
3800         * final.c (final_scan_insn): Remove accidentally duplicated code.
3801
3802 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3803
3804         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
3805         Allow --with-tune=cell and --with-cpu=cell.
3806
3807 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
3808
3809         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
3810         * config/rs6000/rs6000.opt (swdiv): Change option to ...
3811         (recip): this.
3812         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
3813         function.
3814         (TARGET_BUILTIN_RECIPROCAL): Use it.
3815         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
3816         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
3817         (rs6000_emit_swrsqrtsf): New.
3818         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
3819         rsqrtf. 
3820         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
3821         (divsf3): Remove swdiv support.
3822         (recipsf3): New.
3823         (rsqrtsf2): New.
3824         (rsqrt_internal1): New.
3825         (divdf3): Remove swdiv support.
3826         (reciptdf3): New.
3827
3828 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
3829
3830         PR c++/33506
3831         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
3832         field.
3833         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
3834         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
3835         * tree.c (type_hash_eq): For FUNCTION_TYPE use
3836         lang_hooks.type.type_hash_eq in addition to generic tests.
3837
3838 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
3839         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
3840
3841         * tree-inline.h (eni_weights): Add field target_builtin_cost to
3842         reflect the cost per call to a target specific builtin.
3843         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
3844         call to a target specific builtin, then use target_builtin_call_cost.
3845         (init_inline_once): Initialize target_builtin_call_cost field.
3846
3847 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
3848
3849         PR middle-end/33472
3850         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
3851         complex types.
3852
3853 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
3854
3855         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
3856         * configure: Regenerated.
3857
3858 2007-09-23  Ollie Wild  <aaw@google.com>
3859
3860         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
3861         operand.
3862         (get_pointer_modulus_and_residue): New function.
3863
3864 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3865
3866         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
3867         combine an SC return value into a single register.
3868
3869 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3870
3871         * opth-gen.awk (target_flags_explicit): Declare.
3872         * toplev.h (target_flags_explicit): Delete declaration.
3873         * toplev.c (target_flags): Likewise.
3874         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
3875         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
3876         Never return true for TARGET_MIPS16.
3877         * config/mips/mips.c (mips_llsc): Delete.
3878         (mips_handle_option): Remove -mllsc handling.
3879         (mips_strip_unspec_address): Tweak comment.
3880         * config/mips/mips.opt (mllsc): Use a target mask.
3881
3882 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3883
3884         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
3885         word_mode as well as Pmode.
3886
3887 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3888
3889         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
3890         parameters from word_mode to the subword type if such a truncation
3891         is not a no-op.
3892
3893 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3894
3895         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
3896         * configure: Regenerated.
3897
3898 2007-09-23  Jan Hubicka  <jh@suse.cz>
3899
3900         * params.def (INLINE_CALL_COST): Set to 12.
3901         * invoke.texi (inline-call-cost): Update default value.
3902
3903 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3904
3905         * config/alpha/alpha.md (movti): Use operand_subword for the split.
3906
3907 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
3908             Revital Eres  <eres@il.ibm.com>
3909
3910         * modulo-sched.c (doloop_register_get): Rewrite the loop which
3911         checks whether the count_reg is found outside the control part.
3912
3913 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
3914
3915         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
3916         instead of checking CALL_EXPR_FN directly to test for builtins.
3917         If error or warning attributes are present, print
3918         error resp. warning.
3919         * c-common.c (handle_error_attribute): New function.
3920         (c_common_attribute_table): Add error and warning
3921         attributes.
3922         * doc/extend.texi: Document error and warning attributes.
3923
3924         * tree.h (block_nonartificial_location): New prototype.
3925         * tree.c (block_nonartificial_location): New function.
3926         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
3927         if artificial attribute is present on abstract inline decl.
3928         * c-common.c (handle_artificial_attribute): New function.
3929         (c_common_attribute_table): Add artificial attribute.
3930         * final.c (override_filename, override_linenum): New variables.
3931         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
3932         and override_linenum if inside of a block inlined from
3933         __attribute__((__artificial__)) function.
3934         (notice_source_line): Honor override_filename and override_linenum.
3935         * doc/extend.texi: Document __attribute__((__artificial__)).
3936         * config/i386/emmintrin.h: Add __artificial__ attribute to
3937         all __always_inline__ functions.
3938         * config/i386/mmintrin.h: Likewise.
3939         * config/i386/tmmintrin.h: Likewise.
3940         * config/i386/mm3dnow.h: Likewise.
3941         * config/i386/pmmintrin.h: Likewise.
3942         * config/i386/ammintrin.h: Likewise.
3943         * config/i386/xmmintrin.h: Likewise.
3944         * config/i386/smmintrin.h: Likewise.
3945         * config/i386/bmmintrin.h: Likewise.
3946         * config/i386/mmintrin-common.h: Likewise.
3947
3948         PR middle-end/28755
3949         * expr.c (expand_constructor): New function.
3950         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
3951         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
3952         CONSTRUCTOR.
3953
3954 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3955
3956         * config/mips/mips.c (dump_constants_1): Generalize to include
3957         fractional and accumulator modes.
3958
3959 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
3960
3961         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
3962         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
3963         flags for MIPS16.
3964         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
3965         TARGET_HARD_FLOAT when testing whether -mpaired-single is
3966         supported.
3967         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
3968         TARGET_DSP.
3969         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
3970         TARGET_DSPR2.
3971         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
3972         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
3973         TARGET_HARD_FLOAT.
3974         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
3975         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
3976         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
3977         throughout.
3978         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
3979         TARGET_HAS_DSPR2.
3980         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
3981         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
3982         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
3983
3984 2007-09-22  Jason Merrill  <jason@redhat.com>
3985
3986         PR c++/19407
3987         * attribs.c (lookup_attribute_spec): Split out...
3988         (decl_attributes): From here.
3989         * tree.h: Declare it.
3990
3991 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3992
3993         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
3994
3995 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
3996
3997         * tree-inline.c (remap_type_1): Correctly chain variants.
3998
3999 2007-09-22  Richard Guenther  <rguenther@suse.de>
4000
4001         PR tree-optimization/33146
4002         * fold-const.c (fold_binary): Use the original tree
4003         for negating.
4004         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
4005         also changes "sign".
4006
4007 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4008
4009         PR target/32325
4010         * except.c (finish_eh_generation): Call commit_edge_insertions if
4011         there are insns queued on the entry edge.
4012         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
4013         the entry edge.
4014
4015 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4016
4017         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
4018
4019 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
4020
4021         * config/i386/i386.c: Delete trailing whitespace.
4022         * config/i386/i386.h: Ditto.
4023         * config/i386/bmmintrin.h: Ditto.
4024         * config/i386/sync.md: Ditto.
4025         * config/i386/ppro.md: Ditto.
4026         * config/i386/mmx.md: Ditto.
4027         * config/i386/constraints.md: Ditto.
4028         * config/i386/sse.md: Ditto.
4029         * config/i386/athlon.md: Ditto.
4030         * config/i386/i386.md: Ditto.
4031
4032 2007-09-21  Richard Guenther  <rguenther@suse.de>
4033
4034         PR tree-optimization/33508
4035         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
4036         quadratic loop by keeping a bitmap of variables we have
4037         to clobber all subvariables for.
4038         (set_initial_properties): Likewise.
4039
4040 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
4041
4042         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
4043
4044 2007-09-20  Nigel Stephens  <nigel@mips.com>
4045             Chao-ying Fu  <fu@mips.com>
4046
4047         * c-decl.c (finish_declspecs): When _Sat is used without
4048         _Fract or _Accum, set the default type to cts_fract.
4049         This avoids a warning of "type defaults to int".
4050
4051 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4052
4053         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
4054         bit-fields wider than one bit.
4055
4056 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
4057
4058         PR debug/33316
4059         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
4060         DECL_NAME.
4061         * dbxout.c (dbxout_type): Likewise.
4062
4063         PR c/33238
4064         PR c/27301
4065         * gimplify.c (gimplify_vla_decl): New function.
4066         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
4067         Call it.
4068         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
4069
4070 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4071
4072         * doc/invoke.texi (-minterlink-mips16): Document.
4073         * config/mips/mips.opt (minterlink-mips16): New option.
4074         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
4075         -minterlink-mips16
4076
4077 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4078
4079         * doc/extend.texi (Attribute Syntax): Remove old speculative
4080         future direction.
4081
4082 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
4083
4084         * combine.c: Include cgraph.h.
4085         (setup_incoming_promotions): Rework to allow more aggressive
4086         elimination of sign extensions when all call sites of the
4087         current function are known to lie within the current unit.
4088
4089 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4090
4091         * dse.c (find_shift_sequence): No-op rework of control flow.
4092
4093 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
4094
4095         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
4096         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
4097
4098 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4099
4100         * cfgexpand.c (dump_stack_var_partition): Use the correct
4101         index for the offset.
4102
4103 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
4104
4105         * config/mips/sde.h: Switch to GPLv3.
4106
4107 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
4108
4109         * tree-sra.c (decide_block_copy): Decide if there are groups.
4110
4111 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
4112
4113         * config/m68k/m68k.c (output_move_himode): Remove jump table
4114         recognition.
4115         config/m68k/m68k.md (lea): Likewise.
4116         * config/m68k/m68k.c (print_operand_address): Use simple pc
4117         relative addressing.
4118
4119 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4120
4121         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
4122         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
4123         default definition.
4124         (asm_insn_count): Pass template as second argument to it.
4125         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4126         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4127         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4128         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4129         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4130         (sh_insn_length_adjustment): Pass template as second argument to it.
4131         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
4132
4133         * config/bfin/bfin.md (define_asm_attributes): New.
4134
4135 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
4136
4137         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
4138         to tm_file.
4139         * config/bfin/print-sysroot-suffix.sh: New.
4140         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
4141         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4142         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4143         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
4144         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4145         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4146         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
4147         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
4148         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4149         (linux-sysroot-suffix.h): New target.
4150         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
4151         (mspecld-anomaly): Likewise.
4152         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
4153         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
4154         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
4155         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
4156         (bfin_si_revision): Declare.
4157         (bfin_workarounds): Declare.
4158         (WA_SPECULATIVE_LOADS): Define.
4159         (ENABLE_WA_SPECULATIVE_LOADS): Define.
4160         (WA_SPECULATIVE_SYNCS): Define.
4161         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
4162         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
4163         (LIB_SPEC): Add %s to the linker scripts.
4164         Use proper linker script for bf522, bf525, bf527,
4165         bf538, bf539, bf542, bf544, bf548, and bf549.
4166         * config/bfin/bfin.c (bfin_si_revision): Define.
4167         (bfin_workarounds): Define.
4168         (struct bfin_cpu): New.
4169         (bfin_cpus): New.
4170         (bfin_handle_option): Handle silicon revision part of -mcpu option.
4171         (override_options): Set bfin_workarounds.
4172         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
4173         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
4174         ENABLE_WA_SPECULATIVE_LOADS.
4175         (bfin_reorg): Likewise.
4176         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
4177         macros for bf522, bf525, bf527, bf538, bf539,
4178         bf542, bf544, bf548, and bf549.
4179         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
4180         Don't define __ID_SHARED_LIB__ when -msep-data.
4181         (TARGET_DEFAULT): Define as 0.
4182         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
4183         * doc/invoke.texi (Blackfin Options): Document silicon
4184         revision part of -mcpu option and it now accepts bf522, bf525,
4185         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
4186
4187 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4188
4189         * alias.c (memory_modified_1): Deconstify.
4190         (memory_modified_in_insn_p): Don't use const_note_stores.
4191         * rtl.h (const_note_stores): Delete.
4192         * rtlanal.c (const_note_stores): Likewise.
4193
4194 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4195
4196         * dse.c (find_shift_sequence): Temporarily revert to forbidding
4197         word shifts.
4198
4199 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4200
4201         PR target/33388
4202         PR target/33397
4203         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
4204         (addsi_small_int): Likewise.
4205         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
4206         (one_cmplsi2): Likewise.
4207         (negsi2): Delete.
4208         (enter_func): Expand insn using hard_frame_pointer_rtx and
4209         stack_pointer_rtx.
4210         (*enter_func): New.
4211         * config/fr30/fr30.c (fr30_expand_prologue): Check for
4212         hard_frame_pointer_rtx instead of using REGNO() check.
4213         Properly sign extend GEN_INT() argument.
4214
4215 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4216
4217         * config/m68k/m68k.c (override_options): Remove USE_GAS,
4218         use %. syntax.
4219         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
4220         alternatives with just jcc.
4221         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
4222         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
4223         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
4224         dbge_hi, dbge_si): Likewise.
4225
4226 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
4227
4228         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
4229         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
4230         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
4231         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
4232         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
4233
4234 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
4235
4236         * config/m68k/m68k-devices.def (51qe): New device.
4237         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
4238         to all uses of FL_FOR_isa_c for compatibility.
4239         (all_microarchs): Add cfv1 microarchitecture.
4240         (m68k_handle_option): Handle m51qe option.
4241         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
4242         (TUNE_CFV1): New macro.
4243         (enum uarch_type): Add ucfv1.
4244         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
4245         
4246 2007-09-18  Richard Guenther  <rguenther@suse.de>
4247
4248         PR tree-optimization/31863
4249         * tree-ssa-structalias.c (create_variable_info_for): Always
4250         free the fieldstack.
4251
4252 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
4253
4254         * opts.c (decode_options): Enable vectorization under -O3.
4255
4256 2007-09-18  Richard Guenther  <rguenther@suse.de>
4257
4258         PR tree-optimization/33340
4259         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
4260         SSA_NAMEs that occur in abnormal PHI nodes.
4261
4262 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4263
4264         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
4265         Don't use const_get_call_expr_in.
4266         * tree-gimple.c (const_get_call_expr_in): Delete.
4267         * tree-gimple.h (const_get_call_expr_in): Likewise.
4268
4269 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4270
4271         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
4272         not yet have a basic block.
4273         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
4274
4275 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
4276
4277         * config/mips/mips.c (mips_file_start): Add ".previous" directives
4278         to both ".section"s.
4279
4280 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4281
4282         * config/mips/mips.c (mips_output_mi_thunk): Use
4283         mips_function_ok_for_sibcall and const_call_insn_operand
4284         to determine if a direct sibcall is allowed.  Use
4285         mips_classify_symbol to determine a global pointer is needed.
4286
4287 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
4288
4289         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
4290
4291 2007-09-17  Chao-ying Fu  <fu@mips.com>
4292             Nigel Stephens  <nigel@mips.com>
4293
4294         * config/fixed-bit.h: New file.
4295         * config/fixed-bit.c: New file.
4296         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
4297
4298 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
4299
4300         * c-format.h (format_kind_info): Add alloc_char field.
4301         * c-format.c (scanf_flag_specs): Add 'm'.
4302         (scanf_flag_pairs): Add 'a', 'm' pair.
4303         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
4304         (format_types_orig): Add alloc_char fields.
4305         (check_format_info_main): Rename aflag to alloc_flag.
4306         Handle fki->alloc_char. modifier after width and before length
4307         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
4308         length modifiers as well.
4309         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
4310
4311         PR middle-end/33423
4312         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
4313         returned by build_call_expr.
4314
4315 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4316
4317         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
4318         NULL for variable-sized records too.
4319         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
4320
4321 2007-09-17  Tom Tromey  <tromey@redhat.com>
4322
4323         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
4324         (c_builtin_function): Likewise.
4325         (grokdeclarator): Likewise.
4326
4327 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
4328
4329         PR rtl-optimization/26449
4330         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
4331         (seq_insns_valid_p): Removed.
4332
4333 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4334
4335         * tree-nomudflap.c (gate_mudflap): New static function.
4336         (pass_mudflap_1): Use it as gate function.
4337         (pass_mudflap_2): Likewise.
4338
4339 2007-09-17  Jan Hubicka  <jh@suse.cz>
4340
4341         PR middle-end/33348
4342         PR target/33406
4343         * loop-invariant.c (move_invariant_reg): Unshare sequence.
4344
4345 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
4346
4347         PR tree-optimization/33319
4348         * tree-vect-analyze.c (vect_same_range_drs): New.
4349         (vect_vfa_range_equal): New.
4350         (vect_is_duplicate_ddr): Removed.
4351         (vect_mark_for_runtime_alias_test): Do not perform marking when
4352         optimizing for size or max_param for alias checking is zero.
4353         Move the function before vect_analyze_data_ref_dependence.
4354         (vect_analyze_data_ref_dependence): Add call to
4355         vect_mark_for_runtime_alias_test in two cases when dependence
4356         is not clear.
4357         (vect_analyze_data_ref_dependences): Do not call to
4358         vect_mark_for_runtime_alias_test.
4359         (vect_prune_runtime_alias_test_list): New.
4360         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
4361         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
4362         Update vec_outside_cost.
4363         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
4364         (vect_create_cond_for_alias_checks): Build the base address of data
4365         reference from DR_GROUP_FIRST_DR.
4366         (vect_loop_versioning): New.
4367         (vect_transform_loop): Add a call to vect_loop_versioning.
4368         Remove factored out code.
4369
4370 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4371
4372         PR middle-end/33273
4373         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
4374         to BLKmode.
4375
4376 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4377
4378         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
4379         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
4380         Fix the call to insn_rtx_cost.  Skip access sizes that require a
4381         real truncation of the store register.  Use convert_move instead
4382         of gen_lowpart when narrowing the result.
4383         (replace_read): Use convert_move instead of gen_lowpart when
4384         narrowing the store rhs.
4385
4386 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4387
4388         * config/mips/mips.md (SHORT): Fix long line.
4389         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
4390         to QImode and HImode.
4391
4392 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
4393
4394         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
4395
4396 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
4397
4398         * tree-parloops.c: New file.
4399         * tree-ssa-operands.h (free_stmt_operands): Declare.
4400         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
4401         block.
4402         * tree-pass.h (pass_parallelize_loops): Declare.
4403         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
4404         virtual operands.
4405         (build_omp_regions_1): Allow analysing just a single OMP region and
4406         its subregions.
4407         ( build_omp_regions_root, omp_expand_local): New functions.
4408         (build_omp_regions): Add argument to build_omp_regions_1 call.
4409         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
4410         autoparallelization is run.
4411         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
4412         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
4413         pass_parallelize_loops): New.
4414         * common.opt (ftree-parallelize-loops): New.
4415         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
4416         parallelize_loops): Declare.
4417         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
4418         * Makefile.in (tree-parloops.o): Added.
4419         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
4420         New functions.
4421         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
4422         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
4423         one extra edge as well.
4424         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
4425         Use VEC_free to free doms vector.
4426         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
4427         operands.  Recompute operand caches in the new function.
4428         (move_sese_region_to_fn): Update loop info.
4429         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
4430         * tree-ssa-operands.c (free_stmt_operands): New function.
4431
4432         * doc/passes.texi: Document autoparallelization.
4433         * doc/invoke.texi (-ftree-parallelize-loops): New option.
4434
4435 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4436
4437         PR target/33062
4438         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
4439         TYPE_PRECISION.
4440
4441 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
4442
4443         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
4444         the VEC is not NULL.
4445         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
4446         get_vectype_for_scalar_type succeeded.
4447         (vectorizable_conversion): Likewise.
4448
4449 2007-09-14  Jan Hubicka  <jh@suse.cz>
4450
4451         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
4452         TARGET_64BIT.
4453
4454 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
4455
4456         PR target/33438
4457         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
4458         register when operands[2] equals operands[1].
4459         (remainderxf3): Ditto.
4460
4461 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
4462             Nigel Stephens  <nigel@mips.com>
4463
4464         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
4465         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
4466         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
4467         declaration.
4468         (_Unwind_ForcedUnwind): Likewise.
4469         (_Unwind_Resume): Likewise.
4470         (_Unwind_Resume_or_Rethrow): Likewise.
4471         (_Unwind_Backtrace): Likewise.
4472         (_Unwind_SjLj_RaiseException): Likewise.
4473         (_Unwind_SjLj_ForcedUnwind): Likewise.
4474         (_Unwind_SjLj_Resume): Likewise.
4475         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
4476         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
4477         to definition.
4478         (_Unwind_ForcedUnwind): Likewise.
4479         (_Unwind_Resume): Likewise.
4480         (_Unwind_Resume_or_Rethrow): Likewise.
4481         (_Unwind_Backtrace): Likewise.
4482         * unwind-compat.c (_Unwind_Backtrace): Likewise.
4483         (_Unwind_ForcedUnwind): Likewise.
4484         (_Unwind_RaiseException): Likewise.
4485         (_Unwind_Resume): Likewise.
4486         (_Unwind_Resume_or_Rethrow): Likewise.
4487
4488         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
4489         nomips16 mode when IN_LIBGCC2 with hard float.
4490
4491 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
4492
4493         * config/mips/sdemtk.opt: Update to GPLv3.
4494         * config/mips/sdemtk.h: Likewise.
4495
4496 2007-09-14  Nigel Stephens  <nigel@mips.com>
4497
4498         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
4499         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
4500         for mipsisa32-*-linux*.
4501
4502 2007-09-14  Nigel Stephens  <nigel@mips.com>
4503             David Ung  <davidu@mips.com>
4504             Thiemo Seufer  <ths@mips.com>
4505             Richard Sandiford  <richard@codesourcery.com>
4506
4507         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
4508         * configure.ac: Add a mipssde threading type.
4509         * configure: Regenerate.
4510         * config/mips/sdemtk.h: New file.
4511         * config/mips/t-sdemtk: Likewise.
4512         * config/mips/sdemtk.opt: Likewise.
4513         * gthr-mipssde.h: Likewise.
4514         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
4515         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
4516         (MIPS_ICACHE_SYNC): New macro, split from ...
4517         * config/mips/mips.md (clear_cache): ...here.
4518         * config/mips/mips.c (mips_save_reg_p): Check
4519         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
4520         (build_mips16_function_stub): Use targetm.strip_name_encoding.
4521         (build_mips16_call_stub): Likewise.
4522
4523 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
4524
4525         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
4526
4527 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
4528
4529         PR target/32337
4530         * config/ia64/ia64.c (find_gr_spill): Don't decrement
4531         current_frame_info.n_local_regs.  Don't return emitted local
4532         regs.
4533         (ia64_compute_frame_size): Improve unwind hack to put
4534         RP, PFS, FP in that order by allowing some of the registers
4535         been already emitted, as long as they are emitted to the
4536         desired register.
4537
4538 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4539
4540         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
4541         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
4542         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
4543
4544 2007-09-13  Eric Christopher  <echristo@apple.com>
4545             Kenneth Zadeck <zadeck@naturalbridge.com>
4546
4547         * dse.c (find_shift_sequence): New function.
4548         (replace_read): Add case to remove read if it requires shift.
4549         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
4550         
4551 2007-09-13  Tom Tromey  <tromey@redhat.com>
4552
4553         * c-common.c (fname_as_string): Update.
4554         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
4555         (c_lex_one_token): Update.  Add 'parser' argument.
4556         (c_parser_simple_asm_expr): Update.
4557         (c_parser_attributes): Update.
4558         (c_parser_asm_statement): Update.
4559         (c_parser_asm_operands): Update.
4560         (c_parser_peek_token): Update.
4561         (c_parser_peek_2nd_token): Update.
4562         * c-lex.c (c_lex_string_translate): Remove.
4563         (c_lex_return_raw_strings): Likewise.
4564         (c_lex_with_flags): Added 'lex_flags' argument.
4565         (lex_string): Added 'translate' argument.
4566         * c-pragma.h (c_lex_with_flags): Update.
4567         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
4568         (C_LEX_STRING_NO_TRANSLATE): New define.
4569         (C_LEX_RAW_STRINGS): Likewise.
4570
4571 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4572
4573         From Jie Zhang:
4574         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
4575         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
4576         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
4577         (bfin_init_builtins): Initialize __builtin_bfin_ones,
4578         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
4579         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
4580         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
4581         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
4582         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
4583         (bdesc_1arg): Add __builtin_bfin_ones.
4584         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
4585         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
4586         and __builtin_bfin_csqu_fr16.
4587         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
4588         (ones): New define_insn.
4589         (ssaddhi3_parts): New define_insn.
4590         (sssubhi3_parts): New define_insn.
4591         (flag_mulhi_parts): New define_insn.
4592
4593 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
4594
4595         * common.opt (femit-class-debug-always): Turn off by default.
4596
4597 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
4598
4599         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
4600         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
4601
4602 2007-09-13  James E. Wilson  <wilson@specifix.com>
4603
4604         PR tree-optimization/33389
4605         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
4606         then set build_loads before returning.
4607
4608 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
4609             David Ung  <davidu@mips.com>
4610
4611         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
4612         {d}addiu and a negative immediate such that it works with MIPS16
4613         instructions.
4614         
4615 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4616
4617         PR bootstrap/33418
4618         * configure.ac (ld_vers): Support Linux linker.
4619         * configure: Regenerated.
4620
4621 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4622             Sandra Loosemore <sandra@codesourcery.com>
4623
4624         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
4625         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
4626         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
4627         nomips16 into decl attributes.
4628         (TARGET_INSERT_ATTRIBUTES): Override.
4629         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
4630         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
4631         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
4632         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
4633         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
4634         (mips_use_mips16_mode_p): Reimplement as a function that takes
4635         a decl and considers only decl attributes.  If the decl is nested
4636         function, use its parent attributes.
4637         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
4638         instead of SYMBOL_REF_MIPS16_FUNC_P.
4639         (mips_set_mips16_mode): Move call to sorry here from old
4640         mips_use_mips16_mode_p.
4641         (mflip_mips16_entry): New structure.
4642         (mflip_mips16_htab): New variable.
4643         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
4644         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
4645         (mips_merge_decl_attributes): New function.
4646         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
4647         Use mips_use_mips16_mode_p.
4648         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
4649         SYMBOL_REF_MIPS16_FUNC_P.
4650         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
4651
4652 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
4653
4654         * c-parser.c (c_parser_struct_declaration): Check for a null return.
4655
4656 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4657
4658         PR driver/33309
4659         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
4660
4661 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
4662             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4663             Tony Linthicum  <tony.linthicum@amd.com>
4664
4665         * tree.h (function_args_iterator): New type to iterate over
4666         function arguments.
4667         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
4668         function arguments providing a pointer to the argument.
4669         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
4670         function arguments providing the argument.
4671         (function_args_iter_init): Inline function to initialize
4672         function_args_iterator.
4673         (function_args_iter_cond_ptr): Inline function to return the next
4674         pointer to hold the argument.
4675         (function_args_iter_cond): Inline function to return the next
4676         argument.
4677         (function_args_iter_cond_next): Advance the function args
4678         iterator.
4679         (stdarg_p): New function, return true if variable argument
4680         function.
4681         (prototype_p): New function, return true if function is
4682         prototyped.
4683         (function_args_count): New function, count the number of arguments
4684         of a function.
4685
4686         * tree.c (stdarg_p): New function, return true if variable
4687         argument function.
4688         (prototype_p): New function, return true if function is
4689         prototyped.
4690
4691         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4692         (TARGET_ROUND): New macro for the round/ptest instructions which
4693         are shared between SSE4.1 and SSE5.
4694         (OPTION_MASK_ISA_ROUND): Ditto.
4695         (OPTION_ISA_ROUND): Ditto.
4696         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4697         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4698
4699         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4700         (-mfused-madd): New switch to give users control over whether the
4701         compiler optimizes to use the multiply/add SSE5 instructions.
4702
4703         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
4704         m_ATHLON_K8_AMDFAM10, and change all uses.
4705         (enum pta_flags): Add PTA_SSE5.
4706         (ix86_handle_option): Turn off 3dnow if -msse5.
4707         (override_options): Add SSE5 support.
4708         (print_operand): %Y prints comparison codes for SSE5 com/pcom
4709         instructions.
4710         (ix86_expand_sse_movcc): Add SSE5 support.
4711         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4712         vector type to the next largest size.
4713         (ix86_expand_sse5_pack): New function to use pperm to pack a
4714         vector type to the next smallest size.
4715         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4716         (IX86_BUILTIN_FMADDSD): Ditto.
4717         (IX86_BUILTIN_FMADDPS): Ditto.
4718         (IX86_BUILTIN_FMADDPD): Ditto.
4719         (IX86_BUILTIN_FMSUBSS): Ditto.
4720         (IX86_BUILTIN_FMSUBSD): Ditto.
4721         (IX86_BUILTIN_FMSUBPS): Ditto.
4722         (IX86_BUILTIN_FMSUBPD): Ditto.
4723         (IX86_BUILTIN_FNMADDSS): Ditto.
4724         (IX86_BUILTIN_FNMADDSD): Ditto.
4725         (IX86_BUILTIN_FNMADDPS): Ditto.
4726         (IX86_BUILTIN_FNMADDPD): Ditto.
4727         (IX86_BUILTIN_FNMSUBSS): Ditto.
4728         (IX86_BUILTIN_FNMSUBSD): Ditto.
4729         (IX86_BUILTIN_FNMSUBPS): Ditto.
4730         (IX86_BUILTIN_FNMSUBPD): Ditto.
4731         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4732         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4733         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4734         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4735         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4736         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4737         (IX86_BUILTIN_PPERM): Ditto.
4738         (IX86_BUILTIN_PERMPS): Ditto.
4739         (IX86_BUILTIN_PERMPD): Ditto.
4740         (IX86_BUILTIN_PMACSSWW): Ditto.
4741         (IX86_BUILTIN_PMACSWW): Ditto.
4742         (IX86_BUILTIN_PMACSSWD): Ditto.
4743         (IX86_BUILTIN_PMACSWD): Ditto.
4744         (IX86_BUILTIN_PMACSSDD): Ditto.
4745         (IX86_BUILTIN_PMACSDD): Ditto.
4746         (IX86_BUILTIN_PMACSSDQL): Ditto.
4747         (IX86_BUILTIN_PMACSSDQH): Ditto.
4748         (IX86_BUILTIN_PMACSDQL): Ditto.
4749         (IX86_BUILTIN_PMACSDQH): Ditto.
4750         (IX86_BUILTIN_PMADCSSWD): Ditto.
4751         (IX86_BUILTIN_PMADCSWD): Ditto.
4752         (IX86_BUILTIN_PHADDBW): Ditto.
4753         (IX86_BUILTIN_PHADDBD): Ditto.
4754         (IX86_BUILTIN_PHADDBQ): Ditto.
4755         (IX86_BUILTIN_PHADDWD): Ditto.
4756         (IX86_BUILTIN_PHADDWQ): Ditto.
4757         (IX86_BUILTIN_PHADDDQ): Ditto.
4758         (IX86_BUILTIN_PHADDUBW): Ditto.
4759         (IX86_BUILTIN_PHADDUBD): Ditto.
4760         (IX86_BUILTIN_PHADDUBQ): Ditto.
4761         (IX86_BUILTIN_PHADDUWD): Ditto.
4762         (IX86_BUILTIN_PHADDUWQ): Ditto.
4763         (IX86_BUILTIN_PHADDUDQ): Ditto.
4764         (IX86_BUILTIN_PHSUBBW): Ditto.
4765         (IX86_BUILTIN_PHSUBWD): Ditto.
4766         (IX86_BUILTIN_PHSUBDQ): Ditto.
4767         (IX86_BUILTIN_PROTB): Ditto.
4768         (IX86_BUILTIN_PROTW): Ditto.
4769         (IX86_BUILTIN_PROTD): Ditto.
4770         (IX86_BUILTIN_PROTQ): Ditto.
4771         (IX86_BUILTIN_PROTB_IMM): Ditto.
4772         (IX86_BUILTIN_PROTW_IMM): Ditto.
4773         (IX86_BUILTIN_PROTD_IMM): Ditto.
4774         (IX86_BUILTIN_PROTQ_IMM): Ditto.
4775         (IX86_BUILTIN_PSHLB): Ditto.
4776         (IX86_BUILTIN_PSHLW): Ditto.
4777         (IX86_BUILTIN_PSHLD): Ditto.
4778         (IX86_BUILTIN_PSHLQ): Ditto.
4779         (IX86_BUILTIN_PSHAB): Ditto.
4780         (IX86_BUILTIN_PSHAW): Ditto.
4781         (IX86_BUILTIN_PSHAD): Ditto.
4782         (IX86_BUILTIN_PSHAQ): Ditto.
4783         (IX86_BUILTIN_FRCZSS): Ditto.
4784         (IX86_BUILTIN_FRCZSD): Ditto.
4785         (IX86_BUILTIN_FRCZPS): Ditto.
4786         (IX86_BUILTIN_FRCZPD): Ditto.
4787         (IX86_BUILTIN_CVTPH2PS): Ditto.
4788         (IX86_BUILTIN_CVTPS2PH): Ditto.
4789         (IX86_BUILTIN_COMEQSS): Ditto.
4790         (IX86_BUILTIN_COMNESS): Ditto.
4791         (IX86_BUILTIN_COMLTSS): Ditto.
4792         (IX86_BUILTIN_COMLESS): Ditto.
4793         (IX86_BUILTIN_COMGTSS): Ditto.
4794         (IX86_BUILTIN_COMGESS): Ditto.
4795         (IX86_BUILTIN_COMUEQSS): Ditto.
4796         (IX86_BUILTIN_COMUNESS): Ditto.
4797         (IX86_BUILTIN_COMULTSS): Ditto.
4798         (IX86_BUILTIN_COMULESS): Ditto.
4799         (IX86_BUILTIN_COMUGTSS): Ditto.
4800         (IX86_BUILTIN_COMUGESS): Ditto.
4801         (IX86_BUILTIN_COMORDSS): Ditto.
4802         (IX86_BUILTIN_COMUNORDSS): Ditto.
4803         (IX86_BUILTIN_COMFALSESS): Ditto.
4804         (IX86_BUILTIN_COMTRUESS): Ditto.
4805         (IX86_BUILTIN_COMEQSD): Ditto.
4806         (IX86_BUILTIN_COMNESD): Ditto.
4807         (IX86_BUILTIN_COMLTSD): Ditto.
4808         (IX86_BUILTIN_COMLESD): Ditto.
4809         (IX86_BUILTIN_COMGTSD): Ditto.
4810         (IX86_BUILTIN_COMGESD): Ditto.
4811         (IX86_BUILTIN_COMUEQSD): Ditto.
4812         (IX86_BUILTIN_COMUNESD): Ditto.
4813         (IX86_BUILTIN_COMULTSD): Ditto.
4814         (IX86_BUILTIN_COMULESD): Ditto.
4815         (IX86_BUILTIN_COMUGTSD): Ditto.
4816         (IX86_BUILTIN_COMUGESD): Ditto.
4817         (IX86_BUILTIN_COMORDSD): Ditto.
4818         (IX86_BUILTIN_COMUNORDSD): Ditto.
4819         (IX86_BUILTIN_COMFALSESD): Ditto.
4820         (IX86_BUILTIN_COMTRUESD): Ditto.
4821         (IX86_BUILTIN_COMEQPS): Ditto.
4822         (IX86_BUILTIN_COMNEPS): Ditto.
4823         (IX86_BUILTIN_COMLTPS): Ditto.
4824         (IX86_BUILTIN_COMLEPS): Ditto.
4825         (IX86_BUILTIN_COMGTPS): Ditto.
4826         (IX86_BUILTIN_COMGEPS): Ditto.
4827         (IX86_BUILTIN_COMUEQPS): Ditto.
4828         (IX86_BUILTIN_COMUNEPS): Ditto.
4829         (IX86_BUILTIN_COMULTPS): Ditto.
4830         (IX86_BUILTIN_COMULEPS): Ditto.
4831         (IX86_BUILTIN_COMUGTPS): Ditto.
4832         (IX86_BUILTIN_COMUGEPS): Ditto.
4833         (IX86_BUILTIN_COMORDPS): Ditto.
4834         (IX86_BUILTIN_COMUNORDPS): Ditto.
4835         (IX86_BUILTIN_COMFALSEPS): Ditto.
4836         (IX86_BUILTIN_COMTRUEPS): Ditto.
4837         (IX86_BUILTIN_COMEQPD): Ditto.
4838         (IX86_BUILTIN_COMNEPD): Ditto.
4839         (IX86_BUILTIN_COMLTPD): Ditto.
4840         (IX86_BUILTIN_COMLEPD): Ditto.
4841         (IX86_BUILTIN_COMGTPD): Ditto.
4842         (IX86_BUILTIN_COMGEPD): Ditto.
4843         (IX86_BUILTIN_COMUEQPD): Ditto.
4844         (IX86_BUILTIN_COMUNEPD): Ditto.
4845         (IX86_BUILTIN_COMULTPD): Ditto.
4846         (IX86_BUILTIN_COMULEPD): Ditto.
4847         (IX86_BUILTIN_COMUGTPD): Ditto.
4848         (IX86_BUILTIN_COMUGEPD): Ditto.
4849         (IX86_BUILTIN_COMORDPD): Ditto.
4850         (IX86_BUILTIN_COMUNORDPD): Ditto.
4851         (IX86_BUILTIN_COMFALSEPD): Ditto.
4852         (IX86_BUILTIN_COMTRUEPD): Ditto.
4853         (IX86_BUILTIN_PCOMEQUB): Ditto.
4854         (IX86_BUILTIN_PCOMNEUB): Ditto.
4855         (IX86_BUILTIN_PCOMLTUB): Ditto.
4856         (IX86_BUILTIN_PCOMLEUB): Ditto.
4857         (IX86_BUILTIN_PCOMGTUB): Ditto.
4858         (IX86_BUILTIN_PCOMGEUB): Ditto.
4859         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4860         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4861         (IX86_BUILTIN_PCOMEQUW): Ditto.
4862         (IX86_BUILTIN_PCOMNEUW): Ditto.
4863         (IX86_BUILTIN_PCOMLTUW): Ditto.
4864         (IX86_BUILTIN_PCOMLEUW): Ditto.
4865         (IX86_BUILTIN_PCOMGTUW): Ditto.
4866         (IX86_BUILTIN_PCOMGEUW): Ditto.
4867         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4868         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4869         (IX86_BUILTIN_PCOMEQUD): Ditto.
4870         (IX86_BUILTIN_PCOMNEUD): Ditto.
4871         (IX86_BUILTIN_PCOMLTUD): Ditto.
4872         (IX86_BUILTIN_PCOMLEUD): Ditto.
4873         (IX86_BUILTIN_PCOMGTUD): Ditto.
4874         (IX86_BUILTIN_PCOMGEUD): Ditto.
4875         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4876         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4877         (IX86_BUILTIN_PCOMEQUQ): Ditto.
4878         (IX86_BUILTIN_PCOMNEUQ): Ditto.
4879         (IX86_BUILTIN_PCOMLTUQ): Ditto.
4880         (IX86_BUILTIN_PCOMLEUQ): Ditto.
4881         (IX86_BUILTIN_PCOMGTUQ): Ditto.
4882         (IX86_BUILTIN_PCOMGEUQ): Ditto.
4883         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4884         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4885         (IX86_BUILTIN_PCOMEQB): Ditto.
4886         (IX86_BUILTIN_PCOMNEB): Ditto.
4887         (IX86_BUILTIN_PCOMLTB): Ditto.
4888         (IX86_BUILTIN_PCOMLEB): Ditto.
4889         (IX86_BUILTIN_PCOMGTB): Ditto.
4890         (IX86_BUILTIN_PCOMGEB): Ditto.
4891         (IX86_BUILTIN_PCOMFALSEB): Ditto.
4892         (IX86_BUILTIN_PCOMTRUEB): Ditto.
4893         (IX86_BUILTIN_PCOMEQW): Ditto.
4894         (IX86_BUILTIN_PCOMNEW): Ditto.
4895         (IX86_BUILTIN_PCOMLTW): Ditto.
4896         (IX86_BUILTIN_PCOMLEW): Ditto.
4897         (IX86_BUILTIN_PCOMGTW): Ditto.
4898         (IX86_BUILTIN_PCOMGEW): Ditto.
4899         (IX86_BUILTIN_PCOMFALSEW): Ditto.
4900         (IX86_BUILTIN_PCOMTRUEW): Ditto.
4901         (IX86_BUILTIN_PCOMEQD): Ditto.
4902         (IX86_BUILTIN_PCOMNED): Ditto.
4903         (IX86_BUILTIN_PCOMLTD): Ditto.
4904         (IX86_BUILTIN_PCOMLED): Ditto.
4905         (IX86_BUILTIN_PCOMGTD): Ditto.
4906         (IX86_BUILTIN_PCOMGED): Ditto.
4907         (IX86_BUILTIN_PCOMFALSED): Ditto.
4908         (IX86_BUILTIN_PCOMTRUED): Ditto.
4909         (IX86_BUILTIN_PCOMEQQ): Ditto.
4910         (IX86_BUILTIN_PCOMNEQ): Ditto.
4911         (IX86_BUILTIN_PCOMLTQ): Ditto.
4912         (IX86_BUILTIN_PCOMLEQ): Ditto.
4913         (IX86_BUILTIN_PCOMGTQ): Ditto.
4914         (IX86_BUILTIN_PCOMGEQ): Ditto.
4915         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4916         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4917         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
4918         OPTION_MASK_ISA_ROUND for instructions that are shared between
4919         SSE4.1 and SSE5.
4920         (bdesc_2arg): Ditto.
4921         (bdesc_sse_3arg): Ditto.
4922         (enum multi_arg_type): New enum for describing the various SSE5
4923         intrinsic argument types.
4924         (bdesc_multi_arg): New table for SSE5 intrinsics.
4925         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4926         (ix86_expand_multi_arg_builtin): New function for creating SSE5
4927         intrinsics.
4928         (ix86_expand_builtin): Add SSE5 intrinsic support.
4929         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4930         operand instructions.
4931         (ix86_expand_sse5_multiple_memory): New function to split the
4932         second memory reference from SSE5 instructions.
4933         (type_has_variadic_args_p): Delete in favor of stdarg_p.
4934         (ix86_return_pops_args): Use stdarg_p to determine if the function
4935         has variable arguments.
4936         (ix86_setup_incoming_varargs): Ditto.
4937         (x86_this_parameter): Ditto.
4938
4939         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4940         declaration.
4941         (ix86_expand_sse5_pack): Ditto.
4942         (ix86_sse5_valid_op_p): Ditto.
4943         (ix86_expand_sse5_multiple_memory): Ditto.
4944
4945         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4946         constant for SSE5 support.
4947         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4948         (UNSPEC_SSE5_TRUEFALSE): Ditto.
4949         (UNSPEC_SSE5_PERMUTE): Ditto.
4950         (UNSPEC_SSE5_ASHIFT): Ditto.
4951         (UNSPEC_SSE5_LSHIFT): Ditto.
4952         (UNSPEC_FRCZ): Ditto.
4953         (UNSPEC_CVTPH2PS): Ditto.
4954         (UNSPEC_CVTPS2PH): Ditto.
4955         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4956         (PCOM_TRUE): Ditto.
4957         (COM_FALSE_S): Ditto.
4958         (COM_FALSE_P): Ditto.
4959         (COM_TRUE_S): Ditto.
4960         (COM_TRUE_P): Ditto.
4961         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4962         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4963         types.
4964         (memory attribute): Ditto.
4965         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4966         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4967         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4968         (floor<mode>2): Ditto.
4969         (ceil<mode>2): Ditto.
4970         (btrunc<mode>2): Ditto.
4971         (nearbyintdf2): Ditto.
4972         (nearbyintsf2): Ditto.
4973         (sse_setccsf): Disable if SSE5.
4974         (sse_setccdf): Ditto.
4975         (sse5_setcc<mode>): New support for SSE5 conditional move.
4976         (sse5_pcmov_<mode>): Ditto.
4977
4978         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4979         (SSEMODEF4): Ditto.
4980         (SSEMODEF2P): Ditto.
4981         (ssemodesuffixf4): New mode attribute for SSE5.
4982         (ssemodesuffixf2s): Ditto.
4983         (ssemodesuffixf2c): Ditto.
4984         (sserotatemax): Ditto.
4985         (ssescalarmode): Ditto.
4986         (sse_maskcmpv4sf3): Disable if SSE5.
4987         (sse_maskcmpv2df3): Ditto.
4988         (sse_vmmaskcmpv4sf3): Ditto.
4989         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
4990         instructions.
4991         (sse5_vmfmadd<mode>4): Ditto.
4992         (sse5_fmsub<mode>4): Ditto.
4993         (sse5_vmfmsub<mode>4): Ditto.
4994         (sse5_fnmadd<mode>4): Ditto.
4995         (sse5_vmfnmadd<mode>4): Ditto.
4996         (sse5_fnmsub<mode>4): Ditto.
4997         (sse5_vmfnmsub<mode>4): Ditto.
4998         (sse5i_fmadd<mode>4): Ditto.
4999         (sse5i_fmsub<mode>4): Ditto.
5000         (sse5i_fnmadd<mode>4): Ditto.
5001         (sse5i_fnmsub<mode>4): Ditto.
5002         (sse5i_vmfmadd<mode>4): Ditto.
5003         (sse5i_vmfmsub<mode>4): Ditto.
5004         (sse5i_vmfnmadd<mode>4): Ditto.
5005         (sse5i_vmfnmsub<mode>4): Ditto.
5006         (mulv16qi3): Add SSE5 support.
5007         (mulv4si3): Ditto.
5008         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
5009         (sse2_mulv4si3): Disable if SSE5.
5010         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
5011         (sse4_1_roundps): Ditto.
5012         (sse4_1_roundsd): Ditto.
5013         (sse4_1_roundss): Ditto.
5014         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
5015         be generated.
5016         (sse_maskcmpsf3): Ditto.
5017         (sse_vmmaskcmpv4sf3): Ditto.
5018         (sse2_maskcmpv2df3): Ditto.
5019         (sse2_maskcmpdf3): Ditto.
5020         (sse2_vmmaskcmpv2df3): Ditto.
5021         (sse2_eq<mode>3): Ditto.
5022         (sse2_gt<mode>3): Ditto.
5023         (sse5_pcmov_<mode>): Add SSE5 support.
5024         (vec_unpacku_hi_v16qi): Ditto.
5025         (vec_unpacks_hi_v16qi): Ditto.
5026         (vec_unpacku_lo_v16qi): Ditto.
5027         (vec_unpacks_lo_v16qi): Ditto.
5028         (vec_unpacku_hi_v8hi): Ditto.
5029         (vec_unpacks_hi_v8hi): Ditto.
5030         (vec_unpacku_lo_v8hi): Ditto.
5031         (vec_unpacks_lo_v8hi): Ditto.
5032         (vec_unpacku_hi_v4si): Ditto.
5033         (vec_unpacks_hi_v4si): Ditto.
5034         (vec_unpacku_lo_v4si): Ditto.
5035         (vec_unpacks_lo_v4si): Ditto.
5036         (sse5_pmacsww): New SSE5 intrinsic insn.
5037         (sse5_pmacssww): Ditto.
5038         (sse5_pmacsdd): Ditto.
5039         (sse5_pmacssdd): Ditto.
5040         (sse5_pmacssdql): Ditto.
5041         (sse5_pmacssdqh): Ditto.
5042         (sse5_pmacsdqh): Ditto.
5043         (sse5_pmacsswd): Ditto.
5044         (sse5_pmacswd): Ditto.
5045         (sse5_pmadcsswd): Ditto.
5046         (sse5_pmadcswd): Ditto.
5047         (sse5_pcmov_<move>): Conditional move support on SSE5.
5048         (sse5_phaddbw): New SSE5 intrinsic insn.
5049         (sse5_phaddbd): Ditto.
5050         (sse5_phaddbq): Ditto.
5051         (sse5_phaddwd): Ditto.
5052         (sse5_phaddwq): Ditto.
5053         (sse5_phadddq): Ditto.
5054         (sse5_phaddubw): Ditto.
5055         (sse5_phaddubd): Ditto.
5056         (sse5_phaddubq): Ditto.
5057         (sse5_phadduwd): Ditto.
5058         (sse5_phadduwq): Ditto.
5059         (sse5_phaddudq): Ditto.
5060         (sse5_phsubbw): Ditto.
5061         (sse5_phsubwd): Ditto.
5062         (sse5_phsubdq): Ditto.
5063         (sse5_pperm): Ditto.
5064         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
5065         (sse5_pperm_zero_v16qi_v8hi): Ditto.
5066         (sse5_pperm_sign_v8hi_v4si): Ditto.
5067         (sse5_pperm_zero_v8hi_v4si): Ditto.
5068         (sse5_pperm_sign_v4si_v2di): Ditto.
5069         (sse5_pperm_sign_v4si_v2di): Ditto.
5070         (sse5_pperm_pack_v2di_v4si): Ditto.
5071         (sse5_pperm_pack_v4si_v8hi): Ditto.
5072         (sse5_pperm_pack_v8hi_v16qi): Ditto.
5073         (sse5_perm<mode>): New SSE5 intrinsic insn.
5074         (rotl<mode>3): Ditto.
5075         (sse5_rotl<mode>3): Ditto.
5076         (sse5_ashl<mode>3): Ditto.
5077         (sse5_lshl<mode>3): Ditto.
5078         (sse5_frcz<mode>2): Ditto.
5079         (sse5s_frcz<mode>2): Ditto.
5080         (sse5_cvtph2ps): Ditto.
5081         (sse5_cvtps2ph): Ditto.
5082         (sse5_vmmaskcmp<mode>3): Ditto.
5083         (sse5_com_tf<mode>3): Ditto.
5084         (sse5_maskcmp<mode>3): Ditto.
5085         (sse5_maskcmp_uns<mode>3): Ditto.
5086         (sse5_maskcmp_uns2<mode>3): Ditto.
5087         (sse5_pcom_tf<mode>3): Ditto.
5088         
5089         * config/i386/predicates.md (const_0_to_31_operand): New predicate
5090         to match 0..31.
5091         (sse5_comparison_float_operator): New predicate to match the
5092         comparison operators supported by the SSE5 com instruction.
5093         (ix86_comparison_int_operator): New predicate to match just the
5094         signed int comparisons.
5095         (ix86_comparison_uns_operator): New predicate to match just the
5096         unsigned int comparisons.
5097
5098         * doc/invoke.texi (-msse5): Add documentation.
5099         (-mfused-madd): Ditto.
5100
5101         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
5102
5103         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
5104         mmintrin-common.h.
5105         (x86_64-*-*): Ditto.
5106
5107         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
5108
5109         * config/i386/bmmintrin.h: New file, provide common x86 compiler
5110         intrinisics for SSE5.
5111
5112         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
5113         mmintrin-common.h.
5114
5115         * config/i386/mmintrin-common.h: New file, to contain common
5116         instructions between SSE4.1 and SSE5.
5117
5118         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
5119         FOREACH_FUNCTION_ARGS to iterate over the argument list.
5120         (gen_regparm_prefix): Ditto.
5121
5122         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
5123         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
5124         prototype_p to determine if a function is prototyped.
5125
5126 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
5127
5128         * config/dfp-bit.c (dfp_conversion_exception): New function.
5129         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
5130         (DFP_TO_INT): Ditto.
5131         (INT_TO_DFP): Ditto.
5132         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
5133
5134 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
5135
5136         PR target/32338
5137         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
5138         before sp restoration even when total_size is 0, but
5139         frame_pointer_needed.
5140
5141 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
5142
5143         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
5144         (xtensa_copy_incoming_a7): Use start_sequence instead of
5145         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
5146         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
5147         of the saveregs sequence.
5148
5149 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
5150
5151         * c-tree.h (grokfield): Add a "tree *" argument.
5152         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
5153         Chain nested decl attributes to it.  Don't call decl_attributes here.
5154         (groktypename): Pass grokdeclarator a pointer to the attribute list.
5155         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
5156         (grokfield): Take a pointer to the decl's attributes and pass
5157         it to grokdeclarator.
5158         * c-parser.c (c_parser_struct_declaration): Update the calls to
5159         grokfield.  Call decl_attributes for anonymous struct and union
5160         fields.
5161
5162 2007-09-12  Jan Hubicka  <jh@suse.cz>
5163
5164         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
5165
5166 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5167
5168         PR tree-optimization/32377
5169         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
5170         between positive and negative dependence distance using DDR_REVERSED_P.
5171
5172 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
5173
5174         PR tree-optimization/33373
5175         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
5176         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
5177
5178 2007-09-12  Jan Hubicka  <jh@suse.cz>
5179
5180         PR target/33393
5181         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
5182         for !SSE_MATH
5183
5184 2007-09-12  Christian Bruel  <christian.bruel@st.com>
5185
5186         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
5187         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
5188         
5189 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5190
5191         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
5192         for oprnd1 if not required.
5193         (vectorizable_operation): Use scalar operand in SLP in case of 
5194         shift with scalar argument.
5195
5196 2007-09-12  Ira Rosen  <irar@il.ibm.com>
5197
5198         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
5199         to 1.
5200
5201 2007-09-11  James E. Wilson  <wilson@specifix.com>
5202
5203         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
5204         TARGET_UNWIND_INFO is defined.
5205         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
5206         after definition.
5207
5208 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
5209
5210         * config/sh/sh.c (calc_live_regs): Use
5211         current_function_saves_all_registers instead of
5212         current_function_has_nonlocal_label.
5213         (sh_allocate_initial_value): Likewise.
5214         (sh_get_pr_initial_val): Likewise.
5215         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
5216         * config/sh/sh.md (load_ra): Likewise.
5217
5218 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
5219
5220         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
5221
5222         PR target/33360
5223         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
5224         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
5225
5226 2007-09-12  Sa Liu  <saliu@de.ibm.com>
5227
5228         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
5229         operands to DFmode GE or LE compares.
5230
5231 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
5232
5233         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
5234         REG_CLASS_NAMES): Add P0REGS.
5235         (REGNO_REG_CLASS): Return it where appropriate.
5236         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
5237         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
5238         * doc/md.texi (Blackfin family): Document 'q' constraints.
5239
5240 2007-09-11  Steve Kenton  <skenton@ou.edu>
5241
5242         * pa/linux-unwind.h: Guard with inhibit_libc.
5243         * pa/hpux-unwind.h: Likewise.
5244
5245 2007-09-11  David Daney  <ddaney@avtrex.com>
5246
5247         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
5248         * doc/install.texi: Document new --with-llsc and --without-llsc
5249         options.
5250         * config.gcc: Handle --with-llsc and --without-llsc configure options.
5251         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
5252         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
5253         ISA_HAS_SYNC.
5254         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
5255         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5256         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5257         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5258         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
5259         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
5260         * config/mips/mips.opt (mllsc): New option.
5261         * config/mips/mips.c (mips_llsc): Define variable.
5262         (mips_handle_option): Handle mllsc option.
5263         (override_options): Set mips_print_operand_punct for '|' and '-'.
5264         (print_operand): Add new %| and %- operand codes.
5265         * config/mips/mips.h (mips_llsc_setting): New enum type.
5266         (mips_llsc): Declare.
5267         (OPTION_DEFAULT_SPECS): Add llsc handling.
5268         (GENERATE_SYNC): New macro.
5269         (GENERATE_LL_SC): New macro.
5270         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
5271         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5272         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
5273         in %| and %- operand codes.
5274
5275 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
5276
5277         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
5278         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
5279
5280 2007-09-11  Jason Merrill  <jason@redhat.com>
5281
5282         PR middle-end/27945
5283         * stor-layout.c (layout_decl): Do pack variable size fields.    
5284
5285 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
5286
5287         * config/m68k/predicates.md (movsi_const0_operand,
5288         non_symbolic_call_operand): New predicates.
5289
5290         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
5291         New constraints.
5292         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
5293         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
5294         CW, CZ, CS, Ap and Ac.
5295
5296         * config/m68k/m68k.md (UNSPEC_IB): New constant.
5297         (constraints.md): New include.
5298         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
5299         opx_mem, opy_mem, op_mem, guess, split): New attributes.
5300         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
5301         Specify attributes.
5302         (pushdi): Add split.
5303         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
5304         attributes.  Split tstsi_internal_68020_cf from it.
5305         (tstsi_internal_68020_cf): New pattern.
5306         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
5307         (tst<mode>_cf): Specify attributea.
5308         (cmpsi_cf): Name pattern.  Specify attributes.
5309         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
5310         (pushexthisi_const): Fix to use alternatives.  Specify
5311         attributes.
5312         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
5313         from it.  Fix to use alternatives.  Specify attributes.
5314         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
5315         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
5316         attributes.
5317         (movsf_cf_soft): Specify attributes.
5318         (movdf_cf_soft): Add split.
5319         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
5320         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
5321         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
5322         (truncdfsf2_68881): Name pattern.  Specify attributes.
5323         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
5324         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
5325         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
5326         Specify attributes.
5327         (addsi3_5200): Fix to use alternatives.  Specify attributes.
5328         Add splits.
5329         (add<mode>3_cf, subdi_dishl32): Specify attributes.
5330         (subsi3): Add alternative for subq.l.  Specify attributes.
5331         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
5332         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
5333         attributes.
5334         (umulhisi3): Specify attributes.
5335         (mulhisisi3_z): Name pattern.  Specify attributes.
5336         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
5337         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
5338         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
5339         bsetmemqi): Specify attributes.
5340         (bsetmemqi_ext): Name pattern.  Specify attributes.
5341         (bclrmemqi): Specify attributes.
5342         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
5343         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
5344         attributes.
5345         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
5346         pattern.  Specify attributes.
5347         (jump): Specify attributes.
5348         (tablejump_internal): Name pattern.  Specify attributes.
5349         (call_value): Split into non_symbolic_call_value,
5350         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
5351         alternatives.  Specify attributes.
5352         (non_symbolic_call_value, symbolic_call_value_jsr,
5353         symbolic_call_value_bsr): New patterns.
5354         (nop, return, unlink, indirect_jump): Specify attributes.
5355         (trap): Fix condition.  Specify attributes.
5356         (ib): New pattern.
5357
5358         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
5359         (override_options): Initialize it.  Initialize m68k_sched_cpu.
5360         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
5361         (const_method): Make global, rename to m68k_const_method.
5362         (const_int_cost, output_move_const_into_data_reg): Update.
5363         (output_move_double): Parametrize to emit rtl code, rename to
5364         handle_move_double.
5365         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
5366         emit_movsi): New static functions.
5367         (output_move_double): New function with semantics of old
5368         output_move_double.
5369         (m68k_emit_move_double): New function.
5370         (m68k_sched_cpu): New variable.
5371         (attr_op_type): New enum.
5372         (sched_guess_p): New variable.
5373         (sched_address_type, sched_operand_type, sched_attr_op_type):
5374         New static functions.
5375         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5376         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
5377         (sched_branch_type): New static variable.
5378         (m68k_sched_branch_type): New function.
5379         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
5380         (m68k_symbolic_call_var): Declare.
5381         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
5382         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
5383         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
5384         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
5385         Declare.
5386
5387 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
5388
5389         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
5390         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
5391         error if __builtin_va_arg_pack_len () wasn't optimized out during
5392         inlining.
5393         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
5394         with the number of inline's anonymous arguments.
5395         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
5396
5397 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
5398
5399         * fold-const.c (extract_muldiv_1): Do not simplify
5400         var * c * c to var.
5401
5402 2007-09-11  Jan Hubicka <jh@suse.cz>
5403
5404         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
5405         (TARGET_INTER_UNIT_CONVERSIONS): New.
5406         * i386.md (floatsi expanders): Remove redundant check for SImode
5407         source; offload to memory when asked for.
5408         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
5409         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5410         Update conditions;
5411         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
5412         floatsidf2_mixed_memory, floatsidf2_sse_memory
5413         floatdisf2_mixed_memory, floatsisf2_sse_memory,
5414         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
5415
5416 2007-09-11  Jan Hubicka <jh@suse.cz>
5417
5418         * toplev.c (process_options): all frontends now do unit-at-a-time.
5419         * cgraphunit.c: update comments.
5420         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
5421         * c-decl.c (finish_function): use cgraph_add_new_function.
5422         * function.c (expand_function_end): We are always unit-at-a-time.
5423
5424 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5425
5426         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
5427         settings for MIPS16.
5428         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
5429
5430 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5431
5432         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
5433         SYMBOL_FORCE_TO_MEM constants.
5434         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
5435         (mips16_rewrite_pool_refs_info): New structure.
5436         (mips16_rewrite_pool_constant): New function, split out from...
5437         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
5438         mips16_rewrite_pool_refs_info structure rather than a pointer
5439         to a constant pool.  Force force_to_mem_operands into memory.
5440         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
5441         * config/mips/predicates.md (force_to_mem_operand): New predicate.
5442         * config/mips/constraints.md (kf): New constraint.
5443         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
5444         (*movsi_mips16): Likewise.
5445
5446 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
5447             Nigel Stephens  <nigel@mips.com>
5448             David Ung  <davidu@mips.com>
5449
5450         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
5451         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
5452         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
5453         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
5454         (mips_zero_extend_cost): New functions.
5455         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
5456         Use the new functions.  Tweak many cost estimates, both here
5457         and in the new subroutines.  Return false when the cost of the
5458         operands has not been calculated.  Check for *clear_upper32.
5459         Check for floating-point multiply-add, reciprocal and rsqrt
5460         patterns.  Handle comparison and rotation codes.
5461
5462 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
5463
5464         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
5465         override default.
5466         * config/i386/i386.c (get_dllimport_decl): Don't strip
5467         FASTCALL_PREFIX.
5468
5469 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5470
5471         PR c/30013
5472         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
5473         declarations to top.
5474         (DFP_TO_BFP): Use for either XFmode or TFmode.
5475         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
5476         of BFP_VIA_TYPE.
5477         * config/dfp-bit.h: Include float.h.
5478         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
5479         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
5480         which doesn't mean the same thing.
5481         (BFP_KIND): Use 4 to mean TFmode.
5482         (BFP_FMT): Specify the number of decimal digits based on the
5483         number of mantissa digits.
5484         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
5485         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
5486         (STR_TO_BFP): Use strtold for XFmode or TFmode.
5487         (TFtype): Define if TFmode is supported.
5488         * doc/libgcc.texi (Decimal float library routines): Document
5489         TF conversion functions.
5490
5491 2007-09-10  Chao-ying Fu  <fu@mips.com>
5492
5493         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
5494         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
5495         (mips_emit_compare): Process fixed-point modes.
5496         (mips_pad_arg_upward): Support fixed-point types.
5497         (override_options): Allow fixed-point modes in accumulators.
5498         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
5499         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
5500         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
5501         (mips_scalar_mode_supported_p): New function to accept fixed-point
5502         modes if the width is not greater than two BITS_PER_WORD.
5503         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
5504         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
5505         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
5506         LONG_LONG_ACCUM_TYPE_SIZE): Define.
5507         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
5508         modes.
5509         ("IMODE"): New mode attribute.
5510         (mips-fixed.md): Include.
5511         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
5512         ACCUM, UACCUM.
5513         * config/mips/mips-fixed.md: New file.
5514
5515 2007-09-11  Ben Elliston  <bje@au.ibm.com>
5516
5517         * config/spu/spu.md: Formatting fixes.
5518
5519 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5520
5521         * config/dfp-bit.c (dfp_unary_func): Delete.
5522         (dfp_unary_op): Delete.
5523         (dfp_binary_op): Use decFloat functions instead of decNumber
5524         functions for binary operations.
5525         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
5526         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
5527         DFP_C_TYPE.
5528         (dfp_compare_op): Use decFloat functions insteadof decNumber
5529         functions for comparisons.
5530         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
5531         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
5532         DFP_C_TYPE.
5533         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
5534         call to dxx_binary_op and decFloat function.
5535         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
5536         calls to dxx_binary_op and decFloat function.
5537         * config/dfp-bit.h: Include decFloat header files.
5538         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
5539         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
5540         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
5541         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
5542
5543 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
5544             Jan Sjodin <jan.sjodin@amd.com>
5545
5546         * tree-vect-analyze.c (vect_analyze_operations): Change
5547         comparison of loop iterations with threshold to less than
5548         or equal to instead of less than. Reduce
5549         min_scalar_loop_bound by one.
5550         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
5551         Change prologue and epilogue iterations estimate to vf/2,
5552         when unknown at compile-time. Change versioning guard
5553         cost to taken_branch_cost. If peeling for alignment is
5554         unknown at compile-time, change peel guard costs to one
5555         taken branch and one not-taken branch per peeled loop.
5556         If peeling for alignment is known but number of scalar loop
5557         iterations is unknown at compile-time, change peel guard
5558         costs to one taken branch per peeled loop. Change the cost
5559         model equation to consider vector iterations as the loop
5560         iterations less the prologue and epilogue iterations.
5561         Change outside vector cost check to less than or equal to
5562         zero instead of equal to zero.
5563         (vect_do_peeling_for_loop_bound): Reduce
5564         min_scalar_loop_bound by one.
5565         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
5566         TARG_COND_NOT_TAKEN_BRANCH_COST.        
5567         * config/i386/i386.h (processor_costs): Add
5568         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
5569         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
5570         vec_align_load_cost, vect_unalign_load_cost,
5571         vec_store_cost, cond_taken_branch_cost,
5572         cond_not_taken_branch_cost.
5573         Define macros for x86 costs.
5574         * config/i386/i386.c:
5575         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
5576         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
5577         scalar_to_vec_cost, vec_align_load_cost, 
5578         vect_unalign_load_cost, vec_store_cost,
5579         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
5580         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
5581         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
5582         core2_cost, generic64_cost, generic32_cost): Set to default
5583         untuned costs.
5584         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
5585         (x86_builtin_vectorization_cost): New.
5586
5587 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
5588             Ben Elliston  <bje@au.ibm.com>
5589
5590         * dfp.c: Include decimal128Local.h; 
5591         (dfp_byte_swap): Remove.
5592         (encode_decimal32, decode_decimal32): Don't handle endianness.
5593         (encode_decimal64, decode_decimal64): Ditto.
5594         (encode_decimal128, decode_decimal128): Ditto.
5595         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
5596         (__swap64): Remove.
5597         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
5598         (__swap128): Remove
5599         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
5600         * Makefile.in (DECNUM_H): Add decimal128Local.h.
5601
5602 2007-09-10  David Daney  <ddaney@avtrex.com>
5603
5604         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
5605         define_constants.
5606         (memory_barrier): Rewrote as an insn that clobbers memory.
5607
5608 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5609
5610         * config/mips/mips.c (mips_global_pointer): Check
5611         call_really_used_regs instead of call_used_regs.
5612         (mips_save_reg_p): Likewise.  Save all call-saved registers
5613         if current_function_saves_all_registers.  Fix indentation.
5614         No longer treat $18 as a special case.
5615         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
5616
5617 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
5618
5619         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
5620         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
5621         the introductory comment.
5622         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5623         (override_options): Don't test for it.
5624         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
5625         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
5626         * config/mips/vr.h: As for config/mips/sde.h.
5627
5628 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5629             Revital Eres  <eres@il.ibm.com>
5630
5631         * target.h (struct gcc_target.sched): New field: sms_res_mii.
5632         (struct ddg): Define.
5633         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
5634         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
5635         * config/spu/spu.c: Include ddg.h.
5636         (TARGET_SCHED_SMS_RES_MII): Define.
5637         (spu_sms_res_mii): New function to calculate mii.
5638         * modulo-sched (res_MII): Use it.
5639         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
5640
5641 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5642
5643         * config/s390/s390.c (s390_dump_pool): Create copy of constant
5644         pool entries since they might hold values that must not be shared.
5645
5646 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
5647
5648         PR target/33369
5649         * config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
5650         Use 'N' operand constraint for op2.
5651         (lshr<mode>3): Ditto.
5652         (ashl<mode>3): Ditto.
5653         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
5654         (vec_shr_<mode>): Ditto.
5655         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
5656         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
5657
5658 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
5659
5660         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
5661         Change mode macro in the last real_2expN parameter to uppercase.
5662
5663 2007-09-10  Michael Matz  <matz@suse.de>
5664
5665         * tree-pass.h (pass_cselim): Declare new pass.
5666         * passes.c (init_optimization_passes): Link in pass_cselim.
5667         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
5668         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
5669         cond_store_replacement.
5670         (condstoretemp): New static variable.
5671         (cond_store_replacement): New function.
5672         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
5673         tree_ssa_phiopt_worker.
5674         (struct name_to_bb): New.
5675         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
5676         nt_init_block, nt_fini_block): New static functions.
5677         (seen_ssa_names, nontrap_set): New static variables.
5678         (gate_cselim, pass_cselim): Define new pass.
5679         * common.opt (ftree-cselim): New flag.
5680         * toplev.c (process_options): Set flag_tree_cselim if required.
5681
5682 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
5683
5684         * simplify-rtx.c (simplify_relational_operation_1): For recent
5685         canonicalization, don't recurse if op1 equals both PLUS arguments.
5686
5687 2007-09-09  David Daney  <ddaney@avtrex.com>
5688
5689         * optabs.c (expand_sync_operation):  Use plus insn if minus
5690         CONST_INT_P(val).
5691         (expand_sync_fetch_operation):  Ditto.
5692
5693 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5694
5695         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
5696         of cvtpq2ps.
5697         (*floatsisf2_sse_vector): Likewise.
5698
5699 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
5700
5701         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
5702
5703 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
5704
5705         * config/i386/i386.h (ix86_tune_indices): Rename
5706         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
5707         (TARGET_USE_VECTOR_CONVERTS): Updated.
5708         * config/i386/i386.c: Likewise.
5709
5710 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5711             Nigel Stephens <nigel@mips.com>
5712
5713         * doc/invoke.texi (Overall Options):  Add .sx file extension
5714         as a synonym for .S.
5715         * cppspec.c (known_suffixes): Likewise.
5716         * gcc.c (default_compilers): Likewise.
5717
5718 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5719
5720         PR target/30315
5721         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
5722         * simplify-rtx.c (simplify_relational_operation_1): Add the
5723         canonicalization from i386.h.
5724         * doc/md.texi (Canonicalization of Instructions): Document it.
5725
5726 2007-09-09  Jan Hubicka  <jh@suse.cz>
5727             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
5728
5729         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
5730         (TARGET_USE_VECTOR_CONVERTS): New.
5731         * i386.md: New post-reload splitters for converting SF to DF and DF to
5732         SF.
5733         (floatsi* expander): Special case vector conversions.
5734         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
5735         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
5736         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
5737         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
5738         Disable when doing vector converts.
5739         (floatsi<mode>2_i387): Disable when
5740         * sse.md (vec_dupv2df): Export.
5741         * i386.c (ix86_tune_features): Enable SSE conversions.
5742
5743 2007-09-09  Richard Guenther  <rguenther@suse.de>
5744
5745         * tree-ssa-operands.c (add_virtual_operand): Only mark
5746         stores as has_volatile_ops if alias information is not available.
5747
5748 2007-09-09  Revital Eres  <eres@il.ibm.com>
5749
5750         * doc/contrib.texi: Add myself.
5751
5752 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5753
5754         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
5755         stmt_vinfo_set_outside_of_loop_cost): New functions.
5756         * tree-vect-transform.c (vect_get_cost_fields): Remove.
5757         (vect_model_simple_cost): Call
5758         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
5759         field instead of calling vect_get_cost_fields.
5760         (vect_model_store_cost, vect_model_load_cost): Likewise.
5761
5762 2007-09-09  Revital Eres  <eres@il.ibm.com>
5763
5764         * config/rs6000/rs6000.c (paired_init_builtins): Add const
5765         declaration to bdesc_paired_preds variable.
5766         (paired_expand_builtin): Likewise.
5767
5768 2007-09-09  Revital Eres  <eres@il.ibm.com>
5769
5770         * dbgcnt.def (sms_sched_loop): New counter.
5771         * modulo-sched.c: Use sms_sched_loop instead of
5772         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
5773         perform swing modulo scheduling on.  Include dbgcnt.h.
5774         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
5775         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
5776
5777 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
5778
5779         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
5780         Substitute all uses with ...
5781         (MODEF): New mode iterator.
5782
5783         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
5784         from pre-regalloc define_insn_and_split splitter pattern.
5785         (*fix_trunc<mode>_i387_1): Ditto.
5786         (*fistdi2_1): Ditto.
5787         (*fist<mode>2_1): Ditto.
5788         (frndintxf2_floor): Ditto.
5789         (*fist<mode>2_floor_1): Ditto.
5790         (frndintxf2_ceil): Ditto.
5791         (*fist<mode>2_ceil_1): Ditto.
5792         (frndintxf2_trunc): Ditto.
5793         (frndintxf2_mask_pm): Ditto.
5794
5795         (prologue): Use (const_int 0) as never generated filler insn.
5796         (epilogue): Ditto.
5797         (sibcall_epilogue): Ditto.
5798         (eh_return_si): Ditto.
5799         (eh_return_di): Ditto.
5800
5801         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
5802         using MODEF mode iterator.
5803         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
5804         using MODEF mode iterator.
5805         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
5806         using MODEF mode iterator.
5807         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
5808         Macroize expander using MODEF mode iterator.
5809
5810         (zero_extendsidi2): Remove operand constraints from expander.
5811         (smuldi3_highpart): Ditto.
5812         (indirect_jump): Ditto.
5813         (tablejump): Ditto.
5814         (rsqrtsf2): Ditto.
5815         * config/i386/sse.md (storentv4sf): Ditto.
5816         (storentv2df): Ditto.
5817         (storentv2di): Ditto.
5818         (storentsi): Ditto.
5819         (sse2_cvtpd2ps): Ditto.
5820         (vec_interleave_highv16qi): Ditto.
5821         (vec_interleave_lowv16qi): Ditto.
5822         (vec_interleave_highv8hi): Ditto.
5823         (vec_interleave_lowv8hi): Ditto.
5824         (vec_interleave_highv4si): Ditto.
5825         (vec_interleave_lowv4si): Ditto.
5826         (vec_interleave_highv2di): Ditto.
5827         (vec_interleave_lowv2di): Ditto.
5828         (sse2_maskmovdqu): Ditto.
5829         * config/i386/mmx.md (mmx_maskmovq): Ditto.
5830
5831 2007-09-09  Ira Rosen  <irar@il.ibm.com>
5832
5833         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
5834         (struct _slp_tree, struct _slp_instance): Define new data structures
5835         along macros for their access.
5836         (struct _loop_vec_info): Define new fields: strided_stores,
5837         slp_instances, and slp_unrolling_factor along macros for their access.
5838         (enum slp_vect_type): New.
5839         (struct _stmt_vec_info): Define new field, slp_type, and macros for
5840         its access.
5841         (STMT_VINFO_STRIDED_ACCESS): New macro.
5842         (vect_free_slp_tree): Declare.
5843         (vectorizable_load): Add an argument of type slp_tree.
5844         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
5845         vectorizable_assignment): Likewise.
5846         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
5847         Declare (make extern).
5848         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
5849         (new_loop_vec_info): Likewise.
5850         (destroy_loop_vec_info): Free memory allocated for SLP structures.
5851         * tree-vect-analyze.c: Include recog.h.
5852         (vect_update_slp_costs_according_to_vf): New.
5853         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
5854         functions. For not pure SLP stmts with strided access check that the
5855         group size is power of 2. Update the vectorization factor according to
5856         SLP. Call vect_update_slp_costs_according_to_vf.
5857         (vect_analyze_group_access): New.
5858         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
5859         (vect_free_slp_tree): New functions.
5860         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
5861         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
5862         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
5863         vect_detect_hybrid_slp): Likewise.
5864         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
5865         and vect_detect_hybrid_slp.
5866         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
5867         SLP costs into account.
5868         (vect_get_cost_fields): New function.
5869         (vect_model_simple_cost): Make extern, add SLP parameter and handle
5870         SLP.
5871         (vect_model_store_cost, vect_model_load_cost): Likewise.
5872         (vect_get_constant_vectors): New function.
5873         (vect_get_slp_vect_defs, vect_get_slp_defs,
5874         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
5875         vect_get_vec_defs): Likewise.
5876         (vectorizable_reduction): Don't handle SLP for now.
5877         (vectorizable_call): Don't handle SLP for now. Add argument to
5878         vect_model_simple_cost.
5879         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
5880         get SLPed and vectorized defs). Fix indentation and spacing.
5881         (vectorizable_assignment): Handle SLP.
5882         (vectorizable_induction): Don't handle SLP for now.
5883         (vectorizable_operation): Likewise.
5884         (vectorizable_type_demotion): Add argument to
5885         vect_model_simple_cost.
5886         (vectorizable_type_promotion): Likewise.
5887         (vectorizable_store, vectorizable_load): Handle SLP.
5888         (vectorizable_condition): Don't handle SLP for now.
5889         (vect_transform_stmt): Add a new argument for SLP. Check that there is
5890         no SLP transformation required for unsupported cases. Add SLP
5891         argument for supported cases.
5892         (vect_remove_stores): New function.
5893         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
5894         (vect_transform_loop): Schedule SLP instances.
5895         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
5896
5897 2007-09-09  Andrew Haley  <aph@redhat.com>
5898
5899         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
5900         signed optab.
5901
5902 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
5903
5904         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
5905         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
5906         Similar for what label_refs can go in the JUMP_TARGET field.  Split
5907         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
5908         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
5909         REG_LABEL when replacing an operand with a LABEL_REF for a
5910         non-jump insn.
5911         (subst_reloads): When replacing a LABEL_REG with a register,
5912         instead of generating a REG_LABEL note, assert that there already
5913         is one or that the label is a known target for the insn.
5914         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
5915         note, check the JUMP_LABEL field.  Remove "else" after return.
5916         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
5917         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
5918         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
5919         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
5920         insns.  Iterate over all notes; don't assume there's only one.
5921         * cse.c (recorded_label_ref): Adjust comment to refer to
5922         REG_LABEL_OPERAND.
5923         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
5924         insns, not just NONJUMP_INSN_P.
5925         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
5926         isn't a jump target.
5927         * jump.c (rebuild_jump_labels): Adjust head comment.
5928         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
5929         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
5930         (mark_all_labels): For JUMP_P insns without a target, check if the
5931         the target is noted on the previous nonjump insn.
5932         (mark_jump_label_1): New function, guts from mark_jump_label.
5933         <case IF_THEN_ELSE>: Handle first operand as a non-target when
5934         marking jump target labels.
5935         <case LABEL_REF>: Adjust for whether to generate a
5936         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
5937         For 'E' format rtl, iterate in descending element order.
5938         (delete_related_insns): Handle both REG_LABEL_TARGET and
5939         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
5940         reference count, delete and fallthrough.  Move finding-next-
5941         non-deleted insn last in the function.  Look at all INSN_P insns
5942         for REG_LABEL_OPERAND notes.
5943         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
5944         JUMP.
5945         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
5946         JUMP_LABEL, output the INSN_UID of it.
5947         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
5948         and/or REG_LABEL_TARGET.
5949         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
5950         with jump.c copy by only adding notes for labels actually
5951         referenced in the insn.
5952         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
5953         usage count increment; handle all INSN_P trial insns.
5954         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
5955         notes.
5956         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
5957         REG_LABEL_TARGET and REG_LABEL_OPERAND.
5958         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
5959         REG_LABEL_OPERAND.
5960         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
5961         JUMP_P insns and REG_LABEL_OPERAND everywhere.
5962         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
5963         on all INSN_P insns.
5964         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
5965         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
5966         REG_LABEL_OPERAND notes.
5967         * reload1.c (calculate_needs_all_insns): Adjust comments.
5968         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
5969         * config/alpha/alpha.md (split for load of an address into a
5970         four-insn sequence on Unicos/Mk): Adjust to use
5971         REG_LABEL_OPERAND.
5972         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
5973
5974 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5975
5976         Revert:
5977         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5978         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
5979         FOR_BB_INSNS_SAFE instead of for loop.
5980         * cse.c (cse_extended_basic_block): Likewise.
5981         * postreload.c (reload_cse_regs_1): New variable next. Make sure
5982         that the for loop does not invoke NEXT_INSN on a deleted insn.
5983         * function.c (instantiate_virtual_regs): Likewise.
5984         * lower-subreg.c (remove_retval_note): Likewise.
5985         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
5986         FOR_BB_INSNS.
5987         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
5988         a deleted insn.
5989         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
5990         insn, if it's a jump.
5991         (try_redirect_by_replacing_jump): New variable jump_p. Call
5992         tablejump_p before delete_insn_chain.
5993         * reload1.c (reload): New variable next. Make sure that the for
5994         loop does not invoke NEXT_INSN on a deleted insn.
5995         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
5996         (delete_output_reload): New variable prev. Make sure the the for
5997         loops do not invoke PREV_INSN on a deleted insn.
5998
5999 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6000
6001         * pa/constraints.md: Remove 'X' from unused letters comment.
6002
6003 2007-09-08  Richard Guenther  <rguenther@suse.de>
6004
6005         * tree-tailcall.c (find_tail_calls): If we don't have aliases
6006         computed check stmt_ann->references_memory instead of counting
6007         virtual operands.
6008  
6009 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
6010
6011         * cse.c (fold_rtx): Use validate_unshare_change() instead of
6012         validate_change() in one more case.
6013
6014 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
6015
6016         PR tree-optimization/32283
6017         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
6018         estimated_loop_iterations.
6019         (determine_use_iv_cost_condition): Decrease cost of expressions
6020         used in iv elimination.
6021
6022 2007-09-08  Richard Guenther  <rguenther@suse.de>
6023
6024         * tree-cfg.c (verify_gimple_expr): Avoid building new
6025         pointer types, use TYPE_POINTER_TO if available instead.
6026
6027 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
6028
6029         PR target/33329
6030         PR rtl-optimization/26449
6031         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
6032         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
6033         split1 pass.
6034         (mulv16qi3): Implement as define_insn_and_split pattern instead of
6035         define_expand.  Split insn in split1 pass.
6036         (mulv2di3): Ditto.
6037
6038 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
6039
6040         PR tree-optimization/33301
6041         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
6042         when relevant.
6043
6044 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
6045
6046         PR tree-optimization/32183
6047         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
6048
6049         * tree-ssa-reassoc.c: Include cfgloop.h.
6050         (is_reassociable_op): Add a loop argument and return true only
6051         for inside loop.
6052         (linearize_expr): Updated.
6053         (should_break_up_subtract): Likewise.
6054         (linearize_expr_tree): Likewise.
6055         (init_reassoc): Call loop_optimizer_init with
6056         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
6057         with CDI_DOMINATORS.
6058         (fini_reassoc): Call loop_optimizer_finalize.
6059
6060 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
6061
6062         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
6063         if there is no i-cache.
6064
6065 2007-09-07  Richard Guenther  <rguenther@suse.de>
6066
6067         Reapply
6068         2007-09-06  Richard Guenther  <rguenther@suse.de>
6069
6070         PR tree-optimization/32586
6071         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6072         folding if nothing changed.
6073         (simplify_unary_expression): New function.  Do tree combining
6074         on conversion like codes.
6075         (try_to_simplify): Call it.
6076
6077 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6078
6079         PR target/33286
6080         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
6081         (__gthread_active,__gthread_start, __gthread_active_init): New.
6082         * gthr-posix95.h: Likewise.
6083
6084 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
6085
6086         * function.h (struct function): Rename calls_unwind_init
6087         to saves_all_registers.
6088         (current_function_saves_all_registers): Renamed from
6089         current_function_calls_unwind_init.
6090         * reload1.c (reload): Set current_function_saves_all_registers.
6091         * except.c (expand_builtin_unwind_init): Likewise.
6092         * config/m68k/m68k.c (m68k_save_reg): Use
6093         current_function_saves_all_registers to save pic register.
6094
6095 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
6096
6097         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
6098         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
6099
6100         Reapply reverted changes:
6101
6102         2007-09-06  Jan Hubicka  <jh@suse.cz>
6103  
6104         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
6105         of real_2expN.
6106
6107         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6108
6109         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6110         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6111
6112         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6113
6114         * optabs.c (expand_float): Convert unsigned integer as signed only
6115         if it provides sufficient accuracy; add mode argument to real_2expN.
6116         (expand_fix): Fix comment typos; extend binary float into mode
6117         wider than destination for converion to unsigned integer; add mode
6118         argument to real_2expN.
6119         * real.c (real_2expN): Add mode argument to special-case decimal
6120         float values.
6121         * real.h (real_2expN): Ditto.
6122         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6123         real_2expN.
6124         (fixed_from_string): Ditto.
6125         (fixed_to_decimal): Ditto.
6126         (fixed_convert_from_real): Ditto.
6127         (real_convert_from_fixed): Ditto.
6128         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6129         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6130         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6131         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6132
6133 2007-09-07  Diego Novillo  <dnovillo@google.com>
6134
6135         * tree-flow.h (const_block_stmt_iterator): Remove.
6136         Update all users to use block_stmt_iterator.
6137         * tree-iterator.h (const_tree_stmt_iterator): Remove.
6138         Update all users to use tree_stmt_iterator.
6139
6140 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
6141
6142         * config/mips/mips.c (mips_set_current_function): Temporarily
6143         make this a no-op to fix bootstrap errors, pending rewrite.
6144
6145 2007-09-07  Jan Hubicka  <jh@suse.cz>
6146
6147         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
6148         in the pass.
6149
6150 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
6151
6152         PR tree-optimization/33299
6153         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
6154         uses for all relevant loop-exit phis, not just the first.
6155
6156 2007-09-07  Richard Guenther  <rguenther@suse.de>
6157
6158         PR middle-end/33330
6159         * tree-ssa-operands.c (access_can_touch_variable): An access
6160         of the form (*p)[0] can touch a variable of same size.
6161
6162 2007-09-07  Jan Hubicka  <jh@suse.cz>
6163
6164         * passes.c (init_optimization_passes): Add simple dce and addressable
6165         passes.
6166         * tree-ssa.c (execute_update_addresses_taken): New function.
6167         (pass_update_address_taken): New.
6168         * tree-ssa-dse.c (execute_simple_dse): New function.
6169         (pass_simple_dse): New.
6170         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
6171
6172 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6173
6174         PR middle-end/33321
6175         * doc/invoke.texi: Fix -Wstrict-overflow= table.
6176
6177 2007-09-07  Richard Guenther  <rguenther@suse.de>
6178
6179         Revert
6180         2007-09-06  Richard Guenther  <rguenther@suse.de>
6181
6182         PR tree-optimization/32586
6183         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6184         folding if nothing changed.
6185         (simplify_unary_expression): New function.  Do tree combining
6186         on conversion like codes.
6187         (try_to_simplify): Call it.
6188
6189 2007-09-07  Richard Guenther  <rguenther@suse.de>
6190             Uros Bizjak  <ubizjak@gmail.com>
6191
6192         PR tree-optimization/32821
6193         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
6194         NULL in the call to set_bb_stmt_list.
6195
6196 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6197
6198         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
6199         float calls here, rather than leaving some to the caller.
6200         Use call_internal_direct and call_value_internal_direct.
6201         * config/mips/mips.md (call_internal_direct): New pattern.
6202         (call_value_internal_direct): Likewise.
6203
6204 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6205
6206         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
6207         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
6208         to 0 for MIPS16.
6209         (override_options): Set mips_base_move_loop_invariants.
6210
6211 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6212
6213         * config/mips/mips.opt (mcode-readable=): Move to keep list
6214         alphabetical.
6215
6216 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
6217
6218         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
6219         and -mgpopt options.  Adjust the -G documentation to match.
6220         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
6221         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
6222         function, split out from mips_classify_symbol.  Return false for
6223         !TARGET_LOCAL_SDATA.
6224         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
6225         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
6226         (override_options): Check whether the -mgpopt setting is consistent
6227         with the other flags.
6228         (symbolic_expression_p): Delete.
6229         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
6230         and default_elf_select_rtx_section.
6231         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
6232         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
6233         external data and TARGET_EXTERN_SDATA.
6234
6235 2007-09-07  Tobias Burnus  <burnus@net-b.de>
6236
6237         PR fortran/33303
6238         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
6239
6240 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6241
6242         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6243         FOR_BB_INSNS_SAFE instead of for loop.
6244         * cse.c (cse_extended_basic_block): Likewise.
6245         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6246         that the for loop does not invoke NEXT_INSN on a deleted insn.
6247         * function.c (instantiate_virtual_regs): Likewise.
6248         * lower-subreg.c (remove_retval_note): Likewise.
6249         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6250         FOR_BB_INSNS.
6251         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6252         a deleted insn.
6253         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6254         insn, if it's a jump.
6255         (try_redirect_by_replacing_jump): New variable jump_p. Call
6256         tablejump_p before delete_insn_chain.
6257         * reload1.c (reload): New variable next. Make sure that the for
6258         loop does not invoke NEXT_INSN on a deleted insn.
6259         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6260         (delete_output_reload): New variable prev. Make sure the the for
6261         loops do not invoke PREV_INSN on a deleted insn.
6262
6263 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
6264
6265         * cgraphbuild.c (rebuild_cgraph_edges): Export.
6266         * cgraph.h (rebuild_cgraph_edges): Declare.
6267         * tree-pass.h (pass_expand_omp_ssa): New.
6268         * omp-low.c (find_omp_clause): Export.
6269         (copy_var_decl): Split from omp_copy_decl_2.
6270         (build_omp_barrier): Return the call to emit instead of emitting
6271         it directly.
6272         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
6273         build_omp_barrier.
6274         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
6275         expand_omp_for_generic, expand_omp_for_static_nochunk,
6276         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
6277         Adapted to work on SSA form.
6278         (execute_expand_omp): Do not invalidate dominance information.
6279         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
6280         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
6281         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
6282         a gimple_reg.
6283         (force_gimple_operand): Allow gimplifying code expressions without
6284         value.
6285         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
6286         * common.opt (fopenmp-ssa): New.
6287         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
6288         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
6289         * tree-cfg.c: Include tree-inline.h.
6290         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
6291         (replace_by_duplicate_decl, replace_ssa_name,
6292         mark_virtual_ops_in_region): New functions.
6293         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
6294         to work on SSA form.
6295         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
6296         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
6297         constructs.
6298
6299 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6300
6301         * tree-loop-linear.c: Include obstack.h.
6302         (linear_transform_loops): New obstack lambda_obstack.
6303         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
6304         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
6305         and free afterwards.
6306         * lambda.h (struct obstack): New forward declaration.
6307         (lambda_linear_expression_new): New parameter of type struct
6308         obstack *.
6309         (lambda_loopnest_new): Likewise.
6310         (lambda_loopnest_transform): Likewise.
6311         (lambda_body_vector_new): Likewise.
6312         (lambda_body_vector_compute_new): Likewise.
6313         (gcc_loopnest_to_lambda_loopnest): Likewise.
6314         (lambda_loopnest_to_gcc_loopnest): Likewise.
6315         * lambda-code.c: Include obstack.h.
6316         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
6317         allocation of ret.
6318         (lambda_body_vector_new): Likewise.
6319         (lambda_linear_expression_new): Likewise.
6320         (lambda_lattice_new): Likewise.
6321         (lambda_loopnest_new): Likewise.  Additionally use obstack to
6322         allocate LN_LOOPS(ret).
6323         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
6324         it to lambda_lattice_new.
6325         (lambda_body_vector_compute_new): New parameter lambda_obstack.
6326         Pass it to lambda_body_vector_new.
6327         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
6328         it to lambda_lattice_new.
6329         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
6330         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
6331         (lambda_compute_target_space): Likewise.
6332         (lambda_compute_auxillary_space): New parameter lambda_obstack.
6333         Pass it to lambda_lattice_compute_base and
6334         compute_nest_using_fourieer_motzkin.
6335         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
6336         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
6337         and lambda_lattice_compute_target_space.
6338         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
6339         Pass it to lambda_linear_expression_new.
6340         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
6341         to gcc_tree_to_linear_expression.
6342         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
6343         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
6344         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
6345         Pass it to lambda_body_vector_new and
6346         lambda_body_vector_compute_new.
6347         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
6348         (lambda-code.o): Likewise.
6349
6350 2007-09-06  Chao-ying Fu  <fu@mips.com>
6351
6352         * ginclude/stdfix.h: New file.
6353         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
6354         (convert.o): Add dependence on fixed-value.h.
6355         * c-convert.c (convert): Support FIXED_POINT_TYPE.
6356         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
6357         to define fixed-point constants.
6358         (c_cpp_builtins): Define fixed-point constants.
6359         * convert.c (fixed-value.h): New include.
6360         (convert_to_real): Update comment to include fixed-point.
6361         Support FIXED_POINT_TYPE.
6362         (convert_to_integer): Update comment to include fixed-point.
6363         Support FIXED_POINT_TYPE.
6364         (convert_to_complex): Support FIXED_POINT_TYPE.
6365         (convert_to_fixed): New function.
6366         * convert.h (convert_to_fixed): Declare.
6367         * genopinit.c: Add comment about $Q for only fixed-point modes.
6368         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
6369         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
6370         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
6371         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
6372         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
6373         usneg_optab for fixed-point modes.
6374         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
6375         modes.
6376         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
6377         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
6378         unsigned saturation optabs, when type is saturating.
6379         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
6380         (expand_fixed_convert): New function.
6381         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
6382         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
6383         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
6384         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
6385         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
6386         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
6387         functions.
6388         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
6389         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
6390         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
6391         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
6392         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
6393         satfractuns_optab.
6394         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
6395         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
6396         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
6397         fractuns, satfractuns.
6398         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
6399         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
6400         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
6401         OTI_ssmsub_widen,  OTI_usmsub_widen.
6402         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
6403         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
6404         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
6405         umsub_widen_optab, usmsub_widen_optab): Define.
6406         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
6407         COI_satfractuns.
6408         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
6409         Define.
6410         (expand_fixed_convert): Declare.
6411         * expr.c (convert_move): Support the move of fixed-point modes.
6412         (emit_move_insn_1): Handle fixed-point mode to move via integer.
6413         (categorize_ctor_elements_1): Handle FIXED_CST.
6414         (count_type_elements): Handle FIXED_POINT_TYPE.
6415         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
6416         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6417         Support FIXED_CST.
6418         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
6419         multiply and add/subtract for fixed-point types.
6420         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
6421         mode, we jump to binop directly.
6422         Support FIXED_CONVERT_EXPR.
6423         (do_store_flag): Check FIXED_CST to put a constant second.
6424         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
6425         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
6426         (const_vector_from_tree): Support FIXED_CST.
6427         * doc/extend.texi (Fixed-Point): New node.
6428         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
6429         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
6430         satfract, fractuns, satfractuns): Document them.
6431
6432 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
6433
6434         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
6435         addresses into I registers.
6436
6437 2007-09-06  Jan Hubicka  <jh@suse.cz>
6438             Andreas Tobler  <a.tobler@schweiz.org>
6439
6440         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
6441         sharing.
6442         (machopic_legitimize_pic_address): Likewise.
6443
6444 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6445             Jan Hubicka  <jh@suse.cz>
6446
6447         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
6448         instead of ufloat_optab->handlers directly.
6449         (floatdidf2): Likewise.
6450
6451 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
6452
6453         * config/mips/mips.c:  Include diagnostic.h.
6454         (mips_set_current_function): Check errorcount and sorrycount 
6455         before generating RTL.
6456
6457 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6458
6459         PR target/33256
6460         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
6461         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
6462         (print_operand_reloc): Likewise.
6463
6464 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
6465
6466         Revert:
6467
6468         2007-09-06  Jan Hubicka  <jh@suse.cz>
6469  
6470         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6471         real_2expN.
6472
6473         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6474
6475         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6476         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6477
6478         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6479
6480         * optabs.c (expand_float): Convert unsigned integer as signed only
6481         if it provides sufficient accuracy; add mode argument to real_2expN.
6482         (expand_fix): Fix comment typos; extend binary float into mode
6483         wider than destination for converion to unsigned integer; add mode
6484         argument to real_2expN.
6485         * real.c (real_2expN): Add mode argument to special-case decimal
6486         float values.
6487         * real.h (real_2expN): Ditto.
6488         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6489         real_2expN.
6490         (fixed_from_string): Ditto.
6491         (fixed_to_decimal): Ditto.
6492         (fixed_convert_from_real): Ditto.
6493         (real_convert_from_fixed): Ditto.
6494         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6495         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6496         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6497         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6498
6499 2007-09-06  Tom Tromey  <tromey@redhat.com>
6500
6501         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
6502         * c-pch.c (c_common_read_pch): Restore current location after
6503         reading PCH file.
6504         * tree.c (expand_location): Update.
6505         (expr_filename): Changed return type.  Unified the two cases.
6506         (expr_lineno): Likewise.
6507         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
6508         as lvalues.
6509         * toplev.c (line_table): Changed type.
6510         (general_init): Update.
6511         (realloc_for_line_map): New function.
6512         (general_init): Allocate line_table using GC.
6513         * fix-header.c (line_table): Changed type.
6514         (read_scan_file): Update.
6515         (read_scan_file): Update.
6516         * c-ppoutput.c (maybe_print_line): Update.
6517         (print_line): Update.
6518         (cb_line_change): Update.
6519         (cb_define): Update.
6520         (pp_file_change): Update.
6521         * c-opts.c (c_common_init_options): Update.
6522         (finish_options): Update.
6523         (push_command_line_include): Update.
6524         * c-lex.c (cb_line_change): Update.
6525         (cb_def_pragma): Update.
6526         (cb_define): Update.
6527         (cb_undef): Update.
6528         (c_lex_with_flags): Use cpp_get_token_with_location.
6529         * input.h (line_table): Changed type.
6530         (location_from_locus): New macro.
6531         * tree.h (EXPR_FILENAME): No longer an lvalue.
6532         (EXPR_LINENO): Likewise.
6533         (expr_locus, set_expr_locus): Declare separately for
6534         USE_MAPPED_LOCATION.
6535         (expr_filename, expr_lineno): Changed return type.
6536         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
6537         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
6538         (expand_gimple_basic_block): Likewise.
6539         * final.c (final_scan_insn): Use expanded_location.
6540
6541 2007-09-06  Richard Guenther  <rguenther@suse.de>
6542
6543         PR tree-optimization/32586
6544         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6545         folding if nothing changed.
6546         (simplify_unary_expression): New function.  Do tree combining
6547         on conversion like codes.
6548         (try_to_simplify): Call it.
6549         * builtins.c (fold_builtin_cexp): Fold the built expressions.
6550         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
6551
6552 2007-09-06  Jan Hubicka  <jh@suse.cz>
6553
6554         PR target/33318
6555         * cse.c (fold_rtx): Avoid invalid sharing.
6556
6557 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6558
6559         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6560         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6561
6562 2007-09-06  Revital Eres  <eres@il.ibm.com>
6563
6564         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
6565         Fix offsettable memory reference for 750CL.
6566
6567 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
6568
6569         * reload.c (find_reloads_address_1): Try to preserve original
6570         base/index regclass of operands.
6571         * regrename.c (scan_rtx_address): Likewise.
6572         (replace_oldest_value_addr): Likewise.
6573
6574 2007-09-06  Richard Guenther  <rguenther@suse.de>
6575
6576         PR tree-optimization/33302
6577         * domwalk.c (walk_dominator_tree): The exit block is
6578         interesting even if it is not reachable.
6579
6580 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6581
6582         PR middle-end/33306
6583         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
6584
6585 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
6586
6587         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
6588         robustness.
6589
6590 2007-09-05  Ian Lance Taylor  <iant@google.com>
6591
6592         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
6593         when printing.
6594         (dump_generic_node): Likewise.
6595         * print-rtl.c (print_decl_name): Likewise.
6596         * print-tree.c (print_node_brief): Likewise.
6597         (print_node): Likewise.
6598         * Makefile.in (RTL_BASE_H): Add alias.h.
6599         (TREE_H): Likewise.
6600
6601 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
6602
6603         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
6604         Defined.
6605         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
6606         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
6607
6608 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
6609
6610         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
6611         (tm_defines): Define UCLIBC_DEFAULT to 1.
6612         (extra_options): Add linux.opt.
6613         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6614         (CRT_CALL_STATIC_FUNCTION): Likewise.
6615         (NO_IMPLICIT_EXTERN_C): Likewise.
6616         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6617         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
6618         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
6619         (ENDFILE_SPEC): Don't define.
6620         (LIB_SPEC): Likewise.
6621         (CRT_CALL_STATIC_FUNCTION): Likewise.
6622         (NO_IMPLICIT_EXTERN_C): Likewise.
6623         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
6624         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
6625
6626 2007-09-06  Jan Hubicka  <jh@suse.cz>
6627
6628         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
6629         real_2expN.
6630
6631 2007-09-06  Jan Hubicka  <jh@suse.cz>
6632
6633         * opts.c (common_handle_option): Enable inlining functions for
6634         -fprofile-generate.
6635
6636 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
6637
6638         * builtin-attrs.def (ATTR_NONNULL_3): New.
6639         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
6640         ATTR_NOTHROW_NONNULL_##FA.
6641         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
6642         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
6643         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
6644         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
6645         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
6646         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
6647         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
6648         New.
6649         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
6650         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
6651         ATTR_FORMAT_NOTHROW_3_4): Remove.
6652         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
6653         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
6654         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
6655         instead of ATTR_FORMAT_*_*.
6656
6657 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
6658
6659         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
6660         parts re-used for REG_FRAME_RELATED_EXPR.
6661
6662 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6663
6664         * optabs.c (expand_float): Convert unsigned integer as signed only
6665         if it provides sufficient accuracy; add mode argument to real_2expN.
6666         (expand_fix): Fix comment typos; extend binary float into mode
6667         wider than destination for converion to unsigned integer; add mode
6668         argument to real_2expN.
6669         * real.c (real_2expN): Add mode argument to special-case decimal
6670         float values.
6671         * real.h (real_2expN): Ditto.
6672         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6673         real_2expN.
6674         (fixed_from_string): Ditto.
6675         (fixed_to_decimal): Ditto.
6676         (fixed_convert_from_real): Ditto.
6677         (real_convert_from_fixed): Ditto.
6678         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6679         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6680         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6681         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6682
6683 2007-09-05  Ian Lance Taylor  <iant@google.com>
6684
6685         * init-regs.c (initialize_uninitialized_regs): Call
6686         emit_insn_before rather than add_insn_before.
6687
6688 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6689
6690         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
6691         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
6692         * tree-inline.h (copy_body_data): Add call_expr field.
6693         * tree-inline.c (expand_call_inline): Initialize call_expr.
6694         (copy_bb): Append anonymous inline fn arguments to arguments
6695         when inlining a CALL_EXPR_VA_ARG_PACK call.
6696         * builtins.c (expand_builtin): Issue an error if
6697         BUILT_IN_VA_ARG_PACK is seen during expand.
6698         (fold_call_expr, fold_builtin_call_array): Don't fold
6699         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
6700         __builtin_va_arg_pack () call as last argument.
6701         * gimplify.c (gimplify_call_expr): If last argument to a vararg
6702         function is __builtin_va_arg_pack (), decrease number of call
6703         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
6704         * expr.c (expand_expr_real_1): Issue an error if
6705         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
6706         * tree-pretty-print.c (dump_generic_node): Handle printing
6707         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
6708         * doc/extend.texi (__builtin_va_arg_pack): Document.
6709
6710 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
6711
6712         PR tree-optimization/21513
6713         * builtins.c (build_builtin_expect_predicate): New function.
6714         (fold_builtin_expect): Add argument for expected value.
6715         Distribute __builtin_expect over short-circuiting operations.
6716         Fold nested builtin_expects.
6717         (fold_builtin_2): Adjust call to fold_builtin_expect.
6718
6719 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6720
6721         PR web/32965
6722         PR tree-optimization/13756
6723         * doc/invoke.texi (Options That Control Optimization): Document
6724         -ftree-dse.
6725
6726 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
6727
6728         * config/i386/cpuid.h: New file.
6729         * config/i386/driver-i386.c: Include cpuid.h.
6730         (describe_cache): Shrink size and line strings to 100 bytes.
6731         (detect_caches_amd): Return "" for unsupported max_ext_level.
6732         Use __cpuid function.
6733         (detect_caches_intel): Return "" for unsupported max_level.
6734         Use __cpuid function.
6735         (host_detect_local_cpu): Change feature flag variables to
6736         unsigned int.  Initialize only extended feature flag variables.
6737         Use __get_cpuid_max to determine max supported cpuid level.
6738         Use __cpuid function to determine supported features.  Fix
6739         calculation of family id.  Remove is_amd and check signature
6740         directly.  Check for Geode signature.  Handle family 4 id.
6741         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
6742         cpu discovery code to lower part of the function.
6743         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
6744         for sub-architecture.
6745         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
6746         [PROCESSOR_K8]: Add k8-sse3 architecture.
6747         [PROCESSOR_NOCONA]: Remove.
6748         [PROCESSOR_GENERIC64]: Ditto.
6749         * config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
6750         * config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
6751         to check for SSE and FXSAVE support.
6752         * config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
6753         Add -minline-all-stringops.
6754         * config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
6755         (x86_64-*-*): Ditto.
6756
6757 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
6758
6759         * config/bfin/linux-unwind.h: New file.
6760         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
6761         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
6762
6763 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6764
6765         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
6766         * stmt.c: Include alloc-pool.h.
6767         (struct case_node): Remove GTY marker.
6768         (add_case_node): New parameter case_node_pool.  Use it for
6769         allocation of r.
6770         (expand_case): New allocation pool case_node_pool.  Initialize it,
6771         pass to add_case_node and free it.
6772
6773 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6774             David Ung  <davidu@mips.com>
6775             Nigel Stephens <nigel@mips.com>
6776
6777         Add mips16/nomips16 function attributes and -mflip-mips16 option
6778         for testing mixed-mode compilation.
6779
6780         * config/mips/mips.opt (mflip-mips16): New.
6781
6782         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
6783         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
6784
6785         * config/mips/mips.c (mips_base_target_flags): New.
6786         (mips_base_mips16): New.
6787         (mips_base_schedule_insns): New.
6788         (mips_base_reorder_blocks_and_partition): New.
6789         (mips_base_align_loops): New.
6790         (mips_base_align_jumps): New.
6791         (mips_base_align_functions): New.
6792         (mips16_flipper): New.
6793         (mips_attribute_table): Add "mips16" and "nomips16" entries.
6794         (TARGET_SET_CURRENT_FUNCTION): Define.
6795         (mips_mips16_type_p, mips_nomips16_type_p): New.
6796         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
6797         (mips_function_ok_for_sibcall): Make it deal with functions with
6798         mips16 attributes.
6799         (mips_init_split_addresses): New, split out from override_options.
6800         (mips_init_relocs): New, split out from override_options.
6801         (was_mips16_p): New.
6802         (mips_set_mips16_mode): New, split out from override_options.
6803         (mips_set_current_function): New.
6804         (override_options): Add sorry for unsupported mips16/pic
6805         combination.  Remove error for mips16/dsp combination.  Save
6806         base option settings.  
6807         (mips_file_start): Move mips16 mode setting output from here....
6808         (mips_output_function_prologue): ....to here.
6809         (mips_output_mi_thunk): Check for mips16 function.
6810         (build_mips16_function_stub): Don't set .mips16 here.
6811         (build_mips16_call_stub): Likewise.
6812         (mips_expand_builtin): Error in mips16 mode.
6813         (mips_use_mips16_mode_p): New.
6814         (mips_encode_section_info): Check for mips16 function, and set
6815         SYMBOL_REF_FLAGS accordingly.
6816
6817         * doc/extend.texi (Function Attributes): Document new
6818         mips16/nomips16 attributes.
6819         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
6820         (MIPS Options): Document -mflip-mips16.
6821
6822 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6823
6824         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
6825         if we encounter TLS address in MIPS16 mode.
6826         (mips_legitimize_const_move): Check cannot_force_const_mem for
6827         the (const (plus symbol offset)) case; this forces invalid TLS
6828         address in MIPS16 mode to be caught by the above call to sorry.
6829         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
6830         because that now enables emutls, which is not ABI compatible
6831         with native TLS in non-MIPS16 mode.
6832
6833 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
6834
6835         Add target hook invoked when cfun changes.
6836
6837         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
6838         * target.h (struct gcc_target): Add set_current_function.
6839         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
6840         (TARGET_INITIALIZER): Add initializer for set_current_function.
6841         * tree.h (push_struct_function): New.
6842         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
6843         * function.h: Here.
6844         (set_cfun): Declare.
6845         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
6846         * function.c: Here.
6847         (push_function_context_to): Use allocate_struct_function
6848         to create null context, not init_dummy_function_start.  Use set_cfun.
6849         (pop_function_context_from): Use set_cfun.
6850         (in_dummy_function): New.
6851         (invoke_set_current_function_hook): New.
6852         (set_cfun): New.
6853         (push_cfun, pop_cfun): Use set_cfun.
6854         (push_struct_function): New.
6855         (allocate_struct_function): Call invoke_set_current_function_hook
6856         before returning.
6857         (prepare_function_start): Don't set cfun here.  Remove unused
6858         argument; fix all callers.
6859         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
6860         push_struct_function.
6861         (init_function_start): Set cfun here.
6862         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
6863         * omp-low.c (create_omp_child_function): Use push_struct_function
6864         and pop_cfun to save/restore state.
6865         (expand_omp_parallel): Remove unused saved_cfun variable.
6866         * cgraphunit.c (ipa_passes): Use set_cfun.
6867         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
6868         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
6869         * matrix-reorg.c (transform_allocation_sites): Likewise.
6870         (matrix_reorg): Use set_cfun.
6871         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
6872         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
6873         assignment to cfun; use set_cfun for the other.
6874         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
6875         (dump_function_to_file): Use push_cfun/pop_cfun here.
6876         * c-decl.c (finish_function): Use set_cfun.
6877
6878 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
6879
6880         * regrename.c (rerename_optimize): Use deferred rescanning and
6881         insert explicit calls to rescan insns when changed.
6882         
6883 2007-09-05  Jan Hubicka  <jh@suse.cz>
6884
6885         * optabs.c (libfunc_entry): Change optab to integer.
6886         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
6887         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
6888         of pointers for hashing.
6889
6890 2007-09-05  Jan Hubicka  <jh@suse.cz>
6891
6892         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
6893         verifier.
6894         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
6895         * see.c (pass_see): Likewise.
6896         * tracer.c (pass_tracer): Likewise.
6897         * postreload-gcse.c (pass_gcse2): Likewise.
6898         * postreload.c (pass_postreload_cse): Likewise.
6899         * mode-switching.c (pass_mode_switching): Likewise.
6900         * modulo-sched.c (pass_sms): Likewise.
6901         * cse.c (cse_insn): Likewise.
6902         * web.c (pass_web): Likweise.
6903         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
6904         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
6905         * loop-init.c (pass_rtl_loop_init): Likewise.
6906         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
6907         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
6908         * global.c (pass_global_alloc): Likewise.
6909         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
6910         pass_if_after_reload): Likewise.
6911         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
6912         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
6913         * regmove.c (pass_regmove): Likewise.
6914         * function.c (pass_thread_prologugues_epilogues): Likewise.
6915         * gcse.c (pass_gcse): Likewise.
6916         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
6917         * lower-subreg.c (pass_lower_subreg2): Likewise.
6918         * bt-load.c (pass_branch_target_load): Likewise.
6919         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
6920         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
6921         * combine.c (pass_combine): Likewise.
6922         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
6923         (pass_partition_blocks): Likewise.
6924         * var-tracking.c (pass_variable_track): Likewise.
6925         * reg-stack.c (pass_stack_regs_run): Likewise.
6926         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
6927         * passes.c (pass_postreload): Likewise.
6928         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
6929         * tree-pass.h (TODO_verify_rtl_sharing): New.
6930         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
6931         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
6932         TODO_set_props, TODO_df_finish, TODO_df_verify,
6933         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
6934
6935 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6936
6937         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
6938         fold_real_zero_addition_p, reorder_operands_p,
6939         div_if_zero_remainder, fold_undefer_overflow_warnings,
6940         int_binop_types_match_p, fold_convert_const_int_from_int,
6941         fold_convert_const_int_from_real,
6942         fold_convert_const_int_from_fixed,
6943         fold_convert_const_real_from_real,
6944         fold_convert_const_real_from_fixed,
6945         fold_convert_const_fixed_from_fixed,
6946         fold_convert_const_fixed_from_int,
6947         fold_convert_const_fixed_from_real, maybe_lvalue_p,
6948         fold_checksum_tree, fold_check_failed, print_fold_checksum,
6949         debug_fold_checksum, multiple_of_p): Constify.
6950         * tree-flow-inline.h (get_lineno): Likewise.
6951         * tree-flow.h (get_lineno): Likewise.
6952         * tree-object-size.c (compute_object_offset, addr_object_size,
6953         alloc_object_size, pass_through_call): Likewise.
6954         * tree-pretty-print.c (op_symbol, print_call_name,
6955         print_struct_decl, do_niy): Likewise.
6956         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
6957         debug_fold_checksum): Likewise.
6958
6959 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
6960
6961         PR middle-end/33029
6962         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
6963         note, remove the associated REG_RETVAL note.
6964
6965 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6966
6967         * config.gcc (powerpc*-*-*): Install
6968         spu2vmx.h, vec_types.h, and si2vmx.h headers.
6969         * config/rs6000/spu2vmx.h: New header.
6970         * config/rs6000/si2vmx.h: New header.
6971         * config/rs6000/vec_types.h: New header.
6972
6973 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6974
6975         * varasm.c (initializer_constant_valid_p): Fix comment typo.
6976
6977 2007-09-05  Ben Elliston  <bje@au.ibm.com>
6978
6979         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
6980         not `m' for *ptrp.
6981         (__stdcx): Make asm volatile.
6982         (__stwcx, __stdcx): Return only 0 or 1.
6983
6984 2007-09-05  Jan Hubicka  <jh@suse.cz>
6985
6986         Revert:
6987
6988         2007-09-04  Jan Hubicka  <jh@suse.cz>
6989         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
6990
6991         2007-09-04  Richard Guenther  <rguenther@suse.de>
6992         * tree-ssa-operands.c (add_virtual_operand): Only mark
6993         stores as has_volatile_ops if alias information is not available.
6994
6995 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
6996
6997         * config/rs6000/tramp.asm: Include config.h.
6998         Check __PIC__ or __pic__ macro instead of SHARED.
6999
7000         PR rtl-optimization/32300
7001         * see.c (see_copy_insn): New function.
7002         (see_def_extension_not_merged, see_merge_one_use_extension,
7003         see_merge_one_def_extension): Use it.  Avoid changing
7004         PREV_INSN/NEXT_INSN chains directly, insted emit insns
7005         into sequences.  Call df_insn_delete on temporary insns
7006         that won't be emitted into the insn stream.
7007         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
7008         and run df_process_deferred_rescans () before run_fast_dce.
7009
7010         PR tree-optimization/33017
7011         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
7012         recurse for pure or const function calls.
7013
7014 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7015
7016         * c-format.c: Include alloc-pool.h.
7017         (check_format_info_main): New argument fwt_alloc.  Use allocation
7018         pool instead of GC.  Remove GC deallocation code.
7019         (check_format_arg): Create allocation pool, pass it to
7020         check_format_info_main and free it afterwards.
7021         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
7022
7023 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7024
7025         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
7026         Rename count macro arugment for clarity.
7027         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
7028         (__protected_stream_set): Likewise, pass 0.
7029
7030 2007-09-04  Jan Hubicka  <jh@suse.cz>
7031
7032         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7033
7034 2007-09-04  Jan Hubicka  <jh@suse.cz>
7035
7036         * invoke.texi (-finline-small-functions): Document.
7037         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
7038         when deciding what is inlinable.
7039         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
7040         (cgraph_decide_inlining_of_small_function): Handle new flags.
7041         (cgraph_decide_inlining_incrementally): Likewise.
7042         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
7043         * common.opt (finline-small-functions): New.
7044         * Makefile.in (build/gengtype.o-warn): Work around PR29478
7045
7046 2007-09-04  Richard Guenther  <rguenther@suse.de>
7047
7048         * tree-ssa-operands.c (add_virtual_operand): Only mark
7049         stores as has_volatile_ops if alias information is not available.
7050
7051 2007-09-04  Andrew Haley  <aph@redhat.com>
7052
7053         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
7054
7055 2007-09-04  Andrew Haley  <aph@redhat.com>
7056
7057         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
7058         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
7059         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
7060
7061 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
7062
7063         PR c++/14178
7064         * common.opt: Mention ABI version 2 in comment.
7065
7066 2007-09-04  Jan Hubicka  <jh@suse.cz>
7067
7068         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
7069         (libfunc_entry): New structure.
7070         (libfunc_hash): New hashtable.
7071         (hash_libfunc): New function.
7072         (eq_libfunc): New function.
7073         (convert_optab_libfunc): New function.
7074         (optab_libfunc): New function.
7075         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
7076         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
7077         expand_float, expand_fix, new_optab, new_convert_optab):
7078          Update for new libfunc API.
7079         (init_libfunc, init_integral_libfuncs,
7080         init_floating_libfuncs, init_interclass_conv_libfuncs
7081         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
7082         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
7083         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7084         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
7085         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
7086         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
7087         gen_extend_conv_libfunc): New.
7088         (init_one_libfunc): Revamp for hashtables.
7089         (set_conv_libfunc): Likewise.
7090         (init_optabs): Initialize hashtable; use lazy initialization where
7091         possible.
7092         * optabs.h (optab_handlers): Move out of GGC.
7093         (optab, convert_optab): Move out of GGC; add lazy gen info.
7094         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
7095         (optab_libfunc, convert_optab_libfunc): New.
7096         * builtins.c (expand_builtin_powi): Update for new API.
7097         * expr.c (convert_move): Likewise.
7098         * expmed.c (expand_divmod): Likewise.
7099
7100 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7101
7102         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
7103         GOT pointer only if there is a constant pool.  Use the allocated space
7104         for SPE also.
7105
7106 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7107
7108         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
7109         typo for AltiVec.
7110
7111 2007-09-04  Revital Eres  <eres@il.ibm.com>
7112             Richard Guenther  <rguenther@suse.de>
7113             R. Clint Whaley  <whaley@cs.utsa.edu>
7114
7115         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
7116         Document new flags.
7117         * tree-tailcall.c (process_assignment): Use -fassociative-math
7118         when reodering operands of floating-point type.
7119         * fold-const.c (fold_comparison, fold_binary): Use
7120         -fassociative-math and -freciprocal-math instead of
7121         -funsafe-math-optimization flag.
7122         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
7123         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
7124         -freciprocal-math instead of -funsafe-math-optimizations.
7125         * opts.c (set_fast_math_flags): Set -freciprocal-math and
7126         -fassociative-math when -ffast-math is set.
7127         (set_unsafe_math_optimizations_flags): New Function
7128         to set -freciprocal-math and -fassociative-math when
7129         -funsafe-math-optimizations is set.
7130         (common_handle_option): Call it.
7131         * tree-vectorizer.c (vect_is_simple_reduction): Use
7132         -fassociative-math when doing reduction on floats.
7133         * loop-unroll.c (analyze_insn_to_expand_var): Use
7134         -fassociative-math when expanding an accumulator of type float.
7135         * simplify-rtx.c (simplify_binary_operation_1): Use
7136         -fassociative-math and -freciprocal-math when reordeing operands
7137         of floating-point type.
7138         * combine.c (combine_simplify_rtx): Likewise.
7139         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
7140         Likewise.
7141         * common.opt (-fassociative-math, -freciprocal-math): New flags.
7142
7143 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
7144
7145         PR c++/18608
7146         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
7147
7148 2007-09-04  Jan Hubicka  <jh@suse.cz>
7149
7150         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
7151
7152 2007-09-04  Jan Hubicka  <jh@suse.cz>
7153
7154         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
7155         and corresponding MATCH_DUP.
7156
7157 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
7158
7159         PR middle-end/33187
7160         * combine.c (subst): Do not try to simplify X if it represents load
7161         of FP constant from the constant pool via float extension.
7162
7163 2007-09-04  Ben Elliston  <bje@au.ibm.com>
7164
7165         * c-opts.c: Include "tm_p.h".
7166         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
7167
7168 2007-09-04  Richard Guenther  <rguenther@suse.de>
7169
7170         PR tree-optimization/33291
7171         * tree-pretty-print.c (dump_generic_node): Dump all
7172         qualifiers for pointer types, not only first.  Dump
7173         qualifiers for aggregate types as well.
7174         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
7175         use the canonical type for building ARRAY_REFs.
7176         * gimplify.c (canonicalize_addr_expr): Clean up.  The
7177         correct validness check is compatibility of the pointer
7178         types.  Always use the canonical type for building
7179         ARRAY_REFs and ADDR_EXPRs.
7180         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
7181         change that disabled propagation of ADDR_EXPRs into statements
7182         with volatile ops.
7183
7184 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7185
7186         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
7187         (umulsi3_highpart): Make into expanders; existing insns are
7188         now named *[insn]_nov6.  Add stars to existing [insn]_v6
7189         counterparts' names.
7190
7191 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
7192
7193         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
7194         (unprotoize.o): Remove SHLIB_MULTILIB.
7195
7196 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
7197
7198         * doc/extend.texi: Document progmem attribute for AVR.
7199
7200 2007-09-03  Anatoly Sokolov <aesok@post.ru>
7201
7202         PR target/28902
7203         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
7204
7205 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7206
7207         * optabs.c (expand_ffs): Initialize val and defined_at_zero
7208         to avoid warnings.
7209
7210         * optabs.c: Remove unnecessary forward declarations.
7211         (expand_unop_direct): New, broken out of expand_unop.
7212         (expand_doubleword_clz): New.
7213         (expand_ctz): Move above expand_ffs.  Use
7214         start_sequence, end_sequence, add_equal_note, and
7215         expand_unop_direct.  Add more commentary.
7216         (expand_ffs): Try both ctz optab and expand_ctz.
7217         Generate a test and branch if the hardware doesn't give us
7218         a useful value for input zero.  Style improvements similar to
7219         expand_ctz.
7220
7221         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
7222
7223 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7224
7225         * config.gcc: Delete stanza for arm-semi-aof and
7226         armel-semi-aof targets.
7227         * config/arm/arm-protos.h
7228         * config/arm/arm.c
7229         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
7230         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
7231         delete aof_pic_label and remove mention of AOF in comments.
7232         * config/arm/arm.md: Delete patterns used only for AOF assembly.
7233         * config/arm/aof.h
7234         * config/arm/semiaof.h
7235         * config/arm/t-semi: Delete file.
7236
7237 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7238
7239         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
7240         CONST_CAST_BB): New macros for type-specific casts.
7241         (CONST_CAST): Add a TYPE parameter and define it in terms of
7242         CONST_CAST2.
7243
7244         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
7245         * c-lex.c (cb_ident, lex_string): Likewise,
7246         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
7247         * config/i386/i386.c (ix86_function_regparm,
7248         ix86_function_sseregparm): Use CONST_CAST_TREE.
7249         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
7250         CONST_CAST.
7251         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
7252         give_switch, set_multilib_dir): Likewise,
7253         * gengtype-parse.c (string_seq, typedef_name): Likewise,
7254         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
7255         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
7256         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
7257         * prefix.c (update_path): Likewise,
7258         * pretty-print.c (pp_base_destroy_prefix): Likewise,
7259         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
7260         * tree-cfg.c (tree_can_merge_blocks_p,
7261         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
7262         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
7263         * tree.c (build_string): Supply a TYPE for CONST_CAST.
7264         (attribute_list_contained): Use CONST_CAST_TREE.
7265
7266 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
7267
7268         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
7269
7270 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7271
7272         PR middle-end/33290
7273         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
7274         before forcing them into a register.
7275
7276 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
7277
7278         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
7279         rather than define_code_macro.
7280
7281 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7282
7283         * gcc.c (xputenv): New function.
7284         (putenv_from_prefixes): Use xputenv instead of putenv.
7285         (process_command): Use xputenv instead of putenv.
7286         (set_collect_gcc_options): Use xputenv instead of putenv.
7287         (main): Use xputenv instead of putenv.
7288
7289 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7290
7291         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
7292         availability of swap instruction.
7293         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
7294
7295 2007-09-03  Revital Eres  <eres@il.ibm.com>
7296
7297         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
7298         Documentation.
7299
7300 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
7301             Ayal Zaks  <zaks@il.ibm.com>
7302             Revital Eres  <eres@il.ibm.com>
7303
7304         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
7305         compute_split_row): New functions.
7306         (ps_unschedule_node): Remove.
7307         (normalize_sched_times): Iterate over the already scheduled
7308         insns instead of the number of nodes.
7309         (MAX_SPLIT_NUM): New definition.
7310         (sms_schedule_by_order): Change the scheduling heuristic to
7311         avoid useless increases of initiation interval ii.
7312         (get_sched_window): Add dump printouts.
7313
7314 2007-09-02  David Daney  <ddaney@avtrex.com>
7315
7316         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
7317         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
7318         (optab, insn): Add more attributes.
7319         (fetchop_bit): New code macro.
7320         (immediate_insn): New code macro attribute.
7321         (sync): Change condition to ISA_HAS_SYNC.
7322         (rdhwr): Change predicate for operand 0 to register_operand.
7323         (memory_barrier): New expand.
7324         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
7325         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
7326         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
7327         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
7328         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
7329         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
7330         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
7331         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
7332         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
7333         
7334 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
7335             Hans-Peter Nilsson  <hp@axis.com>
7336
7337         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
7338         Defined to describe availability and behavior of CLZ.
7339         * config/cris/cris.md (clzsi2): Implement using lz instruction.
7340         * config/cris/cris.opt: Tweak comment for "-metrax4".
7341         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
7342         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
7343         (count_leading_zeros): Define.
7344
7345 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7346
7347         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
7348
7349 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
7350
7351         PR c/29237
7352         PR middle-end/33272
7353         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
7354         decayed from array.
7355
7356 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7357
7358         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
7359         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
7360         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
7361         sched-deps.c, sched-int.h, system.h, target.h,
7362         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
7363         tree.def: Fix comment typos.
7364
7365 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
7366
7367         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
7368         (override_options): Turn on -mstrict-align on non-ColdFire
7369         targets.
7370         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
7371
7372 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7373
7374         * c-common.c (const_strip_array_types): Delete.
7375         * c-common.h (const_strip_array_types): Likewise.
7376         * emit-rtl.c (const_next_insn, const_previous_insn,
7377         const_next_nonnote_insn, const_prev_nonnote_insn,
7378         const_next_real_insn, const_prev_real_insn,
7379         const_next_active_insn, const_prev_active_insn, const_next_label,
7380         const_prev_label): Delete.
7381         * gimple-low.c (block_may_fallthru): Use expr_last.
7382         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
7383         * rtl.h (const_previous_insn, const_next_insn,
7384         const_prev_nonnote_insn, const_next_nonnote_insn,
7385         const_prev_real_insn, const_next_real_insn,
7386         const_prev_active_insn, const_next_active_insn, const_prev_label,
7387         const_next_label): Delete.
7388         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
7389         * system.h (CONST_CAST): Update comment.
7390         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
7391         (const_first_stmt, const_last_stmt): Delete.
7392         (tree_block_ends_with_condjump_p): Use last_stmt.
7393         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
7394         * tree-iterator.c (const_expr_first, const_expr_last,
7395         const_expr_only): Delete.
7396         * tree.c (const_lookup_attribute): Likewise.
7397         (attribute_list_contained): Use lookup_attribute.
7398         * tree.h (const_lookup_attribute, const_expr_first,
7399         const_expr_last, const_expr_only): Delete.
7400
7401 2007-09-01  Richard Guenther  <rguenther@suse.de>
7402
7403         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
7404         instead of TREE_THIS_VOLATILE.
7405         * tree-ssa-operands.c (add_virtual_operand): Do not set
7406         has_volatile_ops.  Do not check s_ann for NULL.
7407         (get_indirect_ref_operands): Likewise.
7408         (get_expr_operands): Likewise.  For all reference trees
7409         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
7410         check base of reference for TREE_THIS_VOLATILE.
7411
7412 2007-09-01  Richard Guenther  <rguenther@suse.de>
7413
7414         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
7415         between integral types.  Also allow conversions between
7416         pointer types.
7417
7418 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7419
7420         * optabs.c (prepare_float_lib_cmp): Use
7421         libgcc_cmp_return_mode instead of word_mode.
7422         * config/dfp-bit.h: Likewise.
7423         * config/fp-bit.h: Likewise.
7424         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
7425         New function.
7426         (spu_libgcc_shift_count_mode): New function.
7427         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
7428         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
7429
7430 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
7431
7432         * tree-pretty-print.c: Include output.h.
7433         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
7434         HOST_WIDE_INT_PRINT_DEC.
7435         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
7436
7437 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
7438
7439         PR rtl-optimization/33224
7440         * loop-iv.c (latch_dominating_def): Check that the definition belongs
7441         to the analysed region.
7442
7443 2007-08-31  Richard Guenther  <rguenther@suse.de>
7444
7445         * function.c (allocate_struct_function): Do not set
7446         current_function_returns_pointer.
7447         * function.h (struct var_refs_queue): Remove.
7448         (struct simple_obstack_stack): Likewise.
7449         (struct function): Remove fixup_var_refs_queue member.
7450         Remove returns_pointer flag.
7451         (current_function_returns_pointer): Remove define.
7452
7453 2007-08-31  Nick Clifton  <nickc@redhat.com>
7454
7455         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
7456         secondary keys in order to obtain a stable sort.
7457
7458 2007-08-31  Nick Clifton  <nickc@redhat.com>
7459
7460         PR target/33132
7461         * config/m32r/constraints.md: Add W constraint for integer zero.
7462         * config/m32r/m32r.md (get_pc): Use W and i constraints.
7463         Fix length calculation by using alternatives.
7464
7465 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
7466
7467         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
7468         split out from expand_binop.
7469         (avoid_expensive_constant): New function.
7470         (expand_binop_directly): Remove commutative_op argument and
7471         (expand_binop_directly): Remove commutative_op argument and
7472         call cummutative_optab_p instead.  Do not change op0 or op1
7473         when swapping xop0 and xop1.  Apply avoid_expensive_constant
7474         to each argument after potential swapping.  Enforce the
7475         canonical order of commutative operands.
7476         (expand_binop): Use shift_optab_p and commutative_optab_p.
7477         Update the calls to expand_binop_directly.  Only force constants
7478         into registers when widening an operation.  Only swap operands
7479         once a direct expansion has been rejected.
7480         (expand_twoval_binop): Only force constants into registers when
7481         using a direct expansion.
7482
7483 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
7484
7485         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
7486         (sched_analyze_insn): Don't postprocess speculative dependencies when
7487         target has no scheduling.
7488         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
7489         'uninitialized' warning.
7490
7491 2007-08-31  Richard Guenther  <rguenther@suse.de>
7492
7493         * tree.c (build_complex_type): Always set TYPE_NAME for
7494         comples types.
7495
7496 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7497
7498         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
7499         internal macro. Default alignment factor for csect directives, chosen
7500         to match what BIGGEST_ALIGNMENT allows.
7501         (DATA_SECTION_ASM_OP): Use it.
7502         * config/rs6000/rs6000.c
7503         (rs6000_xcoff_output_readonly_section_asm_op):
7504         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
7505         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
7506         
7507 2007-08-31  Olivier Hainque  <hainque@adacore.com>
7508
7509         * dbxout.c (dbxout_block): Move declaration within the first
7510         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
7511         block to include the definition, together with the associated
7512         helpers.
7513
7514 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
7515             Revital Eres  <eres@il.ibm.com>
7516
7517         * doc/invoke.texi (-mpaired): Document flag.
7518         * config.gcc: Include paired.h in powerpc extra_headers and
7519         750cl.h in powerpc-*-linux*paired*.
7520         * config/rs6000/rs6000.opt (-mpaired): New flag.
7521         * config/rs6000/rs6000.c (paired_init_builtins,
7522         paired_expand_builtin, paired_expand_lv_builtin,
7523         paired_expand_stv_builtin, paired_expand_predicate_builtin):
7524         New functions to support the paired single builtin functions.
7525         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
7526         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
7527         single builtins.
7528         (bdesc_paired_preds): New structure for paired predicate
7529         instructions.
7530         (rs6000_expand_builtin): Expand paired single builtins.
7531         (rs6000_init_builtins): Init paired single builtins.
7532         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
7533         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
7534         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
7535         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
7536         (rs6000_vector_mode_supported_p): Support paired vector mode.
7537         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
7538         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
7539         New.
7540         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
7541         (DATA_ALIGNMENT): Likewise.
7542         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
7543         (rs6000_builtins): Add PAIRED builtins.
7544         * config/rs6000/rs6000.md: Include paired.md.
7545         * config/rs6000/paired.h: New.
7546         * config/rs6000/paired.md: New.
7547         * config/rs6000/750cl.h: New.
7548         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
7549
7550 2007-08-30  Ollie Wild  <aaw@google.com>
7551
7552         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
7553         * gcc.c (default_compilers): Add -fno-directives-only to
7554         @assembler-with-cpp.
7555
7556 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
7557
7558         PR middle-end/33211
7559
7560         * regclass.c (initial_fixed_regs): Revert previous change and make
7561         it const again.
7562         (initial_call_used_regs): Likewise.
7563         (initial_call_really_used_regs): Delete, reverting previous addition.
7564         (initial_reg_names): Likewise.
7565         (init_reg_sets): Revert previous change.
7566         (saved_fixed_regs): New.
7567         (saved_call_used_regs): New.
7568         (saved_call_really_used_regs): New.
7569         (saved_reg_names): New.
7570         (save_register_info): New.
7571         (restore_register_info): New.
7572         (init_reg_sets_1): Replace reset of register info with call to
7573         restore_register_info.
7574         * rtl.h (save_register_info): Declare.
7575         * toplev.c (backend_init): Call save_register_info.
7576
7577 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7578
7579         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
7580         from the original statement.
7581
7582 2007-08-30  Chao-ying Fu  <fu@mips.com>
7583
7584         * c-lex.c (interpret_fixed): Declare.
7585         (interpret_float): Process _Fract and _Accum.
7586         (interpret_fixed): New function.
7587         * final.c (output_addr_const): Process CONST_FIXED.
7588         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
7589         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
7590         SS_DIV, US_DIV.
7591         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
7592         US_DIV, US_ASHIFT.
7593         (simplify_immed_subreg): Support CONST_FIXED.
7594         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
7595         (simplify_subreg): Support CONST_FIXED.
7596
7597 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7598
7599         * config/rs6000/ppu_intrinsics.h: New file.
7600         * config.gcc (powerpc*-*-* <extra_headers>): Install
7601         ppu_intrinsics.h.
7602
7603 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7604
7605         * cfg.c (dump_flow_info): Change to also print entry and exit
7606         block info.
7607         * print-rtl.c (print_rtl_single): Allow to print rtl with
7608         -fdump-unnumbered.
7609         
7610 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
7611
7612         * df-core.h (df_dump_region): New function.
7613         * df.h (df_dump_region): New function.
7614         * loop-invariant.c (find_defs): Add call to df_dump_region.
7615         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
7616         df_dump_region.
7617         
7618 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7619
7620         PR target/33168
7621         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
7622         true if any of the compare_section_name calls returned true,
7623         rather than if any returned false.
7624
7625 2007-08-30  Richard Guenther  <rguenther@suse.de>
7626
7627         PR tree-optimization/33199
7628         * tree-ssa-structalias.c (handle_lhs_call): New function.
7629         (find_func_aliases): In non-IPA mode make sure that for
7630         calls that return a pointer we add a constraint for the
7631         result to point to anything.
7632
7633 2007-08-30  Richard Guenther  <rguenther@suse.de>
7634
7635         * doc/invoke.texi (-mveclibabi): Document new target option.
7636         * config/i386/i386.opt (-mveclibabi): New target option.
7637         * config/i386/i386.c (ix86_veclib_handler): Handler for
7638         vectorization library support.
7639         (override_options): Handle the -mveclibabi option, initialize
7640         the vectorization library handler.
7641         (ix86_builtin_vectorized_function): As fallback call the
7642         vectorization library handler, if set.
7643         (ix86_veclibabi_acml): New static function for ACML ABI style
7644         vectorization support.
7645
7646 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
7647
7648         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
7649         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
7650         SImode and update m.  Don't run gen_lowpart_common on arbitrary
7651         memory address, force it to register first.
7652
7653         PR middle-end/32758
7654         * dce.c (dce_process_block): Don't delete setters of
7655         artificially used registers.
7656
7657 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7658
7659         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
7660         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
7661         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
7662
7663 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7664
7665         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
7666         pattern.
7667         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
7668         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
7669
7670 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7671
7672         * system.h: Activate -Wcast-qual as warning-only.
7673
7674 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
7675
7676         PR target/33168
7677         * config/rs6000/rs6000.c (compare_section_name): New function.
7678         (rs6000_elf_in_small_data_p): Compare section prefixes instead
7679         of full name.
7680
7681 2007-08-29  Olivier Hainque  <hainque@adacore.com>
7682
7683         * xcoffout.c: #include debug.h.
7684         * Makefile.in (xcoffout.o): Add debug.h dependency.
7685
7686 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
7687
7688         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7689         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
7690
7691 2007-08-29  Richard Guenther  <rguenther@suse.de>
7692
7693         * tree-pretty-print.c (dump_generic_node): Print
7694         label DECL_UID as D.%u.
7695         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
7696
7697 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7698
7699         * builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
7700         * builtins.def (BUILT_IN_REALLOC): New builtin.
7701
7702 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
7703
7704         PR c++/33194
7705         * tree.c (build_type_attribute_qual_variant): Set canonical types
7706         on the final, unqualified attribute variant before building the
7707         qualified version.
7708
7709 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7710
7711         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
7712         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
7713
7714 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7715
7716         Revert
7717         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7718         * config/bfin/bfin.md (composev2hi): Put operands into vector
7719         with correct order.
7720
7721 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7722
7723         * config/bfin/bfin.md (composev2hi): Put operands into vector
7724         with correct order.
7725
7726 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
7727
7728         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
7729         attribute when appropriate.
7730         (bfin_handle_l1_text_attribute): New.
7731         (bfin_handle_l1_data_attribute): New.
7732         (bfin_attribute_table): Add attributes: l1_text, l1_data,
7733         l1_data_A and l1_data_B.
7734         * doc/extend.texi (node Function Attributes): Document l1_text
7735         function attribute.
7736         (Variable Attributes): Add Blackfin subsection. Document l1_data,
7737         l1_data_A and l1_data_B variable attributes.
7738
7739 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
7740
7741         * config/bfin/bfin.opt (minline-plt): Add.
7742         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
7743         call to global functions.
7744         * doc/invoke.texi (Option Summary): Mention -minline-plt.
7745         (Blackfin Options): Document -minline-plt.
7746
7747 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7748
7749         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
7750         given a non-function.
7751         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
7752
7753 2007-08-28  DJ Delorie  <dj@redhat.com>
7754
7755         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
7756
7757 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7758
7759         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
7760
7761 2007-08-28  Richard Guenther  <rguenther@suse.de>
7762
7763         * tree.h (struct tree_function_decl): Increase size of
7764         function_code bitfield.
7765
7766 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
7767             Kazu Hirata  <kazu@codesourcery.com>
7768
7769         * config/m68k/linux.h
7770         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
7771         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
7772         (m68k_return_in_memory): New.
7773         * config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
7774         New.
7775
7776 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
7777
7778         PR target/32661
7779         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
7780         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
7781         operand) when top VEC_SELECT extracts scalar element.
7782         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
7783         (*vec_extract_v4sf_mem): Ditto.
7784
7785 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
7786
7787         PR middle-end/32370
7788         * passes.c (init_optimization_passes): Move pass_df_finish
7789         after pass_postreload sublist.
7790
7791         PR rtl-optimization/33148
7792         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
7793         (neg (lt X 0)) if X has scalar int mode.
7794
7795         PR debug/32914
7796         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
7797         initializer, use build_vector_from_ctor if possible to create
7798         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
7799         even after this, return NULL.
7800
7801 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7802
7803         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
7804
7805 2007-08-28  Richard Guenther  <rguenther@suse.de>
7806
7807         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
7808         (struct tree_function_decl): Make function_code a bitfield.
7809         Add disregard_inline_limits flag.
7810         * cgraphunit.c (cgraph_process_new_functions): Check
7811         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
7812         (cgraph_preserve_function_body_p): Likewise.
7813         * ipa-inline.c (compute_inline_parameters): Likewise.
7814         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
7815         for GNU C extern inline functions.
7816         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
7817         * tree-inline.c (disregard_inline_limits_p): Remove.
7818         * tree-inline.h (disregard_inline_limits_p): Likewise.
7819         * c-common.c (handle_always_inline_attribute): Set
7820         DECL_DISREGARD_INLINE_LIMITS.
7821         * langhooks.c (add_builtin_function): Verify the function code
7822         fits in the bitfield.
7823
7824 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
7825             Vladimir Yanovsky  <yanov@il.ibm.com>
7826             Revital Eres  <eres@il.ibm.com>
7827             Andrey Belevantsev  <abel@ispras.ru>
7828
7829         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
7830         is set.
7831         * modulo-sched.c: Add documentation regarding do-loop.
7832         (doloop_register_get): Change number of arguments to support
7833         the new do-loop pattern and check whether COUNT_REG has no other
7834         occurences in the loop besides in the control part.
7835         (duplicate_insns_of_cycles): Do not duplicate the insn which
7836         changes count_reg as it is already adjusted.
7837         (generate_prolog_epilog): New argument to support the new
7838         do-loop pattern.  Change the subtract instruction to use
7839         expand_simple_binop.  Call duplicate_insns_of_cycles with new
7840         argument.
7841         (sms_schedule): Call doloop_register_get and
7842         generate_prolog_epilog with new argument.  Do not handle loops
7843         with single sets insns with subreg in their lhs.
7844         * loop-doloop.c (doloop_optimize): Support for another do-loop
7845         pattern.
7846         (doloop_condition_get): Gets an instruction instead of a pattern
7847         and change the return condition when the do-loop pattern is
7848         not parallel.
7849         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
7850         deps when considering to not create edges.
7851
7852 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
7853
7854         * doc/extend.texi (gnu_inline funtion attribute): Document C++
7855         behavior.
7856
7857 2007-08-27  Jason Merrill  <jason@redhat.com>
7858
7859         PR c++/31337
7860         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
7861         zero-sized types after calling gimplify_modify_expr_rhs.
7862
7863 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7864
7865         * regclass.c (init_reg_autoinc): Fix typo.
7866
7867 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
7868         
7869         Fix PR tree-optimization/33173
7870         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
7871
7872 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
7873
7874         PR target/31385
7875         * config/i386/i386.h (VALID_DFP_MODE_P): New.
7876         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
7877         GPR.
7878
7879 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
7880             David Ung  <davidu@mips.com>
7881             Nigel Stephens <nigel@mips.com>
7882
7883         Separate target-specific initialization from general
7884         back-end initialization.
7885
7886         * toplev.c (init_alignments): New, split out from...
7887         (process_options): ...here.
7888         (backend_init_target): New, split out from...
7889         (backend_init): ...here.
7890         (lang_dependent_init_target): New, split out from...
7891         (lang_dependent_init): ...here.
7892         (target_reinit): New.
7893         * toplev.h (target_reinit): Declare.
7894         * expr.c (init_expr_target): Renamed from init_expr_once, since it
7895         now can be called more than once.  Update comments.
7896         * expr.h (init_expr_target): Likewise.
7897         * alias.c (init_alias_target): Renamed from init_alias_once, since it
7898         now can be called more than once.  Explicitly zero
7899         static_reg_base_value.
7900         * emit-rtl.c (init_emit_regs): New, split out from...
7901         (init_emit_once): Here.
7902         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
7903         non-const, so that changes from command-line arguments can overwrite
7904         values provided by the static initializers.
7905         (initial_call_really_used_regs): New, used similarly to the above.
7906         (initial_reg_names): Likewise.
7907         (last_mode_for_init_move_cost): Promoted function-local static to
7908         file-scope static to make it accessible outside init_move_cost.
7909         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
7910         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
7911         reg_names since it is needed for parsing command-line options.
7912         (init_move_cost): Use last_mode_for_init_move_cost instead of
7913         function-local static.
7914         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
7915         call_really_used_regs now.  Reinitialize reg_names.  Also
7916         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
7917         reg_class_superunion.  Clear losing_caller_save_reg_set.
7918         Preserve global registers if called more than once.  Reset
7919         move cost, may_move_in_cost, may_move_out_cost, and
7920         last_mode_for_init_move_cost.
7921         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
7922         can now be invoked more than once.  Update comments.
7923         (init_regs): Update comments.
7924         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
7925         and initial_call_really_used_regs, instead of the non-initial 
7926         variables.  This allows us to save the command-line register settings
7927         after target reinitialization.
7928         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
7929         * rtl.h (init_emit_regs): Declare.
7930         (init_reg_modes_target, init_alias_target): Renamed as described
7931         above.
7932         * reload1.c (init_reload): Update comments.
7933         * optabs.c (init_optabs): Likewise.
7934         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
7935         
7936 2007-08-26  Chao-ying Fu  <fu@mips.com>
7937
7938         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
7939         __typeof().
7940
7941 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7942
7943         * alias.c (memory_modified_1, memory_modified_in_insn_p):
7944         Constify.
7945         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
7946         Likewise.
7947         * bb-reorder.c (copy_bb_p): Likewise.
7948         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
7949         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
7950         block_ends_with_condjump_p): Likewise.
7951         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
7952         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
7953         block_ends_with_condjump_p): Likewise.
7954         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
7955         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
7956         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
7957         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
7958         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
7959         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
7960         debug_true_const_tree instad of debug_true_tree.
7961         * debug.c (do_nothing_debug_hooks): Likewise.
7962         * debug.h (ignore_block, debug_true_const_tree): Constify.
7963         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
7964         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
7965         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
7966         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
7967         dbx_reg_number, is_based_loc, field_type,
7968         simple_type_align_in_bits, simple_decl_align_in_bits,
7969         simple_type_size_in_bits, field_byte_offset, insert_float,
7970         type_tag, member_declared_type, is_redundant_typedef,
7971         secname_for_decl, is_inlined_entry_point): Likewise.
7972         * emit-rtl.c (const_next_insn, const_previous_insn,
7973         const_next_nonnote_insn, const_prev_nonnote_insn,
7974         const_next_real_insn, const_prev_real_insn,
7975         const_next_active_insn, const_prev_active_insn, const_next_label,
7976         const_prev_label): Likewise.
7977         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
7978         Likewise.
7979         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
7980         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
7981         sched_insn_is_legitimate_for_speculation_p): Likewise.
7982         * jump.c (reversed_comparison_code_parts,
7983         reversed_comparison_code, reversed_comparison, condjump_label):
7984         Likewise.
7985         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
7986         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
7987         Likewise.
7988         * rtl.h (const_previous_insn, const_next_insn,
7989         const_prev_nonnote_insn, const_next_nonnote_insn,
7990         const_prev_real_insn, const_next_real_insn,
7991         const_prev_active_insn, const_next_active_insn, const_prev_label,
7992         const_next_label, modified_between_p, modified_in_p,
7993         const_note_storeskeep_with_call_p, condjump_label,
7994         reversed_comparison, reversed_comparison_code,
7995         reversed_comparison_code_parts, memory_modified_in_insn_p,
7996         stack_regs_mentioned): Likewise.
7997         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
7998         keep_with_call_p): Likewise.
7999         * sched-deps.c (deps_may_trap_p, sched_get_condition,
8000         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
8001         sd_lists_size, sd_lists_empty_p): Likewise.
8002         * sched-int.h (sched_insns_conditions_mutex_p,
8003         haifa_classify_insn, no_real_insns_p,
8004         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
8005         sd_lists_size, sd_lists_empty_p): Likewise.
8006         * sdbout.c (sdb_debug_hooks): Likewise.
8007         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
8008         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
8009         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
8010         Likewise.
8011         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
8012         tree_can_throw_internal): Likewise.
8013         * tree-flow-inline.h (phi_nodes): Likewise.
8014         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
8015         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
8016         * tree-gimple.c (const_get_call_expr_in): Likewise.
8017         * tree-gimple.h (const_get_call_expr_in): Likewise.
8018         * tree.c (const_lookup_attribute, attribute_list_equal,
8019         attribute_list_contained): Likewise.
8020         * tree.h (attribute_list_equal, attribute_list_contained,
8021         const_lookup_attribute): Likewise.
8022         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
8023
8024 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8025
8026         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
8027         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
8028
8029 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8030
8031         PR target/32991
8032         * config/alpha/constraints.md: Delete "svn:mime-type" property
8033         with svn propdel "svn:mime-type".
8034
8035 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8036
8037         PR middle-end/33181
8038         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
8039         non NOTE insn doesn't cross basic block.
8040         (noce_try_abs): Likewise.
8041         (noce_process_if_block): Likewise.
8042
8043 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
8044
8045         PR target/33151
8046         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
8047         operand without auto-inc-dec.
8048         * config/rs6000/rs6000.md (floatsidf2_internal): Use
8049         offsettable_mem_operand.
8050         (floatunssidf2_internal): Same.
8051         (fix_truncdfsi2_internal): Same.
8052         (floatsidf_ppc64): Same.
8053         (floatunssidf_ppc64): Same.
8054         (fix_trunctfsi2_internal): Same.
8055
8056 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8057
8058         PR bootstrap/30620
8059         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
8060         pass defines needed for version.c.
8061
8062 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
8063
8064         * configure.ac (--debug-prefix-map check): Change assembler
8065         version presumed to have feature to 2.18.
8066         * configure: Regenerate.
8067
8068 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8069
8070         * c-common.c (vector_types_convertible_p,
8071         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
8072         self_promoting_args_p): Constify.
8073         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
8074         c_promoting_integer_type_p, self_promoting_args_p,
8075         anon_aggr_type_p, vector_types_convertible_p): Likewise.
8076         * c-decl.c (anon_aggr_type_p): Likewise.
8077         * * c-dump.c (dump_stmt): Likewise.
8078         * c-objc-common.c (has_c_linkage): Likewise.
8079         * c-tree.h (same_translation_unit_p): Likewise.
8080         * c-typeck.c (null_pointer_constant_p,
8081         tagged_types_tu_compatible_p, function_types_compatible_p,
8082         type_lists_compatible_p, lvalue_or_else, lvalue_p,
8083         comptypes_internal, struct tagged_tu_seen_cache,
8084         same_translation_unit_p, alloc_tagged_tu_seen_cache,
8085         c_size_in_bytes): Likewise.
8086         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
8087         hash_ptr, eq_ptr): Likewise.
8088         * langhooks-def.h (lhd_decl_ok_for_sibcall,
8089         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
8090         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
8091         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
8092         Likewise.
8093         * optabs.c (optab_for_tree_code): Likewise.
8094         * optabs.h (optab_for_tree_code): Likewise.
8095         * rtl.h (simplify_rtx): Likewise.
8096         * simplify-rtx.c (simplify_rtx): Likewise.
8097         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
8098         dump_flag, dump_node): Likewise.
8099         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
8100         queue_and_dump_type, dump_flag): Likewise.
8101         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
8102         * tree-pass.h (dump_node): Likewise.
8103         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
8104         supportable_narrowing_operation): Likewise.
8105         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
8106         supportable_narrowing_operation): Likewise.
8107         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
8108         is_negative_overflow_infinity, is_positive_overflow_infinity,
8109         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
8110         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
8111         update_value_range, add_equivalence, ssa_name_nonnegative_p,
8112         ssa_name_nonzero_p, fp_predicate): Likewise.
8113         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
8114         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
8115         ssa_name_nonnegative_p): Likewise.
8116
8117 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
8118
8119         * config.gcc : Add x86_64-elf target.
8120
8121 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
8122
8123         * expr.c (store_expr): Fix order of store_by_pieces arguments.
8124
8125 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
8126             Nigel Stephens <nigel@mips.com>
8127
8128         PR target/11787
8129
8130         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
8131         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
8132         * expr.c (SET_BY_PIECES_P): Define.
8133         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
8134         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
8135         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
8136         store_by_pieces.
8137         * expr.h (SET_RATIO): Define.
8138         (can_store_by_pieces, store_by_pieces): Update prototypes.
8139         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
8140         can_store_by_pieces/store_by_pieces.
8141         (expand_builtin_memcpy_args): Likewise.
8142         (expand_builtin_strncpy): Likewise.
8143         (expand_builtin_memset_args): Likewise.  Also remove special case
8144         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
8145         decide what to do instead.
8146         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
8147         to can_store_by_pieces.
8148
8149         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
8150         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
8151
8152         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
8153         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
8154         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
8155         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
8156         (STORE_BY_PIECES_P): Define.
8157
8158 2007-08-24  Tom Tromey  <tromey@redhat.com>
8159
8160         * varpool.c (varpool_last_needed_node): Fix comment typo.
8161         * c-decl.c (duplicate_decls): Fix comment typo.
8162         (clone_underlying_type): Update comment.
8163
8164 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8165
8166         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
8167         alpha_in_small_data_p, alpha_split_complex_arg,
8168         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8169         Constify.
8170         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
8171         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
8172         Likewise.
8173         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
8174         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8175         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
8176         * config/darwin.c (darwin_binds_local_p): Likewise.
8177         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
8178         Likewise.
8179         * config/i386/i386-protos.h (i386_pe_binds_local_p,
8180         i386_pe_valid_dllimport_attribute_p): Likewise.
8181         * config/i386/i386.c (ix86_function_regparm,
8182         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
8183         x86_can_output_mi_thunk, ix86_mangle_type,
8184         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
8185         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
8186         i386_pe_binds_local_p): Likewise.
8187         * config/ia64/ia64.c
8188         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
8189         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
8190         ia64_invalid_conversion, ia64_invalid_unary_op,
8191         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8192         Likewise.
8193         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
8194         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
8195         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
8196         * config/mips/mips.c (mips_use_blocks_for_constant_p,
8197         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
8198         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8199         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
8200         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
8201         * config/pa/pa.c (pa_commutative_p): Likewise.
8202         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
8203         Likewise.
8204         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
8205         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
8206         rs6000_use_blocks_for_constant_p,
8207         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
8208         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8209         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
8210         * config/s390/s390.c (s390_mangle_type,
8211         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
8212         Likewise.
8213         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8214         th_in_small_data_p): Likewise.
8215         * config/sh/sh.c (sh_ms_bitfield_layout_p,
8216         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
8217         Likewise.
8218         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
8219         sparc_mangle_type): Likewise.
8220         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
8221         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
8222         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
8223         Likewise.
8224         * hooks.c (hook_bool_mode_const_rtx_false,
8225         hook_bool_mode_const_rtx_true,
8226         hook_bool_const_tree_hwi_hwi_const_tree_false,
8227         hook_bool_const_tree_hwi_hwi_const_tree_true,
8228         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8229         hook_constcharptr_const_tree_null,
8230         hook_constcharptr_const_rtx_null,
8231         hook_constcharptr_const_tree_const_tree_null,
8232         hook_constcharptr_int_const_tree_null,
8233         hook_constcharptr_int_const_tree_const_tree_null): New.
8234         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8235         hook_bool_tree_hwi_hwi_tree_false,
8236         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8237         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8238         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8239         hook_constcharptr_int_tree_null,
8240         hook_constcharptr_int_tree_tree_null): Delete.
8241         (default_can_output_mi_thunk_no_vcall): Constify.
8242         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
8243         hook_bool_tree_hwi_hwi_tree_false,
8244         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
8245         hook_int_tree_tree_1, hook_constcharptr_tree_null,
8246         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
8247         hook_constcharptr_int_tree_null,
8248         hook_constcharptr_int_tree_tree_null): Delete.
8249         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
8250         hook_bool_const_tree_hwi_hwi_const_tree_false,
8251         hook_bool_const_tree_hwi_hwi_const_tree_true,
8252         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
8253         hook_constcharptr_const_tree_null,
8254         hook_constcharptr_const_rtx_null,
8255         hook_constcharptr_const_tree_const_tree_null,
8256         hook_constcharptr_int_const_tree_null,
8257         hook_constcharptr_int_const_tree_const_tree_null): New.
8258         (default_can_output_mi_thunk_no_vcall): Constify.
8259         * integrate.c (function_attribute_inlinable_p): Likewise.
8260         * integrate.h (function_attribute_inlinable_p): Likewise.
8261         * jump.c (rtx_renumbered_equal_p): Likewise.
8262         * output.h (decl_readonly_section, categorize_decl_for_section,
8263         default_use_anchors_for_symbol_p, default_binds_local_p,
8264         default_binds_local_p_1): Likewise.
8265         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
8266         Likewise.
8267         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
8268         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
8269         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
8270         TARGET_COMP_TYPE_ATTRIBUTES,
8271         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
8272         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
8273         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
8274         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
8275         TARGET_DWARF_CALLING_CONVENTION): Likewise.
8276         * target.h (can_output_mi_thunk, needs_block_p,
8277         first_cycle_multipass_dfa_lookahead_guard_spec,
8278         vector_alignment_reachable, comp_type_attributes,
8279         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
8280         commutative_p, use_blocks_for_constant_p,
8281         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
8282         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
8283         invalid_within_doloop, valid_dllimport_attribute_p,
8284         split_complex_arg, invalid_arg_for_unprototyped_fn,
8285         invalid_conversion, invalid_unary_op, invalid_binary_op):
8286         Likewise.
8287         * targhooks.c (default_invalid_within_doloop,
8288         hook_invalid_arg_for_unprototyped_fn,
8289         default_builtin_vector_alignment_reachable): Likewise.
8290         (hook_bool_rtx_commutative_p): Delete.
8291         (hook_bool_const_rtx_commutative_p): New.
8292         * targhooks.h (default_invalid_within_doloop,
8293         default_builtin_vector_alignment_reachable,
8294         hook_invalid_arg_for_unprototyped_fn): Constify.
8295         (hook_bool_rtx_commutative_p): Delete.
8296         (hook_bool_const_rtx_commutative_p): New.
8297         * varasm.c (bss_initializer_p, decl_default_tls_model,
8298         categorize_decl_for_section, decl_readonly_section,
8299         default_use_anchors_for_symbol_p, default_binds_local_p,
8300         default_binds_local_p_1): Constify.
8301
8302 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8303
8304         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
8305         __NO_BUILTIN if -fno-builtin.
8306
8307 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8308
8309         * config/bfin/bfin.c (print_operand): Report error instead of
8310         ICE for wrong operand.
8311
8312 2007-08-24  Michael Matz  <matz@suse.de>
8313
8314         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
8315
8316 2007-08-24  Richard Guenther  <rguenther@suse.de>
8317
8318         PR middle-end/33166
8319         * tree-ssa.c (useless_type_conversion_p): Split into a
8320         recursive and a non-recursive part.
8321         (useless_type_conversion_p_1): New function.
8322         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
8323         from maybe_fold_offset_to_reference is trivially convertible
8324         to the desired type before doing the simplification.
8325
8326 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8327
8328         * expr.c (store_expr): Optimize initialization of an array
8329         with STRING_CST.
8330         * expr.h (builtin_strncpy_read_str): New prototype.
8331         * builtins.c (builtin_strncpy_read_str): Remove prototype.
8332         No longer static.
8333
8334 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
8335
8336         PR middle-end/33157
8337         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
8338         field when initializing if_info structure.
8339
8340 2007-08-24  Richard Guenther  <rguenther@suse.de>
8341
8342         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
8343         dependencies.
8344         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
8345         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
8346         * tree-inline.c (inlinable_function_p): Fold in common parts of
8347         the cannot_inline_tree_fn langhook.
8348         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
8349         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
8350         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
8351         cannot_inline_tree_fn langhook.
8352         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8353         cannot_inline_tree_fn member.
8354
8355 2007-08-24  Richard Guenther  <rguenther@suse.de>
8356
8357         * expr.c (get_inner_reference): Do computation of bitoffset
8358         from offset in a way we can detect overflow reliably.
8359
8360 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8361
8362         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
8363
8364 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
8365
8366         * config/bfin/bfin.opt (mfast-fp): Add.
8367         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
8368         libbffastfp override libgcc if -mfast-fp.
8369         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
8370         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
8371         (Blackfin Options): Document -mfast-fp.
8372
8373 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
8374
8375         PR tree-optimization/32573
8376         PR middle-end/32946
8377         * tree-data-ref.c (initialize_data_dependence_relation): Clear
8378         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
8379         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
8380         (build_classic_dist_vector): Return false rather than true if
8381         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
8382         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
8383         returned false.  Don't call save_dist_v before calling
8384         build_classic_dist_vector_1.
8385         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
8386         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
8387         DDR_DIR_VECTS vectors.
8388
8389 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
8390
8391         * configure.ac (leb128): Modify sed statement to work with any
8392         binutils version string.
8393         * configure: Regenerate
8394
8395 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8396
8397         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
8398         Wrap in RTX_CODE macro guard.
8399         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
8400         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
8401         arm_mark_dllimport, arm_pe_encode_section_info,
8402         arm_pe_unique_section): Use ISO-C function declarations.
8403         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
8404         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
8405         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
8406         Likewise.
8407         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
8408         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
8409         defining.
8410         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
8411         warnings.
8412         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
8413         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
8414         (register_move_cost): Use ISO-C function declarations.
8415         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
8416         * config/score/score-protos.h (score_declare_object): Add
8417         ATTRIBUTE_PRINTF_4.
8418         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
8419         warnings.
8420         * final.c (profile_function): Avoid empty if-bodies.
8421         
8422         
8423         * calls.c (must_pass_in_stack_var_size,
8424         must_pass_in_stack_var_size_or_pad): Constify.
8425         * config/alpha/alpha-protos.h (function_value): Likewise.
8426         * config/alpha/alpha.c (alpha_return_in_memory,
8427         alpha_pass_by_reference, function_value,
8428         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
8429         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8430         Likewise.
8431         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
8432         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8433         TARGET_PROMOTE_PROTOTYPES): Likewise.
8434         * config/arm/arm-protos.h (arm_return_in_memory,
8435         arm_pad_arg_upward, arm_function_value): Likewise.
8436         * config/arm/arm.c (arm_pass_by_reference,
8437         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
8438         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8439         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
8440         Likewise.
8441         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
8442         * config/avr/avr-protos.h (avr_function_value): Likewise.
8443         * config/avr/avr.c (avr_return_in_memory,
8444         gas_output_limited_string, gas_output_ascii, avr_function_value,
8445         avr_return_in_memory): Likewise.
8446         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
8447         * config/bfin/bfin.c (bfin_pass_by_reference,
8448         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
8449         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
8450         Likewise.
8451         * config/cris/cris.c (cris_pass_by_reference,
8452         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
8453         * config/crx/crx.c (crx_return_in_memory): Likewise.
8454         * config/darwin.c (function_base, machopic_function_base_name):
8455         Likewise.
8456         * config/fr30/fr30.c (fr30_must_pass_in_stack,
8457         TARGET_PROMOTE_PROTOTYPES): Likewise.
8458         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
8459         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
8460         * config/i386/i386-protos.h (ix86_return_in_memory,
8461         ix86_sol10_return_in_memory): Likewise.
8462         * config/i386/i386.c (ix86_function_value,
8463         ix86_function_sseregparm, ix86_must_pass_in_stack,
8464         type_natural_mode, classify_argument, examine_argument,
8465         construct_container, ix86_pass_by_reference, function_value_32,
8466         function_value_64, ix86_function_value_1, return_in_memory_32,
8467         return_in_memory_64, return_in_memory_ms_64,
8468         ix86_return_in_memory, ix86_sol10_return_in_memory,
8469         TARGET_PROMOTE_PROTOTYPES): Likewise.
8470         * config/ia64/ia64-protos.h (ia64_function_value,
8471         ia64_hpux_function_arg_padding): Likewise.
8472         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
8473         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
8474         ia64_hpux_function_arg_padding): Likewise.
8475         * config/iq2000/iq2000-protos.h (function_arg,
8476         iq2000_function_value): Likewise.
8477         * config/iq2000/iq2000.c (iq2000_return_in_memory,
8478         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
8479         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8480         function_arg, iq2000_function_value): Likewise.
8481         * config/m32c/m32c-protos.h (m32c_function_value,
8482         m32c_promote_function_return): Likewise.
8483         * config/m32c/m32c.c (m32c_pass_by_reference,
8484         m32c_promote_prototypes, m32c_promote_function_return,
8485         m32c_function_value): Likewise.
8486         * config/m32r/m32r.c (m32r_return_in_memory,
8487         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8488         m32r_in_small_data_p): Likewise.
8489         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
8490         Likewise.
8491         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
8492         m68hc11_function_arg_padding): Likewise.
8493         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
8494         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
8495         m68k_function_value): Likewise.
8496         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
8497         mcore_function_value): Likewise.
8498         * config/mcore/mcore.c (handle_structs_in_regs,
8499         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8500         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8501         mcore_num_arg_regs, mcore_function_value): Likewise.
8502         * config/mips/mips-protos.h (mips_pad_arg_upward,
8503         mips_function_value): Likewise.
8504         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
8505         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
8506         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8507         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
8508         mips_function_value): Likewise.
8509         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
8510         Likewise.
8511         * config/mmix/mmix.c (mmix_pass_by_reference,
8512         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
8513         mmix_encode_section_info): Likewise.
8514         * config/mn10300/mn10300-protos.h (mn10300_function_value):
8515         Likewise.
8516         * config/mn10300/mn10300.c (mn10300_return_in_memory,
8517         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
8518         mn10300_function_value): Likewise.
8519         * config/mt/mt-protos.h (mt_function_value): Likewise.
8520         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
8521         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
8522         * config/pa/pa-protos.h (function_arg_padding, function_value,
8523         pa_return_in_memory): Likewise.
8524         * config/pa/pa.c (pa_pass_by_reference,
8525         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8526         function_arg_padding, function_value, pa_return_in_memory):
8527         Likewise.
8528         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
8529         * config/rs6000/rs6000-protos.h (rs6000_function_value,
8530         function_arg_padding): Likewise.
8531         * config/rs6000/rs6000.c (rs6000_return_in_memory,
8532         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
8533         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
8534         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8535         function_arg_padding, altivec_expand_dst_builtin,
8536         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
8537         altivec_init_builtins, rs6000_common_init_builtins,
8538         rs6000_function_value): Likewise.
8539         * s390/s390-protos.h (s390_function_value): Likewise.
8540         * config/s390/s390.c (s390_function_arg_size,
8541         s390_pass_by_reference, s390_return_in_memory,
8542         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8543         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
8544         * config/score/score-protos.h (score_function_value): Likewise.
8545         * config/score/score.c (score_arg_partial_bytes,
8546         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8547         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
8548         score_pass_by_reference, score_add_offset, score_function_value):
8549         Likewise.
8550         * config/sh/sh-protos.h (sh_attr_renesas_p,
8551         sh_promote_prototypes): Likewise.
8552         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
8553         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
8554         sh_attr_renesas_p): Likewise.
8555         * config/sparc/sparc-protos.h (function_value,
8556         function_arg_padding): Likewise.
8557         * config/sparc/sparc.c (sparc_promote_prototypes,
8558         sparc_return_in_memory, sparc_pass_by_reference,
8559         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
8560         function_arg_record_value_2, function_arg_record_value_1,
8561         function_arg_record_value, function_arg_record_value,
8562         function_arg_padding, function_value): Likewise.
8563         * config/spu/spu-protos.h (spu_function_value): Likewise.
8564         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
8565         spu_function_value): Likewise.
8566         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
8567         Likewise.
8568         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
8569         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
8570         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8571         Likewise.
8572         * config/v850/v850.c (v850_return_in_memory,
8573         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
8574         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
8575         * config/xtensa/xtensa.c (xtensa_return_in_msb,
8576         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
8577         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
8578         Likewise.
8579         * explow.c (promote_mode, hard_function_value): Likewise.
8580         * expr.h (hard_function_value, promote_mode): Likewise.
8581         * function.c (aggregate_value_p): Likewise.
8582         * hooks.c (hook_bool_const_tree_true): New.
8583         * hooks.h (hook_bool_const_tree_true): New.
8584         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
8585         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
8586         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
8587         TARGET_RETURN_IN_MSB): Likewise.
8588         * target.h (promote_function_args, promote_function_return,
8589         promote_prototypes, return_in_memory, return_in_msb,
8590         pass_by_reference, must_pass_in_stack, callee_copies,
8591         function_value): Likewise.
8592         * targhooks.c (default_return_in_memory,
8593         hook_pass_by_reference_must_pass_in_stack,
8594         hook_callee_copies_named,
8595         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8596         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8597         default_function_value): Likewise. 
8598         * targhooks.h (default_return_in_memory,
8599         hook_pass_by_reference_must_pass_in_stack,
8600         hook_callee_copies_named,
8601         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
8602         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
8603         default_function_value): Likewise.
8604         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
8605         (equiv_class_label_hash, equiv_class_label_eq): Constify.
8606         * tree-vectorizer.c (bb_in_loop_p): Likewise.
8607         * tree.c (needs_to_live_in_memory): Likewise.
8608         * tree.h (struct tree_type, needs_to_live_in_memory,
8609         aggregate_value_p, must_pass_in_stack_var_size,
8610         must_pass_in_stack_var_size_or_pad): Likewise.
8611         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
8612         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
8613         lookup_filename): Likewise.
8614
8615 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8616
8617         PR target/17390
8618         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
8619         fake fcomi i387 instruction for !TARGET_CMOVE.
8620         (ix86_expand_branch): Expand natural sequence with one jump for
8621         all targets, not only TARGET_CMOVE.
8622         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
8623         pattern to implement fake fcomi sequence.  Split instruction after
8624         reload to correct compare sequences.
8625         (*cmpfp_xf_cc): Ditto.
8626         (*cmpfp_<mode>_cc): Ditto.
8627         (*cmpfp_u_cc): Ditto.
8628         (*cmpfp_<mode>_cc): Ditto.
8629
8630 2007-08-23  Richard Guenther  <rguenther@suse.de>
8631
8632         * tree-pretty-print.c (dump_generic_node): Annotate
8633         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
8634
8635 2007-08-23  Richard Guenther  <rguenther@suse.de>
8636
8637         * builtins.c (expand_builtin_mathfn): Wrap argument in
8638         save_expr directly instead of re-building the call.
8639         (expand_builtin_mathfn_2): Likewise.
8640         (expand_builtin_mathfn_3): Likewise.
8641         (expand_builtin_interclass_mathfn): Likewise.
8642         (expand_builtin_int_roundingfn): Set arg.
8643         (expand_builtin_int_roundingfn_2): Likewise.
8644
8645 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
8646
8647         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
8648         *sse_nand<mode>3, *sse_xor<mode>3): New.
8649
8650 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
8651
8652         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
8653         * config/i386/i386.c (print_operand): Handle ';' code.  Output
8654         semicolon for TARGET_MACHO.
8655         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
8656         emit semicolon after 'lock' prefix.
8657         (sync_double_compare_and_swap<mode>): Ditto.
8658         (*sync_double_compare_and_swapdi_pic): Ditto.
8659         (*sync_compare_and_swap_cc<mode>): Ditto.
8660         (sync_double_compare_and_swap_cc<mode>): Ditto.
8661         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
8662         (sync_old_add<mode>): Ditto.
8663         (sync_add<mode>): Ditto.
8664         (sync_sub<mode>): Ditto.
8665         (sync_ior<mode>): Ditto.
8666         (sync_and<mode>): Ditto.
8667         (sync_xor<mode>): Ditto.
8668
8669 2007-08-22  Chao-ying Fu  <fu@mips.com>
8670
8671         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
8672         in DEF_RTL_EXPR.
8673         (copy_rtx): Handle CONST_FIXED.
8674         (rtx_equal_p): Likewise.
8675         * rtl.h (fixed_value.h): New include.
8676         (rtx_def): Add a new field of fixed_value to u.
8677         (XCNMPFV): Define for accessing fixed_value.
8678         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
8679         Define.
8680         * rtl.def (CONST_FIXED): New constant.
8681         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
8682         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
8683         US_ASHIFT): New codes.
8684         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
8685         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
8686         unsigned_fract_convert, unsigned_sat_fract): Document them.
8687         * varasm.c (assemble_integer): Extend to support fixed-point constants
8688         by using different machine classes.
8689         (decode_addr_const): Handle FIXED_CST.
8690         (const_hash_1): Likewise.
8691         (compare_constant): Likewise.
8692         (copy_constant): Likewise.
8693         (const_rtx_hash_1): Handle CONST_FIXED.
8694         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8695         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8696         MODE_VECTOR_UACCUM.
8697         (initializer_constant_valid_p): Handle FIXED_CST.
8698         (output_constant): Support FIXED_POINT_TYPE.
8699         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
8700         * cse.c (hash_rtx): Support CONST_FIXED.
8701         (exp_equiv_p): Likewise.
8702         (cannon_reg): Likewise.
8703         (fold_rtx): Likewise.
8704         (equiv_constant): Likewise.
8705         (cse_process_notes_1): Likewise.
8706         (count_reg_usage): Likewise.
8707         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
8708         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
8709         (wrap_constant): Check CONST_FIXED.
8710         (cselib_hash_rtx): Support CONST_FIXED.
8711         (cselib_subst_to_values): Likewise.
8712         * df-scan.c (df_uses_record): Likewise.
8713         * gcse.c (want_to_gcse_p): Likewise.
8714         (oprs_unchanged_p): Likewise.
8715         (oprs_not_set_p): Likewise.
8716         (compute_transp): Likewise.
8717         (extract_mentioned_regs_helper): Likewise.
8718         * genemit.c (gen_exp): Likewise.
8719         * local-alloc.c (equiv_init_varies_p): Likewise.
8720         (contains_replace_regs): Likewise.
8721         (memref_referenced_p): Likewise.
8722         * loop-invariant.c (check_maybe_invariant): Likewise.
8723         (hash_invariant_expr_1): Likewise.
8724         (invariant_expr_equal_p): Likewise.
8725         * postreload-gcse.c (oprs_unchanged_p): Likewise.
8726         * regclass.c (reg_scan_mark_refs): Likewise.
8727         * regrename.c (scan_rtx): Likewise.
8728         * resource.c (mark_referenced_resources): Likewise.
8729         (mark_set_resources): Likewise.
8730         * rtlanal.c (rtx_unstable_p): Likewise.
8731         (rtx_varies_p): Likewise.
8732         (count_occurrences): Likewise.
8733         (reg_mentioned_p): Likewise.
8734         (modified_between_p): Likewise.
8735         (modified_in_p): Likewise.
8736         (volatile_insn_p): Likewise.
8737         (volatile_refs_p): Likewise.
8738         (side_effects_p): Likewise.
8739         (may_trap_p_1): Likewise.
8740         (inequality_comparisons_p): Likewise.
8741         (computed_jump_p_1): Likewise.
8742         (commutative_operand_precedence): Likewise.
8743         * sched-deps.c (sched_analyze_2): Likewise.
8744         * sched-vis.c (print_value): Likewise.
8745         * reload.c (operands_match_p): Likewise.
8746         (subst_reg_equivs): Likewise.
8747         * reload1.c (eliminate_regs_1): Likewise.
8748         (elimination_effects): Likewise.
8749         (scan_paradoxical_subregs): Likewise.
8750         * alias.c (rtx_equal_for_memref_p): Likewise.
8751         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
8752         * emit-rtl.c (const_fixed_htab): New hash table.
8753         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
8754         Declare.
8755         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
8756         const_fixed_from_fixed_value): New functions.
8757         (verify_rtx_sharing): Handle CONST_FIXED.
8758         (copy_rtx_if_shared_1): Likewise.
8759         (reset_used_flags): Likewise.
8760         (set_used_flags): Likewise.
8761         (copy_insn_1): Likewise.
8762         (init_emit_once): Create const_fixed_htab.
8763         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
8764
8765 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
8766
8767         PR tree-optimization/32949
8768         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
8769         before failing for ivs with non-constant step.
8770
8771 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
8772
8773         * doc/md.texi (Iterators): Renamed from Macros.  All contents
8774         changed to reflect rename of respectively define_code_macro and
8775         define_mode_macro to define_code_iterator and define_mode_iterator.
8776         (Mode Iterators, Code Iterators): Similar.
8777         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
8778         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
8779         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
8780         (initialize_iterators, find_iterator, check_code_iterator)
8781         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
8782         (read_mapping, read_rtx_1): Similar.
8783         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
8784         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
8785         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
8786         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
8787         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
8788         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
8789         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
8790         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
8791         config/rs6000/sync.md, config/rs6000/rs6000.md,
8792         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
8793         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
8794         config/vax/vax.md, config/bfin/bfin.md: Similar.
8795
8796 2007-08-22  David Daney  <ddaney@avtrex.com>
8797
8798         * doc/install.texi (Testing): Mention testing on a simulator.
8799
8800 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
8801
8802         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
8803
8804         * doc/libgcc.texi (Decimal float library routines): Fix formatting
8805         and rearrange floating point conversion functions into different
8806         categories.
8807
8808 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
8809
8810         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
8811         dfa_post_advance_cycle): New scheduler hooks.
8812         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8813         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
8814         new hooks.
8815         (TARGET_SCHED): Use them.
8816         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
8817         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
8818         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
8819
8820         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
8821         function to facilitate debugging.
8822         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
8823         (output_insn_has_dfa_reservation_p): New static function to output
8824         insn_has_dfa_reservation_p ().
8825         (write_automata): Use it.
8826         * genattr.c (main): Output declaration for
8827         insn_has_dfa_reservation_p ().
8828
8829 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
8830             Richard Guenther <rguenther@suse.de>
8831         
8832         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
8833         * simplify_rtx (simplify_binary_operation_1): Likewise.
8834                 
8835 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8836
8837         PR rtl-optimization/32557
8838         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
8839         of REGNO (mws->mw_reg).
8840
8841 2007-08-22  Richard Guenther  <rguenther@suse.de>
8842
8843         PR middle-end/33007
8844         * builtins.c (expand_builtin_int_roundingfn): Replace call
8845         argument wrapped with SAVE_EXPR directly.
8846         (expand_builtin_int_roundingfn_2): Likewise.
8847
8848 2007-08-22  Richard Guenther  <rguenther@suse.de>
8849
8850         * tree-inline.c (inlinable_function_p): Restore disregarding
8851         inline limits for GNU extern inline functions.
8852
8853 2007-08-22  Richard Guenther  <rguenther@suse.de>
8854
8855         PR middle-end/32563
8856         * tree.c (host_integerp): Treat sizetype as signed as it is
8857         sign-extended.
8858
8859 2007-08-21  Ian Lance Taylor  <iant@google.com>
8860
8861         PR tree-optimization/33134
8862         * tree-vrp.c (adjust_range_with_scev): Call
8863         set_value_range_to_value.
8864
8865 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8866
8867         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
8868         prototype.
8869         
8870 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
8871
8872         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
8873         whitespace.
8874
8875 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
8876
8877         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
8878         cases to set eight bytes at a time.
8879         (expand_block_move): Likewise.
8880         
8881 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
8882
8883         PR debug/32610
8884         * dwarf2out.c (gen_decl_die): Don't call
8885         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
8886
8887 2007-08-21  Paul Brook  <paul@codesourcery.com>
8888             Nathan Sidwell  <nathan@codesourcery.com>
8889             Mark Mitchell  <mark@codesourcery.com>
8890             Joseph Myers  <joseph@codesourcery.com>
8891
8892         * configure.ac: Add --with-pkgversion and --with-bugurl.
8893         * configure: Regenerate.
8894         * doc/install.texi: Document them.
8895         * version.c (version_string): Remove VERSUFFIX.
8896         (VERSUFFIX): Remove.
8897         (pkgversion_string): New.
8898         (bug_report_url): Do not hard-code initializer.
8899         * version.h (pkgversion_string): Declare.
8900         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
8901         Define.
8902         (version.o): Define PKGVERSION and BUGURL.
8903         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
8904         (%.pod): Define BUGURL.
8905         * gcc.c (process_command, main): Use pkgversion_string.
8906         * toplev.c (compile_file, print_version): Likewise.
8907         * protoize.c (main): Likewise.
8908         * gcov.c (print_version): Likewise.  Update copyright date.
8909         * gcov-dump.c (print_version): Likewise.  Update copyright date.
8910         * mips-tdump.c (main): Likewise.  Update copyright date.
8911         * mips-tfile.c (main): Likewise.  Update copyright date.
8912         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
8913         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
8914         shorten description.
8915         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
8916         * doc/gccint.texi: Likewise.
8917         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
8918         Update copyright date.
8919
8920 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
8921
8922         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
8923         (ix86_expand_strlensi_unroll_1): Ditto.
8924         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
8925         (ix86_expand_carry_flag_compare): Update comment.
8926
8927 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
8928
8929         PR middle-end/32912
8930         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
8931         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
8932
8933 2007-08-21  Richard Guenther  <rguenther@suse.de>
8934
8935         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
8936
8937 2007-08-21  Richard Guenther  <rguenther@suse.de>
8938
8939         PR middle-end/33122
8940         * fold-const.c (fold_binary): Remove index +p PTR folding.
8941         Fix types of POINTER_PLUS_EXPR generated by folding of
8942         (PTR +p B) +p A.
8943
8944 2007-08-20  Chao-ying Fu  <fu@mips.com>
8945
8946         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
8947         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
8948         RID_ONEWAY, so that it can be checked in declspecs_add_type.
8949         (c_common_fixed_point_type_for_size): Declare.
8950         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
8951         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
8952         (c_token_starts_declspecs): Likewise.
8953         (c_parser_declspecs): Likewise.
8954         (c_parser_attributes): Likewise.
8955         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
8956         (c_declspecs): Add saturating_p.
8957         * c-decl.c (build_null_declspecs): Initialize saturating_p.
8958         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
8959         _Sat.  Handle RID_SAT.
8960         Avoid using void, bool, char, int, float, double, _Decimal32,
8961         _Decimal64, _Decimal128, and complex with _Sat.
8962         Handle RID_FRACT and RID_ACCUM.
8963         Make sure _Sat is used with _Fract or _Accum.
8964         (finish_declspecs): Handle cts_fract and cts_accum.
8965         * c-common.c (fixed-value.h): New include.
8966         (constant_expression_warning): Handle FIXED_CST.
8967         (overflow_warning): Likewise.
8968         (warnings_for_convert_and_check): Likewise.
8969         (c_common_fixed_point_type_for_size): New.
8970         (c_common_type_for_mode): Handle fixed-point modes to
8971         return various saturating/non-saturating, signed/unsigned types.
8972         (c_common_signed_or_unsigned_type): Support fixed-point types.
8973         (shorten_compare): Check fixed-point zero.
8974         Handle FIXED_POINT_TYPE.
8975         (c_common_truthvalue_conversion): Handle FIXED_CST.
8976         Handle FIXED_POINT_TYPE.
8977         (c_common_nodes_and_builtins): Record builtin types for fixed-point
8978         types.
8979         (handle_mode_attribute): Handle fixed-point modes.  Need to check
8980         if the signness of base type and fixed-point modes are consistent.
8981         (handle_vector_size_attribute): Handle fixed-point modes.
8982         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
8983         (warn_for_div_by_zero): Check fixed-point zero.
8984         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
8985         a common fixed-point type based on fbit, ibit, sign, and saturation.
8986         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
8987         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
8988         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
8989         (convert_for_assignment): Support FIXED_POINT_TYPE.
8990         (digest_init): Handle FIXED_POINT_TYPE.
8991         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
8992         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
8993         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
8994         GE_EXPR, LT_EXPR, GT_EXPR.
8995         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
8996         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
8997         * target.h (gcc_target): Add fixed_point_supported_p.
8998         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
8999         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
9000         (default_fixed_point_supported_p): Define.
9001         * targhooks.h (default_fixed_point_supported_p): Declare.
9002         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
9003         * doc/install.texi (Configuration): Add --enable-fixed-point.
9004         * configure.ac (--enable-fixed-point): New to enable fixed-point
9005         arithmetic extension to C.  For mips targets, we enable it by default.
9006         * configure, config.in: Regenerate.
9007
9008 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
9009
9010         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
9011
9012 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
9013
9014         * dwarf2out.c (text_section_used): Move declaration outside ifdef
9015         DWARF2_DEBUGGING_INFO.
9016         (cold_text_section_used): Same.
9017         (cold_text_section): Same.
9018
9019 2007-08-20  Richard Guenther  <rguenther@suse.de>
9020
9021         * c-typeck.c (convert_for_assignment): Use the type of
9022         the member for the initialization.
9023
9024 2007-08-20  Richard Guenther  <rguenther@suse.de>
9025
9026         * c-objc-common.c (c_disregard_inline_limits): Remove.
9027         * c-objc-common.h (c_disregard_inline_limits): Likewise.
9028         * cgraphunit.c (cgraph_process_new_functions): Call
9029         disregard_inline_limits_p.
9030         (cgraph_preserve_function_body_p): Likewise.
9031         * ipa-inline.c (compute_inline_parameters): Likewise.
9032         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
9033         Remove.
9034         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
9035         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9036         disregard_inline_limits langhook.
9037         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
9038         Remove.
9039         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9040         disregard_inline_limits langhook.
9041         * tree-inline.c (disregard_inline_limits_p): New function.
9042         * tree-inline.h (disregard_inline_limits_p): Declare.
9043
9044 2007-08-20  Richard Guenther  <rguenther@suse.de>
9045
9046         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
9047         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
9048         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9049         auto_var_in_fn_p langhook.
9050         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
9051         move ...
9052         * tree.c (auto_var_in_fn_p): ... here.
9053         (find_var_from_fn): Call auto_var_in_fn_p directly.
9054         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9055         auto_var_in_fn_p langhook.
9056         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
9057         (copy_body_r): Likewise.
9058         (self_inlining_addr_expr): Likewise.
9059         * tree.h (auto_var_in_fn_p): Declare.
9060
9061 2007-08-20  Richard Guenther  <rguenther@suse.de>
9062
9063         * tree.c (WALK_SUBTREE): Call walk_tree_1.
9064         (walk_type_fields): Take lh parameter.
9065         (walk_tree): Rename to ...
9066         (walk_tree_1): ... this.  Do not call the walk_subtrees
9067         langhook but the now passed callback.  Pass lh on recursion.
9068         (walk_tree_without_duplicates): Rename to ...
9069         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
9070         and call walk_tree_1.
9071         * tree.h (walk_tree_lh): New typedef.
9072         (walk_tree_1): Declare.
9073         (walk_tree_without_duplicates_1): Likewise.
9074         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
9075         (walk_tree_without_duplicates): New define to
9076         walk_tree_without_duplicates_1 with NULL lh parameter.
9077         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
9078         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
9079         langhook.
9080         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
9081         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
9082         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
9083         initializer.
9084
9085 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9086
9087         PR middle-end/30564
9088         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
9089         code in front of the compacting of basic blocks.
9090         Move the folding of statements inbetween the cgraph checking
9091         and compacting of basic blocks.
9092
9093 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9094            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
9095
9096         PR target/32522
9097         * config/alpha/alpha.c (va_list_skip_additions): Check for
9098         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
9099         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
9100         PLUS_EXPR when checking ap.__base.
9101         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
9102         when doing addition on pointer types.  Use size_int instead of
9103         build_int_cst.
9104         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
9105         ptr_type in the second operand.
9106
9107 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9108
9109         PR target/33115
9110         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
9111
9112 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9113
9114         PR middle-end/32940
9115         * cfgexpand.c  (expand_one_register_var): Mark pointer
9116         DECL_ARTIFICIAL as REG_POINTER also.
9117         * stmt.c (expand_decl): Likewise.
9118
9119 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
9120
9121         Fix PR 32772
9122         Fix PR 32716
9123         Fix PR 32328
9124         Fix PR 32303
9125
9126         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
9127         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
9128         on_worklist argument and avoid adding things to worklist multiple
9129         times.
9130         (add_to_worklist): Ditto.
9131         (mark_aliases_call_clobbered): Mark entire structure clobbered if
9132         single SFT is clobbered.
9133         (set_initial_properties): Ditto.
9134         (compute_call_clobbered): Update for changes to function
9135         arguments.
9136         (create_overlap_variables_for): Always create SFT for offset 0.
9137         (create_structure_vars): Handle PHI's, since we are in SSA form at
9138         this point.
9139         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
9140         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
9141         TARGET_MEM_REF.
9142         (add_vars_for_offset): Figure out aliases from access + points-to.
9143         (add_virtual_operand): Use add_vars-for_offset.
9144         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
9145         (add_call_clobber_ops): Remove makes_clobbering_call set.
9146         (get_expr_operands): Always pass through the INDIRECT_REF
9147         reference.
9148         * tree-ssa-structalias.c (struct constraint_graph): Remove
9149         variables member.
9150         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
9151         address_taken, pt_used, number_incoming.
9152         (FIRST_ADDR_NODE): Removed.
9153         (merge_graph_nodes): Remove broken code for the moment.
9154         (init_graph): New function.
9155         (build_pred_graph): Remove code to init_graph.
9156         Add location equivalence support.
9157         (struct scc_info): Rename roots to deleted.
9158         (scc_visit): Ditto.
9159         (init_scc_info): Ditto
9160         (init_topo_info): Use graph->size.
9161         (compute_topo_order): Ditto.
9162         (do_da_constraint): Removed.
9163         (do_sd_constraint): Remove calls to find().
9164         set_union_with_increment should always get 0 as last arg here.
9165         (do_complex_constraint): Replace do_da_constraint with assert.
9166         Stop calling find.
9167         (struct equiv_class_label): New.
9168         (pointer_equiv_class_table): Ditto.
9169         (location_equiv_class_table): Ditto.
9170         (equiv_class_label_hash): Ditto.
9171         (equiv_class_label_eq): Ditto
9172         (equiv_class_lookup): Ditto.
9173         (equiv_class_ladd): Ditto.
9174         (pointer_equiv_class): Ditto.
9175         (location_equiv_class): Ditto.
9176         (condense_visit): Rename and rewrite from label_visit to do only
9177         SCC related stuff for HU.
9178         (label_visit): Do HU work for HU.
9179         (perform_var_substitution): Update to do HU and location
9180         equivalence.
9181         (free_var_substitution_info): Update to free HU and location
9182         equivalence structures.  */
9183         (find_equivalent_node): Update for pointer but not location
9184         equivalence.
9185         (unite_pointer_equivalences): New function.
9186         (move_complex_constraints): Rewrite to only do moving.
9187         (rewrite_constraints): Split out of move_complex_constraints.
9188         (solve_graph): Use graph->size.
9189         (process_constraint_1): Add from_call argument, use it.
9190         Split *a = &b into two constraints.
9191         (process_constraint): Use new process_constraint_1.
9192         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
9193         (get_constraint_for): Handle non-pointer integers properly.
9194         Remove code that used to handle structures.
9195         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
9196         with unknown addends.
9197         (handle_rhs_call): New function.
9198         (find_func_aliases): Use handle_rhs_call.
9199         (set_uids_in_ptset): Add an assert.
9200         (set_used_smts): Fix bug in not considering unified vars.
9201         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
9202         (compute_points_to_sets): Update for other function changes.
9203         (delete_points_to_sets): Ditto.
9204         (ipa_pta_execute): Ditto.
9205         (pass_ipa_pta): We need to update SSA after ipa_pta.
9206         
9207 2007-08-19  Jan Hubicka  <jh@suse.cz>
9208
9209         * i386.md: Replace "rim" and "mri" constraints by "g".
9210
9211 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
9212
9213         * dwarf2out.c (text_section_used, cold_text_section_used,
9214         cold_text_section, dwarf2out_note_section_used): New.
9215         (dwarf2out_init): Initialize cold_text_section.
9216         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
9217         dwarf2out_note_section_used.
9218         (size_of_aranges): Only count entry for text section if it was
9219         used.  Count entry for cold text section if it was used.
9220         (output_aranges): Only output entries for text section and cold
9221         text section if they were used.
9222
9223 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9224
9225         * tree-pretty-print.c (debug_generic_expr): Add a comment about
9226         the function.
9227         (debug_generic_stmt): Likewise.
9228         (debug_tree_chain): Likewise.
9229
9230 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9231
9232         * tree-data-refs.c (split_constant_offset): Expose.
9233         * tree-data-refs.h (split_constant_offset): Add declaration.
9234
9235         * tree-vectorizer.h (dr_alignment_support): Renamed
9236         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
9237         Added a new value dr_explicit_realign.
9238         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
9239         dr_offset, dr_step, and dr_aligned_to, along with new access
9240         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
9241         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
9242         STMT_VINFO_DR_ALIGNED_TO.
9243
9244         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
9245         documentation.
9246         In case of outer-loop vectorization with non-fixed misalignment - use
9247         the dr_explicit_realign scheme instead of the optimized realignment
9248         scheme.
9249         (new_stmt_vec_info): Initialize new fields.
9250
9251         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
9252         'nested_in_vect_loop' case. Change verbosity level.
9253         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
9254         Don't fail on zero step in the outer-loop for loads.
9255         (vect_analyze_data_refs): Call split_constant_offset to calculate
9256         base, offset and init relative to the outer-loop.
9257
9258         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
9259         BSI function argument with a new function argument - at_loop.
9260         Simplify the condition that determines STEP. Takes additional argument
9261         INV_P. Support outer-loop vectorization (handle the
9262         nested_in_vect_loop case), including zero step in the outer-loop. Call
9263         vect_create_addr_base_for_vector_ref with additional argument.
9264         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
9265         Updated function documentation. Handle the 'nested_in_vect_loop' case.
9266         Fixed and simplified calculation of step.
9267         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
9268         of bsi, and with additional argument. Call bump_vector_ptr with
9269         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
9270         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
9271         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
9272         when the realignment setup needs to take place inside the loop.
9273         Support the dr_explicit_realign scheme. Allow generating the optimized
9274         realignment scheme for outer-loop vectorization. Added documentation.
9275         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
9276         the 'nested_in_vect_loop' case, including loads that are invariant in
9277         the outer-loop and the realignment schemes. Handle the case when the
9278         realignment setup needs to take place inside the loop. Call
9279         vect_setup_realignment with additional arguments.  Call
9280         vect_create_data_ref_ptr with additional argument and with loop instead
9281         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
9282         (vect_gen_niters_for_prolog_loop): Call
9283         vect_create_addr_base_for_vector_ref with additional arguments.
9284         (vect_create_cond_for_align_checks): Likewise.
9285         (bump_vector_ptr): Updated to support the new dr_explicit_realign
9286         scheme: takes additional argument bump; argument ptr_incr is now
9287         optional; updated documentation.
9288         (vect_init_vector): Takes additional argument (bsi). Use it, if
9289         available, to insert the vector initialization.
9290         (get_initial_def_for_induction): Pass additional argument in call to
9291         vect_init_vector.
9292         (vect_get_vec_def_for_operand): Likewise.
9293         (vect_setup_realignment): Likewise.
9294         (vectorizable_load): Likewise.
9295
9296 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9297
9298         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
9299         as argument instead of struct loop.
9300         (nested_in_vect_loop_p): New function.
9301         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
9302         vect_used_in_outer.
9303         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
9304         from other phis in the loop.
9305         (destroy_loop_vec_info): Add additional argument to declaration.
9306
9307         * tree-vectorizer.c (supportable_widening_operation): Also check if
9308         nested_in_vect_loop_p (don't allow changing the order in this case).
9309         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
9310         of struct loop. Call nested_in_vect_loop_p and don't require
9311         flag_unsafe_math_optimizations if it returns true.
9312         (new_stmt_vec_info): When setting def_type for phis differentiate 
9313         loop-header phis from other phis.
9314         (bb_in_loop_p): New function.
9315         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
9316         just update their loop_vinfo.  Order of BB traversal now matters -
9317         call dfs_enumerate_from with bb_in_loop_p.
9318         (destroy_loop_vec_info): Takes additional argument to control whether
9319         stmt_vinfo of the loop stmts should be destroyed as well.
9320         (vect_is_simple_reduction): Allow the "non-reduction" use of a
9321         reduction stmt to be defines by a non loop-header phi.
9322         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
9323
9324         * tree-vect-transform.c (vectorizable_reduction): Call
9325         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
9326         (vectorizable_call): Likewise.
9327         (vectorizable_conversion): Likewise.
9328         (vectorizable_operation): Likewise.
9329         (vectorizable_type_promotion): Likewise.
9330         (vectorizable_type_demotion): Likewise.
9331         (vectorizable_store): Likewise.
9332         (vectorizable_live_operation): Likewise.
9333         (vectorizable_reduction): Likewise. Also pass loop_info to
9334         vect_is_simple_reduction instead of loop.
9335         (vect_init_vector): Call nested_in_vect_loop_p.
9336         (get_initial_def_for_reduction): Likewise.
9337         (vect_create_epilog_for_reduction): Likewise.
9338         (vect_init_vector): Check which loop to work with, in case there's an
9339         inner-loop.
9340         (get_initial_def_for_inducion): Extend to handle outer-loop
9341         vectorization. Fix indentation.
9342         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
9343         In the case vect_induction_def get the vector def from the induction
9344         phi node, instead of calling get_initial_def_for_inducion.
9345         (get_initial_def_for_reduction): Extend to handle outer-loop 
9346         vectorization.
9347         (vect_create_epilog_for_reduction): Extend to handle outer-loop
9348         vectorization.
9349         (vect_transform_loop): Change assert to just skip this case.  Add a
9350         dump printout.
9351         (vect_finish_stmt_generation): Add a couple asserts.
9352
9353         (vect_estimate_min_profitable_iters): Multiply
9354         cost of inner-loop stmts (in outer-loop vectorization) by estimated
9355         inner-loop bound.
9356         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
9357         this is an inner-loop reduction in outer-loop vectorization.
9358
9359         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
9360         Same code as what used to be vect_analyze_scalar_cycles, only with
9361         additional argument loop, and loop_info passed to
9362         vect_is_simple_reduction instead of loop.
9363         (vect_analyze_scalar_cycles): Code factored out into
9364         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
9365         Updated documentation.
9366         (analyze_operations): Check for inner-loop loop-closed exit-phis during
9367         outer-loop vectorization that are live or not used in the outerloop,
9368         cause this requires special handling.
9369         (vect_enhance_data_refs_alignment): Don't consider versioning for
9370         nested-loops.
9371         (vect_analyze_data_refs): Check that there are no datarefs in the
9372         inner-loop.
9373         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
9374         and vect_used_in_outer_by_reduction cases.
9375         (process_use): Also consider the case of outer-loop stmt defining an
9376         inner-loop stmt and vice versa.
9377         (vect_analyze_loop_1): New function.
9378         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
9379         loops.  Call vect_analyze_loop_1.
9380         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
9381         been vectorized.  Call destroy_loop_vec_info with additional argument.
9382
9383         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
9384         in the inner-loop when doing outer-loop vectorization. Add
9385         documentation and printout.
9386         (vect_recog_dot_prod_pattern): Likewise. Also add check for
9387         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
9388
9389 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
9390
9391         * tree-affine.h (print_aff): New prototype.
9392         (debug_aff): Likewise.
9393         * tree-affine.c (print_aff): New function.
9394         (debug_aff): Likewise.
9395
9396 2007-08-18  Paul Brook  <paul@codesourcery.com>
9397             Joseph Myers  <joseph@codesourcery.com>
9398
9399         * common.opt (-fdebug-prefix-map=): New option.
9400         * opts.c: Include debug.h.
9401         (common_handle_option): Handle -fdebug-prefix-map.
9402         * final.c: Include ggc.h.
9403         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
9404         remap_debug_filename): New.
9405         * Makefile.in (final.o, opts.o): Update dependencies.
9406         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
9407         * configure.ac: Check for assembler --debug-prefix-map support.
9408         * configure, config.in: Regenerate.
9409         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
9410         (ASM_DEBUG_SPEC): Include ASM_MAP.
9411         * doc/install.texi (--with-debug-prefix-map): Document.
9412         * doc/invoke.texi (-fdebug-prefix-map): Document.
9413         * dbxout.c (dbxout_init, dbxout_start_source_file,
9414         dbxout_source_file): Call remap_debug_filename.
9415         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
9416         dwarf2out_start_source_file, dwarf2out_finish): Call
9417         remap_debug_filename.
9418         (file_table_relative_p): Do not check d->emitted_number.
9419         * toplev.c (output_file_directive): Call remap_debug_filename.
9420         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
9421         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
9422
9423 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9424
9425         * loop-invariant.c (find_invariants_to_move): Add missing macro
9426         argument.
9427
9428 2007-08-17  Tom Tromey  <tromey@redhat.com>
9429
9430         * tree.h (struct tree_label_decl): Removed old "java" fields.
9431
9432 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
9433             Nigel Stephens  <nigel@mips.com>
9434
9435         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
9436         Treat -mno-data-in-code and -mcode-xonly as aliases for
9437         -mcode-readable=no and -mcode-readable=pcrel respectively.
9438         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
9439         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
9440         (MULTILIB_DIRNAMES): Update accordingly.
9441
9442 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
9443
9444         * Makefile.in (version.o): Depend on $(REVISION) only if
9445         REVISION_s is defined.
9446
9447 2007-08-17  Sa Liu  <saliu@de.ibm.com>
9448             Ulrich Weigand  <uweigand@de.ibm.com>
9449
9450         PR middle-end/32970
9451         * tree.c (reconstruct_complex_type): For a pointer to a vector,
9452         use build_qualified_type to retain qualifiers of the base type.
9453
9454 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
9455
9456         * config/score/score.md : Update pattern tablejump.
9457         * config/score/score.c : Update score_initialize_trampoline 
9458         function.
9459         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
9460         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
9461         * doc/contrib.texi: Add my entry.
9462
9463 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
9464
9465         * Makefile.in (REVISION): New.
9466         (REVISION_c): New.
9467         (REVISION_s): New.
9468         (version.o): Also depend on $(REVISION). Add
9469         -DREVISION=$(REVISION_s).
9470
9471         * version.c (version_string): Add REVISION.
9472
9473 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
9474
9475         * tree-eh.c (lower_try_finally_onedest): Reset the locus
9476         of GOTO that's relocated to a different block.
9477
9478 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9479
9480         * c-common.c (const_strip_array_types): New.
9481         * c-common.h (lang_missing_noreturn_ok_p): Delete.
9482         (const_strip_array_types): New.
9483         * c-objc-common.c (c_disregard_inline_limits,
9484         c_warn_unused_global_decl): Constify.
9485         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
9486         c_vla_type_p, c_incomplete_type_error): Likewise.
9487         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
9488         * hooks.c (hook_bool_const_tree_false): New.
9489         * hooks.h (hook_bool_const_tree_false): Likewise.
9490         * langhooks-def.h (lhd_warn_unused_global_decl,
9491         lhd_incomplete_type_error, lhd_expr_size,
9492         lhd_tree_inlining_disregard_inline_limits,
9493         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9494         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
9495         * langhooks.c (lhd_warn_unused_global_decl,
9496         lhd_incomplete_type_error,
9497         lhd_tree_inlining_disregard_inline_limits,
9498         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
9499         lhd_expr_size): Likewise.
9500         * langhooks.h (lang_hooks_for_tree_inlining,
9501         lang_hooks_for_tree_dump, lang_hooks_for_types,
9502         lang_hooks_for_decls, lang_hooks): Likewise.
9503         * pointer-set.c (pointer_set_t, pointer_set_create,
9504         pointer_set_contains, insert_aux, pointer_set_insert,
9505         pointer_set_traverse, pointer_map_t, pointer_map_create,
9506         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
9507         Likewise.
9508         * pointer-set.h (pointer_set_contains, pointer_set_insert,
9509         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
9510         pointer_map_traverse): Likewise.
9511         * predict.c (assert_is_empty): Likewise.
9512         * tree-affine.c (free_name_expansion): Likewise.
9513         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
9514         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
9515         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
9516
9517 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
9518
9519         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
9520         field.
9521         (destroy_loop_vec_info): Add call to VEC_free.
9522         * tree-vectorizer.h (may_alias_ddrs): Define.
9523         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
9524         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
9525         Change reporting to dump.
9526         (vect_is_duplicate_ddr): New.
9527         (vect_mark_for_runtime_alias_test): New.
9528         (vect_analyze_data_ref_dependences) Add call to
9529         vect_mark_for_runtime_alias_test.
9530         (vect_enhance_data_refs_alignment): Define local variable
9531         vect_versioning_for_alias_required, don't perform
9532         peeling for alignment if versioning for alias is
9533         required.
9534         (vect_enhance_data_refs_alignment): Use
9535         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
9536         PARAM_VECT_MAX_VERSION_CHECKS.
9537         * tree-vect-transform.c
9538         (vect_create_cond_for_alias_checks): New.
9539         (vect_transform_loop): Add call to
9540         vect_create_cond_for_alias_checks.
9541         (vect_vfa_segment_size): New.
9542         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
9543         Rename.
9544         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
9545         * doc/invoke.texi
9546         (vect-max-version-for-alignment-checks): Document.
9547         (vect-max-version-for-alias-checks): Document.
9548         (vect-max-version-checks): Remove.
9549
9550 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
9551
9552         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
9553         the same line as the instruction for all asm dialects.
9554         (*rep_movsi): Ditto.
9555         (*rep_movsi_rex64): Ditto.
9556         (*rep_movqi): Ditto.
9557         (*rep_movqi_rex64): Ditto.
9558         (*rep_stosdi_rex64): Ditto.
9559         (*rep_stossi): Ditto.
9560         (*rep_stossi_rex64): Ditto.
9561         (*rep_stosqi): Ditto.
9562         (*rep_stosqi_rex64): Ditto.
9563         (*cmpstrnqi_nz_1): Ditto.
9564         (*cmpstrnqi_nz_rex_1): Ditto.
9565         (*cmpstrnqi_1): Ditto.
9566         (*cmpstrnqi_rex_1): Ditto.
9567         (*strlenqi_1): Ditto.
9568         (*strlenqi_rex_1): Ditto.
9569         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
9570         prefix on the same line as the instruction for all asm dialects.
9571         (sync_double_compare_and_swap<mode>): Ditto.
9572         (*sync_double_compare_and_swapdi_pic): Ditto.
9573         (*sync_compare_and_swap_cc<mode>): Ditto.
9574         (sync_double_compare_and_swap_cc<mode>): Ditto.
9575         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
9576         (sync_old_add<mode>): Ditto.
9577         (sync_add<mode>): Ditto.
9578         (sync_sub<mode>): Ditto.
9579         (sync_ior<mode>): Ditto.
9580         (sync_and<mode>): Ditto.
9581         (sync_xor<mode>): Ditto.
9582
9583 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
9584
9585         PR middle-end/32897
9586         * reload.c (find_reloads): Check that the memory returned by
9587         find_reloads_toplev was not the result of forcing a constant
9588         to memory.
9589         (find_reloads_toplev): Always use simplify_gen_subreg to get
9590         the subreg of a constant.  If the result is also a constant,
9591         but not a legitimate one, force it into the constant pool
9592         and reload its address.
9593
9594 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
9595
9596         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
9597         POPCOUNT.
9598
9599 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
9600
9601         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
9602         directive for the current vector ABI.
9603
9604 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
9605
9606         PR target/32963
9607         * caller-save.c (reg_save_code): Set invalide status on restore code.
9608         
9609 2007-08-15  Diego Novillo  <dnovillo@google.com>
9610
9611         * tree-ssa-alias.c (compute_memory_partitions): Use
9612         alias_bitmap_obstack to allocate bitmaps.
9613         (reset_alias_info): Factor out of init_alias_info.
9614         Mark all name tags not associated to an SSA name for renaming.
9615         (init_alias_info): Call it.
9616         (create_name_tags): Tidy.  Add comments.
9617         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
9618
9619 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9620
9621         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
9622         scheduler dependencies.
9623
9624 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9625
9626         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
9627         "register_operand".
9628         (*iorsi_1_zext): Likewise.
9629         (*iorsi_1_zext_imm): Likewise.
9630         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
9631         with "rm"/"xm" constraint.
9632         (sse2_vmsqrtv2df2): Likewise.
9633
9634 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
9635
9636         PR middle-end/33074
9637         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
9638         REG_LIBCALL note.
9639
9640 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
9641
9642         * tree-pass.h (PROP_pta): Removed.
9643         (TODO_rebuild_alias): New.
9644         (pass_may_alias): Removed.
9645         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
9646         aliasing if we changed something.
9647         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
9648         SSA internally.
9649         (pass_may_alias): Removed.
9650         (create_structure_vars): Return TODO_rebuild_alias.
9651         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
9652         * tree-sra.c (tree_sra): Only rebuild aliasing if something
9653         changed.
9654         (tree_sra_early): We never affect aliasing right now.
9655         * tree-flow.h (compute_may_aliases): New prototype.
9656         * passes.c: Remove pass_may_alias from the passes.
9657         (execute_function_todo): Support TODO_rebuild_alias.    
9658
9659 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
9660
9661         * i386.c: (legitimize_address): Move dllimported variable check
9662         infront of legitimizing pic address of CONST symbols.
9663
9664 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
9665
9666         PR tree-optimization/32941
9667         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
9668         (goto_queue_cmp): Remove.
9669         (find_goto_replacement): Change search method.
9670         (maybe_record_in_goto_queue): Add assert.
9671         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
9672         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
9673
9674 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9675
9676         * alias.c (component_uses_parent_alias_set): Constify.
9677         * alias.h (component_uses_parent_alias_set): Likewise.
9678         * cfgrtl.c (print_rtl_with_bb): Likewise.
9679         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
9680         mpz_get_double_int): Likewise.
9681         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
9682         mpz_get_double_int): Likewise.
9683         * expr.c (is_aligning_offset, undefined_operand_subword_p,
9684         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
9685         Likewise.
9686         * expr.h (safe_from_p): Likewise.
9687         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
9688         Likewise.
9689         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
9690         zero_sized_type, goa_lhs_expr_p): Likewise.
9691         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
9692         * rtl.h (print_rtl_with_bb): Likewise.
9693         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
9694         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
9695         * tree-flow-inline.h (bb_stmt_list): Constify.
9696         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
9697         cbsi_stmt): New.
9698         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
9699         const_first_stmt, const_last_stmt): New.
9700         (block_may_fallthru, empty_block_p): Constify.
9701         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
9702         EXPR_ONLY_BODY): New.
9703         (expr_first, expr_last, expr_only): Use macro for body.
9704         (const_expr_first, const_expr_last, const_expr_only): New.
9705         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
9706         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
9707         ctsi_prev, ctsi_stmt): New.
9708         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
9709         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
9710         * tree-ssa-loop-niter.c (loop_only_exit_p,
9711         derive_constant_upper_bound): Likewise.
9712         * tree-ssa-phiopt.c (empty_block_p): Likewise.
9713         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
9714         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
9715         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
9716         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
9717         * tree.c (get_type_static_bounds): Likewise.
9718         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
9719         (get_type_static_bounds): Constify.
9720
9721 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9722
9723         PR target/30315
9724         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
9725         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
9726         (*<addsub><mode>3_cc_overflow): New.
9727         (*add<mode>3_cconly_overflow): New.
9728         (*sub<mode>3_cconly_overflow): New.
9729         (*<addsub>si3_zext_cc_overflow): New.
9730         * config/i386/predicates.md (fcmov_comparison_operator): Accept
9731         CCCmode for LTU, GTU, LEU and GEU.
9732         (ix86_comparison_operator): Likewise.
9733         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
9734         * config/i386/i386.c (put_condition_code): Support CCCmode.
9735         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
9736         or MINUS expressions.
9737
9738 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
9739
9740         PR c/30428
9741         * c-typeck.c (build_binary_op): Disallow vector float types with
9742         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
9743
9744 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
9745
9746         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
9747         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
9748         (dep_def): New typedef.
9749         (init_dep_1, sd_debug_dep): Declare functions.
9750         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
9751         (debug_dep_links): Remove.
9752         (struct _deps_list): New field 'n_links'.
9753         (DEPS_LIST_N_LINKS): New macro.
9754         (FOR_EACH_DEP_LINK): Remove.
9755         (create_deps_list, free_deps_list, delete_deps_list): Remove
9756         declaration.
9757         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
9758         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9759         (copy_deps_list_change_con, move_dep_link): Ditto.
9760         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
9761         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
9762         'dep_count'.
9763         (INSN_BACK_DEPS): Remove.
9764         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
9765         New macros.
9766         (INSN_DEP_COUNT): Remove.
9767         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
9768         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
9769         Declare global variables.
9770         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
9771         (add_forw_dep, compute_forward_dependences): Remove declarations.
9772         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
9773         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9774         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
9775         functions.
9776         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
9777         New constants.
9778         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
9779         (sd_list_types_def): New typedef.
9780         (sd_next_list): Declare function.
9781         (struct _sd_iterator): New type.
9782         (sd_iterator_def): New typedef.
9783         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
9784         functions.
9785         (FOR_EACH_DEP): New cycle wrapper.
9786         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
9787         Declare functions.
9788         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
9789         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
9790         Ditto.
9791
9792         * sched-deps.c (init_dep_1): Make global.
9793         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
9794         constants.
9795         (dump_dep): New static function.
9796         (dump_dep_flags): New static variable.
9797         (sd_debug_dep): New function.
9798         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
9799         the list.
9800         (move_dep_link): Use remove_from_deps_list (), instead of
9801         detach_dep_link ().
9802         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
9803         (dep_link_is_detached_p): New static function.
9804         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
9805         instead.
9806         (dn_pool, dl_pool): New alloc_pools.
9807         (dn_pool_diff, dl_pool_diff): New static variables.
9808         (create_dep_node, delete_dep_node): New static function.
9809         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
9810         (deps_list_empty_p): Make it static.  Use 'n_links' field.
9811         (deps_pools_are_empty_p): New static function.
9812         (alloc_deps_list, delete_deps_list): Remove.
9813         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
9814         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
9815         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
9816         (forward_dependency_cache): Remove.
9817         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
9818         'back' from the names.  Change signature to use dep_t instead of
9819         equivalent quad.
9820         (add_back_dep): Ditto.  Make global.
9821         (check_dep_status): Rename to check_dep ().
9822         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
9823         New functions.
9824         (sd_finish_insn): Ditto.
9825         (sd_find_dep_between_no_cache): New static function.
9826         (sd_find_dep_between): New function.
9827         (ask_dependency_caches, set_dependency_caches): New static functions.
9828         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
9829         (add_or_update_dep_1): Separate pieces of functionality into
9830         ask_dependency_caches (), update_dependency_caches (),
9831         change_spec_dep_to_hard (), update_dep ().
9832         (get_back_and_forw_lists): New static function.
9833         (sd_add_dep): Separate setting of dependency caches into
9834         set_dependency_caches ().
9835         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
9836         New functions.
9837         (sd_delete_dep): Ditto.
9838         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
9839         (dump_lists): New static function.
9840         (sd_debug_lists): New debug function.
9841         (delete_all_dependences, fixup_sched_groups): Update to use
9842         sd_* infrastructure.
9843         (sched_analyze_2): Create data-speculative dependency only if
9844         data-speculation is enabled.
9845         (sched_analyze_insn): If insn cannot be speculative, make all its
9846         dependencies non-speculative.
9847         (sched_analyze): Use sd_init_insn ().
9848         (add_forw_dep, compute_forward_dependencies): Remove.
9849         (delete_dep_nodes_in_back_deps): New static function.
9850         (sched_free_deps): New function.
9851         (init_dependency_caches): Init alloc_pools.
9852         (extend_depedency_caches): Update after removing of
9853         forward_dependency_cache.
9854         (free_dependency_caches): Ditto.  Free alloc_pools.
9855         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
9856         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
9857         Ditto.
9858         (add_back_forw_dep, delete_back_forw_dep): Ditto.
9859         (add_dependence): Use init_dep ().
9860         (get_dep_weak_1): New static function.
9861         (get_dep_weak): Move logic to get_dep_weak_1 ().
9862         (dump_ds): New static function moved from haifa-sched.c:
9863         debug_spec_status ().
9864         (debug_ds): New debug function.
9865         (check_dep_status): Rename to check_dep ().  Update to check whole
9866         dependencies.
9867
9868         * haifa-sched.c (spec_info): Make global.
9869         (added_recovery_block_p): Rename to
9870         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
9871         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
9872         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
9873         to use new interfaces.
9874         (ok_for_early_queue_removal): Ditto.
9875         (schedule_block): Initialize logical uids of insns emitted by the
9876         target.
9877         (sched_init): Initialize new variable.
9878         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
9879         interfaces.
9880         (extend_global): Initialize insn data.
9881         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
9882         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
9883         new interfaces.
9884         (add_to_speculative_block): Update to use new interfaces.
9885         (create_recovery_block): Set new variables.
9886         (create_check_block_twin, fix_recovery_deps): Update to use new
9887         interfaces.
9888         (sched_insn_is_legitimate_for_speculation_p): New function.
9889         (speculate_insn): Move checking logic to
9890         sched_insn_is_legitimate_for_speculation_p ().
9891         (sched_remove_insn): Finalize sched-deps information of instruction.
9892         (clear_priorities, add_jump_dependencies): Update to use new
9893         interfaces.
9894         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
9895         
9896         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
9897         to use new interfaces.
9898         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
9899         (new_ready): Try to use control speculation only if it is available.
9900         (add_branch_dependences): Update to use new interfaces.
9901         (compute_block_backward_dependences): Rename to
9902         compute_block_dependences ().  Call
9903         targetm.sched.dependencies_evaluation_hook ().
9904         (free_block_dependencies): New static function.
9905         (debug_dependencies): Update to use new interfaces.
9906         (schedule_region): Remove separate computation of forward dependencies.
9907         Move call of targetm.sched.dependencies_evaluation_hook () to
9908         compute_block_dependences ().  Free dependencies at the end of
9909         scheduling the region.
9910
9911         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
9912         new interfaces.
9913         (add_deps_for_risky_insns): Ditto.
9914         (schedule_ebb): Remove separate computation of forward dependencies.
9915         Free dependencies at the end of scheduling the ebb.
9916
9917         * ddg.c (create_ddg_dependence): Update to use new interfaces.
9918         (build_intra_loop_deps): Ditto.  Remove separate computation of
9919         forward dependencies.  Free sched-deps dependencies.
9920
9921         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
9922         to use new interfaces.
9923         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
9924
9925         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
9926         new interfaces.
9927         (is_costly_group): Ditto.
9928
9929 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9930
9931         * alias.c (rtx_equal_for_memref_p): Constify.
9932         * basic-block.h (const_edge, const_basic_block): New.
9933         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
9934         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
9935         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
9936         probably_never_executed_bb_p, edge_probability_reliable_p,
9937         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
9938         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
9939         Likewise.
9940         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
9941         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
9942         Likewise.
9943         * cfganal.c (flow_active_insn_p, forwarder_block_p,
9944         flow_nodes_print, dfs_enumerate_from): Likewise.
9945         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
9946         control_flow_insn_p, count_basic_blocks): Likewise.
9947         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
9948         get_loop_body_with_size, loop_exit_edge_p): Likewise.
9949         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
9950         average_num_loop_insns, loop_exit_edge_p,
9951         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
9952         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
9953         average_num_loop_insns, seq_cost): Likewise.
9954         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
9955         * dominance.c (dominated_by_p): Likewise.
9956         * emit-rtl.c (validate_subreg): Likewise.
9957         * except.c (can_throw_internal, can_throw_external): Likewise.
9958         * except.h (can_throw_internal, can_throw_external): Likewise.
9959         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
9960         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
9961         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
9962         simple_mem, store_ops_ok, load_kills_store, find_loads,
9963         store_killed_in_insn, store_killed_after, store_killed_before,
9964         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
9965         Likewise.
9966         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
9967         noce_mem_write_may_trap_or_fault_p): Likewise.
9968         * pointer-set.c (pointer_set_contains, pointer_map_contains):
9969         Likewise.
9970         * pointer-set.h (pointer_set_contains, pointer_map_contains):
9971         Likewise.
9972         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
9973         probably_cold_bb_p, probably_never_executed_bb_p,
9974         edge_probability_reliable_p, br_prob_note_reliable_p,
9975         can_predict_insn_p): Likewise.
9976         * regclass.c (reg_set_to_hard_reg_set): Likewise.
9977         * resource.c (return_insn_p): Likewise.
9978         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
9979         Likewise.
9980         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
9981         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
9982         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
9983         verify_gimple_modify_stmt): Likewise.
9984         * tree-chrec.c (is_not_constant_evolution,
9985         is_multivariate_chrec_rec, is_multivariate_chrec,
9986         chrec_contains_symbols, chrec_contains_undetermined,
9987         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
9988         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
9989         eq_evolutions_p, scev_direction): Likewise.
9990         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
9991         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
9992         chrec_contains_symbols_defined_in_loop,
9993         chrec_contains_undetermined, tree_contains_chrecs,
9994         evolution_function_is_affine_multivariate_p,
9995         evolution_function_is_univariate_p, chrec_zerop,
9996         evolution_function_is_constant_p, evolution_function_is_affine_p,
9997         evolution_function_is_affine_or_constant_p,
9998         tree_does_not_contain_chrecs, chrec_type): Likewise.
9999         * tree-data-ref.c (tree_fold_divides_p,
10000         object_address_invariant_in_loop_p, dr_may_alias_p,
10001         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
10002         same_access_functions, constant_access_functions,
10003         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
10004         Likewise.
10005         * tree-flow.h (scev_direction): Likewise.
10006         * tree-gimple.c (is_gimple_stmt): Likewise.
10007         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
10008         Likewise.
10009         * tree-pretty-print.c (op_prio): Likewise.
10010         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
10011         analyzable_condition, backedge_phi_arg_p): Likewise.
10012         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
10013         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
10014         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
10015         Likewise.
10016
10017 2007-08-13  Dan Hipschman  <dsh@google.com>
10018
10019         PR c/32953
10020         * c-format.c (check_format_arg): Move check for zero-length
10021         format strings below the check for unterminated strings.
10022
10023 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
10024
10025         PR C/30427
10026         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
10027         types.
10028
10029 2007-08-13  Nick Clifton  <nickc@redhat.com>
10030
10031         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
10032
10033 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10034
10035         PR fortran/32860
10036         * c-format.c (gcc_gfc_length_specs): New array.
10037         (gcc_gfc_char_table): Add unsigned specifier, and references to
10038         the l length modifier.
10039         (format_types_orig): Use the new gcc_gfc_length_specs.
10040
10041 2007-08-12  Sa Liu  <saliu@de.ibm.com>
10042
10043         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
10044         and with REG_RETVAL note after split.
10045
10046 2007-08-11  David Daney  <ddaney@avtrex.com>
10047
10048         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
10049         as ATTRIBUTE_UNUSED.
10050
10051 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
10052             Segher Boessenkool  <segher@kernel.crashing.org>
10053
10054         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
10055         HAVE_LOCAL_CPU_DETECT not defined.
10056
10057 2007-08-11  Jan Hubicka  <jh@suse.cz>
10058
10059         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
10060         (cgraph_process_new_functions): Honor previous value of
10061         disregard_inline_limits.
10062         * ipa-inline.c (compute_inline_parameters): Likewise.
10063
10064 2007-08-11  Ian Lance Taylor  <iant@google.com>
10065
10066         * alias.h (alias_set_type): Define new type.
10067         (ALIAS_SET_MEMORY_BARRIER): Use it.
10068         * rtl.h: Include alias.h.
10069         (struct mem_attrs): Use alias_set_type.
10070         * tree.h: Include alias.h
10071         (struct tree_type): Use alias_set_type.
10072         (struct tree_struct_field_tag): Likewise.
10073         (struct tree_decl_common): Likewise.
10074         * alias.c (struct alias_set_entry): Use alias_set_type.
10075         (get_alias_set_entry, alias_set_subset_of): Likewise.
10076         (alias_sets_conflict_p): Likewise.
10077         (alias_sets_must_conflict_p): Likewise.
10078         (objects_must_conflict_p): Likewise.
10079         (get_alias_set, new_alias_set): Likewise.
10080         (record_alias_subset, record_component_aliases): Likewise.
10081         (varargs_set, frame_set): Change to alias_set_type.
10082         (get_varargs_alias_set): Use alias_set_type.
10083         (get_frame_alias_set): Likewise.
10084         * builtins.c (setjmp_alias_set): Change to alias_set_type.
10085         * dse.c (struct store_info): Use alias_set_type.
10086         (struct read_info, struct clear_alias_mode_holder): Likewise.
10087         (clear_alias_set_lookup, canon_address): Likewise.
10088         (record_store, check_mem_read_rtx): Likewise.
10089         (dse_record_singleton_alias_set): Likewise.
10090         (dse_invalidate_singleton_alias_set): Likewise.
10091         * emit-rtl.c (get_mem_attrs): Likewise.
10092         (set_mem_attributes_minus_bitpos): Likewise.
10093         (set_mem_alias_set): Likewise.
10094         * expr.c (store_constructor_field, store_field): Likewise.
10095         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
10096         * langhooks.c (lhd_get_alias_set): Likewise.
10097         * langhooks-def.h (lhd_get_alias_set): Likewise.
10098         * reload1.c (alter_reg): Likewise.
10099         * tree-flow.h (struct fieldoff): Likewise.
10100         * tree-ssa-alias.c (struct alias_map_d): Likewise.
10101         (may_alias_p, get_smt_for, create_sft): Likewise.
10102         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
10103         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
10104         (merge_smts_into): Likewise.
10105         * varasm.c (const_alias_set): Likewise.
10106         * c-common.c (strict_aliasing_warning): Likewise.
10107         (c_common_get_alias_set): Likewise.
10108         * dse.h (dse_record_singleton_alias_set): Update declaration.
10109         (dse_invalidate_singleton_alias_set): Likewise.
10110         * emit-rtl.h (set_mem_alias_set): Likewise.
10111         * c-common.h (c_common_get_alias_set): Likewise.
10112         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
10113         * print-tree.c (print_node): Likewise.
10114         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
10115         alias_set_type.
10116         (alpha_setup_incoming_varargs): Use alias_set_type.
10117         * config/i386/i386.c (setup_incoming_varargs_64): Use
10118         alias_set_type.
10119         (setup_incoming_varargs_ms_64): Likewise.
10120         (ix86_GOT_alias_set): Likewise.
10121         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
10122         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
10123         (set): Change to alias_set_type.
10124         (get_TOC_alias_set): Use alias_set_type.
10125         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
10126         declaration.
10127         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
10128         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
10129         alias_set_type.
10130         (struct_value_alias_set): Likewise.
10131         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
10132
10133 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10134
10135         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
10136         * config/vxworks.h (TARGET_VXWORKS): Override.
10137         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
10138         "mips" if TARGET_VXWORKS.
10139
10140 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10141
10142         * calls.c (avoid_likely_spilled_reg): New function.
10143         (expand_call): Use it.
10144
10145 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10146
10147         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
10148
10149 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
10150
10151         * config/mips/predicates.md (const_call_insn_operand): Invoke
10152         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
10153
10154 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
10155
10156         PR target/33042
10157         * config/rs6000/driver-rs6000.c: Include link.h.
10158         Use ElfW instead of wordsize-specif typedef.
10159
10160 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10161
10162         * system.h (CONST_CAST): New.
10163         * c-decl.c (c_make_fname_decl): Use it.
10164         * c-lex.c (cb_ident, lex_string): Likewise.
10165         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10166         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
10167         give_switch, set_multilib_dir): Likewise.
10168         * gengtype-parse.c (string_seq, typedef_name): Likewise.
10169         * passes.c (execute_one_pass): Likewise.
10170         * prefix.c (update_path): Likewise.
10171         * pretty-print.c (pp_base_destroy_prefix): Likewise.
10172         * tree.c (build_string): Likewise.
10173
10174 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10175
10176         * tree-flow-inline.h (is_exec_stmt): Remove.
10177         (is_label_stmt): Remove.
10178         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
10179         is_label_stmt.
10180
10181 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
10182
10183         * lower-subreg.c (resolve_shift_zext): Don't adjust
10184         src_reg_num for wordmode operands.
10185
10186 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
10187             David Ung  <davidu@mips.com>
10188
10189         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
10190         (TARGET_SCHED_REORDER2): Define.
10191         (mips_maybe_swap_ready): New.
10192         (mips_last_74k_agen_insn): New.
10193         (mips_74k_agen_init): New.
10194         (mips_74k_agen_reorder): New function to group loads and stores
10195         in the ready queue.
10196         (mips_sched_init): New.  
10197         (mips_sched_reorder): Don't do initialization here.  Call
10198         mips_74k_agen_reorder.
10199         (mips_variable_issue): Call mips_74k_agen_init.
10200
10201 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
10202
10203         * tree-flow-inline.h (get_filename): Remove.
10204
10205 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
10206
10207         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
10208         argument.
10209         (mips_fetch_insns): Delete in favor of...
10210         (mips_load_store_insns): ...this new function.
10211         * config/mips/mips.c (mips_address_insns): Add a boolean argument
10212         to say whether multiword moves _might_ be split.
10213         (mips_fetch_insns): Delete in favor of...
10214         (mips_load_store_insns): ...this new function.
10215         (mips_rtx_costs): Update the call to mips_address_insns.
10216         (mips_address_cost): Likewise.
10217         * config/mips/mips.md (length): Use mips_load_store_insns instead
10218         of mips_fetch_insns.
10219         * config/mips/constraints.md (R): Use mips_address_insns rather
10220         than mips_fetch_insns.  Assume that the move never needs to be split.
10221
10222 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10223
10224         * config/mips/mips.opt (mhard-float, msoft-float): Make these
10225         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
10226         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
10227         * config/mips/mips.h (mips16_hard_float): Delete.
10228         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
10229         definitions, and replace with....
10230         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
10231         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
10232         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
10233         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
10234         (override_options): Replace MASK_SOFT_FLOAT references with
10235         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
10236         and mips16_hard_float when TARGET_MIPS16.
10237         
10238 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10239
10240         PR c/32796
10241         * c-typeck.c (build_binary_op): Check for non pointer types before
10242         calling int_fits_type_p.
10243
10244 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10245
10246         PR middle-end/32813
10247         * fold-const.c (omit_one_operand): Return only the ommitted expression
10248         if the result is an empty statement.
10249         (pedantic_omit_one_operand): Likewise.
10250
10251 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
10252
10253         * c-typeck.c (readonly_error): Improve error for assignment.
10254         
10255         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
10256         expression. 
10257         (pp_c_expression): Ditto.
10258
10259 2007-08-09  Simon Baldwin  <simonb@google.com>
10260
10261         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
10262         break that was preventing simplify_associative_operation() for xor.
10263
10264 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
10265             Nigel Stephens  <nigel@mips.com>
10266
10267         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
10268         Document change in interpretation of value from boolean to
10269         tri-state integer.
10270         * optabs.c (expand_ffs, expand_ctz): New functions to compute
10271         ffs and ctz using clz.
10272         (expand_unop): Call them.
10273         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
10274         result value.
10275         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
10276         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
10277         enable the new ffs expansion on this target.
10278
10279 2007-08-09  Jan Hubicka  <jh@suse.cz>
10280
10281         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
10282         (expand_ternary_op): Likewise.
10283         (expand_vec_shift_expr): Likewise.
10284         (expand_binop_directly): Likewise.
10285         (expand_binop): Likewise.
10286         (sign_expand_binop): Likewise.
10287         (expand_twoval_unop): Likewise.
10288         (expand_twoval_binop): Likewise.
10289         (expand_twoval_binop_libfunc): Likewise.
10290         (widen_clz): Likewise.
10291         (widen_bswap): Likewise.
10292         (expand_parity): Likewise.
10293         (expand_unop): Likewise.
10294         (expand_abs_nojump): Likewise.
10295         (expand_copysign): Likewise.
10296         (emit_no_conflict_block): Likewise.
10297         (emit_libcall_block): Likewise.
10298         (can_compare_p): Likewise.
10299         (prepare_cmp_insn): Likewise.
10300         (emit_cmp_and_jump_insn_1): Likewise.
10301         (prepare_float_lib_cmp): Likewise.
10302         (emit_conditional_add): Likewise.
10303         (gen_add2_insn): Likewise.
10304         (have_add2_insn): Likewise.
10305         (gen_sub2_insn): Likewise.
10306         (have_sub2_insn): Likewise.
10307         (can_extend_p): Likewise.
10308         (can_fix_p): Likewise.
10309         (can_float_p): Likewise.
10310         (expand_float): Likewise.
10311         (expand_fix): Likewise.
10312         (expand_sfix_optab): Likewise.
10313         (new_optab): Likewise.
10314         (new_convert_optab): Likewise.
10315         (init_libfuncs): Likewise.
10316         (init_interclass_conv_libfuncs): Likewise.
10317         (init_intraclass_conv_libfuncs): Likewise.
10318         (set_conv_libfunc): Likewise.
10319         (init_optabs): Likewise.
10320         (debug_optab_libfuncs): Likewise.
10321         (gen_cond_trap): Likewise.
10322         * optabs.h (optab_handler, convert_optab_hanlder): New.
10323         * genopinit.c: Update optabs generation table.
10324         * reload.c (find_reloads_address_1): Use optabs accestors.
10325         * builtins.c (expand_builtin_mathfn): Likewise.
10326         (expand_builtin_mathfn_2): Likewise.
10327         (expand_builtin_mathfn_3): Likewise.
10328         (expand_builtin_interclass_mathfn): Likewise.
10329         (expand_builtin_sincos): Likewise.
10330         (expand_builtin_cexpi): Likewise.
10331         (expand_builtin_powi): Likewise.
10332         (expand_builtin_strlen): Likewise.
10333         * dojump.c (do_jump): Likewise.
10334         * expr.c (convert_move): Likewise.
10335         (move_by_pieces): Likewise.
10336         (move_by_pieces_ninsns): Likewise.
10337         (can_store_by_pieces): Likewise.
10338         (store_by_pieces_1): Likewise.
10339         (emit_move_via_integer): Likewise.
10340         (emit_move_complex): Likewise.
10341         (emit_move_ccmode): Likewise.
10342         (emit_move_insn_1): Likewise.
10343         (emit_single_push_insn): Likewise.
10344         (store_constructor): Likewise.
10345         (expand_expr_real_1): Likewise.
10346         (do_store_flag): Likewise.
10347         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
10348         (enumerate_modes): Likewise.
10349         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
10350         (supportable_widening_operation): Likewise.
10351         (supportable_narrowing_operation): Likewise.
10352         * expmed.c (store_bit_field_1): Likewise.
10353         (extract_bit_field_1): Likewise.
10354         (expand_mult_highpart_optab): Likewise.
10355         (expand_smod_pow2): Likewise.
10356         (expand_divmod): Likewise.
10357         (emit_store_flag): Likewise.
10358         * tree-vect-patterns.c
10359         (vect_pattern_recog_1): Likewise.
10360         * tree-ssa-loop-prefetch.c
10361         (nontemporal_store_p): Likewise.
10362         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
10363         (vect_create_epilog_for_reduction): Likewise.
10364         (vectorizable_reduction): Likewise.
10365         (vectorizable_operation): Likewise.
10366         (vect_strided_store_supported): Likewise.
10367         (vectorizable_store): Likewise.
10368         (vect_strided_load_supported): Likewise.
10369         (vectorizable_load): Likewise.
10370         * combine.c (simplify_comparison): Likewise.
10371         * tree-vect-generic.c
10372         (type_for_widest_vector_mode): Likewise.
10373         (expand_vector_operations_1): Likewise.
10374         * config/spu/spu.c (spu_expand_mov): Likewise.
10375         (spu_emit_vector_compare): Likewise.
10376         * config/rs6000/rs6000.c
10377         (rs6000_emit_vector_compare): Likewise.
10378         * stmt.c (add_case_node): Likewise.
10379         * reload1.c (gen_reload):
10380
10381 2007-08-09  Michael Matz  <matz@suse.de>
10382
10383         * tree.h (fixed_zerop): Declare as taking a const_tree.
10384         * tree.c (fixed_zerop): Take a const_tree.
10385
10386 2007-08-09  Ira Rosen  <irar@il.ibm.com>
10387
10388         * tree-vect-transform.c (vectorizable_store): Remove call to
10389         copy_virtual_operands() and call mark_symbols_for_renaming() for
10390         the created vector store.
10391         (vect_setup_realignment): Don't call copy_virtual_operands() and
10392         update_vuses_to_preheader(). 
10393         (vectorizable_load): Don't call copy_virtual_operands(). 
10394         (update_vuses_to_preheader): Remove.
10395
10396 2007-08-08  Chao-ying Fu  <fu@mips.com>
10397
10398         * tree.def (FIXED_POINT_TYPE): New type.
10399         (FIXED_CST): New constant.
10400         (FIXED_CONVERT_EXPR): New expr.
10401         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
10402         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
10403         * tree.h (struct tree_base): Add saturating_flag.
10404         Remove one bit of spare for saturating_flag.
10405         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
10406         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
10407         FIXED_POINT_TYPE_P): Define.
10408         (TYPE_SATURATING): Define.
10409         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
10410         (struct tree_fixed_cst): New.
10411         (TYPE_IBIT, TYPE_FBIT): Define.
10412         (tree_node): Add fixed_cst.
10413         (enum tree_index): Add new enumeration values of
10414         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
10415         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
10416         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
10417         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
10418         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
10419         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
10420         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
10421         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
10422         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
10423         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
10424         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
10425         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
10426         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
10427         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
10428         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
10429         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
10430         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
10431         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
10432         (sat_short_fract_type_node, sat_fract_type_node,
10433         sat_long_fract_type_node, sat_long_long_fract_type_node,
10434         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
10435         sat_unsigned_long_fract_type_node,
10436         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
10437         fract_type_node, long_fract_type_node, long_long_fract_type_node,
10438         unsigned_short_fract_type_node, unsigned_fract_type_node,
10439         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
10440         sat_short_accum_type_node, sat_accum_type_node,
10441         sat_long_accum_type_node, sat_long_long_accum_type_node,
10442         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
10443         sat_unsigned_long_accum_type_node,
10444         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
10445         accum_type_node, long_accum_type_node, long_long_accum_type_node,
10446         unsigned_short_accum_type_node, unsigned_accum_type_node,
10447         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
10448         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
10449         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
10450         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
10451         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
10452         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
10453         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
10454         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
10455         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
10456         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
10457         sat_uda_type_node, sat_uta_type_node): New macro.
10458         (make_fract_type, make_accum_type): Declare.
10459         (make_signed_fract_type, make_unsigned_fract_type,
10460         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
10461         make_signed_accum_type, make_unsigned_accum_type,
10462         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
10463         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
10464         make_or_reuse_sat_signed_fract_type,
10465         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
10466         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
10467         make_or_reuse_sat_unsigned_accum_type): New macro.
10468         (fixed_zerop): Declare.
10469         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
10470         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10471         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10472         LONG_LONG_ACCUM_TYPE_SIZE): Define.
10473         * treestruct.def: Add TS_FIXED_CST.
10474         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
10475         (tree.o): Likewise.
10476         (tree-dump.o): Likewise.
10477         (print-tree.o): Likewise.
10478         (tree-pretty-print.o): Likewise.
10479         (fold-const.o): Likewise.
10480         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
10481         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
10482         (is_gimple_min_invariant): Handle FIXED_CST.
10483         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
10484         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
10485         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10486         (layout_type): Handle FIXED_POINT_TYPE.
10487         (make_fract_type, make_accum_type): New functions.
10488         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
10489         * tree-dump.c (fixed-value.h): New include.
10490         (dump_fixed): New function.
10491         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
10492         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
10493         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
10494         * tree-pretty-print.c (fixed-value.h): New include.
10495         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
10496         FIXED_CONVERT_EXPR.
10497         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
10498         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
10499         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
10500         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
10501         for non-saturating fixed-point types.
10502         (reassociate_bb): Likewise.
10503         * emit-rtl.c (fixed-value.h): New include.
10504         (fconst0, fconst1): New array.
10505         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
10506         * tree-vect-generic.c expand_vector_operation): Support
10507         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
10508         MODE_VECTOR_UACCUM.
10509         (type_for_widest_vector_mode): Add one parameter for the 
10510         saturating flag.
10511         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
10512         vector mode.
10513         Pass the satp parameter to type_for_mode for fixed-point types.
10514         (expand_vector_operations_1): Pass the saturating flag to
10515         type_for_widest_vector_mode.
10516         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
10517         and MODE_VECTOR_UACCUM.
10518         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
10519         (vectorizable_condition): Likewise.
10520         * tree.c (fixed-value.h): New include.
10521         (tree_code_size): Support FIXED_CST.
10522         (build_fixed): New function.
10523         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
10524         (fixed_zerop): New function.
10525         (tree_node_structure): Support FIXED_CST.
10526         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
10527         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
10528         (type_hash_eq): Handle FIXED_POINT_TYPE.
10529         (simple_cst_equal): Support FIXED_CST.
10530         (iterative_hash_expr): Handle FIXED_CST.
10531         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
10532         (get_narrower): Likewise.
10533         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
10534         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
10535         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
10536         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
10537         nodes.
10538         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
10539         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
10540         (initializer_zerop): Support FIXED_CST.
10541         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
10542         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
10543         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
10544         (is_base_type): Handle FIXED_POINT_TYPE.
10545         (add_type_attribute): Handle FIXED_POINT_TYPE.
10546         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
10547         * print-tree.c (fixed-value.h): New include.
10548         (print_node_brief): Support FIXED_CST.
10549         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
10550         * c-pretty-print.c (fixed-value.h): New include.
10551         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
10552         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
10553         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
10554         Support fixed-point types for inner items in VECTOR_TYPE.
10555         (pp_c_direct_declarator): Likewise.
10556         (pp_c_declarator): Likewise.
10557         (pp_c_fixed_constant): New function.
10558         (pp_c_constant): Handle FIXED_CST.
10559         (pp_c_primary_expression): Likewise.
10560         (pp_c_expression): Likewise.
10561         * fold-const.c (fixed-value.h): New include.
10562         (negate_expr_p): Return true for FIXED_CST.
10563         (fold_negate_expr): Support FIXED_CST.
10564         (split_tree): Support FIXED_CST.
10565         (const_binop): Support FIXED_CST.
10566         (fold_convert_const_int_from_fixed): New function to convert from
10567         fixed to int.
10568         (fold_convert_const_real_from_fixed): New function to convert from
10569         fixed to real.
10570         (fold_convert_const_fixed_from_fixed): New function to convert from
10571         fixed to another fixed.
10572         (fold_convert_const_fixed_from_int): New function to convert from
10573         int to fixed.
10574         (fold_convert_const_fixed_from_real): New function to convert from
10575         real to fixed.
10576         (fold_convert_const): Support conversions from fixed to int, from
10577         fixed to real, from fixed to fixed, from int to fixed, and from real
10578         to fixed.
10579         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
10580         (operand_equal_p): Support FIXED_CST.
10581         (make_range): For fixed-point modes, we need to pass the
10582         saturating flag as the 2nd parameter.
10583         (tree_swap_operands_p): Handle FIXED_CST.
10584         (fold_plusminus_mult_expr): For fract modes, we cannot generate
10585         constant 1.
10586         (fold_unary): Support FIXED_CONVERT_EXPR.
10587         (fold_binary): Handle FIXED_CST.
10588         Make sure the type is not saturating, before associating operations.
10589         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
10590         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
10591         (fold_negate_const): Support FIXED_CST.
10592         (fold_relational_const): Support FIXED_CST.
10593         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
10594         (gimplify_expr): Handle FIXED_CST.
10595         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
10596         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
10597         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
10598         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
10599         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
10600         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
10601         LONG_LONG_ACCUM_TYPE_SIZE.
10602         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
10603         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
10604         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
10605         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
10606         MODE_ACCUM, and MODE_UACCUM.
10607         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
10608         fixed-point types to disable reduction.
10609         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
10610
10611 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
10612
10613         * config/rs6000/x-rs6000: New file.
10614         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
10615         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
10616         (EXTRA_SPEC_FUNCTIONS): Define.
10617         (HAVE_LOCAL_CPU_DETECT): Define.
10618         (CC1_CPU_SPEC): Define.
10619         * config/rs6000/driver-rs6000.c: New file.
10620         * config/rs6000/aix.h (CC1_SPEC): Define.
10621         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
10622         * config.host: Add x-rs6000 to host_xmake_file if host and target
10623         are rs6000 or powerpc.
10624
10625 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
10626
10627         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
10628
10629 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10630             Sandra Loosemore  <sandra@codesourcery.com>
10631             Chao-ying Fu  <fu@mips.com>
10632             Nigel Stephens  <nigel@mips.com>
10633             David Ung  <davidu@mips.com>
10634
10635         * doc/invoke.texi (-mcode-readable): Document.
10636         * config/mips/mips.opt (mcode-readable): New option.
10637         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
10638         * config/mips/mips.h (mips_code_readable_setting): New enum.
10639         (mips_code_readable): Declare.
10640         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
10641         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
10642         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
10643         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
10644         boiler-plate comments.
10645         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10646         * config/mips/mips.c (mips_code_readable): New variable.
10647         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
10648         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
10649         context and -mcode-readable setting to restrict the use of
10650         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
10651         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
10652         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
10653         (mips_blocks_for_constant_p): Only return false for
10654         TARGET_MIPS16_PCREL_LOADS.
10655         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
10656         for MIPS16.  Handle SYMBOL_32_HIGH.
10657         (mips_const_insns): Allow HIGHs for MIPS16 too.
10658         (mips_unspec_address_offset): New function, split out from...
10659         (mips_unspec_address): ...here.
10660         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
10661         16-bit symbolic constants.  Assert approropiate conditions for
10662         using the "la" and "dla" macros.
10663         (mips_handle_option): Handle -mcode-readable=.
10664         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
10665         Set up mips_lo_relocs[SYMBOL_32_HIGH].
10666         (mips_strip_unspec_address): New function, split out from...
10667         (print_operand_reloc): ...here.
10668         (print_operand): Pass constants through mips_strip_unspec_address.
10669         (print_operand_address): Likewise.
10670         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
10671         (mips_select_rtx_section): Remove MIPS16 handling.
10672         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
10673         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
10674         (mips16_lay_out_constants): Do nothing unless
10675         TARGET_MIPS16_PCREL_LOADS.
10676         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
10677         * config/mips/mips.md: Split HIGHs for MIPS16.
10678         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
10679
10680 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10681
10682         * config/mips/mips-protos.h (mips_emit_move): Declare.
10683         * config/mips/mips.c (mips_emit_move): New function.
10684         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
10685         (mips_legitimize_const_move): Likewise.
10686         (mips_legitimize_move): Likewise.
10687         (mips_split_64bit_move): Likewise.
10688         (mips_restore_gp): Likewise.
10689         (mips_load_call_address): Likewise.
10690         (mips_emit_fcc_reload): Likewise.
10691         (mips_set_return_address): Likewise.
10692         (mips_block_move_straight): Likewise.
10693         (mips_block_move_loop): Likewise.
10694         (mips_setup_incoming_varargs): Likewise.
10695         (mips_save_reg): Likewise.
10696         (mips_expand_prologue): Likewise.
10697         (mips_restore_reg): Likewise.
10698         (mips_expand_epilogue): Likewise.
10699         (mips_output_mi_thunk): Likewise.
10700         (build_mips16_call_stub): Likewise.
10701         (mips_builtin_branch_and_move): Likewise.
10702         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
10703         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
10704         (fixuns_truncdfdi2): Likewise.
10705         (fixuns_truncsfsi2): Likewise.
10706         (fixuns_truncsfdi2): Likewise.
10707         (loadgp_absolute): Likewise.
10708         (builtin_setjmp_setup): Likewise.
10709         (builtin_longjmp): Likewise.
10710         (untyped_call): Likewise.
10711
10712 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10713
10714         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
10715         an "rtx *" argument.  Return a bool.
10716         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
10717         values and return true if they can be split.  Take the same kind of
10718         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
10719         and store the lo_sum there if nonnull.  Use the symbol type to
10720         determine whether a $gp or HIGH is needed.
10721         (mips_legitimize_address): Update call to mips_split_symbol and
10722         simplify accordingly.
10723         (mips_legitimize_const_move): Likewise.
10724         * config/mips/mips.md: In the combine define_split,
10725         check mips_split_symbol instead of splittable_symbolic_operand.
10726         Update use of mips_split_symbol in the generator code.
10727         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
10728
10729 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10730
10731         * config/mips/mips.c (mips_symbolic_address_p): Delete.
10732         (mips_symbol_insns_1): New function, split out from...
10733         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
10734         and stores separately from load addresses.
10735         (mips_classify_address): Replace uses of mips_symbolic_address_p
10736         with uses of mips_symbol_insns.
10737         (mips_address_insns): Update calls to mips_symbol_insns.
10738         (mips_const_insns): Likewise.
10739         (mips_legitimize_address): Likewise.
10740
10741 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10742
10743         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
10744         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
10745         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
10746         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
10747         non-call contexts if TARGET_MIPS16.
10748         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
10749         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
10750         code for SYMBOL_ABSOLUTE.
10751         (mips_symbol_insns): Likewise.
10752
10753 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10754
10755         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
10756         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
10757         (mips_symbolic_constant_p): Likewise.  Update the call to
10758         mips_classify_symbol.
10759         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
10760         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
10761         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
10762         (print_operand_reloc): Add a context argument.  Update the call to
10763         mips_symbolic_constant_p.
10764         (print_operand): Update the calls to print_operand_reloc.
10765         (print_operand_address): Use print_operand_reloc rather than
10766         print_operand.
10767         (mips_rewrite_small_data_p): Add a context argument.  Update the call
10768         to mips_symbolic_constant_p.
10769         (mips_small_data_pattern_1): Make DATA the containing mem.
10770         Update the call to mips_rewrite_small_data_p.
10771         (mips_rewrite_small_data_1): Likewise.
10772         (mips_use_anchors_for_symbol_p): Update the call to
10773         mips_symbolic_constant_p.
10774         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10775         (splittable_symbolic_operand): Likewise.
10776         (move_operand): Likewise.
10777         (absolute_symbolic_operand): Likewise.
10778         (got_disp_operand): Likewise.
10779         (got_page_ofst_operand): Likewise.
10780
10781 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
10782
10783         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
10784         (SYMBOL_ABSOLUTE): ...this.
10785         (SYMBOL_SMALL_DATA): Rename to...
10786         (SYMBOL_GP_RELATIVE): ...this.
10787         (SYMBOL_CONSTANT_POOL): Rename to...
10788         (SYMBOL_PC_RELATIVE): ...this.
10789         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
10790         (mips_symbolic_address_p, mips_symbol_insns, override_options)
10791         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
10792         after above changes.
10793         * config/mips/predicates.md (const_call_insn_operand): Likewise.
10794         (general_symbolic_operand): Rename to...
10795         (absolute_symbolic_operand): ...this.
10796         * config/mips/mips.md: Update after above changes.
10797
10798 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
10799             Revital Eres  <eres@il.ibm.com>
10800
10801         * ddg.c (print_ddg): Add dump information.
10802         * modulo-sched.c (print_node_sched_params): Add parameter and
10803         verbosity.
10804         (calculate_maxii): Remove function.
10805         (undo_generate_reg_moves): Likewise.
10806         (undo_permute_partial_schedule): Likewise.
10807         (kernel_number_of_cycles): Likewise.
10808         (MAXII_FACTOR): New definition to calculate the upper bound of II.
10809         (sms_schedule): Use it.  Remove profitability checks.
10810         (sms_schedule_by_order): Fix order of nodes within the cycle.
10811
10812 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10813
10814         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
10815         -profile option, add pie support.
10816         (ENDFILE_SPEC): New spec.
10817         * config/gnu.h (LIB_SPEC): Add -profile option.
10818
10819 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
10820
10821         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
10822         * config/gnu.h (LIB_SPEC): Likewise.
10823
10824 2007-08-07  Yaz Saito  <saito@google.com>
10825             Ian Lance Taylor  <iant@google.com>
10826
10827         * common.opt (finstrument-functions-exclude-function-list): New
10828         option.
10829         (finstrument-functions-exclude-file-list): New option.
10830         * opts.c (char_p): Define and DEF_VEC.
10831         (flag_instrument_functions_exclude_functions): New static
10832         variable.
10833         (flag_instrument_functions_exclude_files): New static variable.
10834         (add_instrument_functions_exclude_list): New static function.
10835         (flag_instrument_functions_exclude_p): New function.
10836         (common_handle_option): Handle new options.
10837         * flags.h (flag_instrument_functions_exclude_p): Declare.
10838         * gimplify.c (gimplify_function_tree): Call
10839         flag_instrument_functions_exclude_p.
10840         * doc/invoke.texi (Option Summary): Mention new options.
10841         (Code Gen Options): Document new options.
10842
10843 2007-08-07  Ian Lance Taylor  <iant@google.com>
10844
10845         PR rtl-optimization/32776
10846         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
10847         (resolve_use): Likewise.
10848         (decompose_multiword_subregs): Remove "changed" local variable.
10849
10850 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
10851
10852         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
10853         * configure: Regenerate.
10854         * config.in: Regenerate.
10855         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
10856         spec string.
10857
10858 2007-08-07  Ian Lance Taylor  <iant@google.com>
10859
10860         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
10861         note, just delete the insn.
10862
10863 2007-08-07  Andreas Schwab  <schwab@suse.de>
10864
10865         PR bootstrap/32973
10866         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
10867         struct definition.
10868
10869 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
10870
10871         * lower-subreg.c (resolve_subreg_use): Remove assertion.
10872         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
10873         (decompose_multiword_subregs): Use the functions above to decompose
10874         multiword shifts and zero-extends.
10875
10876 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10877
10878         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
10879         "assemble" descriptions which were swapped.
10880
10881 2007-08-06  Chao-ying Fu  <fu@mips.com>
10882
10883         * fixed-value.h: New file.
10884         * fixed-value.c: New file.
10885         * Makefile.in (OBJS-common): Add fixed-value.o.
10886         (fixed-value.o): New rule.
10887         (GTFILES): Add fixed-value.h.
10888         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
10889         to compare a.low and b.low.
10890         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
10891
10892 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10893             Daniel Jacobowitz  <dan@codesourcery.com>
10894
10895         PR target/31868
10896         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
10897         tmake_file.
10898         (x86_64-*-netbsd*): Likewise.
10899         (x86_64-*-linux*): Likewise.
10900         (x86_64-*-kfreebsd*-gnu): Likewise.
10901         (x86_64-*-knetbsd*-gnu): Likewise.
10902         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
10903
10904         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
10905
10906         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
10907         Add -fno-asynchronous-unwind-tables.
10908
10909         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
10910         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
10911         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
10912         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
10913         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
10914
10915 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10916
10917         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
10918         (TARGET_C_MODE_FOR_SUFFIX): New.
10919
10920 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10921
10922         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
10923
10924 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
10925
10926         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
10927
10928 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10929
10930         * config/i386/i386.md: Check TARGET_ macros and optimize_size
10931         before checking function returns in conditional expressions.
10932
10933 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
10934
10935         PR pch/13676
10936         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
10937
10938 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10939
10940         PR middle-end/32988
10941         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
10942         for INTEGRAL_TYPE_P.
10943
10944 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
10945
10946         * configure.ac: Remove --enable-checking=df from default settings.
10947         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
10948         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
10949         if the parameter is true.
10950         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
10951         DF_VERIFY_SCHEDULED flag is true.
10952         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
10953         (df_finish_pass): Adjust prototype.
10954         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
10955         true.
10956
10957         * see.c (pass_see): Add TODO_df_verify.
10958         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
10959         * global.c (rest_of_handle_global_alloc): Schedule verification
10960         after the pass.
10961         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
10962         before the pass.
10963         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
10964         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
10965         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
10966
10967         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
10968         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
10969         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
10970
10971 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
10972             Revital Eres <eres@il.ibm.com>
10973
10974         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
10975         flag.
10976         * ddg.c (create_ddg_dependence): Rename to...
10977         (create_ddg_dep_from_intra_loop_link): This.  Do not check
10978         for interloop edges.  Do not create anti dependence edge when
10979         a true dependence edge exists in the opposite direction and
10980         -fmodulo-sched-allow-regmoves is set.
10981         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
10982         (add_cross_iteration_register_deps): Create anti dependence edge
10983         when -fno-modulo-sched-allow-regmoves is set.
10984         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
10985
10986 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
10987
10988         * config/arm/arm.md (movsi): Add braces.
10989
10990 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10991
10992         PR middle-end/32780
10993         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
10994         operands for the folding of "A - (A & B)" into "~B & A"; cast them
10995         to type.
10996
10997 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
10998
10999         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
11000         state accessor functions.
11001         * cfgloopmanip.c (remove_path, create_preheaders,
11002         force_single_succ_latches, fix_loop_structure): Ditto.
11003         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11004         tree_duplicate_loop_to_header_edge): Ditto.
11005         * cfgloopanal.c (mark_irreducible_loops): Ditto.
11006         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
11007         Ditto.
11008         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
11009         cleanup_tree_cfg): Ditto.
11010         * tree-cfg.c (tree_merge_blocks): Ditto.
11011         * cfgloop.c (rescan_loop_exit, record_loop_exits,
11012         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
11013         loop_preheader_edge, single_exit): Ditto.
11014         (flow_loops_find): Do not clear loops->state.
11015         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
11016         loops_state_clear): New functions.
11017
11018 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11019
11020         PR middle-end/32399
11021         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
11022         when adding to the base and convert ELT to sizetype instead of type.
11023
11024 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11025
11026         PR middle-end/32304
11027         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
11028         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
11029
11030 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11031
11032         PR middle-end/32935
11033         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
11034          correct type the negate expression.
11035
11036 2007-08-03  Jan Hubicka  <jh@suse.cz>
11037
11038         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
11039         stack boundary.
11040
11041 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
11042
11043         * config/rs6000/rs6000.c (struct processor_cost): Change
11044         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
11045         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
11046         information.
11047         (rios1_costs, rios2_cost): Correct cache line size.
11048         (rs6000_override_options): Set l2-cache-size parameter.
11049
11050 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11051             Diego Novillo  <dnovillo@google.com>
11052
11053         PR 31521
11054         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
11055         if the range includes 0.
11056
11057 2007-08-03  Ben Elliston  <bje@au.ibm.com>
11058
11059         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
11060         mode to unspec expressions to silence a warning from the generator
11061         programs.
11062         
11063 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
11064
11065         * config/ia64/constraints.md ("U"): Make constraint vector only.
11066
11067 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11068
11069         PR middle-end/25446
11070         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
11071         always_inline attribute on the function decl.
11072
11073 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11074
11075         PR middle-end/25445
11076         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
11077         if we are compiling with -fPIC.
11078
11079 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
11080             Nigel Stephens  <nigel@mips.com>
11081
11082         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
11083         Define for MIPS32 and MIPS64.
11084
11085 2007-08-02  Nick Clifton  <nickc@redhat.com>
11086
11087         * config/host-hpux.c: Change copyright header to refer to version
11088         3 of the GNU General Public License and to point readers at the
11089         COPYING3 file and the FSF's license web page.
11090         * config/alpha/predicates.md, config/alpha/vms-ld.c,
11091         config/alpha/linux.h, config/alpha/alpha.opt,
11092         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
11093         config/alpha/vms-unwind.h, config/alpha/ev4.md,
11094         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
11095         config/alpha/alpha.h, config/alpha/sync.md,
11096         config/alpha/openbsd.h, config/alpha/alpha.md,
11097         config/alpha/alpha-modes.def, config/alpha/ev5.md,
11098         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
11099         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
11100         config/alpha/constraints.md, config/alpha/osf.h,
11101         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
11102         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
11103         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
11104         config/frv/frv-asm.h, config/frv/frv-protos.h,
11105         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
11106         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
11107         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
11108         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
11109         config/s390/s390.opt, config/s390/s390-modes.def,
11110         config/s390/fixdfdi.h, config/s390/constraints.md,
11111         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
11112         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
11113         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
11114         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
11115         config/m32c/prologue.md, config/m32c/m32c.abi,
11116         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
11117         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
11118         config/m32c/t-m32c, config/m32c/m32c-modes.def,
11119         config/m32c/jump.md, config/m32c/shift.md,
11120         config/m32c/m32c-protos.h, config/libgloss.h,
11121         config/spu/spu-protos.h, config/spu/predicates.md,
11122         config/spu/spu-builtins.h, config/spu/spu.c,
11123         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
11124         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
11125         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
11126         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
11127         config/sparc/hypersparc.md, config/sparc/predicates.md,
11128         config/sparc/linux.h, config/sparc/sp64-elf.h,
11129         config/sparc/supersparc.md, config/sparc/cypress.md,
11130         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
11131         config/sparc/niagara.md, config/sparc/sparc.md,
11132         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
11133         config/sparc/sparc.opt, config/sparc/sync.md,
11134         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
11135         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
11136         config/sparc/sparc.c, config/sparc/little-endian.opt,
11137         config/sparc/sysv4-only.h, config/sparc/sparc.h,
11138         config/sparc/linux64.h, config/sparc/freebsd.h,
11139         config/sparc/sol2.h, config/sparc/rtemself.h,
11140         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
11141         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
11142         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
11143         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
11144         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
11145         config/m32r/linux.h, config/m32r/constraints.md,
11146         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
11147         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
11148         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
11149         config/i386/i386.md, config/i386/netware-crt0.c,
11150         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
11151         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
11152         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
11153         config/i386/sol2.h, config/i386/constraints.md,
11154         config/i386/netware-libgcc.c, config/i386/sysv5.h,
11155         config/i386/predicates.md, config/i386/geode.md,
11156         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
11157         config/i386/freebsd64.h, config/i386/vxworksae.h,
11158         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
11159         config/i386/rtemself.h, config/i386/netbsd-elf.h,
11160         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
11161         config/i386/netware.h, config/i386/i386-modes.def,
11162         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
11163         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
11164         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
11165         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
11166         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
11167         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
11168         config/i386/xm-mingw32.h, config/i386/linux64.h,
11169         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
11170         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
11171         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
11172         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
11173         config/i386/cygwin2.c, config/i386/i386-protos.h,
11174         config/i386/sync.md, config/i386/openbsd.h,
11175         config/i386/host-mingw32.c, config/i386/i386-aout.h,
11176         config/i386/nto.h, config/i386/biarch64.h,
11177         config/i386/i386-coff.h, config/i386/freebsd.h,
11178         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
11179         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
11180         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
11181         config/darwin-protos.h, config/linux.opt, config/sol2.c,
11182         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
11183         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
11184         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
11185         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
11186         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
11187         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
11188         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
11189         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
11190         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
11191         config/sh/superh64.h, config/sh/rtemself.h,
11192         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
11193         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
11194         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
11195         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
11196         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
11197         config/avr/predicates.md, config/avr/constraints.md,
11198         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
11199         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
11200         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
11201         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
11202         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
11203         config/c4x/c4x-modes.def, config/c4x/rtems.h,
11204         config/c4x/predicates.md, config/c4x/c4x.h,
11205         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
11206         config/xtensa/predicates.md, config/xtensa/xtensa.c,
11207         config/xtensa/linux.h, config/xtensa/xtensa.h,
11208         config/xtensa/elf.h, config/xtensa/xtensa.md,
11209         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
11210         config/xtensa/xtensa-protos.h, config/dbx.h,
11211         config/stormy16/predicates.md, config/stormy16/stormy16.md,
11212         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
11213         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
11214         config/host-solaris.c, config/fr30/fr30.h,
11215         config/fr30/predicates.md, config/fr30/fr30-protos.h,
11216         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
11217         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
11218         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
11219         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
11220         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
11221         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
11222         config/host-linux.c, config/interix3.h, config/cris/cris.c,
11223         config/cris/predicates.md, config/cris/linux.h,
11224         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
11225         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
11226         config/cris/aout.opt, config/cris/cris-protos.h,
11227         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
11228         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11229         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
11230         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
11231         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
11232         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
11233         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
11234         config/chorus.h, config/mn10300/mn10300.c,
11235         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
11236         config/mn10300/mn10300.h, config/mn10300/linux.h,
11237         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
11238         config/mn10300/mn10300.md, config/ia64/predicates.md,
11239         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
11240         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
11241         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
11242         config/ia64/freebsd.h, config/ia64/ia64.md,
11243         config/ia64/ia64-modes.def, config/ia64/constraints.md,
11244         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
11245         config/gofast.h, config/rtems.h, config/sol2-10.h,
11246         config/m68k/predicates.md, config/m68k/m68k.md,
11247         config/m68k/linux.h, config/m68k/m68k-modes.def,
11248         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
11249         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
11250         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
11251         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
11252         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
11253         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
11254         config/m68k/constraints.md, config/m68k/rtemself.h,
11255         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
11256         config/m68k/uclinux.h, config/rs6000/power4.md,
11257         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
11258         config/rs6000/linux.h, config/rs6000/eabi.h,
11259         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
11260         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
11261         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
11262         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
11263         config/rs6000/windiss.h, config/rs6000/603.md,
11264         config/rs6000/aix41.h, config/rs6000/cell.md,
11265         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
11266         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
11267         config/rs6000/darwin.md, config/rs6000/darwin64.h,
11268         config/rs6000/default64.h, config/rs6000/7xx.md,
11269         config/rs6000/darwin.opt, config/rs6000/spe.md,
11270         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
11271         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
11272         config/rs6000/7450.md, config/rs6000/linux64.h,
11273         config/rs6000/constraints.md, config/rs6000/440.md,
11274         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
11275         config/rs6000/rs6000.c, config/rs6000/aix52.h,
11276         config/rs6000/rs6000.h, config/rs6000/power6.md,
11277         config/rs6000/predicates.md, config/rs6000/altivec.md,
11278         config/rs6000/aix64.opt, config/rs6000/rios1.md,
11279         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
11280         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
11281         config/rs6000/darwin7.h, config/rs6000/dfp.md,
11282         config/rs6000/linux64.opt, config/rs6000/sync.md,
11283         config/rs6000/vxworksae.h, config/rs6000/power5.md,
11284         config/rs6000/lynx.h, config/rs6000/biarch64.h,
11285         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
11286         config/rs6000/eabispe.h, config/rs6000/e500.h,
11287         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
11288         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
11289         config/rs6000/aix.h, config/rs6000/vxworks.h,
11290         config/rs6000/40x.md, config/rs6000/aix51.h,
11291         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
11292         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
11293         config/arc/arc.h, config/mcore/mcore-elf.h,
11294         config/mcore/mcore-protos.h, config/mcore/predicates.md,
11295         config/mcore/mcore.md, config/mcore/mcore.c,
11296         config/mcore/mcore.opt, config/mcore/mcore.h,
11297         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
11298         config/score/predicates.md, config/score/score-version.h,
11299         config/score/score-protos.h, config/score/misc.md,
11300         config/score/elf.h, config/score/score.c, config/score/mac.md,
11301         config/score/score7.md, config/score/score.h,
11302         config/score/score-conv.h, config/score/score-mdaux.c,
11303         config/score/score.md, config/score/score.opt,
11304         config/score/score-modes.def, config/score/score-mdaux.h,
11305         config/score/mul-div.S, config/arm/uclinux-elf.h,
11306         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
11307         config/arm/symbian.h, config/arm/linux-elf.h,
11308         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
11309         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
11310         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
11311         config/arm/strongarm-pe.h, config/arm/arm.h,
11312         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
11313         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
11314         config/arm/arm-modes.def, config/arm/linux-eabi.h,
11315         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
11316         config/arm/arm-cores.def, config/arm/arm-protos.h,
11317         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
11318         config/arm/wince-pe.h, config/arm/neon.md,
11319         config/arm/constraints.md, config/arm/neon.ml,
11320         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
11321         config/arm/arm.opt, config/arm/arm926ejs.md,
11322         config/arm/predicates.md, config/arm/iwmmxt.md,
11323         config/arm/arm_neon.h, config/arm/unknown-elf.h,
11324         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
11325         config/arm/neon-testgen.ml, config/arm/arm.md,
11326         config/arm/xscale-coff.h, config/arm/pe.c,
11327         config/arm/arm-generic.md, config/arm/pe.h,
11328         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
11329         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
11330         config/arm/strongarm-elf.h, config/arm/cirrus.md,
11331         config/arm/netbsd-elf.h, config/arm/vxworks.h,
11332         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
11333         config/pa/predicates.md, config/pa/pa64-hpux.h,
11334         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
11335         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
11336         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
11337         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
11338         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
11339         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
11340         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
11341         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
11342         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
11343         config/pa/pa64-regs.h, config/pa/pa-modes.def,
11344         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
11345         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
11346         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
11347         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
11348         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
11349         config/mips/linux64.h, config/mips/elforion.h,
11350         config/mips/constraints.md, config/mips/generic.md,
11351         config/mips/predicates.md, config/mips/4300.md,
11352         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
11353         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
11354         config/mips/5k.md, config/mips/vr4120-div.S,
11355         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
11356         config/mips/mips-protos.h, config/mips/6000.md,
11357         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
11358         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
11359         config/mips/mips-modes.def, config/mips/vr.h,
11360         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
11361         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
11362         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
11363         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
11364         config/vax/openbsd1.h, config/vax/netbsd.h,
11365         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
11366         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
11367         config/h8300/rtems.h, config/h8300/predicates.md,
11368         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
11369         config/h8300/h8300.md, config/h8300/h8300.opt,
11370         config/h8300/coff.h, config/h8300/h8300-protos.h,
11371         config/v850/v850.md, config/v850/predicates.md,
11372         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
11373         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
11374         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
11375         config/mmix/mmix.h, config/mmix/predicates.md,
11376         config/mmix/mmix-protos.h, config/mmix/mmix.md,
11377         config/mmix/mmix.c, config/mmix/mmix.opt,
11378         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
11379         config/bfin/rtems.h, config/bfin/bfin-modes.def,
11380         config/bfin/predicates.md, config/bfin/bfin-protos.h,
11381         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
11382         Likewise.
11383
11384 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
11385
11386         * emit-rtl.c (reset_used_decls): Rename to...
11387         (set_used_decls): ...this.  Set the used flag rather than clearing it.
11388         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
11389         DECL_RTLs rather than resetting them.
11390
11391 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
11392
11393         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
11394
11395 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11396
11397         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
11398         argument to find_reloads_address.
11399
11400 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
11401
11402         PR tree-optimization/32919
11403         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
11404         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
11405         (coalesce_ssa_name): Call it.
11406
11407 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
11408             David Ung  <davidu@mips.com>
11409
11410         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
11411         (__mips16_unorddf2, __mips16_floatunsidf): New.
11412         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
11413         above functions.
11414         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
11415
11416 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11417
11418         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
11419         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
11420         * tree.h (OMP_SECTIONS_CONTROL): New macro.
11421         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
11422         * omp-low.c (get_ws_args_for, determine_parallel_type,
11423         expand_omp_for_generic, expand_omp_for_static_nochunk,
11424         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
11425         Work with more precise CFG.
11426         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
11427         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
11428         OMP_CONTINUE.
11429         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
11430         * gimple-low.c (lower_stmt): Ditto.
11431         * tree-inline.c (estimate_num_insns_1): Ditto.
11432         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
11433         (OMP_SECTIONS_SWITCH): New.
11434         * tree-cfgcleanup.c (cleanup_omp_return): New.
11435         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
11436         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
11437         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
11438         (tree_redirect_edge_and_branch): Handle omp constructs.
11439
11440         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
11441         with three arguments.
11442
11443 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11444
11445         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
11446         in loop closed ssa.
11447
11448 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11449
11450         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
11451         the loop structures may need fixing.
11452         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
11453         New functions.
11454         (cleanup_tree_cfg_loop): Removed.
11455         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
11456         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
11457         instead of running cleanup_tree_cfg_loop.
11458         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
11459         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
11460         (tree_predictive_commoning): Declaration changed.
11461         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
11462
11463 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
11464
11465         * doc/invoke.texi (l1-cache-size): Update documentation.
11466         (l2-cache-size): Document.
11467         * params.h (L2_CACHE_SIZE): New macro.
11468         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
11469         that L1_CACHE_SIZE is in kB now.
11470         (L2_CACHE_SIZE_BYTES): New macro.
11471         (tree_ssa_prefetch_arrays): Show size in kB.
11472         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
11473         and l2_cache_size fields.
11474         * config/i386/driver-i386.c (describe_cache): Detect cache size
11475         in kB.
11476         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
11477         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
11478         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
11479         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
11480         (override_options): Set l1-cache-size and l2-cache-size to default
11481         values if not specified otherwise.
11482         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
11483         (PARAM_L2_CACHE_SIZE): New.
11484
11485 2007-08-01  Nigel Stephens  <nigel@mips.com>
11486             David Ung  <davidu@mips.com>
11487             Thiemo Seufer  <ths@mips.com>
11488             Chris Dearman  <chris@mips.com>
11489             Richard Sandiford  <richard@codesourcery.com>
11490
11491         * config.gcc (mips*-sde-elf*): New stanza.
11492         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
11493         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
11494         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
11495         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
11496         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
11497         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
11498         to tmake_file.
11499         * config/mips/sde.h: New file.
11500         * config/mips/t-libgcc-mips16: Likewise.
11501         * config/mips/t-sde: Likewise.
11502         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
11503         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
11504         _MIPS_FPSET and _MIPS_SZINT.
11505         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
11506         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
11507         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
11508         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
11509         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11510         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11511         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
11512         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
11513         _MIPS_SZPTR and _MIPS_FPSET.
11514         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
11515         architecture is specified.
11516         (MIPS_32BIT_OPTION_SPEC): New macro.
11517
11518 2007-07-31  Dan Hipschman  <dsh@google.com>
11519
11520         * gcc.c (end_going_arg): New function.
11521         (do_spec_2): Use it.
11522         (do_spec_1): Use it.
11523
11524 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11525
11526         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
11527         only if ENABLE_CHECKING is defined.
11528
11529 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
11530
11531         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
11532         df_ru_add_problem, df_ru_get_bb_info): Removed.
11533         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
11534         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
11535         df_ru_free_bb_info, df_ru_alloc,
11536         df_ru_bb_local_compute_process_def,
11537         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
11538         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
11539         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
11540         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
11541         df_ru_add_problem): Removed.
11542
11543 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11544
11545         PR target/32847
11546         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
11547         (casesi32p, casesi64p): Likewise.
11548         (casesi): Adjust for above.
11549
11550 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
11551
11552         * mode-switching.c (create_pre_exit): Don't search past calls.
11553
11554 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
11555
11556         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
11557
11558 2007-07-31  Revital Eres  <eres@il.ibm.com>
11559
11560         * ddg.c (add_deps_for_def): Rename to...
11561         (add_cross_iteration_register_deps): This.  Change implementation
11562         to use only reaching def and def-use chains to construct the
11563         inter loop dependencies.
11564         (add_deps_for_use): Remove function.
11565         (build_inter_loop_deps): Call add_cross_iteration_register_deps
11566         function to build the inter loop dependencies.
11567         * modulo-sched.c (sms_schedule): Build only
11568         reaching def and def-use chains for the propose of the ddg
11569         construction.
11570
11571 2007-07-31  Julian Brown  <julian@codesourcery.com>
11572
11573         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
11574         New define_insns. Use correct RTL.
11575         (vec_set<mode>): Write as expander.
11576
11577 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
11578
11579         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
11580         to an unallocated space.
11581
11582 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
11583
11584         * tree-data-ref.c
11585         (split_constant_offset): Enable split_constant_offset to extract
11586         constants from other statements.
11587         * tree-vect-transform.c
11588         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
11589         to a temp var. Force base_offset to be simple.
11590
11591 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
11592
11593         * df-scan.c (df_scan_verify): Remove artificial limit on
11594         the number of blocks for verification.
11595         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
11596         df_simulate_defs): Avoid unnecessary insn checking for defs.
11597
11598 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
11599
11600         * config/m68k/lb1sf68.asm (FUNC): New macro.
11601         (__mulsi3): Use it.
11602         (__udivsi3): Likewise.
11603         (__divsi3): Likewise.
11604         (__umodsi3): Likewise.
11605         (__modsi3): Likewise.
11606         (__subdf3): Likewise.
11607         (__adddf3): Likewise.
11608         (__muldf3): Likewise.
11609         (__divdf3): Likewise.
11610         (__negdf2): Likewise.
11611         (__cmpdf2): Likewise.
11612         (__subsf3): Likewise.
11613         (__addsf3): Likewise.
11614         (__mulsf3): Likewise.
11615         (__divsf3): Likewise.
11616         (__negsf2): Likewise.
11617         (__cmpsf2): Likewise.
11618         (__eqdf2): Likewise.
11619         (__nedf2): Likewise.
11620         (__gtdf2): Likewise.
11621         (__gedf2): Likewise.
11622         (__ltdf2): Likewise.
11623         (__ledf2): Likewise.
11624         (__eqsf2): Likewise.
11625         (__nesf2): Likewise.
11626         (__gtsf2): Likewise.
11627         (__gesf2): Likewise.
11628         (__ltsf2): Likewise.
11629         (__lesf2): Likewise.
11630
11631 2007-07-30  Ollie Wild  <aaw@google.com>
11632
11633         * c-ppoutput.c (print_lines_directives_only): New function.
11634         (scan_translation_unit_directives_only): New function.
11635         (preprocess_file): Add call to scan_translation_unit_directives_only.
11636         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
11637         (sanitize_cpp_opts): Add default flag_dump_macros setting for
11638         -fdirectives-only.  Add errors for -fdirectives-only conflict with
11639         -Wunused-macros and -traditional.
11640         (finish_options): Add builtin macro initialization for
11641         -fdirectives-only + -fpreprocessed.
11642         * c.opt (fdirectives-only): New.
11643         * doc/cppopts.texi (fdirectives-only): New.
11644
11645 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11646
11647         * alias.c (record_set, memory_modified_1): Constify.
11648         * bt-load.c (note_btr_set): Likewise.
11649         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
11650         * combine.c (set_nonzero_bits_and_sign_copies,
11651         expand_field_assignment, record_dead_and_set_regs_1,
11652         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
11653         likely_spilled_retval_1): Likewise.
11654         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
11655         frv_io_handle_set): Likewise.
11656         * config/mips/mips.c (mips_sim_record_set,
11657         vr4130_true_reg_dependence_p_1): Likewise.
11658         * config/mt/mt.c (insn_dependent_p_1): Likewise.
11659         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
11660         * config/sh/sh.c (flow_dependent_p_1): Likewise.
11661         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
11662         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
11663         * ddg.c (mark_mem_store): Likewise.
11664         * df-problems.c (df_urec_mark_reg_change): Likewise.
11665         * function.c (update_epilogue_consts): Likewise.
11666         * gcse.c (record_set_info, record_last_set_info,
11667         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
11668         reg_clear_last_set): Likewise.
11669         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
11670         Likewise.
11671         * jump.c (reversed_comparison_code_parts): Likewise.
11672         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
11673         reg_is_set): Likewise.
11674         * loop-iv.c (mark_altered): Likewise.
11675         * mode-switching.c (reg_becomes_live): Likewise.
11676         * optabs.c (no_conflict_move_test): Likewise.
11677         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
11678         Likewise.
11679         * postreload.c (reload_combine_note_store, move2add_note_store):
11680         Likewise.
11681         * regmove.c (flags_set_1): Likewise.
11682         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
11683         Likewise.
11684         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
11685         Likewise. 
11686         * resource.c (update_live_status): Likewise.
11687         * rtl.h (set_of, note_stores): Likewise.
11688         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
11689         note_stores, parms_set): Likewise.
11690         * sched-rgn.c (sets_likely_spilled_1): Likewise.
11691         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
11692         Likewise. 
11693         * var-tracking.c (count_stores, add_stores): Likewise.
11694
11695 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11696
11697         * alias.c (mems_in_disjoint_alias_sets_p,
11698         fixed_scalar_and_varying_struct_p, aliases_everything_p,
11699         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
11700         write_dependence_p, mems_in_disjoint_alias_sets_p,
11701         read_dependence, true_dependence, canon_true_dependence,
11702         anti_dependence, output_dependence): Constify.
11703         * combine.c (extended_count): Likewise.
11704         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
11705         * cselib.c (get_value_hash, references_value_p,
11706         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
11707         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
11708         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
11709         * function.c (contains, prologue_epilogue_contains,
11710         sibcall_epilogue_contains): Likewise. 
11711         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
11712         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
11713         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
11714         reg_or_subregno): Likewise.
11715         * recog.c (asm_noperands): Likewise.
11716         * reload1.c (function_invariant_p): Likewise.
11717         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
11718         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
11719         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
11720         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
11721         true_regnum, reg_or_subregno, condjump_in_parallel_p,
11722         extended_count, prologue_epilogue_contains,
11723         sibcall_epilogue_contains, function_invariant_p, true_dependence,
11724         canon_true_dependence, read_dependence, anti_dependence,
11725         output_dependence): Likewise.
11726         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
11727
11728 2007-07-30  Julian Brown  <julian@codesourcery.com>
11729
11730         * config/arm/neon.md (V_ext): New mode attribute.
11731         (neon_vget_lane<mode>): Replace with define_expand.
11732         (neon_vget_lane<mode>_sext_internal)
11733         (neon_vget_lane<mode>_zext_internal): New define_insns for double
11734         and quad precision vectors.
11735         (neon_vget_lanedi): Add bounds check. Remove dead comment.
11736         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
11737         have typeless 32-bit result.
11738
11739 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11740
11741         PR tree-opt/32527
11742         * tree-affine.h (aff_tree): The type of rest is sizetype for types
11743         of pointers.
11744         * tree-affine.c (aff_combination_scale): If type is a pointer type,
11745         use sizetype for rest.
11746         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
11747         (aff_combination_convert): Don't convert rest for pointer types.
11748
11749 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11750
11751         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
11752
11753         * tree-ssa-alias.c: Add alloc-pool.h.
11754         (init_alias_info): Free alias_bitmap_obstack.
11755         (delete_alias_info): Call delete_mem_ref_stats.
11756         (get_mem_sym_stats_for): Use alloc_pool.
11757         (init_mem_ref_stats): Do not delete mem_ref_stats here.
11758         (delete_mem_sym_stats): Removed.
11759         
11760 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
11761
11762         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
11763         functions cannot be represented as classical distance vectors.
11764
11765 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11766
11767         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
11768         * builtins.c (validate_arg, builtin_mathfn_code,
11769         validate_arglist): Likewise.
11770         * calls.c (call_expr_flags): Likewise.
11771         * combine.c (reg_nonzero_bits_for_combine,
11772         reg_num_sign_bit_copies_for_combine, get_last_value,
11773         reg_truncated_to_mode): Likewise.
11774         * emit-rtl.c (subreg_lowpart_p): Likewise.
11775         * expr.c (highest_pow2_factor_for_target,
11776         categorize_ctor_elements_1, categorize_ctor_elements,
11777         count_type_elements, contains_packed_reference,
11778         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
11779         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
11780         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
11781         native_encode_int, native_encode_real, native_encode_complex,
11782         native_encode_vector, native_encode_expr, native_interpret_int,
11783         native_interpret_real, native_interpret_complex,
11784         native_interpret_vector, native_interpret_expr): Likewise.
11785         * function.c (use_register_for_decl): Likewise.
11786         * gimplify.c (get_name): Likewise.
11787         * langhooks-def.h (lhd_return_null_const_tree): New.
11788         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
11789         * langhooks.c (lhd_return_null_const_tree): New.
11790         * langhooks.h (lang_get_callee_fndecl): Constify.
11791         * output.h (constructor_static_from_elts_p): Likewise.
11792         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
11793         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
11794         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
11795         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
11796         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
11797         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
11798         * rtlhooks-def.h (reg_nonzero_bits_general,
11799         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
11800         Likewise. 
11801         * rtlhooks.c (reg_num_sign_bit_copies_general,
11802         reg_nonzero_bits_general, reg_truncated_to_mode_general):
11803         Likewise. 
11804         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
11805         * stor-layout.c (mode_for_size_tree): Likewise.
11806         * tree-ssa-loop-im.c (memref_eq): Likewise.
11807         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
11808         * tree.c (contains_placeholder_p, type_list_equal,
11809         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
11810         Likewise. 
11811         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
11812         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
11813         contains_placeholder_p, contains_packed_reference,
11814         get_callee_fndecl, operand_equal_for_phi_arg_p,
11815         warn_if_unused_value, is_body_block, native_encode_expr,
11816         native_interpret_expr, fold_convertible_p, operand_equal_p,
11817         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
11818         validate_arglist, simple_cst_equal, type_list_equal,
11819         use_register_for_decl, call_expr_flags, get_name,
11820         highest_pow2_factor): Likewise.
11821         (const_call_expr_arg_iterator_d,
11822         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
11823         first_const_call_expr_arg, more_const_call_expr_args_p,
11824         FOR_EACH_CONST_CALL_EXPR_ARG): New.
11825         * varasm.c (constructor_static_from_elts_p): Constify.
11826
11827 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
11828
11829         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
11830         config/arm/neon-schedgen.ml, config/arm/neon.ml,
11831         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
11832         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
11833         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
11834         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
11835         spelling conventions.
11836         * doc/invoke.texi: Follow spelling conventions.
11837
11838 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
11839             Revital Eres  <eres@il.ibm.com>
11840
11841         * modulo-sched.c (sms_schedule): Avoid loops which includes
11842         auto-increment instructions.
11843
11844 2007-07-28  Richard Guenther  <rguenther@suse.de>
11845
11846         PR middle-end/32920
11847         * fold-const.c (fold_cond_expr_with_comparison): Convert
11848         operand zero of MIN/MAX_EXPR to correct type.
11849
11850 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11851
11852         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
11853         flags_from_decl_or_type): Constify.
11854         * gcc.c (do_spec_1): Likewise.
11855         * print-tree.c (dump_addr, print_node_brief): Likewise.
11856         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
11857         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
11858         tree_purge_all_dead_eh_edges): Likewise.
11859         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
11860         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
11861         Likewise. 
11862         * tree.c (expr_location, expr_has_location, expr_locus,
11863         expr_filename, expr_lineno, get_inner_array_type,
11864         fields_compatible_p): Likewise.
11865         * tree.h (get_inner_array_type, fields_compatible_p,
11866         expr_location, expr_has_location, expr_locus, expr_filename,
11867         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
11868         setjmp_call_p, alloca_call_p): Likewise.
11869
11870 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
11871
11872         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
11873         TV_FLOW_INSENSITIVE.
11874
11875         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
11876         TV_CALL_CLOBBER.
11877         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
11878         (compute_flow_insensitive_aliasing): Ditto for
11879         TV_FLOW_INSENSITIVE.    
11880
11881 2007-07-27  Jan Hubicka  <jh@suse.cz>
11882
11883         * config/i386/i386.c (register_move_cost): Remove accidentally
11884         comitted #if 0 block.
11885
11886         * attribs.c: Include hashtab.h
11887         (attribute_hash): New.
11888         (substring): New structure.
11889         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
11890         New function.
11891         (init_attributes): Initialize attribute hash.
11892         (decl_attributes): Use attribute hash.
11893         * Makefile.in (attribs.c): Depend on hashtab.h.
11894
11895 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
11896
11897         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
11898
11899 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
11900
11901         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
11902         __mips_dspr2 and __mips_dsp_rev macros.
11903         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
11904
11905 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
11906         
11907         * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
11908
11909 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
11910
11911         PR middle-end/32749
11912         
11913         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
11914         and the updating of the live and do_not_gen sets.
11915         (df_note_bb_compute): Added updating of live and do_not_gen sets
11916         for regular defs so that the case of clobber inside conditional
11917         call is processed correctly.
11918         
11919 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
11920
11921         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
11922         operands with compatible type.
11923
11924 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
11925
11926         * expr.h (store_bit_field): Don't return a value.
11927         * expmed.c (check_predicate_volatile_ok): New function.
11928         (store_bit_field_1): New function, extracted from store_bit_field.
11929         Take a fallback_p argument and return true if the operation succeeded.
11930         Only use store_fixed_bit_field if fallback_p.  Don't recompute
11931         mode_for_extraction; use op_mode instead.  Try forcing memories
11932         into registers if the insv expander fails.
11933         (store_bit_field): Use store_bit_field_1 with fallback_p true.
11934         Don't return a value.
11935         (convert_extracted_bit_field): New function, extracted from
11936         store_bit_field.
11937         (extract_bit_field_1): Likewise.  Take a fallback_p argument
11938         and return NULL if the operation succeeded.  Only use
11939         extract_fixed_bit_field if fallback_p.  Only calculate one
11940         extraction mode.  Combine code for extv and extzv.  Try forcing
11941         memories into registers if the ext(z)v expander fails.
11942         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
11943
11944 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
11945
11946         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
11947         into bitfields.
11948         (df_ref): Likewise.  Put regno with other integer fields.
11949
11950 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
11951
11952         * df.h (df_mw_hardreg): Remove "loc" field.
11953         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
11954         local variable.
11955         * df-problems.c (df_whole_mw_reg_unused_p): New function,
11956         split out from df_set_unused_notes_for_mw.  Return false for
11957         partial references.  Assert that mw_reg is a REG when returning true.
11958         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
11959         (df_whole_mw_reg_dead_p): New function, split out from
11960         df_set_dead_notes_for_mw.  Return false for partial references.
11961         Assert that mw_reg is a REG when returning true.
11962         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
11963         Remove redundant bitmap check.
11964
11965 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
11966
11967         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
11968         ($(T)crtend.o): Likwise.
11969         ($(T)crtbeginS.o): Likwise.
11970         ($(T)crtendS.o): Likwise.
11971         ($(T)crtfastmath.o): Likwise.
11972
11973 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
11974
11975         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
11976         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
11977         * basic-block.h (struct control_flow_graph): Added x_dom_computed
11978         and x_n_bbs_in_dom_tree fields.
11979
11980 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
11981
11982         PR tree-optimization/32087
11983         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
11984         Do not call scale_bbs_frequencies_int with prob of zero.
11985
11986 2007-07-26  Julian Brown  <julian@codesourcery.com>
11987
11988         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
11989         (neon_element_bits): Add prototypes.
11990         * config/arm/arm.c (bounds_check, neon_lane_bounds)
11991         (neon_const_bounds, neon_element_bits): New functions.
11992         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
11993         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
11994         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
11995         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
11996         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
11997         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
11998         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
11999         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
12000         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
12001         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
12002         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
12003         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
12004         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
12005
12006 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
12007
12008         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
12009         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
12010
12011 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
12012             Julian Brown  <julian@codesourcery.com>
12013
12014         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
12015         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
12016         * config/arm/cortex-a8.md: New.
12017         * config/arm/cortex-a8-neon.md: New.
12018         * config/arm/neon-schedgen.ml: New.
12019         * config/arm/neon.md (vqh_mnem): New.
12020         (neon_type): New.
12021         (Is_float_mode): New.
12022         (Scalar_mul_8_16): New.
12023         (Is_d_reg): New.
12024         (V_mode_nunits): New.
12025         (All instruction patterns): Annotate with neon_type attribute
12026         values.
12027         * config/arm/arm.md: Include cortex-a8.md.
12028         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
12029         values.
12030         Annotate instruction patterns accordingly.
12031         (generic_sched): Do not use generic scheduling for Cortex-A8.
12032         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
12033
12034 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
12035
12036         * fold-const.c (fold_read_from_constant_string): Use
12037         build_int_cst_type.
12038         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
12039
12040 2007-07-26  Nick Clifton  <nickc@redhat.com>
12041
12042         * tree-ssa-operands.h: Change copyright header to refer to version
12043         3 of the GNU General Public License and to point readers at the
12044         COPYING3 file and the FSF's license web page.
12045         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
12046         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
12047         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
12048         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
12049         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
12050         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
12051         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
12052         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
12053         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
12054         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
12055         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
12056         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
12057         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
12058         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
12059         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
12060         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
12061         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
12062         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
12063         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
12064         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
12065         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
12066         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
12067         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
12068         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
12069         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
12070         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
12071         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
12072         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
12073         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
12074         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
12075         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
12076         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
12077         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
12078         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
12079         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
12080         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
12081         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
12082         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
12083         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
12084         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
12085         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
12086         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
12087         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
12088         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
12089         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
12090         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
12091         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
12092         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
12093         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
12094         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
12095         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
12096         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
12097         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
12098         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
12099         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
12100         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
12101         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
12102         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
12103         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
12104         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
12105         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
12106         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
12107         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
12108         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
12109         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
12110         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
12111         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
12112         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
12113         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
12114         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
12115         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
12116         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
12117         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
12118         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
12119         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
12120         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
12121         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
12122         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
12123         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
12124         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
12125         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
12126         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
12127         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
12128         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
12129         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
12130         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
12131         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
12132         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
12133         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
12134         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
12135         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
12136         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
12137         vecprim.h, basic-block.h, tree-ssa-structalias.c,
12138         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
12139         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
12140         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
12141         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
12142         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
12143         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
12144         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
12145         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
12146         convert.c, convert.h, langhooks-def.h, reload1.c,
12147         tree-ssa-operands.c: Likewise.
12148
12149 2007-07-26  Jan Hubicka  <jh@suse.cz>
12150
12151         * tree-ssa-live.c: Include debug.h and flags.h.
12152         (mark_scope_block_unused): New function.
12153         (remove_unused_scope_block_p): New function.
12154         (remove_unused_locals): Remove unused blocks too.
12155
12156 2007-07-25  Ian Lance Taylor  <iant@google.com>
12157
12158         * combine.c (combine_max_regno): Remove.  Remove all uses.
12159         (struct reg_stat_struct): Rename from struct reg_stat.
12160         (reg_stat_type): Define, and declare VECs.
12161         (reg_stat): Change from pointer to VEC.  Change all uses.
12162         (combine_split_insns): New static function.
12163         (try_combine, find_split_point): Call it instead of split_insns.
12164
12165 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12166
12167         * cfghooks.c (split_block): Fix the information about loop latch.
12168
12169 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12170
12171         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
12172
12173 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12174
12175         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12176         Scan the new edge for loop exit info.
12177
12178 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
12179
12180         * config/darwin.c: Include debug.h.
12181
12182 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12183
12184         PR target/32218
12185         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
12186
12187 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
12188
12189         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
12190         (HARD_REGNO_MODE_OK): Ditto.
12191         (MODES_TIEABLE_P): Ditto.
12192         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
12193         (CLASS_MAX_NREGS): Ditto.
12194         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
12195         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
12196         (divdf3_internal_thr): Removed.
12197         * config/ia64/div.md: New file.
12198         * config/ia64/constraints.md: Add H constraint.
12199
12200 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12201
12202         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
12203         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
12204         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
12205         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
12206         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
12207         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
12208         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
12209         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
12210         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
12211         dump_sbitmap_file, debug_sbitmap, popcount_table,
12212         sbitmap_popcount): Constify.
12213         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
12214         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
12215         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
12216         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
12217         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
12218         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
12219         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
12220         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
12221         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
12222         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
12223         sbitmap_popcount, sbitmap_verify_popcount): Constify.
12224
12225 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12226
12227         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
12228         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
12229         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
12230         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
12231         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
12232         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
12233         bitmap_intersect_p, bitmap_intersect_compl_p,
12234         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12235         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
12236         Constify.
12237         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
12238         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
12239         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
12240         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
12241         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
12242         debug_bitmap, debug_bitmap_file, bitmap_print,
12243         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
12244         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
12245
12246 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
12247
12248         * config/darwin.c (darwin_override_options): Additional fix for
12249         debug info formats that don't support var tracking.
12250
12251 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12252
12253         * cselib.c (entry_and_rtx_equal_p): Constify.
12254         * gengtype.c (output_mangled_typename, write_types, write_local):
12255         Likewise.
12256         * gengtype.h (const_type_p): New.
12257         * see.c (eq_descriptor_extension, hash_descriptor_extension):
12258         Constify.
12259         * tlink.c (scan_linker_output): De-constify.
12260         * tree-ssa-loop-im.c (memref_eq): Constify.
12261         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
12262         (shared_bitmap_hash, shared_bitmap_eq): Constify.
12263
12264 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12265
12266         * c-common.c (fname_as_string, c_type_hash): Constify.
12267         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12268         * cgraph.c (edge_hash, edge_eq): Likewise.
12269         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
12270         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
12271         reg_attrs_htab_eq): Likewise.
12272         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
12273         Likewise.
12274         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
12275         const_decl_t, const_state_t, const_automata_list_el_t): New.
12276         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
12277         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
12278         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
12279         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
12280         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
12281         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
12282         compare_max_occ_cycle_nums, out_state_arcs_num,
12283         compare_transition_els_num, units_cmp, state_reservs_cmp):
12284         Constify.
12285         * genmodes.c (cmp_modes): Likewise.
12286         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
12287         * gimplify.c (compare_case_labels): Likewise.
12288         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
12289         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
12290         * matrix-reorg.c (mtt_info_hash): Likewise.
12291         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
12292         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
12293         (htab_hash_bucket, htab_hash_elem): Constify.
12294         * tree-browser.c (TB_parent_eq): Likewise.
12295         * tree-scalar-evolution.c (hash_scev_info): Likewise.
12296         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
12297         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
12298         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
12299         Constify.
12300         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
12301         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
12302         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
12303         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
12304         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
12305         New.
12306         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
12307         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
12308         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
12309         * tree-ssa-threadupdate.c (redirection_data_hash,
12310         redirection_data_eq): Likewise. 
12311         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
12312         * tree-ssa.c (var_ann_eq): Likewise.
12313         * tree-vrp.c (compare_case_labels): Likewise.
12314         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
12315         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
12316         tree_not_check_failed, tree_class_check_failed,
12317         tree_range_check_failed, tree_not_class_check_failed,
12318         omp_clause_check_failed, omp_clause_range_check_failed,
12319         tree_contains_struct_check_failed, tree_operand_check_failed):
12320         Likewise. 
12321         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
12322         tree_not_check_failed, tree_class_check_failed,
12323         tree_range_check_failed, tree_not_class_check_failed,
12324         tree_operand_check_failed, omp_clause_operand_check_failed,
12325         tree_operand_length): Likewise. 
12326         * var-tracking.c (const_variable): New.
12327         (variable_htab_hash, variable_htab_eq): Constify.
12328         * varasm.c (const_desc_hash): Likewise.
12329
12330 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12331
12332         * expr.c (handled_component_p): Constify.
12333         * fold-const.c (fit_double_type): Likewise.
12334         * real.h (real_value_from_int_cst): Likewise.
12335         * tree-flow-inline.h (gimple_in_ssa_p,
12336         gimple_aliases_computed_p, gimple_addressable_vars,
12337         gimple_call_clobbered_vars, gimple_referenced_vars,
12338         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
12339         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
12340         may_aliases, end_readonly_imm_use_p, has_zero_uses,
12341         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
12342         is_label_stmt, is_global_var, phi_ssa_name_p,
12343         factoring_name_p, is_call_clobbered, tree_common_ann,
12344         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
12345         unmodifiable_var_p, array_ref_contains_indirect_ref,
12346         ref_contains_array_ref, lookup_subvars_for_var,
12347         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
12348         gimple_mem_ref_stats): Likewise.
12349         * tree-flow.h (tree_common_ann, var_ann, function_ann,
12350         may_aliases, is_exec_stmt, is_label_stmt,
12351         ref_contains_array_ref, array_ref_contains_indirect_ref,
12352         var_can_have_subvars, overlap_subvar, is_call_clobbered,
12353         unmodifiable_var_p): Likewise.
12354         * tree-gimple.c (is_gimple_min_invariant): Likewise.
12355         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
12356         * tree.c (type_hash_list, attribute_hash_list, tree_size,
12357         cst_and_fits_in_hwi, real_value_from_int_cst,
12358         build_real_from_int_cst, integer_zerop, integer_onep,
12359         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
12360         tree_floor_log2, real_zerop, real_onep, real_twop,
12361         real_minus_onep, really_constant_p, purpose_member, chain_member,
12362         list_length, fields_length, int_size_in_bytes, bit_position,
12363         int_bit_position, byte_position, int_byte_position, expr_align,
12364         array_type_nelts, tree_node_structure,
12365         type_contains_placeholder_1, iterative_hash_pointer,
12366         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
12367         tree_map_base_eq, type_hash_list, type_hash_eq,
12368         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
12369         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
12370         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12371         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
12372         int_fits_type_p, get_containing_scope, decl_function_context,
12373         decl_type_context, omp_clause_operand_check_failed,
12374         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
12375         * tree.h (omp_clause_operand_check_failed, tree_size,
12376         build_real_from_int_cst, array_type_nelts, purpose_member,
12377         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
12378         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
12379         is_attribute_p, check_qualified_type, expr_align,
12380         int_size_in_bytes, bit_position, int_bit_position, byte_position,
12381         int_byte_position, list_length, fields_length, initializer_zerop,
12382         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
12383         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
12384         tree_node_structure, handled_component_p, get_containing_scope,
12385         decl_function_context, decl_type_context, real_zerop,
12386         type_num_arguments, fit_double_type, really_constant_p,
12387         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
12388         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
12389         real_twop, real_minus_onep, int_cst_value): Likewise.
12390
12391 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12392
12393         * cfglayout.c (insn_scope, insn_line): Constify.
12394         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
12395         const_double_htab_hash, const_double_htab_eq,
12396         mem_attrs_htab_hash): Likewise.
12397         * loop-iv.c (biv_eq): Likewise.
12398         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
12399         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
12400         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
12401         Likewise. 
12402         * rtl-error.c (location_for_asm, diagnostic_for_asm,
12403         error_for_asm, warning_for_asm, _fatal_insn,
12404         _fatal_insn_not_found): Likewise. 
12405         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
12406         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
12407         rtl_check_failed_type2, rtl_check_failed_code1,
12408         rtl_check_failed_code2, rtl_check_failed_code_mode,
12409         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
12410         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
12411         rtl_check_failed_type2, rtl_check_failed_code1,
12412         rtl_check_failed_code2, rtl_check_failed_code_mode,
12413         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
12414         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
12415         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
12416         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
12417         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
12418         rtx_unstable_p, get_integer_term, get_related_value,
12419         offset_within_block_p, reg_mentioned_p, count_occurrences,
12420         reg_referenced_p, reg_used_between_p, no_labels_between_p,
12421         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
12422         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
12423         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
12424         find_constant_src, find_reg_fusage, find_regno_fusage,
12425         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
12426         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
12427         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
12428         computed_jump_p, auto_inc_p, in_expr_list_p,
12429         remove_node_from_expr_list, loc_mentioned_in_p,
12430         label_is_jump_target_p, reversed_comparison_code_parts,
12431         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
12432         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
12433         print_inline_rtx): Likewise.
12434         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
12435         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
12436         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
12437         get_integer_term, get_related_value, offset_within_block_p,
12438         count_occurrences, reg_mentioned_p, no_labels_between_p,
12439         reg_used_between_p, reg_referenced_p, single_set_2,
12440         multiple_sets, set_noop_p, refers_to_regno_p,
12441         reg_overlap_mentioned_p, dead_or_set_p,
12442         covers_regno_no_parallel_p, covers_regno_p,
12443         dead_or_set_regno_p, find_reg_note, find_regno_note,
12444         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
12445         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
12446         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
12447         side_effects_p, may_trap_p_1, may_trap_p,
12448         may_trap_after_code_motion_p, may_trap_or_fault_p,
12449         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
12450         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
12451         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
12452         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
12453         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
12454         Likewise. 
12455         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
12456         warning_for_asm): Likewise.
12457         * tree.h (print_rtl): Likewise.
12458         * varasm.c (get_pool_mode): Likewise.
12459
12460 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12461
12462         * c-lex.c (c_lex_with_flags, lex_string): Constify.
12463         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
12464         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
12465         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
12466         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
12467         * ddg.c (compare_sccs): Likewise.
12468         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
12469         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
12470         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
12471         decimal_do_fix_trunc, decimal_real_to_integer,
12472         decimal_real_to_integer2, decimal_real_maxval): Likewise.
12473         * dse.c (const_group_info_t): New.
12474         (invariant_group_base_eq, invariant_group_base_hash): Constify.
12475         * dwarf2out.c (const_dw_die_ref): New.
12476         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
12477         * tree-browser.c (TB_parent_eq): Likewise.
12478         * unwind-dw2-fde.c (__register_frame_info_bases,
12479         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
12480         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
12481         Likewise.
12482         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
12483         * unwind-dw2.c (uw_frame_state_for): Likewise.
12484         * value-prof.c (histogram_hash, histogram_eq): Likewise.
12485         * value-prof.h (const_histogram_value): New.
12486
12487 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
12488
12489         * config/mips/mips.c (machine_function): Add
12490         initialized_mips16_gp_pseudo_p.
12491         (mips16_gp_pseudo_reg): Do not emit the initialization of
12492         mips16_gp_pseudo_rtx when being called from the gimple cost-
12493         calculation routines; emit it on the first use outside those
12494         routines.
12495
12496 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12497
12498         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
12499         New.
12500         
12501         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
12502         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
12503         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
12504         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
12505         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
12506         Preserve const-ness of parameters through use of __typeof(),
12507         also constify and tidy.
12508         
12509         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
12510         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
12511         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
12512         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
12513         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
12514         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
12515         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
12516         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
12517         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
12518
12519 2007-07-25  Julian Brown  <julian@codesourcery.com>
12520             Mark Shinwell  <shinwell@codesourcery.com>
12521
12522         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
12523         (alpha_mangle_type): This.
12524         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12525         (TARGET_MANGLE_TYPE): Define this instead.
12526         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
12527         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
12528         (arm_init_neon_builtins): Fix comment.
12529         (arm_mangle_map_entry): New.
12530         (arm_mangle_map): New.
12531         (arm_mangle_type): New.
12532         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
12533         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
12534         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12535         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12536         (TARGET_MANGLE_TYPE): Define this instead.
12537         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
12538         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
12539         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
12540         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12541         (TARGET_MANGLE_TYPE): Define this instead.
12542         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
12543         to...
12544         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
12545         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12546         (TARGET_MANGLE_TYPE): Define this instead.
12547         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
12548         (s390_mangle_type): This.
12549         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12550         (TARGET_MANGLE_TYPE): Define this instead.
12551         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
12552         (sparc_mangle_type): This.
12553         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
12554         (TARGET_MANGLE_TYPE): Define this instead.
12555         * cp/mangle.c (write_type): Call mangle_type target hook on all
12556         types before mangling.  Use original type, not main variant, as
12557         argument.
12558         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
12559         (TARGET_MANGLE_TYPE): This.
12560         * target.h (gcc_target): Rename mangle_fundamental_type to
12561         mangle_type.
12562         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
12563         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
12564
12565 2007-07-25  Julian Brown  <julian@codesourcery.com>
12566             Paul Brook  <paul@codesourcery.com>
12567             Joseph Myers  <joseph@codesourcery.com>
12568             Mark Shinwell  <shinwell@codesourcery.com>
12569
12570         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
12571         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
12572         (with_fpu): Allow --with-fpu=neon.
12573         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12574         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
12575         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
12576         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
12577         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
12578         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
12579         (neon_emit_pair_result_insn, neon_disambiguate_copy)
12580         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
12581         (output_move_neon): Add prototypes.
12582         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
12583         (all_fpus): Add FPUTYPE_NEON.
12584         (fp_model_for_fpu): Add NEON field.
12585         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
12586         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
12587         in registers.
12588         (arm_legitimate_address_p): Don't support fancy addressing for NEON
12589         structure moves.
12590         (thumb2_legitimate_address_p): Likewise.
12591         (neon_valid_immediate): Recognize and prepare constants suitable for
12592         NEON instructions.
12593         (neon_immediate_valid_for_move): New function. Recognize and prepare
12594         immediates for NEON move instructions.
12595         (neon_immediate_valid_for_logic): New function. Recognize and
12596         prepare immediates for NEON logic instructions.
12597         (neon_output_logic_immediate): New function. Create asm string
12598         suitable for outputting immediate logic instructions.
12599         (neon_pairwise_reduce): New function. Implement reduction using
12600         pairwise operations.
12601         (neon_expand_vector_init): New function. Expand a (possibly
12602         non-constant) vector initialization.
12603         (neon_vector_mem_operand): New function. Memory operands supported
12604         for quad-word loads/stores to/from ARM or NEON registers. Don't
12605         allow base+offset addressing for core regs.
12606         (neon_struct_mem_operand): New function. Valid mems for NEON
12607         structure moves.
12608         (coproc_secondary_reload_class): Enable NEON registers to be loaded
12609         from neon_vector_mem_operand addresses without a secondary register.
12610         (add_minipool_forward_ref): Handle >8-byte minipool entries.
12611         (add_minipool_backward_ref): Likewise.
12612         (dump_minipool): Likewise.
12613         (push_minipool_fix): Likewise.
12614         (output_move_quad): New function. Output quad-word moves, loads and
12615         stores using ARM registers.
12616         (output_move_vfp): Add support for vectors in VFP (NEON) D
12617         registers.
12618         (output_move_neon): Output a NEON load/store to/from a quadword
12619         register.
12620         (arm_print_operand): Implement new codes:
12621         - 'c' for unadorned integers (without a # sign).
12622         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
12623         mode.
12624         - 'e', 'f' for the low and high D parts of a NEON Q register.
12625         - 'q' outputs a NEON Q register.
12626         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
12627         - 'T' prints NEON opcode features from a coded bitmask.
12628         - 'F' is similar to T, but signed/unsigned codes both print as
12629         'i'.
12630         - 't' is similar to T, but 'u' is printed instead of 'p'.
12631         - 'O' prints 'r' if NEON instruction should perform rounding (as
12632         specified by bitmask), else prints nothing.
12633         - '#' is a punctuation character to stop operand numbers from
12634         running together with following digits in the assembler
12635         strings for instructions (when using mode attributes).
12636         (arm_assemble_integer): Handle extra NEON vector modes. Permute
12637         constant vectors in big-endian mode, where necessary.
12638         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
12639         Handle EI, OI, CI, XI modes.
12640         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
12641         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
12642         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
12643         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
12644         (neon_builtin_type_bits): Add enumeration, one bit for each vector
12645         type.
12646         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
12647         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
12648         to turn v8qi, etc. into bits defined above.
12649         (neon_itype): New enumeration. Classifications of NEON builtins.
12650         (neon_builtin_datum): Define struct. Contains information about
12651         a single builtin (with multiple modes).
12652         (CF): Define helper macro for...
12653         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
12654         modes.
12655         (neon_builtin_data): New array. Define information about builtins
12656         for use during initialization/expansion.
12657         (arm_init_neon_builtins): New function.
12658         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
12659         true.
12660         (neon_builtin_compare): New function.
12661         (locate_neon_builtin_icode): New function. Find an insn code for a
12662         builtin given a function code for that builtin. Also return type of
12663         builtin (NEON_BINOP, NEON_UNOP etc.).
12664         (builtin_arg): New enumeration. Types of arguments for builtins.
12665         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
12666         Takes a variable argument list of builtin_arg types, terminated by
12667         NEON_ARG_STOP.
12668         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
12669         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
12670         (neon_emit_pair_result_insn): New function. Support returning pairs
12671         of vectors via a pointer.
12672         (neon_disambiguate_copy): New function. Set up operands for a
12673         multi-word copy such that registers do not get clobbered.
12674         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
12675         ARM_BUILTIN_NEON_BASE.
12676         (arm_file_start): Set float-abi attribute for NEON.
12677         (arm_vector_mode_supported_p): Enable NEON vector modes.
12678         (arm_mangle_map_entry): New.
12679         (arm_mangle_map): New.
12680         (arm_mangle_vector_type): New.
12681         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
12682         when appropriate.
12683         (TARGET_NEON): New macro. Target supports NEON.
12684         (fputype): Add FPUTYPE_NEON.
12685         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
12686         for vectorization based on command-line arg.
12687         (NEON_REGNO_OK_FOR_NREGS): Define.
12688         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
12689         (VALID_NEON_STRUCT_MODE): Define.
12690         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
12691         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
12692         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
12693         (consttable_16): Add pattern for outputting 16-byte minipool
12694         entries.
12695         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
12696         vec-common.md).
12697         (vec-common.md, neon.md): Include md files.
12698         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
12699         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
12700         (memory_constraint "Ut", "Un", "Us"): Define.
12701         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
12702         (MMX_char): New mode attribute.
12703         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
12704         (*add<mode>3_iwmmxt): New insn pattern.
12705         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
12706         (*sub<mode>3_iwmmxt): New insn pattern.
12707         (mulv4hi3): Rename to...
12708         (*mulv4hi3_iwmmxt): This.
12709         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
12710         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
12711         (uminv4hi3, uminv2si3): Remove. Replace with...
12712         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
12713         (*umin<mode>3_iwmmxt): These.
12714         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
12715         (ashr<mode>3_iwmmxt): This new pattern.
12716         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
12717         (lshr<mode>3_iwmmxt): This new pattern.
12718         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
12719         (ashl<mode>3_iwmmxt): This new pattern.
12720         * config/arm/neon-docgen.ml: New file. Generate documentation for
12721         intrinsics.
12722         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
12723         * config/arm/arm_neon.h: New (autogenerated).
12724         * config/arm/neon-testgen.ml: New file. Generate NEON tests
12725         automatically.
12726         * config/arm/neon.md: New file. Define NEON instructions.
12727         * config/arm/neon.ml: New file. Abstract description of NEON
12728         instructions, used to generate arm_neon.h header, documentation and
12729         tests.
12730         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
12731         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
12732         support.
12733         * doc/extend.texi (ARM Built-in Functions): Rename and remove
12734         extraneous comma.
12735         (ARM NEON Intrinsics): New subsection.
12736         * doc/arm-neon-intrinsics.texi: New (autogenerated).
12737
12738 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
12739
12740         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
12741         prototype.
12742
12743 2007-07-24  Jan Hubicka  <jh@suse.cz>
12744
12745         * regclass.c (move_table): New type.
12746         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
12747         (init_move_cost): Break out from ...
12748         (init_reg_sets_1): ... here; simplify computation of
12749         have_regs-of_mode and contains_reg_of_mode.
12750         (record_reg_classes): Unswitch internal loops.
12751         (copy_cost): Trigger lazy initialization of move cost
12752         (record_address_regs): Likewise.
12753
12754 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
12755
12756         * config/darwin.c (darwin_override_options): Don't force on
12757         flag_var_tracking_uninit when no debug info is requested.
12758
12759 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
12760
12761         * cfgloop.c (init_loops_structure): New function.
12762         (flow_loops_find): Create root of the loop tree unconditionally.
12763
12764 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
12765
12766         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
12767
12768 2007-07-24  Jan Hubicka  <jh@suse.cz>
12769
12770         * caller-save.c: Include ggc.h, gt-caller-save.h
12771         (reg_save_code, reg_restore_code): Rename to ...
12772         (cached_reg_save_code, cached_reg_restore_code): ... those.
12773         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
12774         (reg_save_code, reg_restore_code): New functions.
12775         (init_caller_save): Do not intialize
12776         reg_save_code/reg_restore_code tables.
12777         * Makefile.in: (gt-caller-save.h): New.
12778
12779 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12780
12781         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
12782         with the mode of the original operand instead of
12783         integer_one_node.
12784
12785 2007-07-23  Jan Hubicka  <jH@suse.cz>
12786
12787         * i386.c (ix86_secondary_memory_needed): Break out to...
12788         (inline_secondary_memory_needed): ... here.
12789         (ix86_memory_move_cost): Break out to ...
12790         (inline_memory_move_cost): ... here; add support for IN value of 2 for
12791         maximum of input and output; fix handling of Q_REGS on 64bit.
12792         (ix86_secondary_memory_needed): Microoptimize.
12793
12794 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
12795
12796         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
12797         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
12798         stmts_from_loop, known_dependences_p, build_rdg): New.
12799         * tree-data-ref.h: Depends on graphds.h.
12800         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
12801         (build_rdg): Declared.
12802         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
12803
12804 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
12805
12806         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
12807         ccp_min_invariant.
12808
12809 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
12810             Jakub Jelinek  <jakub@redhat.com>
12811
12812         PR middle-end/PR28690
12813         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
12814         EQ compares.
12815         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
12816         and MEM_POINTER operands over REG and MEM operands.
12817         (swap_commutative_operands_p): Change return value to bool.
12818         * rtl.h: Update the corresponding prototype.
12819         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
12820         instead of gen_rtx_PLUS.
12821         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
12822         value to bool.  Change function arguments to rtx's and update code
12823         to match.
12824         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
12825         calls to match the new declaration.
12826         * simplify-rtx.c (simplify_associative_operation): Don't
12827         reorder simplify_binary_operation arguments.
12828
12829 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12830
12831         * config/mips/mips.c (override_options): Use mips_costs to derive
12832         the default branch cost.
12833         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
12834         than mips_costs.
12835         * config/mips/mips.opt (mbranch-cost=): New option.
12836         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
12837
12838 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12839
12840         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
12841         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
12842         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
12843         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
12844
12845 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
12846
12847         * config/mips/constraints.md (ks): New constraint.
12848         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
12849         (*add<mode>3_mips16): ...here.
12850
12851 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
12852
12853         * optabs.h (enum optab_index): Add new OTI_signbit.
12854         (signbit_optab): Define corresponding macro.
12855         (enum insn_code signbit_optab[]): Remove array.
12856         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
12857         (expand_copysign_absneg): If back end provides signbit insn, use it
12858         instead of bit operations on floating point argument.
12859         * builtins.c (enum insn_code signbit_optab[]): Remove array.
12860         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
12861         for availability of signbit insn.
12862
12863         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
12864         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
12865         SSE mode is not active.
12866         (isinf<mode>2): Disable for mfpmath=sse,387.
12867
12868 2007-07-22  Ben Elliston  <bje@au.ibm.com>
12869
12870         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
12871         `class' parameter.
12872         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
12873
12874 2007-07-20  Richard Guenther  <rguenther@suse.de>
12875
12876         * tree-cfg.c (verify_expr): COND_EXPRs can have any
12877         integral typed condition.
12878         * tree-ssa.c (useless_type_conversion_p): Do not preserve
12879         booleanness.  Only preserve conversions from a non-base
12880         type to a base type, not in general between types with
12881         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
12882         * tree.def (COND_EXPR): Document that the condition
12883         can be of any integral type.
12884
12885 2007-07-20  Nigel Stephens  <nigel@mips.com>
12886             Richard Sandiford  <richard@codesourcery.com>
12887
12888         * config/mips/mips.h (mips_dwarf_regno): Declare.
12889         (DBX_REGISTER_NUMBER): Remove redundant brackets.
12890         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
12891         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
12892         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
12893         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12894         (REG_CLASS_NAMES): Update accordingly.
12895         * config/mips/mips.c (mips_dwarf_regno): New array.
12896         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
12897         (mips_subword): Remove special handling for accumulator registers.
12898         (override_options): Initiailize mips_dwarf_regno.  Remove use
12899         of ACC_HI_REG_P.
12900         (mips_swap_registers): New function.
12901         (mips_conditional_register_usage): Swap accumulator registers
12902         around if TARGET_LITTLE_ENDIAN.
12903         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
12904         * config/mips/constraints.md (h, l): Use the endianness to choose
12905         between MD0_REG and MD1_REG.
12906         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
12907         alternative-dependent template.
12908
12909 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
12910
12911         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
12912         no_new_pseudos.
12913
12914 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
12915
12916         * function.c (thread_prologue_and_epilogue_insns): Fix exit
12917         predecessor fallthru flags.
12918
12919 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
12920
12921         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
12922         of compare to the same type.
12923         * cfgloopmanip.c (add_loop): Update information about loop exits.
12924         (loop_version): Remove the innermost loop requirement.
12925         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
12926         to sizetype for pointers.
12927
12928 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12929
12930         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
12931         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
12932         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
12933
12934         * config/dfp-bit.c: Empty for TFmode conversions.
12935
12936 2007-07-18  Caroline Tice  <ctice@apple.com>
12937         
12938         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
12939         and handle them correctly; check that src is not NULL before
12940         trying to use it.
12941         (find_src_set_src): Likewise.
12942         
12943 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
12944         
12945         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
12946         (struct alignment_context, init_alignment_context): New.
12947         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
12948         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
12949         (XCHAL_HAVE_S32C1I): Likewise.
12950         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
12951         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
12952         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
12953         (ATOMIC, HQI): New macros.
12954         (memory_barrier, *memory_barrier): New.
12955         (sync_lock_releasesi): New.
12956         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
12957         (sync_lock_test_and_set<mode>): New.
12958         (sync_<atomic><mode>): New.
12959         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
12960         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
12961         (xtensa_expand_atomic): New.
12962         
12963 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12964
12965         PR target/30652
12966
12967         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
12968         transformation for builtin ISNORMAL.
12969         (expand_builtin): Handle BUILT_IN_ISNORMAL.
12970         * builtins.def (BUILT_IN_ISNORMAL): New.
12971         * doc/extend.texi: Document isnormal.
12972
12973 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12974
12975         PR target/30652
12976
12977         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
12978         optabs infrastructure.  Provide generic implementation for
12979         FINITE/ISFINITE.
12980         (expand_builtin): Handle FINITE/ISFINITE.
12981         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
12982         (fold_builtin_1): Likewise.
12983
12984         * builtins.def (BUILT_IN_ISFINITE): New.
12985
12986         * doc/extend.texi: Document isfinite.
12987
12988 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12989
12990         PR target/30652
12991         PR middle-end/20558
12992
12993         * builtins.c (expand_builtin_interclass_mathfn): Provide a
12994         generic fallback for isinf.
12995         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
12996         calculation code ...
12997         * real.c (get_max_float): ... to here.
12998         * real.h (get_max_float): New.
12999
13000 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13001
13002         PR middle-end/32668
13003
13004         * builtin-attrs.def (ATTR_TYPEGENERIC,
13005         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
13006
13007         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
13008         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
13009         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
13010         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
13011
13012         * c-common.c (handle_type_generic_attribute): New.
13013         (c_common_attribute_table): Add "type generic".
13014
13015         * c-typeck.c (convert_arguments): Handle "type generic" functions.
13016
13017 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
13018
13019         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
13020         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
13021         properly.
13022
13023 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13024
13025         PR target/32808
13026         * config/cris/cris.c (cris_print_index): Don't use XEXP before
13027         checking that the operand is an expression.
13028
13029 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
13030             Danny Smith  <dannysmith@users.sourceforge.net>
13031
13032         PR/other 30335
13033         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
13034         file mapping object in local namespace if Windows version later
13035         than NT4
13036
13037 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13038
13039         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
13040         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
13041         arm_cannot_force_const_mem.
13042         (arm_cannot_force_const_mem): New function.
13043         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
13044         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
13045         of arm_tls_referenced_p.
13046         * config/arm/arm.md (movsi): Split out-of-section constants when
13047         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
13048         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
13049
13050 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13051
13052         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
13053
13054 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13055
13056         * config/mips/mips.md (*extendqihi2): Convert the destination
13057         to SImode.
13058
13059 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13060
13061         * config/pa/fptr.c: Update license header.
13062         * config/pa/milli64.S: Likewise.
13063
13064 2007-07-17  Nick Clifton  <nickc@redhat.com>
13065
13066         * COPYING_v3: New file.  Contains version 3 of the GNU General
13067         Public License.
13068         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
13069         Lesser General Public License.
13070         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
13071         the GNU General Public License.
13072
13073 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
13074
13075         PR rtl-optimization/32773
13076         * cfglayout.c (force_one_exit_fallthru): New function.
13077         (cfg_layout_finalize): Use it.
13078
13079 2007-07-16  Richard Guenther  <rguenther@suse.de>
13080             Uros Bizjak  <ubizjak@gmail.com>
13081
13082         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
13083         before forcing it to gimple operand.
13084
13085 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13086             David Ung  <davidu@mips.com>
13087
13088         * config/mips/mips.h (TUNE_24K): Define.
13089         (TUNE_MACC_CHAINS): Add TUNE_24K.
13090         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
13091         imadd.
13092         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
13093         (r74k_int_madd): .. this new reservation.
13094         (define_bypass): Fixed bypasses for r74k_int_madd to use
13095         mips_linked_madd_p.
13096         * config/mips/24k.md (define_bypass): Define new
13097         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
13098
13099 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13100             Nigel Stephens  <nigel@mips.com>
13101
13102         * config/mips/mips.md: Include 20kc.md.
13103         * config/mips/20kc.md: New file.
13104         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
13105         (mips_adjust_cost): Tweak for 20Kc.
13106         (mips_issue_rate): Likewise.
13107         * config/mips/mips.h (TUNE_20KC): Define.
13108
13109 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
13110
13111         * config/rs6000/rs6000.c (struct processor_cost): Add
13112         cache_line_size, l1_cache_lines, and simultaneous_prefetches
13113         fields.
13114         (*_cost): Add cache information.
13115         (rs6000_override_options): Set cache parameters.
13116
13117 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13118
13119         PR bootstrap/3456
13120         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
13121         * doc/install.texi (mips-sgi-irix6): pthread support works now.
13122
13123 2007-07-16  Paul Brook  <paul@codesourcery.com>
13124
13125         PR target/32753
13126         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
13127         (cirrus_thumb2_movsi_insn): Ditto.
13128
13129 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
13130
13131         * config/rs6000/darwin-fallback.c (interpret_libc): Change
13132         CR2_REGNO to R_CR2.
13133
13134 2007-07-15  Andrew Haley  <aph@redhat.com>
13135
13136         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
13137         before looking in the context.
13138
13139 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13140
13141         PR middle-end/32398
13142         PR middle-end/32769
13143         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
13144         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
13145         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
13146         (pa_output_function_prologue): Use rp_saved and
13147         current_function_is_leaf to generate .CALLINFO statement.
13148         (hppa_expand_prologue): Set rp_saved.
13149         (hppa_expand_epilogue): Use rp_saved.
13150         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
13151         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
13152
13153 2007-07-14  Dirk Mueller  <dmueller@suse.de>
13154
13155         * omega.c (coalesce): Fix memory leak on early exit.
13156         * matrix-reorg.c (check_allocation_function): Likewise.
13157         * tree-vect-transform.c (vect_get_new_vect_var): free result
13158         of concat().
13159         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
13160         pass pointer to edge vector
13161         (partition_hot_cold_basic_blocks): Fix memory leak.
13162         * collect2.c (prefix_from_string): Free temporary storage.
13163         * reload1.c (fixup_abnormal_edges): Free sbitmap.
13164
13165 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
13166
13167         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
13168         (DO_GLOBAL_DTORS_BODY): Likewise.
13169
13170 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
13171             Nigel Stephens  <nigel@mips.com>
13172
13173         * config/mips/mips.c (mips_classify_symbol): Don't return
13174         SYMBOL_SMALL_DATA for constant pool addresses if
13175         TARGET_EMBEDDED_DATA is true.
13176
13177 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
13178
13179         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
13180         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
13181         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
13182         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
13183         __builtin_ia32_storehps, __builtin_ia32_storelps,
13184         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
13185         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
13186         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
13187         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
13188         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
13189         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
13190         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
13191         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
13192         using def_builtin_const.
13193
13194 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
13195
13196         PR tree-optimization/32705
13197         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
13198         (simplify_binary_expression): Use SSA_VAL consistently.
13199
13200 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
13201
13202         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
13203         (SPEFSCR_REGNO): Delete definition.
13204         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
13205         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13206         * config/rs6000/rs6000.h: Do not define *_REGNO.
13207         LINK_REGISTER_REGNUM -> LR_REGNO.
13208         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13209         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
13210         COUNT_REGISTER_REGNUM -> CTR_REGNO.
13211         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
13212         R_VRSAVE, R_VSCR. Use them.
13213         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
13214         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
13215         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
13216         * config/rs6000/aix.h: Define R_LR.  Use it.
13217         
13218 2007-07-13  Caroline Tice  <ctice@apple.com>
13219         
13220         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
13221         flag_var_tracking is explicitly turned off (i.e. when variable
13222         tracking is not feasible); otherwise, turn flag_var_tracking on when
13223         flag_var_tracking_uninit is on.
13224         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
13225         note definitions, to allow recording of initialization status in the
13226         notes.
13227         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
13228         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
13229         determine if two note locations are equal.
13230         (output_loc_list): Don't output list entries whose start & end labels
13231         are the same.
13232         (reg_loc_descriptor): Add parameter for initialization status; pass it
13233         to other loc descriptor functions.
13234         (one_reg_loc_descriptor): Add parameter for initialization status;
13235         check its value and add DW_OP_GNU_uninit to returned loc descr if
13236         appropriate.
13237         (multiple_reg_loc_descriptor): Add parameter for initialization
13238         status;
13239         pass init status argument to other loc descriptor functions; check
13240         value of intialization parameter and add DW_OP_GNU_uninit to returned
13241         loc descr if appropriate.
13242         (based_loc_descr): Add parameter for initialization status; add new
13243         variable for return value; check value of initialization parameter and
13244         add DW_OP_GNU_uninit to returned loc descr if appropriate.
13245         (concatn_mem_loc_descriptor): Add parameter for initialization status;
13246         pass init status argument to other loc descriptor functions; check
13247         value of intialization parameter and add DW_OP_GNU_uninit to returned
13248         loc descr if appropriate.
13249         (mem_loc_descriptor): Likewise.
13250         (concat_loc_descriptor): Likewise.
13251         (concatn_loc_descriptor): Likewise.
13252         (loc_descriptor): Add parameter for initialization status; pass it as
13253         argument to other loc descriptor function calls.
13254         (loc_descriptor_from_tree_1): Add appropriate initialization status
13255         to loc descriptor function calls.
13256         (add_location_or_const_value_attribute): Get initialization status
13257         from VAR_LOCATION note; add initialization status to loc descriptor
13258         function calls.
13259         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
13260         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
13261         status is uninitialized, add "[uninint]" to output.
13262         * common.opt (fvar-tracking-uninit): New option, similar to
13263         fvar-tracking, to turn on tracking of uninitialized variables; creates
13264         a new global flag, flag_var_tracking_uninit.
13265         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
13266         (enum var_init_status): New type, for var initialization status field.
13267         * var-tracking.c (struct location_chain_def): Two new fields, init,
13268         for initialization status, and set_src for the assignment value expr.
13269         (unshare_variable): New parameter for initialization status;
13270         initialize new init and set_src fields.
13271         (var_reg_set): New parameters for initialization status and value;
13272         pass them to set_variable_part.
13273         (var_mem_set): Likewise.
13274         (get_init_value): New function.
13275         (var_reg_delete_and_set): New initialization status & value
13276         parameters; add call to get_init_value if status is unknown; pass new
13277         parameters to clobber_variable_part and var_reg_set.
13278         (var_mem_delete_and_set): Likewise.
13279         (var_reg_delete): Pass null set_src value to clobber_variable_part.
13280         (var_mem_delete): Likewise.
13281         (variable_union): Pass status to unshare_variable; initialize new init
13282         and set_src fields. If flag_var_tracking_uninit is not set, force
13283         status to initialized.
13284         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
13285         used later to get the set_src value.
13286         (find_src_status): New function.
13287         (find_src_set_src): New function.
13288         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
13289         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
13290         MO_SET, get set_src value and pass it to var_reg_delete_and_set
13291         and var_mem_delete_and_set.
13292         (dump_variable): Print out "[uninit]" if appropriate.
13293         (set_variable_part): Add new initialization and set_src parameters;
13294         pass status to unshare_variable; set node->init and node- >set_src
13295         fields and modify slot in hash table appropriately; save the init and
13296         set_src values if appropriate and assign to the new node.
13297         (clobber_variable_part): New set_src parameter; if two nodes have
13298         same variable and same location but different set_src (assignment)
13299         values, clobber old node.
13300         (delete_variable_part): Pass init status to unshare_variable.
13301         (emit_note_insn_var_location): Add initialized var; assign var's init
13302         status to new 'initialized'; pass new init status field to calls to
13303         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
13304         status to initialized.
13305         (emit_notes_in_bb): Pass initialization status to calls to
13306         var_reg_set, var_mem_set, var_reg_delete_and_set and
13307         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
13308         var_reg_delete_and_set and var_mem_delete_and_set; call
13309         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
13310         make up for change in add_stores.
13311         (vt_add_function_parameters): Add status to calls to
13312         set_variable_part.
13313         * config/darwin.c (darwin_override_options): Turn on uninitialized
13314         tracking automatically, if var_tracking is on and the system is
13315         10.5 or higher.
13316         
13317 2007-07-13  Sa Liu  <saliu@de.ibm.com>
13318
13319         * config.gcc: Add options for arch and tune on SPU.
13320         * config/spu/predicates.md: Add constant operands 0 and 1.
13321         * config/spu/spu-builtins.def: Add builtins for double precision 
13322         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
13323         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
13324         spu_testsv.
13325         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
13326         a CELLEDP target.
13327         * config/spu/spu-protos.h: Add new function prototypes. 
13328         * config/spu/spu.c (spu_override_options): Check options -march and
13329         -mtune.
13330         (spu_comp_icode): Add comparison code for DFmode and vector mode.
13331         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
13332         mode comparison.
13333         (spu_const_from_int): New.  Create a vector constant from 4 ints.
13334         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
13335         (spu_emit_vector_compare): New.  Emit vector compare.
13336         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
13337         * config/spu/spu.h: Add options -march and -mtune.  Define processor
13338         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
13339         CANONICALIZE_COMPARISON.
13340         * config/spu/spu.md: Add new insns for double precision compare
13341         and double precision vector compare.  Add vcond and smax/smin patterns
13342         to enable DFmode vector conditional expression.
13343         * config/spu/spu.opt: Add options -march and -mtune.
13344         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
13345         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
13346         both CELL and CELLEDP targets: spu_testsv.
13347         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
13348         values.
13349
13350 2007-07-13  Richard Guenther  <rguenther@suse.de>
13351
13352         PR tree-optimization/32721
13353         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
13354         TREE_THIS_VOLATILE on the folded reference.
13355         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
13356         if the array reference has TREE_THIS_VOLATILE set.
13357
13358 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
13359
13360         PR other/32188
13361         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
13362
13363 2007-07-13  Andreas Schwab  <schwab@suse.de>
13364
13365         * gengtype-lex.l: Allow declarations to be indented.
13366
13367 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13368
13369         * ginclude/tgmath.h: New.
13370         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
13371         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
13372         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
13373         * configure: Regenerate.
13374
13375 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13376
13377         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
13378         correct index when setting register save state for xd
13379         registers.
13380
13381 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13382
13383         * config/sh/sh.c (mark_use): Remove.
13384
13385 2007-07-12  Paul Brook  <paul@codesourcery.com>
13386
13387         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
13388         reg does not overlap return value.
13389
13390 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
13391
13392         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
13393         (set_expression_vuses): Ditto.
13394         (init_pre): Initialize expression_vuses.
13395
13396 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13397
13398         * config/i386/sse.md (storentdf, storentsf): New.
13399
13400 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
13401
13402         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
13403         FUNCTION_DECL.
13404         * tree.c (build_decl_stat): Move code from here...
13405         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
13406         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
13407         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
13408         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
13409         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
13410         FUNCTION_BOUNDARY.
13411
13412 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13413             Devang Patel  <dpatel@apple.com>
13414
13415         PR tree-optimization/25413
13416         * targhooks.c (default_builtin_vector_alignment_reachable): New.
13417         * targhooks.h (default_builtin_vector_alignment_reachable): New.
13418         * tree.h (contains_packed_reference): New.
13419         * expr.c (contains_packed_reference): New.
13420         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
13421         (vect_enhance_data_refs_alignment): Call
13422         vector_alignment_reachable_p.
13423         * target.h (vector_alignment_reachable): New builtin.
13424         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
13425         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
13426         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
13427
13428 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
13429
13430         * target.h (builtin_vectorization_cost): Add new target builtin.
13431         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
13432         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
13433         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
13434         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
13435         uninitialized variables.
13436         * tree-vect-transform.c (cost_for_stmt): New function.
13437         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
13438         using cost 1 for all scalar stmts. Be less conservative when
13439         estimating the number of prologue/epulogue iterations. Call
13440         targetm.vectorize.builtin_vectorization_cost. Return
13441         min_profitable_iters-1.
13442         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
13443         initialization cost instead of TARG_VEC_STMT_COST. Use
13444         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
13445         epilogue code. Fix epilogue cost computation.
13446         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
13447         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
13448         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
13449         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
13450         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
13451         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
13452
13453 2007-07-12  Richard Guenther  <rguenther@suse.de>
13454
13455         * gimplify.c (gimplify_conversion): Make sure that the result
13456         from maybe_fold_offset_to_reference is trivially convertible
13457         to the desired type before doing the simplification.
13458         (gimplify_expr): Likewise.
13459         * fold-const.c (fold_binary): Use the correct types for
13460         building the simplified expression.
13461
13462 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
13463
13464         PR rtl-optimization/32729
13465         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
13466         that fallthru to exit.
13467
13468 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13469
13470         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
13471         (symDTPOFF2reg): Likewise.
13472
13473 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
13474
13475         PR tree-optimization/32663
13476         
13477         * tree.h (VALUE_HANDLE_VUSES): Remove.
13478         (struct tree_value_handle): Remove vuses.
13479
13480         * tree-vn.c (create_value_handle_for_expr): Don't set
13481         VALUE_HANDLE_VUSES. 
13482
13483         * tree-ssa-pre.c (expression_vuses): New.
13484         (alloc_expression_id): Set up expression_vuses.
13485         (get_expression_vuses): New.
13486         (set_expression_vuses): Ditto.
13487         (clear_expression_ids): Modify for expression_vuses.
13488         (phi_translate_1): Ditto.
13489         (phi_translate_set): Ditto.
13490         (value_dies_in_block_x): Ditto
13491         (valid_in_sets): Ditto.
13492         (add_to_sets): Ditto.
13493         (find_existing_value_expr): Ditto.
13494         (create_value_handle_for_expr): Ditto.
13495         (make_values_for_stmt): Ditto.
13496         (vuse_equiv): Remove.
13497
13498 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
13499
13500         * Makefile.in (mostlyclean): Remove object files.
13501
13502 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13503
13504         * toplev.c (no_new_pseudos): Deleted.
13505         * rtl.h (no_new_pseudos): Deleted.
13506         * tree-pass.h (pass_no_new_pseudos): Deleted. 
13507         * passes.c (pass_no_new_pseudos): Deleted.
13508         * final.c (rest_of_clean_state): Removed no_new_pseudos.
13509         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
13510         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
13511         reload_completed.
13512         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
13513         * rtlhooks.c (gen_lowpart_general): Ditto.
13514         * optabs.c (prepare_operand): Ditto.
13515         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
13516         no_new_pseudos.
13517         * modulo-sched.c (rest_of_handle_sms): Ditto.
13518         * see.c (rest_of_handle_see): Ditto.
13519         * ifcvt.c (if_convert): Ditto.
13520         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
13521         reload_completed.
13522         * init-regs.c (gate_initialize_regs): Deleted set of
13523         no_new_pseudos.
13524         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
13525         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
13526         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
13527         
13528 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13529
13530         PR target/32661
13531         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
13532         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
13533         (*vec_extractv2di_1_rex64): New insn pattern.
13534
13535 2007-07-11  David Daney  <ddaney@avtrex.com>
13536
13537         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
13538         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
13539         for SIGNAL_UNWIND_RETURN_COLUMN.
13540         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
13541         (DWARF_FRAME_REGNUM): Rewrite.
13542         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
13543
13544 2007-07-11  Nick Clifton  <nickc@redhat.com>
13545
13546         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
13547         delta and use gen_int_mode in place of GET_INT instead.
13548
13549 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
13550
13551         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
13552         and letter field.
13553
13554 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
13555
13556         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
13557         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
13558         types or not.
13559         * params.h (VERIFY_CANONICAL_TYPES): Remove.
13560         (USE_CANONICAL_TYPES): New.
13561         * doc/invoke.texi (verify-canonical-types): Remove.
13562         (use-canonical-types): Add.
13563
13564 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
13565
13566         * config/spu/spu.c (spu_optimization_options): Remove setting of
13567         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
13568         (spu_override_options): Move it here.
13569
13570 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
13571
13572         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
13573         * config/mips/mips.c (mips_cpu_info_table): Mention
13574         MIPS_ISA_LEVEL_SPEC in the comment.
13575
13576 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13577
13578         PR tree-optimization/32713
13579         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
13580
13581 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
13582
13583         PR middle-end/30482
13584         * c-opts.c (c_common_post_options): Do not change flag_complex_method
13585         conditional to flag_isoc99.
13586         (c_common_init_options): Do it here, unconditionally.
13587
13588 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
13589
13590         PR tree-optimization/32589
13591         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
13592         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
13593         * tree-ssa-propagate.c (valid_gimple_expression_p): New
13594         predicate, extracted from...
13595         (set_rhs): ...here.  Call it for the expression on entry.
13596         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
13597         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
13598         (simplify_binary_expression): Use valid_gimple_expression_p
13599         to validate the simplification.
13600         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
13601
13602 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
13603
13604         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
13605         DWARF2_DEBUG on 32 bit target too.
13606         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
13607
13608 2007-07-11  Nick Clifton  <nickc@redhat.com>
13609
13610         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
13611         version for 64-bit hosts.
13612
13613 2007-07-10  David Daney  <ddaney@avtrex.com>
13614
13615         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
13616         predicate.
13617         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
13618         call.
13619         * config/mips/mips.c (mips_expand_synci_loop): New function.
13620         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
13621         (UNSPEC_RDHWR): Same.
13622         (UNSPEC_SYNCI): Same.
13623         (UNSPEC_SYNC): Same.
13624         (clear_cache): New expand.
13625         (sync): New insn.
13626         (synci): Same.
13627         (rdhwr): Same.
13628         (clear_hazard): Same.
13629         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
13630         function.
13631         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
13632         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
13633
13634 2007-07-10  Ian Lance Taylor  <iant@google.com>
13635
13636         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
13637         no_new_pseudos.
13638
13639 2007-07-10  David Daney  <ddaney@avtrex.com>
13640
13641         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
13642         * builtins.c (expand_builtin___clear_cache): New function.
13643         (expand_builtin): Call expand_builtin___clear_cache for
13644         BUILT_IN_CLEAR_CACHE case.
13645         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
13646         * doc/md.texi (clear_cache): Document new instruction pattern.
13647         * testsuite/gcc.dg/builtins-64.c: New test.
13648
13649 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
13650
13651         * config/cris/cris.md ("movsi"): Fix typo in last change.
13652
13653 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
13654
13655         PR 32617
13656         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
13657         FUNCTION_DECLs.
13658         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
13659         * varasm.c (assemble_start_function): Honor DECL_ALIGN
13660         for FUNCTION_DECLs.  Don't use align_functions_log if
13661         DECL_USER_ALIGN.
13662         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
13663         even for FUNCTION_DECLs.
13664         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
13665         FUNCTION_DECLs.
13666         * tree.h (DECL_ALIGN): Update for new location of 'align'.
13667         (DECL_FUNCTION_CODE): Update for new location and name of
13668         'function_code'.
13669         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
13670         (struct tree_decl_common): Move 'align' and 'off_align' out
13671         of union, ensure they're still on a 32-bit boundary.  Remove
13672         other fields in union 'u1'.
13673         (struct tree_function_decl): Add field 'function_code' replacing
13674         'u1.f' in tree_decl_common.
13675         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
13676         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
13677         (Variable Attributes): Cross-reference 'aligned' attribute
13678         to Function Attributes.
13679         * flags.h (force_align_functions_log): Delete.
13680         * toplev.c (force_align_functions_log): Delete.
13681
13682 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
13683
13684         PR target/32708
13685         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
13686         (*vec_concatv2di_rex): New insn pattern.
13687
13688 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13689
13690         PR target/32538
13691         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
13692
13693 2007-07-10  Ian Lance Taylor  <iant@google.com>
13694
13695         Replace no_new_pseudos in backends.
13696         * rtl.h (can_create_pseudo_p): Define.
13697         * config/darwin.c (machopic_indirect_data_reference): Use
13698         can_create_pseudo_p () instead of no_new_pseudos.
13699         (machopic_indirect_data_reference): Likewise.
13700         (machopic_legitimize_pic_address): Likewise.
13701         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
13702         (alpha_emit_set_const_1): Likewise.
13703         (alpha_emit_set_const): Likewise.
13704         (alpha_emit_conditional_move): Likewise.
13705         (alpha_split_conditional_move): Likewise.
13706         * config/alpha/alpha.md (various splitters): Likewise.
13707         (movti): Likewise.
13708         * config/arm/arm.c (legitimize_pic_address): Likewise.
13709         (arm_load_pic_register): Likewise.
13710         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
13711         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
13712         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
13713         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
13714         * config/cris/cris.md (movsi): Likewise.
13715         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
13716         (symGOTOFF2reg_hilo): Likewise.
13717         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
13718         * config/h8300/h8300.md (insv, extzv): Likewise.
13719         * config/i386/i386.c (ix86_expand_move): Likewise.
13720         (ix86_expand_vector_move): Likewise.
13721         (ix86_prepare_fp_compare_args): Likewise.
13722         (ix86_expand_carry_flag_compare): Likewise.
13723         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
13724         (tls_dynamic_gnu2_combine_32): Likewise.
13725         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
13726         * config/ia64/ia64.c (ia64_expand_move): Likewise.
13727         (ia64_expand_movxf_movrf): Likewise.
13728         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
13729         (m32c_split_move): Likewise.
13730         (m32c_expand_insv): Likewise.
13731         * config/m68k/m68k.md (movsi): Likewise.
13732         * config/mips/mips.c (mips_force_temporary): Likewise.
13733         (mips_split_symbol): Likewise.
13734         (mips_move_integer): Likewise.
13735         (mips_legitimize_const_move): Likewise.
13736         * config/mn10300/mn10300.md (movsi): Likewise.
13737         * config/pa/pa.c (emit_move_sequence): Likewise.
13738         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
13739         (rs6000_got_register): Likewise.
13740         (create_TOC_reference): Likewise.
13741         (rs6000_machopic_legitimize_pic_address): Likewise.
13742         * config/rs6000/rs6000.md (add<mode>3): Likewise.
13743         (various splitters): Likewise.
13744         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
13745         (movsi_got): Likewise.
13746         * config/s390/s390.c (emit_symbolic_move): Likewise.
13747         * config/s390/s390.md (movhi, movqi): Likewise.
13748         (load_multiple, store_multiple): Likewise.
13749         * config/score/score.c (score_force_temporary): Likewise.
13750         * config/sh/sh.c (prepare_move_operands): Likewise.
13751         (prepare_cbranch_operands): Likewise.
13752         (emit_fpu_switch): Likewise.
13753         (fpscr_set_from_mem): Likewise.
13754         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
13755         (adddi3, subsi3): Likewise.
13756         (various splitters): Likewise.
13757         (divsi_inv_fp_combine): Likewise.
13758         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
13759         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
13760         (sne): Likewise.
13761         * config/sh/predicates.md (xor_operand): Likewise.
13762         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
13763         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
13764         (movdi_pic_label_ref): Likewise.
13765         * config/spu/spu.c (spu_split_immediate): Likewise.
13766         * config/alpha/alpha.md (various splitters): Remove test
13767         !no_new_pseudos || reload_completed.
13768         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
13769         no_new_pseudos.
13770         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
13771         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13772         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13773         * config/score/score.c (th_output_mi_thunk): Likewise.
13774         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
13775         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13776
13777 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
13778
13779         PR rtl-optimization/32664
13780         * mode-switching.c (create_pre_exit): Skip barrier insns.
13781
13782 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13783
13784         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
13785         force_gimple_operand_bsi.
13786         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
13787         rewrite_use_compare): Ditto.
13788         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
13789         Ditto.
13790         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
13791         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
13792         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
13793         * tree-profile.c (prepare_instrumented_value,
13794         tree_gen_interval_profiler, tree_gen_pow2_profiler,
13795         tree_gen_one_value_profiler, tree_gen_ic_profiler,
13796         tree_gen_ic_func_profiler, tree_gen_average_profiler,
13797         tree_gen_ior_profiler): Ditto.
13798         * tree-ssa-reassoc.c (negate_value): Ditto.
13799         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
13800         Use force_gimple_operand_bsi.
13801         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
13802         * tree-if-conv.c (add_to_dst_predicate_list,
13803         find_phi_replacement_condition): Ditto.
13804         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
13805         Call mark_symbols_for_renaming for new statements.
13806         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
13807
13808 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
13809
13810         * cfghooks.c (remove_edge): New function.
13811         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
13812         loop exit rescans.
13813         * cfghooks.h (remove_edge): Declare.
13814         * cfg.c (remove_edge): Renamed to remove_edge_raw.
13815         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
13816
13817 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
13818
13819         * optabs.h: Added declaration for signbit_optab.  
13820         * optabs.c: (init_optabs): Added initialization for signbit_optab.
13821         * genoptinit.c (optabs): Added entry for signbit insns.  
13822         * builtins.c (expand_builtin_signbit): Added code to use a signbit
13823         insn, if available.  
13824         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
13825         * config/s390/s390.md (signbit<mode>2): New expander.  
13826
13827 2007-07-09  Richard Guenther  <rguenther@suse.de>
13828
13829         PR middle-end/32698
13830         * fold-const.c (fold_plusminus_mult_expr): Move constant
13831         arguments second to allow decomposing.
13832
13833 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
13834
13835         Revert:
13836         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
13837         PR debug/23551
13838         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
13839         Disregard DECL_FROM_INLINE.
13840
13841 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13842
13843         PR target/27855
13844         * doc/invoke.texi: Add ftree-reassoc flag.
13845         * common.opt (ftree-reassoc): New flag.
13846         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
13847         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
13848
13849 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
13850
13851         PR tree-optimization/32681
13852         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
13853         saved in second_edge->aux when first_bb is a loop header.
13854
13855 2007-07-09  Jan HUbicka  <jh@suse.cz>
13856
13857         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
13858
13859 2007-07-09  Richard Guenther  <rguenther@suse.de>
13860
13861         * c-decl.c (start_function): Do not promote return type.
13862
13863 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
13864
13865         * function.c (do_warn_unused_parameter): Do not warn if
13866         TREE_NO_WARNING is set.
13867
13868 2007-07-08  Andreas Schwab  <schwab@suse.de>
13869
13870         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
13871
13872 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
13873
13874         Revert this patch:
13875         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
13876
13877         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
13878         apply to assembly language, too.
13879         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
13880
13881 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
13882
13883         Revert (note the sccvn portions are *not* reverted)
13884         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
13885
13886         Fix PR tree-optimization/23488
13887
13888         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
13889         handles.
13890         * tree-flow-inline.h (get_value_handle): Ditto.
13891         * tree-ssa-pre.c (decl_vh_map): New.
13892         (decl_node_pool): New.
13893         (can_value_number_operation): Support DECL_P.
13894         (can_PRE_operation): Ditto.
13895         (create_expression_by_pieces): Ditto.
13896         (find_existing_value_expr): Modify to differnetiate between
13897         addressing and top level.
13898         (create_value_handle_for_expr): Handle DECL's.
13899         (poolify_tree): Ditto.
13900         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
13901         (make_values_for_stmt): Handle DECL's properly.
13902         (init_pre): Reorg to not init useless things during FRE.
13903         (fini_pre): Ditto.
13904         * tree-flow.h: Include pointer-set.h.
13905         (decl_vh_map): Declare.
13906         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
13907
13908 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
13909
13910         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
13911         the constraint description.
13912         * doc/md.texi: Update documentation of AVR constraints.
13913
13914 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
13915
13916         * auto-inc-dec.c, config/arm/arm.c,
13917         config/m32r/constraints.md, config/mips/mips.md,
13918         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
13919         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
13920         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
13921         typos.  Follow spelling conventions.
13922         * doc/invoke.texi, doc/rtl.texi: Fix typos.
13923
13924         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
13925         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
13926
13927         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
13928         realloc_vuse): Remove.
13929         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
13930         and realloc_vuse.
13931
13932 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
13933
13934         Fix PR tree-optimization/23488
13935
13936         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
13937         (try_to_simplify): Ditto.
13938         (visit_use): Ditto.
13939         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
13940         handles.
13941         * tree-flow-inline.h (get_value_handle): Ditto.
13942         * tree-ssa-pre.c (decl_vh_map): New.
13943         (decl_node_pool): New.
13944         (can_value_number_operation): Support DECL_P.
13945         (can_PRE_operation): Ditto.
13946         (create_expression_by_pieces): Ditto.
13947         (find_existing_value_expr): Modify to differnetiate between
13948         addressing and top level.
13949         (create_value_handle_for_expr): Handle DECL's.
13950         (poolify_tree): Ditto.
13951         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
13952         (make_values_for_stmt): Handle DECL's properly.
13953         (init_pre): Reorg to not init useless things during FRE.
13954         (fini_pre): Ditto.
13955         * tree-flow.h: Include pointer-set.h.
13956         (decl_vh_map): Declare.
13957         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
13958                 
13959 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
13960
13961         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
13962         apply to assembly language, too.
13963         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
13964
13965 2007-07-06  Ian Lance Taylor  <iant@google.com>
13966             Zack Weinberg  <zackw@panix.com>
13967
13968         PR middle-end/32441
13969         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
13970
13971 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
13972
13973         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
13974         (prefetch): Likewise if "pref" would be used.
13975
13976 2007-07-06  Josh Conner  <jconner@apple.com>
13977
13978         PR middle-end/32602
13979         PR middle-end/32603
13980         * calls.c (store_one_arg): Handle arguments which are partially
13981         on the stack when detecting argument overlap.
13982
13983 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
13984
13985         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
13986         chosen during find_reloads.
13987
13988 2007-07-06  Richard Guenther  <rguenther@suse.de>
13989
13990         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
13991         TYPE_ARG_TYPES for verification of argument types.  Use
13992         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
13993         parameters as variable arguments.
13994
13995 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
13996
13997         * libgcc2.h (word_type): Type definition removed.
13998         (cmp_return_type, shift_count_type): Type definitions added.
13999         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14000         replaced with shift_count_type.
14001         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14002         cmp_return_type.
14003         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
14004         changed from word_type to Wtype.
14005         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14006         replaced with shift_count_type.
14007         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14008         cmp_return_type.
14009         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
14010         and libgcc_shift_count attribute added.
14011         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
14012         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
14013         (TARGET_INITIALIZER): New target hooks added.
14014         * targhooks.c (default_libgcc_cmp_return_mode,
14015         default_libgcc_shift_count_mode): Default implementations for the new
14016         target hooks added.
14017         * targhooks.h (default_libgcc_cmp_return_mode,
14018         default_libgcc_shift_count_mode): Function prototypes added.
14019         * target.h (struct gcc_target): Fields for the new target hooks added.
14020         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
14021         as library call.
14022         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
14023         library call.
14024
14025         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
14026         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
14027
14028         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
14029         s390_libgcc_shift_count_mode): Functions added.
14030         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
14031         Target hooks defined.
14032
14033 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14034
14035         * config/mips/mips.c (compute_frame_size): Restore the original
14036         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
14037         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
14038         Document why the difference is needed.
14039
14040 2007-07-06  Richard Guenther  <rguenther@suse.de>
14041
14042         * c-common.c (boolean_increment): Use correctly typed
14043         constant.
14044
14045 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14046
14047         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
14048         the topmost argument register is not also included in the save mask.
14049         (mips16e_collect_argument_save_p): Take a pointer to the argument
14050         register, rather than a pointer to the number of arguments.
14051         (mips16e_collect_argument_saves): Only include argument saves
14052         that aren't in the register mask.
14053
14054 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
14055
14056         PR rtl-optimization/32450
14057         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
14058         to ensure that instructions are not moved into the prologue when
14059         profiling is on.  Remove unused prologue_end variable.
14060         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
14061         as a scheduling barrier.
14062
14063 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
14064
14065         PR debug/23551
14066         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
14067         Disregard DECL_FROM_INLINE.
14068
14069 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
14070
14071         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
14072         IORing with a constant.
14073
14074 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
14075
14076         PR rtl-optimization/32475
14077         * df-scan.c (df_def_record_1): Add a use of the stack pointer
14078         for every definition of the stack pointer.
14079
14080 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
14081
14082         * arm.c (vfp3_const_double_index): Copy signed results of
14083         REAL_VALUE_TO_INT into unsigned vars.
14084
14085 2007-07-05  Richard Guenther  <rguenther@suse.de>
14086
14087         PR middle-end/32639
14088         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
14089         FUNCTION_TYPE.
14090         * tree-ssa.c (useless_type_conversion_p): Check canonical
14091         types early.
14092
14093 2007-07-05 Anatoly Sokolov <aesok@post.ru>
14094
14095         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
14096         zero_extendhisi2): Change to define_insn_and_split. 
14097         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
14098
14099 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
14100
14101         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
14102         pass_match_asm_constraints): New.
14103         * passes.c (init_optimization_passes): Add new pass.
14104         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
14105         * function.h (struct function): Add has_asm_statement bit.
14106         (current_function_has_asm_statement): New.
14107         * tree-pass.h (pass_match_asm_constraints): New.
14108
14109 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
14110
14111         * config/mips/mips.c (mips_file_start): Avoid declaration
14112         after code.
14113
14114 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14115
14116         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
14117
14118 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
14119
14120         * rtl.def (NOTE): Change print format string to print
14121         operand 5 as a note insn name.
14122
14123 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14124             David Ung  <davidu@mips.com>
14125
14126         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
14127         * doc/invoke.texi: (MIPS Options): Document them.
14128
14129 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14130             David Ung  <davidu@mips.com>
14131
14132         Add support for SmartMIPS ASE.
14133
14134         * optabs.c (expand_binop_directly): New, broken out from...
14135         (expand_binop): Here.  Make it try rotating in the other
14136         direction even when the second operand isn't constant.
14137         * config/mips/mips.md (*lwxs): New.
14138         * config/mips/mips.opt (msmartmips): New.
14139         * config/mips/mips.c (mips_lwxs_address_p): New.
14140         (mips_rtx_costs): Make it recognize scaled indexed addressing.
14141         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
14142         __mips_smartmips when compiling for TARGET_SMARTMIPS.
14143         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
14144         (ISA_HAS_LWXS): New.
14145         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
14146         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
14147         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
14148         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
14149         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
14150         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
14151         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
14152
14153 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14154
14155         * tree-vectorizer.c (new_loop_vec_info): Initialize
14156         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14157         * tree-vectorizer.h (_loop_vec_info): Added new filed
14158         min_profitable_iters.
14159         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
14160         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
14161         * tree-vect-analyze.c (vect_analyze_operations): Set
14162         LOOP_VINFO_COST_MODEL_MIN_ITERS.
14163         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
14164         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
14165         Fix calculation of peel_iters_prologue. Move consideration of epilogue
14166         and prologue cost to after they are computed.
14167         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
14168         TARG_VEC_STMT_COST.
14169         (vect_model_simple_cost): Takes additional argument dt. Consider cost
14170         of creating vectors from scalars according to dt.
14171         (vect_model_store_cost): Likewise.
14172         (vectorizable_call): Use dt array instead of scalar dt. Call
14173         vect_model_simple_cost with additional argument dt.
14174         (vectorizable_assignment): Likewise.
14175         (vectorizable_operation): Likewise.
14176         (vectorizable_type_demotion): Likewise.
14177         (vectorizable_type_promotion): Likewise.
14178         (vectorizable_store): Use dt array instead of scalar dt. Call
14179         vect_model_store_cost with additional argument dt.
14180         (vect_do_peeling_for_loop_bound): Don't call
14181         vect_estimate_min_profitable_iters. Instead, lookup
14182         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
14183         "may not be profitable".
14184
14185 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
14186
14187         PR testsuite/32014
14188         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
14189         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
14190         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
14191         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
14192
14193 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
14194
14195         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
14196         addressing modes cheaper.
14197
14198 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
14199
14200         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
14201         (dw_ranges_struct): Rename block_num to num.  Adjust.
14202         (dw_ranges_by_label_struct): New.
14203         (ranges_by_label, ranges_by_label_allocated,
14204         ranges_by_label_in_use): New variables.
14205         (add_ranges_num): Factored most of the code out of...
14206         (add_ranges): ... this one.  Rewrite in terms of the former.
14207         (add_ranges_by_labels): New.
14208         (output_ranges): Output by-label ranges.
14209         (dwarf2out_finish): Output range for multiple-section
14210         compile_unit.  Output standard DW_AT_low_pc in addition to
14211         unexpected DW_AT_entry_pc.
14212
14213 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
14214
14215         PR tree-optimization/32604
14216         PR tree-optimization/32606
14217
14218         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
14219         (compute_antic_safe): Removed.
14220         (ANTIC_SAFE_LOADS): Ditto.
14221         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
14222         (execute_pre): Don't call compute_antic_safe.
14223         (vuse_equiv): New function.
14224         (make_values_for_stmt): Use it
14225         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
14226         not always true.
14227
14228 2007-07-04 Anatoly Sokolov <aesok@post.ru>
14229
14230         PR target/31331
14231         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
14232         rather than a decl. 
14233         (avr_attribute_table): Make "naked" attribute apply to function types
14234         rather than to decls.
14235         (avr_handle_fntype_attribute): New function.
14236
14237 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
14238
14239         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
14240         after \.
14241
14242 2007-07-04  David Ung  <davidu@mips.com>
14243             Joseph Myers  <joseph@codesourcery.com>
14244
14245         * config/mips/mips.md (type): Add logical, signext and move.
14246         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
14247         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
14248         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
14249         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
14250         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
14251         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
14252         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
14253         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
14254         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
14255         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
14256         movv2sf_hardfloat_64bit): Use the new types.
14257         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
14258         *movdf_softfloat, *movdf_mips16): Use "multi".
14259         (extendqihi2): Replace with a define_expand.
14260         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
14261         Based on extend<SHORT:mode><GPR:mode>2 patterns.
14262         * config/mips/74k.md (r74k_int_logical): New reservation and
14263         bypasses.
14264         (r74k_int_arith): Remove "slt".
14265         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
14266         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
14267         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
14268         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
14269         reservations for "arith".
14270
14271 2007-07-04  Richard Guenther  <rguenther@suse.de>
14272
14273         * tree-ssa.c (useless_type_conversion_p): Add handling for
14274         scalar float and vector types.  Only call the types_compatible_p
14275         langhook for aggregate types as last resort.  Follow the
14276         rules.
14277
14278 2007-07-04  Richard Guenther  <rguenther@suse.de>
14279
14280         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
14281         the same as NOP_EXPR.
14282
14283 2007-07-04  Nick Clifton  <nickc@redhat.com>
14284
14285         * target.h (struct gcc_target): Add target_help field.
14286         * target-def.h (TARGET_HELP): New.
14287         (TARGET_INITIALIZER): Use TARGET_HELP.
14288         * opts.c (command_handle_option): Invoke target_help function, if
14289         defined, when the user has specified --target-help on the command
14290         line.
14291         * doc/invoke.texi: Mention that --target-help might print
14292         additional information.
14293         * doc/tm.texi: Document TARGET_HELP hook.
14294
14295         * arm.c (TARGET_HELP): Override default definition.
14296         (arm_target_help): New - display a wrapped list of cores and
14297         architectures supported.
14298
14299 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14300
14301         * config/v850/v850.c (expand_prologue): Make sure
14302         GEN_INT() argument is sign extended rather than zero extended.
14303         (expand_epilogue): Likewise.
14304         (output_move_double): Delete.
14305         * config/v850/v850-protos.h (output_move_double): Delete.
14306         * config/v850/v850.md (movdi): Delete.
14307         (*movdi_internal): Delete.
14308         (movdf): Delete.
14309         (*movdf_internal): Delete.
14310
14311 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14312
14313         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
14314         unless compiling RTP PIC.
14315
14316 2007-07-04  Richard Guenther  <rguenther@suse.de>
14317
14318         PR tree-optimization/32482
14319         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
14320         original ssa name if we didn't find a shift expression.
14321         Fix shift constant for bit zero test.
14322
14323 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14324
14325         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
14326
14327 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
14328
14329         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
14330         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
14331         * config/arm/vxworks.h (ASM_SPEC): Delete.
14332         (SUBTARGET_EXTRA_ASM_SPEC): Define.
14333
14334 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14335
14336         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
14337         (DDR_REVERSED_P): New.
14338         * tree-data-ref.c (initialize_data_dependence_relation,
14339         build_classic_dist_vector): Set DDR_REVERSED_P.
14340
14341 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
14342
14343         PR middle-end/32457
14344         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
14345         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14346         init_omega_for_ddr_1): Use non conservative number of iterations
14347         estimations.
14348         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
14349         (analyze_siv_subscript): Remove FIXME and reinitialization of 
14350         last_conflicts to chrec_dont_know.
14351         * testsuite/gfortran.dg/vect/pr32457.f90: New.
14352
14353 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14354
14355         * tree.c (maybe_canonicalize_argtypes): Improve description.
14356
14357 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
14358
14359         * tree.c (maybe_canonicalize_argtypes): New.
14360         (build_function_type): Set canonical type.
14361         (build_method_type_directly): Ditto.
14362         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
14363         properly.
14364
14365 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14366
14367         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
14368         like PLUS_EXPR.
14369         (rewrite_use_nonlinear_expr): Likewise.
14370
14371 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
14372
14373         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
14374
14375 2007-07-04  Ben Elliston  <bje@au.ibm.com>
14376
14377         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
14378         of this file.
14379
14380         * c-objc-common.c (c_types_compatible_p): Fix indentation.
14381
14382         * doc/tm.texi (Run-time Target): Capitalise "CPU".
14383         (Exception Handling): Likewise.
14384
14385 2007-07-03  Jan Hubicka  <jh@suse.cz>
14386
14387         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
14388
14389 2007-07-03  Eric Christopher  <echristo@apple.com>
14390
14391         * doc/cppopts.texi: Add conflicting option note to -dM.
14392         * doc/invoke.texi: Add note about possible conflicts with
14393         -E for -dCHARS and note that -dM will not produce
14394         any results if there is no machine dependent reorg.
14395         
14396 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14397
14398         * tree.h (DECL_ALIGN): Back out previous change.
14399
14400 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
14401
14402         * configure.ac: Test for .dtprelword support on MIPS.
14403         * configure, config.in: Regenerate.
14404         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
14405         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14406
14407 2007-07-03  Julian Brown  <julian@codesourcery.com>
14408
14409         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
14410         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
14411         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
14412         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
14413         capability.
14414         (all_fpus): Add FPUTYPE_VFP3.
14415         (fp_model_for_fpu): Add VFPv3 field.
14416         (arm_rtx_costs_1): Give cost to VFPv3 constants.
14417         (vfp3_const_double_index): New function. Return integer index of
14418         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
14419         isn't suitable.
14420         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
14421         and argument represents a valid RTX for a VFPv3 constant.
14422         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
14423         two instructions.
14424         (vfp_emit_fstmd): Similar, for fstmd.
14425         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
14426         constants, represented as integer indices.
14427         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
14428         VFP_REGNO_OK_FOR_DOUBLE macros.
14429         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
14430         (arm_file_start): Set float-abi attribute for VFPv3, and output
14431         correct ".fpu" assembler directive.
14432         (arm_dbx_register_numbering): Add FIXME.
14433         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
14434         (fputype): Add FPUTYPE_VFP3.
14435         (FIXED_REGISTERS): Add 32 registers for D16-D31.
14436         (CALL_USED_REGISTERS): Likewise.
14437         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
14438         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
14439         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
14440         (D7_VFP_REGNUM): New.
14441         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
14442         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
14443         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
14444         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
14445         (REG_ALLOC_ORDER): Adjust for VFPv3.
14446         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
14447         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
14448         VFP_LO_REGS, VFP_HI_REGS.
14449         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
14450         (IS_VFP_CLASS): Define macro.
14451         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
14452         IS_VFP_CLASS.
14453         (REGISTER_MOVE_COST): Likewise.
14454         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
14455         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
14456         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
14457         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
14458         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
14459         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
14460         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
14461         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
14462         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
14463         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
14464         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
14465         where appropriate for single-word registers.
14466         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
14467         As above. Fix type attributes.
14468         * config/arm/constraints.md (register_contraint "t"): Define.
14469         (register_constraint "w"): Change to D0-D15, or D0-D31 for
14470         VFPv3/NEON.
14471         (register_constraint "x"): Define.
14472         (constraint "Dv"): Define.
14473
14474 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
14475
14476         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
14477
14478 2007-07-03  Tom Tromey  <tromey@redhat.com>
14479
14480         * c-parser.c (objc_pq_context): Removed.
14481         (objc_need_raw_identifier): Likewise.
14482         (c_parser) <objc_pq_context>: New field.
14483         <objc_need_raw_identifier>: Likewise.
14484         (OBJC_NEED_RAW_IDENTIFIER): Removed.
14485         (c_lex_one_token): Update.
14486         (c_parser_objc_protocol_definition): Update.
14487         (c_parser_objc_method_definition): Update.
14488         (c_parser_objc_methodproto): Update.
14489         (c_parser_declspecs): Update.
14490
14491 2007-07-03  David Ung  <davidu@mips.com>
14492
14493         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
14494
14495 2007-07-03  David Ung  <davidu@mips.com>
14496             Richard Sandiford  <richard@codesourcery.com>
14497
14498         * doc/invoke.texi: Document -march=74kf3_2.
14499         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
14500         (TUNE_74K): Check for it.
14501         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
14502         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
14503         * config/mips/mips.md (cpu): Add 74kf3_2.
14504         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
14505         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
14506         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
14507         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
14508         74kf3_2 to the CPU list.
14509         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
14510         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
14511         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
14512         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
14513         (r74kf3_2_fxfer_from_c1): New insn reservations.
14514
14515 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
14516             David Ung  <davidu@mips.com>
14517
14518         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
14519         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
14520         and 74k[fx].  Document aliases for the new options.
14521         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
14522         (PROCESSOR_24KF2_1): ...this.
14523         (PROCESSOR_24KX): Rename to...
14524         (PROCESSOR_24KF1_1): ...this.
14525         (PROCESSOR_74KF): Rename to...
14526         (PROCESSOR_74KF2_1): ...this.
14527         (PROCESSOR_74KX): Rename to...
14528         (PROCESSOR_74KF1_1): ...this.
14529         (TUNE_74K): Update PROCESSOR_* names.
14530         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
14531         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
14532         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
14533         (mips_rtx_cost_data): Update processor names in comments.
14534         (mips_issue_rate): Update PROCESSOR_* names.
14535         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
14536         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
14537         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
14538         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
14539         Update cpu attribute names.
14540         (r24k_fpu_iss): Rename this reservation to...
14541         (r24kf2_1_fpu_iss): ...this and update all uses.
14542         (r24kx_fpu_iss): Rename this reservation to...
14543         (r24kf1_1_fpu_iss): ...this and update all uses.
14544         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
14545         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
14546         Update cpu attribute names.
14547
14548 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14549
14550         * config/m32r/constraints.md: New file.
14551         * config/m32r/m32r.c: Include tm-constrs.h.
14552         (small_data_operand): Use satisfies_constraint_* instead of macro.
14553         (addr24_operand, gen_compare): Likewise.
14554         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
14555         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
14556         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
14557         EXTRA_CONSTRAINT): Likewise.
14558         * config/m32r/m32r.md: Include constraints.md.
14559         (*movsi_insn): Use satisfies_constraint_* instead of macro.
14560         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
14561         * config/m32r/predicates.md (conditional_move_operand): Likewise.
14562         (two_insn_const_operand, int8_operand, uint16_operand,
14563         reg_or_int16_operand, reg_or_uint16_operand,
14564         reg_or_cmp_int16_operand, cmp_int16_operand,
14565         seth_add3_operand): Likewise.
14566
14567 2007-07-03  Eric Christopher  <echristo@gmail.com>
14568
14569         * libgcc2.h: Conditionally declare __bswapsi2 and
14570         __bswapdi2.
14571         
14572 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14573
14574         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
14575         defined.
14576
14577 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14578
14579         PR target/28307
14580         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
14581         (__gthrw_pragma): Provide default definition.
14582         (__gthrw2): Use it.
14583         * gthr-posix.c (__gthrw_pragma): Define.
14584
14585 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
14586
14587         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
14588         before declaring inequality.
14589
14590 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14591
14592         * combine.c (recog_for_combine): Log the success or failure of
14593           matching new insn patterns against the machine description in
14594           detailed dumps.
14595
14596 2007-07-03  Revital Eres  <eres@il.ibm.com>
14597
14598         * ddg.c (print_sccs): New function.
14599         (check_sccs): New function.
14600         (create_ddg_all_sccs): Use it.
14601         * ddg.h (print_sccs): Declare.
14602         * modulo-sched.c (sms_order_nodes): Call print_sccs.
14603
14604 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
14605
14606         * targhooks.h (default_mode_for_suffix): New function declaration.
14607         * targhooks.c (default_mode_for_suffix): New default target hook.
14608         * target.h (struct c): New structure in the targetm struct.
14609         (mode_for_suffix): New target hook as part of struct c.
14610         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
14611         default_mode_for_suffix.
14612         (TARGET_C): New define.
14613         * c-lex.c: Include "target.h".
14614         (interpret_float): Use targetm.c.mode_for_suffix to determine
14615         the mode for a given non-standard suffix.
14616         Makefile.in (c-lex.o): Depend on $(TARGET_H).
14617
14618         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
14619         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
14620
14621         * doc/extend.texi (Floating Types): New node.  Document __float80 and
14622         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
14623
14624 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14625
14626         PR target/32506
14627         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
14628         predicate instead of target_operand.
14629         (divsi3_i1_media, divsi3_media_2): Likewise.
14630
14631 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
14632
14633         * tree.h (alias_sets_might_conflict_p): Rename into
14634         alias_sets_must_conflict_p.
14635         * alias.c (alias_sets_might_conflict_p): Likewise.
14636         (alias_sets_conflict_p): Use it.
14637         (objects_must_conflict_p): Likewise.
14638         * c-common.c (strict_aliasing_warning): Adjust.
14639
14640 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14641
14642         * rtlhooks.c (gen_lowpart_if_possible): Check for
14643         invalid subreg before calling gen_lowpart_SUBREG.
14644
14645 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
14646
14647         * config/darwin9.h: Add copyright notice.
14648         (LINK_COMMAND_SPEC): Add comment.
14649         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
14650         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
14651         DARWIN_LIBSYSTEM_HAS_UNWIND.
14652
14653 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14654
14655         PR libgomp/32468
14656         * omp-low.c (check_combined_parallel): New function.
14657         (lower_omp_parallel): Call it via walk_stmts, set
14658         OMP_PARALLEL_COMBINED if appropriate.
14659         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
14660         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
14661         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
14662         don't consider it as combined parallel.
14663
14664 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14665
14666         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
14667         (gcc_tooldir): Likewise.
14668         * configure: Regenerate.
14669         * Makefile.in (libsubdir_to_prefix): New variable, based on the
14670         old configure.ac gcc_tooldir setting.
14671         (prefix_to_exec_prefix): New variable.
14672         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
14673         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
14674
14675 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
14676
14677         Fix PR tree-optimization/32583
14678         Fix PR tree-optimization/32584
14679         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
14680         (phi_translate_set): Use phi_translate directly now.
14681         (make_values_for_stmt): Don't value number RHS if we already know
14682         it is constant.
14683
14684 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
14685             Jim Wilson <wilson@specifix.com>
14686
14687         PR target/31684
14688         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
14689         copy_insn.
14690
14691 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
14692             Richard Sandiford  <richard@codesourcery.com>
14693             Nigel Stephens  <nigel@mips.com>
14694
14695         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
14696         (mips16e_output_save_restore): Declare.
14697         (mips16e_save_restore_pattern_p): Likewise.
14698         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
14699         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
14700         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
14701         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
14702         (BITSET_P): New global macro, extracted from...
14703         (mips_for_each_saved_reg): ...here.
14704         (mips16e_save_restore_info): New struct.
14705         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
14706         (mips16e_save_restore_regs): New variable.
14707         (mips_split_plus, mips16e_find_first_register): New functions.
14708         (mips16e_mask_registers): New function.
14709         (compute_frame_size): Expand the commentary before the function.
14710         Enforce the MIPS16e save and restore register range restrictions.
14711         Pad the general register save area at the low end.
14712         (mips16e_save_restore_reg, mips16e_build_save_restore)
14713         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
14714         (mips16e_output_save_restore, mips16e_collect_propagate_value)
14715         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
14716         New functions.
14717         (mips_expand_prologue, mips_expand_epilogue): Handle
14718         GENERATE_MIPS16E_SAVE_RESTORE.
14719         * config/mips/mips.md (*mips16e_save_restore): New pattern.
14720
14721 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
14722
14723         PR tree-optimization/31966
14724         PR tree-optimization/32533
14725         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
14726         "basic_block" description as its third argument.  Update function
14727         calls to get destination bb from "edge" argument.  Save "cond" into
14728         aux field of the edge.  Update prototype for changed arguments.
14729         (if_convertible_loop_p): Clear aux field of incoming edges if bb
14730         contains phi node.
14731         (find_phi_replacement_condition): Operate on incoming edges, not
14732         on predecessor blocks.  If there is a condition saved in the
14733         incoming edge aux field, AND it with incoming bb predicate.
14734         Return source bb of the first edge.
14735         (clean_predicate_lists): Clean aux field of outgoing node edges.
14736         (tree_if_conversion): Do not initialize cond variable. Move
14737         variable declaration into the loop.
14738         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
14739         initializations of new_stmt, arg0 and arg1 variables.
14740
14741 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
14742
14743         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
14744         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
14745
14746 2007-07-02  Richard Guenther  <rguenther@suse.de>
14747
14748         * tree-ssa.c (useless_type_conversion_p): Document
14749         future intent as defining the middle-end type system.
14750         Re-structure to call langhook last, group by type class,
14751         mark questionable parts.
14752
14753 2007-07-02  Richard Guenther  <rguenther@suse.de>
14754
14755         * tree-flow.h (types_compatible_p): Declare.
14756         * tree-ssa.c (types_compatible_p): New function.
14757         * ipa-type-escape.c (discover_unique_type): Use
14758         types_compatible_p instead of lang_hooks.types_compatible_p.
14759         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
14760         * tree-vn.c (expressions_equal_p): Likewise.
14761         * tree.c (fields_compatible_p): Likewise.
14762         * tree-ssa-dom.c (avail_expr_eq): Likewise.
14763         (cprop_operand): Use useless_type_conversion_p instead of
14764         lang_hooks.types_compatible_p.
14765         * tree-inline.c (setup_one_parameter): Likewise.
14766         (declare_return_variable): Likewise.
14767         * tree-nrv.c (tree_nrv): Likewise.
14768         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14769         (maybe_fold_offset_to_component_ref): Likewise.
14770         (maybe_fold_offset_to_reference): Likewise.
14771         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14772         (merge_alias_info): Likewise.
14773         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14774         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14775         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
14776         * tree-tailcall.c (find_tail_calls): Likewise.
14777         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
14778         * gimplify.c (canonicalize_addr_expr): Likewise.
14779         (fold_indirect_ref_rhs): Likewise.
14780         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
14781         (cpt_same_type): Likewise.
14782         (check_pointer_types_r): Swap parameters to cpt_same_type
14783         where appropriate.
14784         * fold-const.c (fold_convert): Revert fix for PR15988.
14785         * tree-inline.c (setup_one_parameter): Instead fix it here by
14786         using fold_build1 instead of fold_convert and checking for
14787         error_mark_node.  Convert only if the conversion is necessary.
14788
14789 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
14790
14791         * configure.ac: Check for .gnu_attribute on Power.
14792         * configure: Regenerate.
14793         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
14794         attribute for floating-point ABI.
14795
14796 2007-07-02  Ira Rosen  <irar@il.ibm.com>
14797
14798         PR tree-optimization/32230
14799         PR tree-optimization/32477
14800         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
14801         address is a constant.
14802
14803 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
14804
14805         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
14806         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
14807         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
14808         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
14809         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
14810         64-bit targets.  Add support for *-elfoabi*.
14811         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
14812         different settings if $(tm_defines) does not select the EABI.
14813         (MULTILIB_EXCLUSIONS): Define in those circumstances.
14814         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
14815         (MIPS_ARCH_OPTION_SPEC): Likewise.
14816         (MIPS_ISA_LEVEL_SPEC): Likewise.
14817         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
14818         * config/mips/elfoabi.h: New file.
14819
14820 2007-07-02  Richard Guenther  <rguenther@suse.de>
14821
14822         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
14823         (useless_type_conversion_p): ... this.
14824         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
14825         (useless_type_conversion_p): ... this.
14826         * builtins.c (fold_builtin_memory_op): Rename
14827         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
14828         * tree-cfg.c (verify_expr): Likewise.
14829         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
14830         * tree-ssa-ccp.c (ccp_fold): Likewise.
14831         * tree-ssa-copy.c (may_propagate_copy): Likewise.
14832         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
14833         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
14834         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
14835         * tree-ssa-pre.c (eliminate): Likewise.
14836         * tree-ssa.c (delete_tree_ssa): Likewise.
14837         (tree_ssa_useless_type_conversion): Likewise.
14838         * tree.c (build2_stat): Likewise.
14839
14840 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14841
14842         Fix PR tree-optimization/32571
14843         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
14844         simplifying them.
14845
14846 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
14847
14848         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
14849         and other expected operations explicitly, change default to
14850         gcc_unreachable. 
14851
14852 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14853
14854         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
14855         PARALLEL.
14856         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
14857         (tls_load_dot_plus_eight): Move the label number into the unspec.
14858         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
14859
14860 2007-07-01  Andreas Schwab  <schwab@suse.de>
14861
14862         * dwarf2out.c (initial_return_save): Define only if used.
14863
14864 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
14865
14866         Unreverting Richard's Revert of:
14867
14868         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
14869
14870         * dce.c (deletable_insn_p_1): New function, split out from...
14871         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
14872         specially, not those inside PARALLELs.  Remove BODY argument
14873         and adjust recursive call accordingly.
14874         (prescan_insns_for_dce): Update call to delete_insn_p.
14875
14876 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
14877             Revital Eres  <eres@il.ibm.com>
14878
14879         * ddg.c (create_ddg_all_sccs): Fix missed
14880         initialization of scc_nodes.
14881
14882 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
14883
14884         PR middle-end/32559
14885         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
14886         X + ~X to 1 only for INTEGRAL_TYPE_P type.
14887
14888 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
14889
14890         * configure.ac: Check for .gnu_attribute on MIPS.
14891         * configure, config.in: Regenerate.
14892         * config/mips/mips.c (mips_file_start): If supported, output
14893         attribute for floating-point ABI.
14894
14895 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
14896
14897         PR target/32433
14898         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
14899         (ffs_cmove): New expander to expand using ctz pattern.
14900         (*ffs_cmove): Remove pattern.
14901         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
14902         (ffsdi2): Expand using ctz pattern.
14903         (*ffs_rex64): Remove pattern.
14904
14905 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14906
14907         PR rtl-optimization/32296
14908         * pa.md (return): Delete pattern.
14909         (return_internal): Remove "(const_int 1)" from pattern.
14910         (epilogue): Use return_internal pattern for trivial returns.
14911         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
14912         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
14913
14914 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
14915
14916         * tree-ssa-pre.c (is_exception_related): New function
14917         (can_value_number_operation): Use it.
14918
14919 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
14920         
14921         Fix PR tree-optimization/32540
14922         Fix PR tree-optimization/31651
14923
14924         * tree-ssa-sccvn.c: New file.
14925
14926         * tree-ssa-sccvn.h: Ditto.
14927         
14928         * tree-vn.c: Include tree-ssa-sccvn.h
14929         (val_expr_paid_d): Removed.
14930         (value_table): Ditto.
14931         (vn_compute): Ditto.
14932         (val_expr_pair_hash): Ditto.
14933         (val_expr_pair_expr_eq): Ditto.
14934         (copy_vuses_from_stmt): Ditto.
14935         (vn_delete): Ditto.
14936         (vn_init): Ditto.
14937         (shared_vuses_from_stmt): Ditto.
14938         (print_creation_to_file): Moved up.
14939         (sort_vuses): Ditto.
14940         (sort_vuses_heap): Ditto.
14941         (set_value_handle): Make non-static.
14942         (make_value_handle): Ditto.
14943         (vn_add): Rewritten to use sccvn lookups.
14944         (vn_add_with_vuses): Ditto.
14945         (vn_lookup): Ditto (and second argument removed).
14946         (vn_lookup_with_vuses): Ditto.
14947         (vn_lookup_or_add): Ditto (and second argument removed);
14948         (vn_lookup_or_add_with_vuses): Ditto.
14949         (vn_lookup_with_stmt): New.
14950         (vn_lookup_or_add_with_stmt): Ditto.
14951         (create_value_handle_for_expr): Ditto.
14952
14953         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
14954         (seen_during_translate): New function.
14955         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
14956         (phi_trans_add): Ditto.
14957         (constant_expr_p): FIELD_DECL is always constant.
14958         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
14959         Use constant_expr_p.
14960         Avoid infinite recursion on mutually valued expressions.
14961         Change callers of vn_lookup_or_add.
14962         (phi_translate): New function.
14963         (compute_antic_safe): Allow phi nodes.
14964         (create_component_ref_by_pieces): Update for FIELD_DECL change.
14965         (find_or_generate_expression): Rewrite slightly.
14966         (create_expression_by_pieces): Updated for vn_lookup_or_add
14967         change.
14968         Update VN_INFO for new names.
14969         (insert_into_preds_of_block): Update for new names.
14970         (add_to_exp_gen): New function.
14971         (add_to_sets): Use vn_lookup_or_add_with_stmt.
14972         (find_existing_value_expr): Rewrite to changed vn_lookup.
14973         (create_value_expr_from): Ditto, and use add_to_exp_gen.
14974         (try_look_through_load): Removed.
14975         (try_combine_conversion): Ditto.
14976         (get_sccvn_value): New function.
14977         (make_values_for_phi): Ditto.
14978         (make_values_for_stmt): Ditto.
14979         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
14980         SCCVN.
14981         (init_pre): Update for SCCVN changes.
14982         (fini_pre): Ditto.
14983         (execute_pre): Ditto.
14984
14985         * tree-flow.h (make_value_handle): Declare.
14986         (set_value_handle): Ditto.
14987         (sort_vuses_heap): Ditto.
14988         (vn_lookup_or_add_with_stmt): Ditto.
14989         (vn_lookup_with_stmt): Ditto.
14990         (vn_compute): Remove.
14991         (vn_init): Ditto.
14992         (vn_delete): Ditto.
14993         (vn_lookup): Update arguments.
14994
14995         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
14996         (tree-vn.o): Ditto.
14997         (tree-ssa-sccvn.o): New.
14998         (OBJS-common): Add tree-ssa-sccvn.o
14999         
15000 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15001
15002         PR c/4076
15003         * c-typeck.c (build_external_ref): Don't mark as used if called
15004         from itself.
15005         * calls.c (rtx_for_function_call): Likewise.
15006         
15007 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
15008
15009         Revert:
15010
15011         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15012
15013         * dce.c (deletable_insn_p_1): New function, split out from...
15014         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15015         specially, not those inside PARALLELs.  Remove BODY argument
15016         and adjust recursive call accordingly.
15017         (prescan_insns_for_dce): Update call to delete_insn_p.
15018
15019 2007-06-30  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15020
15021         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
15022         (try_combine): Move potential calls to undo_all() so they happen
15023         before we commit to using the combined insns.
15024
15025 2007-06-30  Jan Hubicka  <jh@suse.cz>
15026
15027         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
15028         code.
15029
15030 2007-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
15031
15032         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
15033         (cgraph_remove_unreachable_nodes): Likewise.
15034         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
15035         * ipa-inline.c (update_caller_keys): Cast according to the coding
15036         conventions.
15037         (cgraph_decide_recursive_inlining): Likewise.
15038         (cgraph_decide_inlining_of_small_function): Likewise.
15039         (try_inline): Likewise.
15040         (cgraph_decide_inlining_incrementally): Likewise.
15041         * ipa-pure-const.c (get_function_state): Likewise.
15042         (scan_function): Likewise.
15043         (analyze_function): Likewise.
15044         (static_execute): Likewise.
15045         * ipa-reference.c (scan_for_static_refs): Likewise.
15046         (merge_callee_local_info): Likewise.
15047         (analyze_function): Use type safe memory macros.
15048         (static_execute): Likewise. Cast according to the coding conventions.
15049         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
15050         conventions.
15051         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
15052         names.
15053         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
15054         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
15055         variable names.
15056
15057 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15058
15059         PR middle-end/30024
15060         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
15061         for complex modes (both int and real).
15062
15063 2007-06-29  Jan Hubicka  <jh@suse.cz>
15064
15065         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
15066
15067 2007-06-29  Jan Hubicka  <jh@suse.cz>
15068
15069         PR middle-end/32372
15070         * cse.c (cse_insn): Avoid invalid sharing in between register note and
15071         the insn pattern.
15072
15073 2007-06-29  Anatoly Sokolov <aesok@post.ru>
15074
15075         PR target/32335
15076         * config/avr/avr.c: Include dataflow header file.
15077         (expand_prologue): Adjust for prologue insn change.
15078         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
15079         inside a insn.
15080
15081 2007-06-29  Richard Guenther  <rguenther@suse.de>
15082
15083         PR middle-end/32493
15084         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
15085         during type verification.
15086
15087 2007-06-29  Jan Hubicka  <jh@suse.cz>
15088
15089         * recog.c (validate_change_rtx_1): Unshare TO argument.
15090
15091 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
15092
15093         PR tree-optimization/24659
15094         * tree-vect-transform.c (vectorizable_call): Handle
15095         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
15096
15097         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
15098         * config/i386/i386.c (enum ix86_builtins)
15099         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
15100         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
15101         description.
15102         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
15103         const using def_builtin_const.
15104         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
15105         input operands in the same modes as the result.
15106         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
15107
15108 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
15109
15110         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
15111         (df_set_dead_notes_for_mw): Likewise.
15112
15113 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15114
15115         * c-common.c (pointer_int_sum): Do the negation in sizetype.
15116
15117 2007-06-28  DJ Delorie  <dj@redhat.com>
15118
15119         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
15120
15121 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
15122
15123         * doc/invoke.texi (C++ Dialect Options): Document
15124         fvisibility-ms-compat.
15125         * c.opt (fvisibility-ms-compat): New.
15126
15127 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15128
15129         PR tree-opt/32417
15130         * tree-affine.c (aff_combination_add_elt): Handle
15131         pointer addition specially.
15132
15133 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
15134
15135         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
15136         decl is non-external for AIX ABI.
15137
15138 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
15139
15140         * config/rs6000/predicates.md (current_file_function_operand):
15141         Ensure the symbol is non-external for AIX ABI.
15142
15143 2007-06-28  Nick Clifton  <nickc@redhat.com>
15144
15145         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
15146         (fdce, fdse, fpredictive-commoning): Likewise.
15147
15148 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
15149
15150         PR other/31400
15151         * gcc.c (process_command): Recognize the new -static-libgfortran
15152         option.
15153
15154 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15155
15156         PR target/32418
15157         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
15158         Use a call clobbered hard reg instead of a pseudo reg.
15159
15160 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15161
15162         * config/sh/sh.md (load_gbr): Use correct operand constraint.
15163
15164 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
15165
15166         PR target/32479
15167         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
15168         REG_LIBCALL and REG_RETVAL notes.
15169         (divsi3, mulsi3): Likewise.
15170         (mulhisi3): Likewise.  Use emit_libcall_block.
15171         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
15172
15173 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
15174
15175         PR rtl-optimization/32481
15176         * combine.c (adjust_for_new_dest): Rescan the changed insn.
15177
15178 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15179
15180         * dce.c (deletable_insn_p_1): New function, split out from...
15181         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15182         specially, not those inside PARALLELs.  Remove BODY argument
15183         and adjust recursive call accordingly.
15184         (prescan_insns_for_dce): Update call to delete_insn_p.
15185
15186 2007-06-27  Richard Guenther  <rguenther@suse.de>
15187
15188         PR middle-end/32492
15189         * tree.h (fold_convertible_p): Declare.
15190         * fold-const.c (fold_convertible_p): New function.
15191         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
15192         instead of lang_hooks.types_compatible_p.
15193
15194 2007-06-26  Jan Hubicka  <jh@suse.cz>
15195
15196         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
15197         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
15198         early use validate_unshare_change.
15199         (reload_combine): Likewise.
15200         * recog.c (change_t): New field unshare.
15201         (validate_change_1): Rename from validate_change; add argument unshare.
15202         (validate_change): Turn into wrapper of validate_change_1; update
15203         prototype for bools.
15204         (validate_unshare_change): New.
15205         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
15206         calls of df_insn_rescan.
15207         * recog.h (validate_change): Replace ints by bools.
15208         (validate_unshare_change): Declare.
15209
15210 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
15211
15212         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
15213         
15214 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
15215
15216         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
15217
15218 2007-06-25  Jan Hubicka  <jh@suse.cz>
15219
15220         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
15221         uninlinable call.
15222         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
15223         cgraph_decide_inlining_incrementally): Move uninlinability checks to
15224         places other call site specific checks are performed.
15225
15226 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15227
15228         PR tree-opt/32421
15229         * tree-vect-transform.c (vectorizable_operation): Convert
15230         POINTER_PLUS_EXPR over to PLUS_EXPR.
15231
15232 2007-06-25  Chao-ying Fu  <fu@mips.com>
15233
15234         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
15235         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
15236         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
15237         Document GET_MODE_IBIT, and GET_MODE_FBIT.
15238
15239         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
15240         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15241         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
15242         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
15243         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
15244         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
15245         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
15246         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
15247         ALL_FIXED_POINT_MODE_P): New define.
15248         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15249         MODE_UACCUM.
15250         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
15251
15252         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
15253         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15254         MODE_VECTOR_UACCUM): New mode classes.
15255
15256         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
15257         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
15258         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
15259         USA, UDA, and UTA.
15260
15261         * genmodes.c (struct mode_data): Add ibit and fbit fields.
15262         (blank_mode): Initialize ibit and fbit.
15263         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
15264         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15265         MODE_UACCUM.
15266         (new_adjust): Change required_class to required_class_from and
15267         required_class_to for testing within a range.
15268         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
15269         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
15270         MODE_VECTOR_UACCUM.
15271         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
15272         (make_fixed_point_mode): New.
15273         (_ADD_ADJUST): Change C to C1 and C2.
15274         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
15275         use a range for machine classes.
15276         (ADJUST_IBIT, ADJUST_FBIT): New.
15277         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
15278         CONST_MODE_FBIT.
15279         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
15280         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
15281         Emit adjustment for ibit and fbit.
15282         (emit_mode_ibit, emit_mode_fbit): New.
15283         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
15284
15285 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
15286
15287         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
15288         as the source of the set.
15289
15290 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
15291
15292         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
15293         FP_REGNO_P): Use IN_RANGE.
15294         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
15295         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
15296         (DATA_REG_P): Use DATA_REGNO_P.
15297         (FP_REG_P): Use FP_REGNO_P.
15298         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
15299         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
15300         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
15301
15302 2007-06-24  Jan Hubicka  <jh@suse.cz>
15303
15304         PR middle-end/30563
15305         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
15306
15307 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
15308
15309         PR middle-end/32461
15310         * fold-const.c (fold_binary): Strip nops of operand 0
15311         of BIT_NOT_EXPR before calling operand_equal_p.
15312         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
15313         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
15314
15315 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
15316
15317         * doc/extend.texi: Document that dllimport and dllexport imply
15318         default visibility.
15319         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
15320         imported or exported declaration, including type declarations.
15321         * c-common.c (handle_visibility_attribute): Check for conflicts
15322         with dllimport/dllexport.
15323         (c_determine_visibility): Handle dllimport/dllexport as an
15324         explicit visibility atttribute.
15325
15326 2007-06-23  Richard Guenther  <rguenther@suse.de>
15327
15328         PR tree-optimization/16876
15329         PR middle-end/29478
15330         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
15331         for CALL_EXPRs.
15332         * tree-inline.c (initialize_inlined_parameters): Do not call
15333         lang_hooks.tree_inlining.convert_parm_for_inlining.
15334         * cgraphbuild.c (initialize_inline_failed): Set inline failed
15335         reason for mismatched types.
15336         * gimplify.c (gimplify_call_expr): Verify the call expression
15337         arguments match the called function type signature.  Otherwise
15338         mark the call expression to be not considered for inlining
15339         using CALL_CANNOT_INLINE_P flag.
15340         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
15341         edges call expression.
15342         (cgraph_decide_inlining_of_small_function): Likewise.
15343         (cgraph_decide_inlining): Likewise.
15344         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
15345         Remove define.
15346         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
15347         * c-typeck.c (c_convert_parm_for_inlining): Remove.
15348         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
15349         Remove declaration.
15350         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
15351         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
15352         Remove.
15353         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
15354         convert_parm_for_inlining member.
15355
15356 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
15357
15358         PR target/31152
15359         * arm.md (negscc): Match the correct operand for optimized LT0 test.
15360         Remove optimization for GT.
15361
15362 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
15363
15364         PR middle-end/32437
15365         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
15366         is a PARALLEL.
15367         (prescan_insns_for_dce): Add extra parameter.
15368         
15369 2007-06-23  Jan Hubicka  <jh@suse.cz>
15370
15371         PR middle-end/31541
15372         * gimplify.c (mark_addressable): New function.
15373         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
15374
15375 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15376
15377         PR middle-end/32374
15378         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
15379
15380 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15381
15382         PR target/32413
15383         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
15384         moves between MMX/SSE registers to at least 8 units to prevent
15385         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
15386
15387 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
15388
15389         * config/i386/i386.c (override_options): Correct x86_sahf
15390         setting condition.
15391
15392 2007-06-21  David Daney  <ddaney@avtrex.com>
15393
15394         PR target/32406
15395         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
15396         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
15397         (exception_receiver): Renamed to ...
15398         (nonlocal_goto_receiver): ... this.
15399
15400 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
15401
15402         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
15403         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
15404         partial register accesses.
15405
15406 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
15407
15408         * fold-const.c (debug_fold_checksum): Move it under
15409         ENABLE_FOLD_CHECKING.
15410
15411 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15412
15413         PR middle-end/20623
15414         * tree.h (debug_fold_checksum): Declared.
15415         * fold-const.c (build_fold_addr_expr_with_type_1): New.
15416         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
15417         build_fold_addr_expr_with_type_1.
15418         (fold_addr_expr, debug_fold_checksum): New.
15419         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
15420         (fold_unary, fold_comparison, split_address_to_core_and_offset):
15421         Use fold_addr_expr.
15422         
15423 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
15424
15425         PR tree-optimization/19590
15426         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
15427         of scev is a constant.
15428
15429 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
15430
15431         * df-problems.c (df_note_bb_compute): Made computation of live
15432         info consistent with df_lr.
15433
15434 2007-06-21  Richard Guenther  <rguenther@suse.de>
15435
15436         PR tree-optimization/32453
15437         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
15438         for pointer anti-range.
15439
15440 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
15441
15442         * config/i386/i386.c (processor_target_table): Increase maximum
15443         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
15444         default 64bit.
15445
15446         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
15447         byte alignment if > 8 byte alignment is preferred.
15448         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
15449
15450 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
15451
15452         PR tree-optimization/31866
15453         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
15454         if ASM_EXPR's input is not a SSA_NAME.
15455
15456         PR middle-end/32362
15457         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
15458         but decl is a global var, instead return decl.
15459         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
15460         even for is_global_var decls, if they are private in some outer
15461         context.
15462
15463 2007-06-21  Richard Guenther  <rguenther@suse.de>
15464
15465         PR tree-optimization/32451
15466         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
15467
15468 2007-06-21  Christian Bruel  <christian.bruel@st.com>
15469
15470         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
15471         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
15472         (push_regs): Changed saving order or banked registers.
15473         (sh_expand_epilogue): Likewise.
15474         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
15475         (FIRST_BANKED_REG): Likewise.
15476         (LAST_BANKED_REG): Likewise.
15477         * config/sh/sh.md (banked) New attribute.
15478         (in_delay_slot): Check banked attribute.
15479         
15480 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
15481
15482         PR tree-optimization/32075
15483         * tree-data-ref.c (subscript_dependence_tester_1, 
15484         analyze_miv_subscript, analyze_overlapping_iterations,
15485         add_distance_for_zero_overlaps, build_classic_dist_vector,
15486         subscript_dependence_tester_1, analyze_overlapping_iterations,
15487         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
15488         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
15489         to evolution_function_is_affine_multivariate_p.
15490
15491 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
15492
15493         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
15494
15495 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15496
15497         PR target/32335
15498         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
15499         for TARGET_A16.
15500         * config/m32c/prologue.md (epilogue_exitd_16): New.
15501         (epilogue_reit_16): New.
15502         (epilogue_exitd): Rename to epilogue_exitd_24.
15503         (epilogue_reit): Rename to epilogue_reit_24.
15504
15505 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
15506             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15507
15508         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
15509         New counters.
15510         * haifa-sched.c (queue_to_ready): Don't requeue next insn
15511         if dbg_cnt (sched_insn) reaches the limit.
15512         (choose_ready): New parameter INSN_PTR and new return value.
15513         (schedule_block): Handle dbg_cnt (sched_insn). Handle
15514         the new return value from choose_ready.
15515         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
15516         (rest_of_handle_global_alloc): New global_alloc_at_func.
15517
15518 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
15519
15520         PR tree-optimization/25737
15521         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
15522         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
15523         * tree-flow.h (struct fieldoff): Add new field alias_set.
15524         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
15525         argument addressable_type.  Set alias_set of fieldoff.
15526         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
15527         (create_overlap_variables_for): Pass alias_set from fieldoff to
15528         create_sft.
15529         * alias.c (get_alias_set): Use alias_set from SFT if set.
15530
15531 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
15532
15533         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
15534         of a variable as an unsigned HOST_WIDE_INT integer.
15535
15536 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
15537
15538         PR rtl-optimization/32405
15539         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
15540
15541 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
15542
15543         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
15544
15545         PR middle-end/31959
15546         * builtins.c: Include diagnostic.h.
15547         (expand_builtin_expect): Make gcc_assert more permissive.
15548         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
15549
15550         PR inline-asm/32109
15551         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
15552         and !allows_mem.
15553
15554         PR middle-end/32285
15555         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
15556         if ACCUMULATE_OUTGOING_ARGS.
15557
15558 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15559
15560         * config/m68hc11/m68hc11.c: Include dataflow header file.
15561         (m68hc11_reorg): Port to dataflow.
15562
15563 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15564
15565         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
15566         (struct df_problem.free_blocks_on_set_blocks): New field.
15567         (struct dataflow.optional_p): New field.
15568         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15569         (df_live_set_all_dirty): New function.
15570         * df-scan.c (df_scan_alloc): Initialize optional_p.
15571         (problem_SCAN): Initialize free_blocks_on_set_blocks.
15572         * df-core.c (df_set_blocks): Removed use of
15573         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
15574         df_problem.free_blocks_on_set_blocks to determine which blocks are
15575         recycled.
15576         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
15577         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
15578         uses dataflow.optional_p to determine if problem should be
15579         deleted.
15580         (rest_of_handle_df_initialize): Only start live problem if 
15581         -02 or above.
15582         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
15583         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
15584         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
15585         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
15586         problem_NOTE): Initialize free_blocks_on_set_blocks.
15587         (df_lr_bb_local_compute): Recompute luids if df_live problem is
15588         not active.
15589         (df_live_set_all_dirty, df_note_alloc): New function.
15590         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
15591         df_get_live_*.
15592         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
15593         * postreload.c (reload_combine): Ditto.
15594         * cse.c (cse_extended_basic_block): Ditto.
15595         * regmove.c (mark_flags_life_zones): Ditto.
15596         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
15597         erase_matching_seqs): Ditto.
15598         * bt-load.c (compute_defs_uses_and_gen): Ditto.
15599         * integrate (allocate_initial_values): Ditto.
15600         * combine.c (reg_dead_at_p): Ditto.
15601         * resource.c (mark_target_live_regs): Ditto.
15602         * sched-rgn.c (check_live_1, update_live_1): Ditto.
15603         * config/sh/sh.c (find_r0_life_regions): Ditto.
15604         * global.c (rest_of_handle_global_alloc): Only add back df_live
15605         for -O > 1.
15606         * local-alloc.c (rest_of_handle_local_alloc): Only remove
15607         df_live for -O > 1.
15608         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
15609         df_get_live_*.
15610         (if_convert): Make sure df_live is there at -O == 1.
15611         (pass_if_after_combine): Cleanup flags.
15612         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
15613         is there at -O == 1.
15614         
15615 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
15616
15617         * config/arm/arm.c (arm_get_frame_offsets): Set
15618         offsets->locals_base to avoid negative stack size.
15619         (thumb1_expand_prologue): Assert on negative stack size.
15620
15621 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
15622
15623         PR tree-optimization/32367
15624         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
15625         of the chrec has no evolution in that loop.
15626         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
15627
15628 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
15629
15630         * config/xtensa/xtensa.c: Include "df.h".
15631         (xtensa_builtin_saveregs): Use adjust_address instead of
15632         change_address.
15633         (xtensa_va_start): Invoke make_tree with sizetype for
15634         expand_builtin_saveregs and then convert the result to a pointer.
15635         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
15636         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
15637         Subtract argument size from index value as integers and then use
15638         POINTER_PLUS_EXPR to add the result to the array address.
15639         
15640 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15641
15642         PR target/32335
15643         * config/m32c/m32c.c: Include dataflow header file.
15644         (m32c_emit_prologue): Adjust for prologue insn change.
15645         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
15646         once inside a PARALLEL. Assume frame size passed in operand 0
15647         includes space to save the fb register.
15648         (prologue_enter_24): Likewise.
15649         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
15650
15651 2007-06-19  David Daney  <ddaney@avtrex.com
15652
15653         PR target/32313
15654         * config/mips/mips.md (cprestore): Mark $gp as used.
15655
15656 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15657
15658         PR target/32369
15659         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
15660         (frv_ifcvt_modify_insn): Likewise.
15661
15662 2007-06-19  Richard Guenther  <rguenther@suse.de>
15663
15664         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
15665         only handle positive offsets that fit in a HOST_WIDE_INT.
15666
15667 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
15668
15669         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
15670         result of rsqrt insn for zero input argument to avoid NaN.
15671
15672 2007-06-19  Richard Guenther  <rguenther@suse.de>
15673
15674         PR middle-end/31950
15675         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
15676
15677 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
15678
15679         PR tree-optimization/32353
15680         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
15681
15682 2007-06-19  Nick Clifton  <nickc@redhat.com>
15683
15684         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
15685
15686 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15687
15688         PR target/32389
15689         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
15690         * config/i386/i386.c (assign_386_stack_local): Assert that
15691         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
15692         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
15693         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
15694         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
15695
15696 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
15697
15698         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
15699
15700 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
15701
15702         PR rtl-optimization/32321
15703         * gcse.c (replace_store_insn): Update the note before
15704         calling emit_insn_after.
15705
15706 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
15707
15708         PR middle-end/32355
15709         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
15710         cse_main.
15711         * df-problems.c (df_note_bb_compute): Fix dumping info.
15712         
15713 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
15714
15715         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
15716         insn with emit_jump_insn.
15717
15718 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
15719
15720         PR tree-optimization/32383
15721         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
15722         * targhooks.h (default_builtin_reciprocal): Update prototype.
15723         * target.h (struct gcc_target): Update builtin_reciprocal.
15724         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
15725         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
15726         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
15727         when fndecl is in BUILT_IN_MD class.
15728         (execute_convert_to_rsqrt): Ditto.
15729
15730         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
15731         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
15732         Convert BUILT_IN_SQRTF code only  when md_fn is false.
15733
15734 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15735
15736         * bt-load.c (move_btr_def): Fix the order of arguments
15737         to validate_replace_rtx.
15738
15739 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
15740
15741         * config/m68k/m68k-devices.def: Add 54450..54455.
15742
15743 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
15744
15745         PR rtl-optimization/32366
15746         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
15747         FLOAT_EXTEND]: Prevent non-scalar modes from entering
15748         significand_size.
15749
15750 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15751
15752         PR middle-end/32349
15753         * modulo-sched (generate_reg_moves): Added rescan parameter and if
15754         this is true, rescan insn being modified.
15755         (sms_schedule): Added rescan parameter.
15756         (rest_of_handle_sms): Moved freeing of dominance info to before
15757         getting out of cfg_layout.
15758         
15759 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
15760
15761         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
15762         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
15763         appropriate.
15764
15765         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
15766         FL_CF_EMAC from the entry for isac.
15767
15768         * config/m68k/predicates.md (const_call_operand): Adjust comment.
15769         (const_sibcall_operand): New.
15770         (sibcall_operand): Use it.
15771         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
15772         (m68k_isas): ISAC does not imply FPU or EMAC.
15773         (override_options): Add ISA_C logic for symbolic jump & call.
15774
15775 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
15776
15777         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
15778         return mode from the builtin itself.
15779         (sparc_fold_builtin): Fix cast of zero constant.
15780
15781 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15782
15783         * targhooks.c (default_builtin_reciprocal): New default target hook.
15784         * targhooks.h (default_builtin_reciprocal): Add prototype.
15785         * hooks.c (hook_tree_tree_bool_null): Remove hook.
15786         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
15787         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
15788         default_builtin_reciprocal.
15789
15790 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
15791
15792         PR middle-end/31723
15793         * hooks.c (hook_tree_tree_bool_null): New hook.
15794         * hooks.h (hook_tree_tree_bool_null): Add prototype.
15795         * tree-pass.h (pass_convert_to_rsqrt): Declare.
15796         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
15797         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
15798         and convert it to reciprocal a*rfunc(b).
15799         (execute_convert_to_rsqrt): New function.
15800         (gate_convert_to_rsqrt): New function.
15801         (pass_convert_to_rsqrt): New pass definition.
15802         * target.h (struct gcc_target): Add builtin_reciprocal.
15803         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
15804         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
15805         TARGET_BUILTIN_RECIPROCAL.
15806         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
15807
15808         * config/i386/i386.h (TARGET_RECIP): New define.
15809         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
15810         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15811         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15812         and not optimizing for size.
15813         (*rcpsf2_sse): New insn pattern.
15814         (*rsqrtsf2_sse): Ditto.
15815         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15816         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15817         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15818         and not optimizing for size.
15819         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
15820         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15821         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15822         and not optimizing for size.
15823         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
15824         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15825         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15826         and not optimizing for size.
15827         (*sse_rsqrtv4sf2): Do not export.
15828         (sqrtv4sf2): Ditto.
15829         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
15830         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
15831         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
15832         and not optimizing for size.
15833         (sqrtv4sf2): Ditto.
15834         * config/i386/i386.opt (mrecip): New option.
15835         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
15836         (ix86_emit_swsqrtsf): Ditto.
15837         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
15838         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
15839         builtin definition.
15840         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
15841         ix86_expand_unop1_builtin.
15842         (ix86_emit_swdivsf): New function.
15843         (ix86_emit_swsqrtsf): Ditto.
15844         (ix86_builtin_reciprocal): New function.
15845         (TARGET_BUILTIN_RECIPROCAL): Use it.
15846         (ix86_vectorize_builtin_conversion): Rename from
15847         ix86_builtin_conversion.
15848         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
15849         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
15850         "i386 and x86_64 Options" section.
15851         (Intel 386 and AMD x86_64 Options): Document -mrecip.
15852
15853 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
15854             Zdenek Dvorak <dvorakz@suse.cz>
15855             Richard Guenther  <rguenther@suse.de>
15856             Kaz Kojima  <kkojima@gcc.gnu.org>
15857
15858         * tree-vrp.c (compare_values_warnv): Convert val2 to
15859         the type of val1.
15860         (extract_range_from_assert): Create
15861         POINTER_PLUS_EXPR for pointer types.
15862         (extract_range_from_binary_expr): Handle
15863         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
15864         for pointer types.
15865         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
15866         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
15867         POINTER_PLUS_EXPR as PLUS_EXPR.
15868         (number_of_iterations_lt_to_ne):
15869         For pointer types, use sizetype when
15870         creating MINUS_EXPR/PLUS_EXPRs.
15871         (assert_loop_rolls_lt): For pointer types, use sizetype when
15872         creating MINUS_EXPR/PLUS_EXPRs.
15873         (number_of_iterations_le): Likewise.
15874         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
15875         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
15876         like PLUS_EXPR and MINUS_EXPR.
15877         * tree-pretty-print.c (dump_generic_node): Handle
15878         POINTER_PLUS_EXPR.
15879         (op_prio): Likewise.
15880         (op_symbol_1): Likewise.
15881         * optabs.c (optab_for_tree_code): Likewise.
15882         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
15883         specially.
15884         * tree-tailcall.c (process_assignment): Mention
15885         POINTER_PLUS_EXPR in a TODO comment.
15886         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
15887         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
15888         not used with a pointer and an integer type.
15889         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
15890         increment using chrec_convert_rhs instead of chrec_convert.
15891         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
15892         PLUS_EXPR except for the right hand side's type will be
15893         sizetype.
15894         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
15895         (fold_used_pointer_cast): Kill.
15896         (pointer_offset_p): Kill.
15897         (fold_used_pointer): Kill.
15898         (pointer_used_p): Kill.
15899         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
15900         call fold_used_pointer.
15901         (instantiate_parameters_1): Convert the increment
15902         using chrec_convert_rhs instead of chrec_convert.
15903         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
15904         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
15905         instead of PLUS_EXPR.
15906         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
15907         PLUS_EXPR for pointers.
15908         (std_gimplify_va_arg_expr): Likewise.
15909         (fold_builtin_memory_op): Likewise.
15910         (fold_builtin_strstr): Likewise.
15911         (fold_builtin_strchr): Likewise.
15912         (fold_builtin_strrchr): Likewise.
15913         (fold_builtin_strpbrk): Likewise.
15914         (expand_builtin_memory_chk): Likewise.
15915         (fold_builtin_memory_chk): Likewise.
15916         (std_expand_builtin_va_start): Use
15917         sizetype for the call to make_tree and then convert
15918         to the pointer type.
15919         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
15920         instead of PLUS_EXPR for adding to a pointer.
15921         (std_gimplify_va_arg_expr): Use fold_build2 for
15922         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
15923         the operands to sizetype first and then cast the BIT_AND_EXPR
15924         back to the pointer type.
15925         * fold-const.c (build_range_check): Handle pointer types
15926         specially.
15927         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
15928         of PLUS_EXPR's. Make sure the offset is converted to
15929         sizetype.
15930         (try_move_mult_to_index): Strip the NOPs from the offset.
15931         Remove code argument and replace all uses with PLUS_EXPR.
15932         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
15933         specially. Don't use a pointer type for MINUS_EXPR.
15934         (fold_unary): Handle for (T1)(X op Y),
15935         only p+ as that is the only as that can be handled for
15936         binary operators now.
15937         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
15938         POINTER_PLUS_EXPR.
15939         <case PLUS_EXPR>: Add folding of PTR+INT into
15940         PTR p+ INT.
15941         Don't call try_move_mult_to_index.
15942         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
15943         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
15944         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
15945         Don't call try_move_mult_to_index.
15946         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
15947         (tree_expr_nonzero_p): Likewise.
15948         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
15949         of PLUS_EXPR for the complex expression folding.
15950         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
15951         first chrec is a pointer type, then the second should
15952         be sizetype and not the first's type.
15953         For POINTER_PLUS_EXPR, use a different right hand side type.
15954         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15955         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
15956         different right hand side type.
15957         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15958         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
15959         instead of PLUS_EXPR.
15960         When either operand is zero, convert the other operand.
15961         (chrec_apply): Use chrec_convert_rhs
15962         on the argument x instead of chrec_convert.
15963         (reset_evolution_in_loop): For pointer types, the new_evol
15964         should be sizetype.
15965         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
15966         different right hand side type.
15967         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15968         (chrec_convert_rhs): New function.
15969         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
15970         different right hand side type.
15971         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
15972         * tree-chrec.h (chrec_convert_rhs): New prototype.
15973         (build_polynomial_chrec): For pointer types, the right hand
15974         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
15975         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
15976         Remove subtraction case as it is always addition now.
15977         Make sure the offset is converted to sizetype.
15978         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
15979         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
15980         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
15981         PLUS_EXPR in pointer type.
15982         Handle POINTER_PLUS_EXPR.
15983         (tree_to_aff_combination): Likewise.
15984         (force_expr_to_var_cost): Likewise.
15985         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
15986         instead of PLUS_EXPR for pointers.
15987         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
15988         instead of PLUS_EXPR of pointer types.
15989         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
15990         as PLUS_EXPR.
15991         (check_va_list_escapes): Likewise.
15992         (check_all_va_list_escapes): Likewise.
15993         * dwarf2out.c (loc_descriptor_from_tree_1):
15994         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
15995         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
15996         (string_constant): Likewise.
15997         * tree-ssa-address.c (tree_mem_ref_addr): When adding
15998         the offset to the base, use POINTER_PLUS_EXPR.
15999         (add_to_parts): Convert the index to sizetype.
16000         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
16001         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
16002         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
16003         Offset only holds something for PLUS_EXPR.
16004         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
16005         a PLUS_EXPR.
16006         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
16007         and not PLUS_EXPR.
16008         (analyze_accesses_for_modify_stmt): Likewise.
16009         Remove comment about the type being integral type as it is
16010         wrong now.
16011         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
16012         PLUS_EXPR.
16013         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
16014         and not PLUS_EXPR.
16015         Correct the type which the artimentic is done in (is now
16016         sizetype).
16017         Reindent one loop.
16018         * tree-data-ref.c (split_constant_offset): Handle
16019         POINTER_PLUS_EXPR
16020         * tree-affine.c (tree_to_aff_combination): Likewise.
16021         * c-typeck.c (build_unary_op): For pointers create the increment
16022         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
16023         for pointers.
16024         * gimplify.c (gimplify_self_mod_expr): Create a
16025         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16026         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
16027         * tree.def (POINTER_PLUS_EXPR): New tree code.
16028         * tree-predcom.c (ref_at_iteration): If we have a pointer
16029         type do the multiplication in sizetype.
16030         * tree-mudflap.c (mf_xform_derefs_1): Create a
16031         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16032         * tree-ssa-forwprop.c 
16033         (forward_propagate_addr_into_variable_array_index):
16034         Don't expect there to be a cast for the index as that
16035         does not exist anymore.
16036         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
16037         instead of PLUS_EXPR.
16038         Don't check for the first operand of the POINTER_PLUS_EXPR
16039         was the index as it cannot be.
16040         Call forward_propagate_addr_into_variable_array_index with
16041         the SSA_NAME instead of the statement.
16042         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
16043         (compare_constant): Likewise.
16044         (copy_constant): Likewise.
16045         (compute_reloc_for_constant): Likewise.
16046         (output_addressed_constants): Likewise.
16047         (initializer_constant_valid_p): Likewise.
16048         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
16049         Convert the MIN/MAX of the inner type to the outer
16050         type before comparing them.
16051         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
16052         POINTER_PLUS_EXPR instead of PLUS_EXPR.
16053         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
16054         of PLUS_EXPR for pointers.
16055         * tree-inline.c (estimate_num_insns_1): Handle
16056         POINTER_PLUS_EXPR.
16057         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
16058         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16059         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
16060         instead of PLUS_EXPR for the pointer increment statement.
16061         (vect_update_ivs_after_vectorizer): For pointer types, create
16062         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
16063         MULT_EXPR in sizetype.
16064         (vect_gen_niters_for_prolog_loop): Add a cast when creating
16065         byte_misalign.
16066         * tree-object-size.c (plus_expr_object_size): Handle
16067         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
16068         code which is trying to figure out which side is a pointer and 
16069         is the index.
16070         (check_for_plus_in_loops_1): Likewise.
16071         (check_for_plus_in_loops): Likewise.
16072         * c-common.c (pointer_int_sum): Create a
16073         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16074         * tree-ssa-structalias.c (handle_ptr_arith): Handle
16075         only POINTER_PLUS_EXPR.  Removing all the extra
16076         code which is trying to figure out which side is a pointer and 
16077         is the index.
16078         * tree-cfg.c (verify_expr): Add extra checking for pointers and
16079         PLUS_EXPR and MINUS_EXPR.
16080         Also add checking to make sure the operands of POINTER_PLUS_EXPR
16081         are correct.
16082         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
16083         with make_tree, instead of a pointer type.
16084         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
16085         for pointers instead of PLUS_EXPR.
16086         (s390_gimplify_va_arg): Likewise.
16087         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
16088         instead of PLUS_EXPR when doing addition on pointer
16089         types.  Use sizetype for the second operand.
16090         (spu_gimplify_va_arg_expr): Likewise.
16091         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
16092         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
16093         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
16094         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
16095         for the pointer addition and also use size_int/sizetype
16096         for the offset.
16097         (ix86_gimplify_va_arg): Likewise.
16098         Perform BIT_AND_EXPR on sizetype arguments.
16099         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
16100         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
16101         for the pointer additions and also use size_int for the offsets.
16102         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
16103         additions and also use size_int for the offsets.  Perform
16104         BIT_AND_EXPR on sizetype arguments.
16105         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
16106         POINTER_PLUS_EXPR for pointers and create the
16107         BIT_AND_EXPR in sizetype.
16108         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
16109         instead of PLUS_EXPR for pointer addition.
16110         (rs6000_va_start): Likewise.
16111         Also use sizetype for the offset.
16112         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
16113         as PLUS_EXPR/MINUS_EXPR.
16114         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
16115         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
16116         Don't use BIT_AND_EXPR on a pointer type, convert the
16117         expression to sizetype first.
16118         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
16119         for pointers.
16120         (mips_gimplify_va_arg_expr): Likewise.
16121         Don't create BIT_AND_EXPR in a pointer type.
16122
16123 2007-06-15  Eric Christopher  <echristo@apple.com>
16124
16125         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
16126         (x86_64-*-darwin*): Ditto.
16127         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
16128         for above.
16129
16130 2007-06-15  Matthew Wilcox <matthew@wil.cx>
16131
16132         * doc/extend.texi: Document behavior of __attribute__((aligned))
16133         on typedefs.
16134
16135 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
16136
16137         * rtlanal.c (note_stores): Improve documentation.
16138
16139 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16140
16141         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
16142         LOCAL_LABEL_PREFIX): Delete.
16143         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
16144         (bfin_internal_label): Delete.
16145
16146 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
16147
16148         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
16149         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
16150         otherwise define to LIBGCC2_TF_CEXT.
16151         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
16152         (LIBGCC_TF_CEXT): Ditto.
16153         (TF_SIZE): Ditto.
16154
16155 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
16156
16157         PR rtl-optimization/32339
16158         * df-scan.c (df_uses_record): Don't modify flags but just add to
16159         it for df_ref_record.
16160
16161 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16162
16163         * tree-mudflap.c: Fix whitespace issues.
16164
16165 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
16166
16167         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
16168
16169 2007-06-14  Eric Christopher  <echristo@apple.com>
16170
16171         * config/i386/sse.md (movdi_to_sse): Rewrite body.
16172         (movv4sf): Use gcc_unreachable instead of abort.
16173
16174 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16175
16176         PR target/32268
16177         * config/i386/sfp-machine.h (CMPtype): New define.
16178         (mach stubs): Use CMPtype instead of int as a return type.
16179
16180 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
16181
16182         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
16183         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
16184         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
16185         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
16186         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
16187         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
16188         config/soft-fp/soft-fp.h: Update from glibc CVS.
16189
16190 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
16191
16192         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
16193
16194 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16195
16196         PR target/32341
16197         * config/v850/v850.c: Include dataflow header file.
16198         (substitute_ep_register): Fix typo.
16199
16200 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16201
16202         * configure.ac: Fix earlier checkin.
16203         * configure: Regenerated.
16204
16205 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16206
16207         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
16208         * aclocal.m4: Regenerate.
16209         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
16210         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
16211         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
16212         * configure: Regenerate.
16213         * Makefile.in (LOOSE_WARN): Subst loose_warn.
16214
16215         * Makefile.in (quickstrap): Build libgcc too.
16216
16217 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
16218
16219         * configure.ac: Add --enable-checking=df.  Explicitly mention that
16220         the variables are initialized as for "release".
16221         * df-core.c: Use it.
16222         * configure: Regenerate.
16223         * config.in: Regenerate.
16224
16225 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
16226
16227         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
16228         validate_replace_rtx instead of replace_rtx.
16229         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
16230
16231 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
16232
16233         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
16234         (DWARF2_UNWIND_INFO): Override default if configured with
16235         SJLJ EH disabled.
16236         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
16237         (ENDFILE_SPEC): Add crtend.o.
16238         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
16239         (ENDFILE_SPEC): Add crtend.o.
16240         (TARGET_USE_JCR_SECTION): Define.
16241         (MD_UNWIND_SUPPORT): Define for 32-bit target.
16242
16243         * config/i386/cygming-crtbegin.c: New file.
16244         * config/i386/cygming-crtend.c: New file.
16245
16246 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
16247
16248         * config/i386/w32-unwind.h: New file.
16249
16250 2007-06-13  Eric Christopher  <echristo@apple.com>
16251
16252         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
16253         the user set a value below STACK_BOUNDARY.
16254
16255 2007-06-13  Thiemo Seufer  <ths@networkno.de>
16256
16257         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
16258         imply -lpthread for -pthread.
16259
16260 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16261
16262         * basic-block.h: Remove the prototype for
16263         free_basic_block_vars.
16264         * cfglayout.h: Remove the prototype for
16265         insn_locators_initialize.
16266         * tree.h: Remove the prototype for emit_line_note.
16267
16268         * tree-ssa-pre.c (mergephitemp): Remove.
16269         (init_pre): Don't use mergephitemp.
16270
16271 2007-06-13  Eric Christopher  <echristo@apple.com>
16272
16273         * config/i386/i386.c (override_options): If we've specified
16274         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
16275
16276 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
16277
16278         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
16279         is defined.
16280
16281 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16282
16283         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
16284         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
16285         (eh_store_handler): New pattern.
16286         (eh_return): Emit it instead of a plain move.
16287
16288 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
16289
16290         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
16291         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
16292         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
16293         def_builtin_const.
16294
16295 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16296
16297         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
16298         (find_next_insn_start, find_load): New functions.
16299         (bfin_reorg): Use them to deal with the fact that parallel insns are
16300         no longer represented as a SEQUENCE.
16301
16302 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
16303
16304         * config/sparc/sparc.c (sparc_override_options): Initialize
16305         fpu mask correctly.
16306
16307 2007-06-13  Dave Korn  <dave.korn@artimi.com>
16308
16309         * config/i386/i386.c (ix86_eax_live_at_start_p): Use df_get_live_out.
16310
16311 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
16312
16313         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
16314         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
16315         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
16316         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
16317         tree-vect-transform.c: Fix comment typos.  Follow spelling
16318         conventions.
16319
16320 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16321
16322         * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
16323         to the exit block use set.
16324         (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
16325         * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
16326         * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
16327
16328 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
16329
16330         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
16331         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
16332         to indicate an error.
16333         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
16334         New functions.
16335         (dbg_cnt_process_opt): Print an error on a bad argument.
16336         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
16337         * common.opt (-fdbg-cnt-list): New.
16338         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
16339
16340 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16341
16342         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
16343         flag on ref-all pointers.
16344
16345 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16346
16347         PR middle-end/31579
16348         * expr.c (expand_expr_addr_expr_1): Call expand_expr
16349         for the offset with the modifier as EXPAND_INITIALIZER
16350         if the modifier is EXPAND_INITIALIZER.
16351         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
16352         a register if we had an overflow.
16353
16354 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16355
16356         * real.c (real_isfinite): New.
16357         (real_sqrt): Use it.
16358         * real.h (real_isfinite): New.
16359         * builtins.c: Use it.
16360
16361 2007-06-12  Ian Lance Taylor  <iant@google.com>
16362             Daniel Berlin  <dberlin@dberlin.org>
16363
16364         PR libstdc++/29286
16365         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
16366         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
16367         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
16368         (DECL_NO_TBAA_P): Define.
16369         (struct tree_decl_common): Add no_tbaa_flag field.
16370         * tree-ssa-structalias.c (struct variable_info): Add
16371         no_tbaa_pruning field.
16372         (new_var_info): Initialize no_tbaa_pruning field.
16373         (unify_nodes): Copy no_tbaa_pruning field.
16374         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16375         (dump_solution_for_var): Print no_tbaa_pruning flag.
16376         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
16377         callers.
16378         (compute_tbaa_pruning): New static function.
16379         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
16380         Call compute_tbaa_pruning.
16381         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
16382         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
16383         * gimple-low.c (lower_stmt): Likewise.
16384         * tree-gimple.c (is_gimple_stmt): Likewise.
16385         * tree-ssa-operands.c (get_expr_operands): Likewise.
16386         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16387         * tree-inline.c (estimate_num_insns_1): Likewise.
16388         (copy_result_decl_to_var): Likewise.
16389         * expr.c (expand_expr_real_1): Likewise.
16390         * tree-pretty-print.c (dump_generic_node): Likewise.
16391         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
16392         * omp-low.c (omp_copy_decl_2): Likewise.
16393         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
16394         * doc/c-tree.texi (Expression trees): Document
16395         CHANGE_DYNAMIC_TYPE_EXPR.
16396
16397 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16398
16399         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
16400         with !HONOR_NANS and !HONOR_INFINITIES.
16401         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
16402
16403 2007-06-12  Tristan Gingold  <gingold@adacore.com>
16404
16405         * gcov.c: Comments updated.
16406         (source_info): Add file_time field.
16407         (source_index): New variable.
16408         (mutiple_files): New variable.
16409         (generate_results): New function extracted from process_file.
16410         (process_file): Save and restore chain of functions, generate
16411         results and free structures only if not merging results.
16412         (release_structures): File names are now freed in create_file_names
16413         (create_file_names): Free previous file names.
16414         (find_source): File date is now read here and modifications in
16415         source files is checked here.
16416         (read_graph_file): Only reverse order of functions for the current
16417         object file.
16418         (make_gcov_file_name): Do not generate long names if input_name is
16419         NULL.
16420         (output_lines): If merging results do not display graph, data and
16421         runs informations.
16422         Checking source file modification is done in find_source.
16423
16424         * doc/gcov.texi: Append an s to sourcefile.
16425
16426 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
16427
16428         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
16429         (forced_nop): New pattern.
16430         * config/bfin/bfin.c: Include "df.h".
16431         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
16432         (bfin_discover_loop): Use df_get_live_in instead of
16433         global_live_at_start.
16434         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
16435         df_analyze when done.
16436         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
16437         the insns.  Use QImode for the final insn in a bundle.  Call
16438         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
16439         gen_nop.
16440         (reorder_var_tracking_notes): New function.
16441         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
16442         update_life_info.  Call df_analyze after scheduling and bundle
16443         generation.  Call reorder_var_tracking_notes if generating these
16444         notes.  Call df_finish_pass at the end.
16445
16446 2007-06-12  Dirk Mueller  <dmueller@suse.de>
16447
16448         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
16449         a comparison, not an assignment.
16450
16451 2007-06-12  Olivier Hainque  <hainque@adacore.com>
16452
16453         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
16454         Request walking the subtrees only, leaving the current is_lhs/val_only
16455         untouched.
16456         (convert_non_local_reference): Likewise.
16457
16458 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
16459
16460         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
16461
16462 2007-06-12  Richard Guenther  <rguenther@suse.de>
16463
16464         PR tree-optimization/15353
16465         PR tree-optimization/31657
16466         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
16467         * timevar.def: Add TV_TREE_IFCOMBINE.
16468         * tree-pass.h (pass_tree_ifcombine): Declare.
16469         * tree-ssa-ifcombine.c: New file.
16470         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
16471         * tree-flow.h (blocks_in_phiopt_order): Declare.
16472         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
16473         (tree-ssa-ifcombine.o): New dependencies.
16474
16475 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16476
16477         PR rtl-optimization/32293
16478         * combine.c (simplify_if_then_else): Truncate return from
16479         nonzero_bits() to correct mode.
16480
16481 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
16482
16483         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
16484         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
16485
16486 2007-06-11  Diego Novillo  <dnovillo@google.com>
16487
16488         * Makefile.in (reload1.o-warn): Remove.
16489
16490 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
16491
16492         * combine.c (subst): Use reg_overlap_mentioned_p
16493         instead of comparing register numbers directly.
16494
16495 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16496
16497         * reload1.c (mark_home_live_1): Use the mode parameter.
16498
16499 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
16500
16501         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
16502         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
16503         word "deferred".
16504         * df-core.c: Ditto.
16505
16506 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
16507
16508         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
16509
16510 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16511
16512         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
16513         from integer registers.
16514         (FP mode splitters): Handle TFmode.
16515
16516 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16517
16518         * tree-ssa-structalias.c (find_what_p_points_to): Return false
16519         for ref-all pointers that point-to anything.
16520
16521 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
16522
16523         * config/arm/arm.c (arm_output_dwarf_dtprel,
16524         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
16525
16526 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
16527
16528         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
16529         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
16530         to memory moves.
16531
16532 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
16533
16534         * tree.c (signed_or_unsigned_type_for): New.
16535         (unsigned_type_for): Use signed_or_unsigned_type_for.
16536         (signed_type_for): Use signed_or_unsigned_type_for.
16537         * tree.h (signed_or_unsigned_type_for): New.
16538         (get_signed_or_unsigned_type): Remove.
16539         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
16540         lang_hooks.types.signed_type
16541         (size_diffop): Likewise.
16542         (all_ones_mask_p): Likewise.
16543         (build_range_check): Likewise.
16544         (fold_cond_expr_with_comparison): Likewise.
16545         (fold_cond_expr_with_comparison): Likewise.
16546         (unextend): Likewise.
16547         (extract_muldiv_1): Likewise.
16548         (fold_single_bit_test_into_sign_test): Likewise.
16549         (fold_binary): Likewise.
16550         (fold_ternary): Likewise.
16551         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
16552         instead of get_signed_or_unsigned_type.
16553         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
16554         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16555         * expr.c (signed_or_unsigned_type_for): Use
16556         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
16557         * langhooks.c (get_signed_or_unsigned_type): Remove.
16558         (lhd_signed_or_unsigned_type): Remove.
16559         * langhooks.h (lang_hooks_for_types): Remove signed_type and
16560         signed_or_unsigned_type.
16561         (lhd_signed_or_unsigned_type): Remove.
16562         * expmed.c (make_tree): Use signed_type_for instead of
16563         lang_hooks.types.signed_type.
16564         * c-common.c (same_scalar_type_ignoring_signedness): Use
16565         c_common_signed_type instead of lang_hooks.types.signed_type.
16566         (c_common_unsigned_type): New.
16567         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
16568         (shorten_compare): Use c_common_unsigned_type instead of
16569         c_common_signed_or_unsigned_type.
16570         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
16571         unsigned_type_for.
16572         * convert.c (convert_to_integer): Use signed_type_for instead of
16573         lang_hooks.types.signed_type.
16574         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
16575         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
16576         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
16577         * c-format.c (check_format_types): Use c_common_unsigned_type
16578         instead of unsigned_type_for.
16579         * c-decl.c (groakdeclarator): Likewise.
16580         * c-typeck.c (convert_for_assignment): Likewise.
16581         * c-common.h (c_common_unsigned_type): New.
16582
16583 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16584
16585         PR target/32280
16586         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
16587         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
16588
16589 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
16590
16591         PR middle-end/32279
16592         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
16593         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
16594
16595 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
16596             Sebastian Pop  <sebpop@gmail.com>
16597
16598         * lambda-code.c (remove_iv): New.
16599         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
16600
16601 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
16602
16603         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
16604         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
16605         * tree-ssa-loop-prefetch.c: Include optabs.h.
16606         (FENCE_FOLLOWING_MOVNT): New macro.
16607         (struct mem_ref): Add independent_p and storent_p fields.
16608         (record_ref): Initalize the new fields.
16609         (gather_memory_references_ref): Return true if the reference
16610         could be analysed.
16611         (gather_memory_references): Check whether all memory accesses
16612         in loop were recorded.
16613         (should_issue_prefetch_p): Return false for nontemporal stores.
16614         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
16615         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
16616         (determine_loop_nest_reuse): Detect independent memory references.
16617         (loop_prefetch_arrays): Call mark_nontemporal_stores.
16618         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
16619         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
16620         * config/i386/i386.h (x86_mfence): Declare.
16621         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
16622         * config/i386/i386.c (x86_mfence): New variable.
16623         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
16624
16625         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
16626         * optabs.c (init_optabs): Initialize storent_optab.
16627         * optabs.h (enum optab_index): Add OTI_storent.
16628         (storent_optab): Declare.
16629         * genopinit.c (optabs): Add initialization for storent_optab.
16630         * tree.h (MOVE_NONTEMPORAL): New macro.
16631         * expr.c (expand_assignment, store_expr, store_constructor_field,
16632         store_constructor, store_field, expand_expr_real_1): Propagate
16633         nontemporality of the expanded store.
16634         (emit_storent_insn): New function.
16635         * expr.h (expand_assignment, store_expr): Declaration changed.
16636         * function.c (assign_parm_setup_reg): Pass false as nontemporality
16637         to expand_assignment.
16638         * stmt.c (expand_asm_expr): Ditto.
16639         * calls.c (initialize_argument_information): Pass false as
16640         nontemporality to store_expr.
16641         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
16642         storentsi): New.
16643
16644 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16645
16646         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
16647         parameter, use it.
16648         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
16649
16650 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
16651
16652         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
16653         and allow DECL_P here.
16654
16655 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
16656
16657         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
16658         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
16659         track of the size of the expression.
16660         * cfghooks.c (merge_blocks): Remove block from loops structure only
16661         after call of the merge_blocks hook.
16662
16663 2007-06-09  Tom Tromey  <tromey@redhat.com>
16664
16665         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
16666         (deprecated_state): Removed.
16667         (start_decl): Update.
16668         (enum deprecated_states): Moved earlier.
16669         (groktypename): Update.
16670         (push_parm_decl): Likewise.
16671         (grokfield): Likewise.
16672         (start_function): Likewise.
16673
16674 2007-06-09  Ian Lance Taylor  <iant@google.com>
16675
16676         PR tree-optimization/32169
16677         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
16678         CONVERT_EXPR, check whether min and max both converted to an
16679         overflow infinity representation.
16680
16681 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
16682
16683         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
16684         not inserted on the edge.
16685
16686 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
16687
16688         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
16689         instructions if they are supported.
16690         (__divsi3, __umodsi3, __modsi3): Likewise.
16691         (__ashldi3, __ashrdi3, __lshrdi3): New.
16692         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
16693
16694 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
16695             Tony Linthicum <tony.linthicum@amd.com>
16696
16697         * doc/invoke.texi: Add fvect-cost-model flag.
16698         * common.opt (fvect-cost-model): New flag.
16699         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
16700         cost fields in stmt_vec_info struct for STMT.
16701         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
16702         fields in stmt_vec_info struct and access functions for the same.
16703         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
16704         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
16705         load, store and vector to scalar operation.
16706         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
16707         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
16708         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
16709         (TARG_VEC_STORE_COST): Define cost of vector store.
16710         (vect_estimate_min_profitable_iters): Define new function.
16711         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
16712         check to evaluate if loop iterations are less than minimum profitable
16713         iterations determined by cost model or minimum vect loop bound defined
16714         by user, whichever is more conservative.
16715         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
16716         run-time check to evaluate if loop iterations are less than minimum
16717         profitable iterations determined by cost model or minimum vect loop
16718         bound defined by user, whichever is more conservative.
16719         (vect_estimate_min_profitable_iterations): New function to estimate
16720         mimimimum iterartions required for vector version of loop to be
16721         profitable over scalar version.
16722         (vect_model_reduction_cost): New function.
16723         (vect_model_induction_cost): New function.
16724         (vect_model_simple_cost): New function.
16725         (vect_cost_strided_group_size): New function.
16726         (vect_model_store_cost): New function.
16727         (vect_model_load_cost): New function.
16728         (vectorizable_reduction): Call vect_model_reduction_cost during
16729         analysis phase.
16730         (vectorizable_induction): Call vect_model_induction_cost during
16731         analysis phase.
16732         (vectorizable_load): Call vect_model_load_cost during analysis phase.
16733         (vectorizable_store): Call vect_model_store_cost during analysis phase.
16734         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
16735         vectorizable_promotion, vectorizable_demotion): Call
16736         vect_model_simple_cost during analysis phase.
16737
16738 2007-06-08  Simon Baldwin  <simonb@google.com>
16739
16740         * reg-stack.c (get_true_reg): Readability change.  Moved default case
16741         label into direct switch statement scope.
16742
16743 2007-06-08  Simon Baldwin  <simonb@google.com>
16744
16745         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
16746         in gcc_assert() with '==' comparison.
16747
16748 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16749
16750         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
16751         TARGET_ABM handling of x86_popcnt variable.
16752
16753 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16754
16755         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
16756         __builtin_copysignq and __builtin_infq built-in functions.
16757
16758 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16759
16760         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
16761         SSE4.2 section.  Correct built-in function names in SSE4A section.
16762
16763 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
16764
16765         PR tree-optimization/32243
16766         * tree-vect-transform.c (vectorizable_type_promotion): Move check
16767         for ncopies after ratio check between nunits_out and nunits_in.
16768         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
16769
16770 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
16771
16772         PR tree-optimization/32224
16773         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
16774         vectorization upon a non GIMPLE_MODIFY_STMT.
16775
16776 2007-06-08  Christian Bruel  <christian.bruel@st.com>
16777
16778         PR target/29953
16779         * config/sh/sh.md (doloop_end): New pattern and splitter.
16780         * loop-iv.c (simple_rhs_p): Check for hardware registers.
16781
16782 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
16783
16784         PR middle-end/32209
16785         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
16786         functions.
16787         (verify_dominators): Do not change dominance tree.
16788
16789 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
16790
16791         * config/sh/constraints.md: New file.
16792         * config/sh/sh.c: Include tm-constrs.h.
16793         (reg_class_from_letter): Remove.
16794         (prepare_cbranch_operands): Use satisfies_constraint_*
16795         function instead of macro.
16796         (andcosts, broken_move, sh_secondary_reload): Likewise.
16797         * config/sh/predicates.md (trapping_target_operand): Likewise.
16798         (and_operand, arith_operand, arith_reg_or_0_operand,
16799         cmp_operand, logical_operand, target_operand,
16800         ua_address_operand, ua_offset, xor_operand): Likewise.
16801         * config/sh/sh.md: Include constraints.md.
16802         (*movsicc_t_false): Use satisfies_constraint_* function
16803         instead of macro.
16804         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
16805         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
16806         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
16807         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
16808         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
16809         (REG_CLASS_FROM_CONSTRAINT): Remove.
16810         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
16811         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
16812         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
16813         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
16814         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
16815         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
16816         function instead of macro.
16817         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
16818         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
16819         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
16820         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
16821         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
16822         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
16823         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
16824         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
16825         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
16826         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
16827         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
16828         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
16829         EXTRA_CONSTRAINT_STR): Likewise.
16830         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
16831
16832 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16833
16834         * config/i386/darwin.h (STACK_BOUNDARY): Define.
16835
16836 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
16837
16838         PR c++/30759
16839         * c-common.h (flag_cpp0x): Replaced by...
16840         (cxx_dialect): ... this new variable specifying the C++ dialect that
16841         is used.
16842         * c-common.c (flag_cpp0x): Removed.
16843         (cxx_dialect): Defined.
16844         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
16845         cxx_dialect.
16846         * c-opts.c (c_common_post_options): Likewise.
16847         (set_std_cxx98): Set cxx_dialect to cxx98.
16848         (set_std_cxx0x): Set cxx_dialect to cxx0x.
16849
16850 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
16851             Hui-May Chang <hm.chang@apple.com>
16852
16853         * doc/invoke.texi (Darwin Options): Update documentation for
16854         -mmacosx-version-min.
16855         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
16856         * config/darwin-driver.c: New file.
16857         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
16858         * config/t-darwin (darwin-driver.o): New rule.
16859
16860         * config/darwin-c.c (version_as_macro): Ignore low digit.
16861
16862 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
16863
16864         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
16865         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
16866         (CSGNMODE): New mode macro.
16867         (CSGNVMODE): New mode attribute.
16868         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
16869         expander using CSGNMODE mode macro.  Handle TFmode.
16870         (copysign<mode>3_const): Rename from copysignsf3_const and
16871         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
16872         Handle TFmode.
16873         (copysign<mode>3_var): Rename from copysignsf3_var and
16874         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
16875         Handle TFmode.
16876         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
16877         mode macro.  Handle TFmode.
16878         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
16879         (iortf3, *iortf3): Ditto.
16880         (xortf3, *xortf3): Ditto.
16881         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
16882         TFmode and TImode masks.
16883         (ix86_expand_copysign): Expand TFmode copysign insn.
16884         (IX86_BUILTIN_INFQ): New.
16885         (IX86_BUILTIN_FABSQ): Ditto.
16886         (IX86_BUILTIN_COPYSIGNQ): Ditto.
16887         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
16888         [__builtin_fabsq]: Ditto.
16889         [__builtin_copysignq]: Ditto.
16890         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
16891         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
16892         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
16893         ix86_expand_binop_builtin().
16894
16895 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
16896
16897         * config/xtensa/lib1funcs.asm: Clean up whitespace.
16898
16899 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
16900
16901         PR target/31850
16902         * rtl.h (push_to_sequence2): New.
16903         * emit-rtl.c (push_to_sequence2): New.
16904         * function.c (assign_parm_data_all): Add new fields.
16905         (assign_parm_setup_block): Call push_to_sequence2 instead of
16906         push_to_sequence.
16907         (assign_parm_setup_reg): Ditto.
16908         (assign_parm_setup_stack): Ditto.
16909         (assign_parms_unsplit_complex): Ditto.
16910         (assign_parms): Change field name.
16911
16912 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
16913
16914         PR tree-optimization/32220
16915         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
16916         phi node is reached before defining statement.
16917
16918 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16919
16920         PR tree-opt/32231
16921         * tree-vect-transform.c (vectorizable_call): Call update_stmt
16922         after changing the right hand side of the assignment.
16923
16924 2007-06-06  Eric Christopher  <echristo@apple.com>
16925
16926         * config.gcc (i?86-*-darwin*): Remove arch parameter.
16927         (x86_64-*-darwin*): Ditto.
16928         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
16929         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
16930
16931 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
16932
16933         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
16934         coding conventions.
16935         (add_key): Likewise.
16936         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
16937         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
16938         variable names.
16939         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
16940         macros.
16941         (add_cost_one_coalesce): Likewise.
16942         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
16943         variable names. Rename orig to orig_name for consistency.
16944         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
16945         coding conventions.
16946         (cprop_into_successor_phis): Avoid using C++ keywords as variable
16947         names.
16948         (record_equivalences_from_stmt): Likewise.
16949         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
16950         the coding conventions.
16951         (memory_ssa_name_same): Likewise.
16952         (dse_optimize_stmt): Likewise.
16953         (dse_record_phis): Likewise.
16954         (dse_finalize_block): Likewise.
16955         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
16956         keywords as variable names.
16957         (may_move_till): Cast according to the coding conventions.
16958         (force_move_till_expr): Avoid using C++ keywords as variable names.
16959         (force_move_till): Cast according to the coding conventions.
16960         (memref_hash): Likewise.
16961         (memref_eq): Likewise.
16962         (gather_mem_refs_stmt): Likewise.
16963         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
16964         using C++ keywords as variable names.
16965         (idx_find_step): Cast according to the coding conventions.
16966         (idx_record_use): Likewise.
16967         (find_depends): Likewise.
16968         (prepare_decl_rtl): Likewise.
16969         (mbc_entry_hash): Likewise.
16970         (mbc_entry_eq): Likewise.
16971         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
16972         (simplify_replace_tree): Avoid using C++ keywords as variable names.
16973         (idx_infer_loop_bounds): Cast according to the coding conventions.
16974         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
16975         * tree-ssa-math-opts.c (occ_new ): Likwise.
16976         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
16977         macros.
16978         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
16979         variable names.
16980         (add_use_op): Likewise.
16981         (add_vop): Likewise.
16982         (add_vuse_op): Likewise.
16983         (add_vdef_op): Likewise.
16984         (get_expr_operands): Likewise.
16985         (push_stmt_changes): Use type safe memory macros.
16986         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
16987         keywords as variable names.
16988         (conditional_replacement): Likewise.
16989         (minmax_replacement): Likewise.
16990         (abs_replacement): Likewise.
16991         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
16992         coding conventions.
16993         (insert_fake_stores): Avoid using C++ keywords as variable names.
16994         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
16995         conventions.
16996         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
16997         (heapvar_insert): Use type safe memory macros.
16998         (new_var_info): Cast according to the coding conventions.
16999         (new_constraint): Likewise.
17000         (remove_preds_and_fake_succs): Use type safe memory macros.
17001         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
17002         conventions.
17003         (thread_single_edge): Likewise.
17004         (thread_through_loop_header): Likewise.
17005
17006 2007-06-06  Eric Christopher  <echristo@apple.com>
17007
17008         * config/i386/i386.c (override_options): Move handling
17009         of TARGET_SUBTARGET* earlier.
17010
17011 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
17012
17013         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
17014         use %n on printf.
17015
17016 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
17017
17018         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
17019         emited outside of basic block.
17020         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
17021         the created blocks.
17022         * rtl.h (delete_insn_chain): Declaration changed.
17023         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
17024         non-removed insns.
17025         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
17026         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
17027         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
17028         to delete_insn_chain.
17029         (rtl_verify_flow_info_1): Verify that the insns in header and footer
17030         do not have bb field set.
17031         (rtl_verify_flow_info): Verify that insns between basic blocks do not
17032         have bb field set.
17033         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
17034         * cfgcleanup.c (try_optimize_cfg): Ditto.
17035
17036 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17037
17038         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
17039         (lambda_body_vector_new): Use type safe memory macros.
17040         (lambda_linear_expression_new): Likewise.
17041         (lambda_loopnest_new): Likewise.
17042         (lambda_lattice_new): Likewise.
17043         (replace_uses_equiv_to_x_with_y): Cast according to the coding
17044         conventions. Use type safe memory macros.
17045         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
17046         (lambda_body_vector_s): Likewise.
17047         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
17048         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
17049
17050 2007-06-06  Richard Guenther  <rguenther@suse.de>
17051
17052         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
17053         if we need to schedule cfg_cleanup.
17054         (tree_ssa_forward_propagate_single_use_vars): Do so.
17055
17056 2007-06-06  Ian Lance Taylor  <iant@google.com>
17057
17058         * fold-const.c (merge_ranges): If range_successor or
17059         range_predecessor fail, just return 0.
17060
17061 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17062
17063         PR tree-optimization/32216
17064         * tree-vectorizer.c (supportable_widening_operation): Determine
17065         signedness of FIX_TRUNC_EXPR from output operand.
17066         (supportable_narrowing_operation): Ditto.
17067         * tree-vect-generic.c (expand_vector_operations_1): Determine
17068         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
17069         from input operand.
17070
17071 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17072
17073         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
17074         (struct pta): ...from here. Change flags to unsigned to avoid
17075         excessive casting (as it is used as a bit mask).
17076         (override_options): Add casts according to the coding convenventions.
17077         (x86_64_elf_unique_section): Likewise.
17078         (examine_argument): Avoid using C++ keywords as variable names.
17079         (construct_container): Likewise.
17080         (legitimize_pic_address): Likewise.
17081         (get_dllimport_decl): Cast according to the coding conventions. Use
17082         type safe memory macros.
17083         (legitimize_address): Cast according to the coding conventions.
17084         (emit_i387_cw_initialization): Corrected the type of slot to enum
17085         ix86_stack_slot.
17086         (ix86_init_machine_status): Use type safe memory macros.
17087         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
17088         (bdesc_pcmpistr): Likewise.
17089         (bdesc_crc32): Likewise.
17090         (bdesc_sse_3arg): Likewise.
17091         (bdesc_2arg): Likewise.
17092         (bdesc_1arg): Likewise.
17093         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
17094         (ix86_expand_sse_pcmpistr): Likewise.
17095         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
17096         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
17097         int to match the langhook definition.
17098         (ix86_builtin_conversion): Change the type of code to unsigned init to
17099         match the langhook definition.
17100         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
17101         names.
17102         (ix86_preferred_output_reload_class): Likewise.
17103         (ix86_cannot_change_mode_class): Likewise.
17104         (ix86_memory_move_cost): Likewise.
17105         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
17106         avoid excessive casting later on.
17107         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
17108
17109 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17110
17111         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
17112         as flags setting insn.
17113         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
17114
17115 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17116
17117         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
17118         (UNSPEC_ROUND): New.
17119         ("sse4_1_round<mode>2"): New insn pattern.
17120         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
17121         SSE4.1 targets.
17122         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
17123         expander using SSEMODEF mode macro.  Expand using
17124         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17125         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
17126         expander using SSEMODEF mode macro.  Expand using
17127         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17128         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
17129         expander using SSEMODEF mode macro.  Expand using
17130         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17131         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
17132         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
17133         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
17134         UNSPEC_ROUNDS.
17135
17136 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
17137             Sebastian Pop  <sebpop@gmail.com>
17138
17139         * lambda.h (build_linear_expr): New.
17140         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
17141         Use build_linear_expr, call fold and force_gimple_operand.
17142         (lambda_loopnest_to_gcc_loopnest): Check that there is
17143         something to insert.
17144         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
17145
17146 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
17147
17148         PR preprocessor/23479
17149         * doc/extend.texi: Document the 0b-prefixed binary integer
17150         constant extension.
17151
17152 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17153
17154         PR tree-optimization/32215
17155         * tree-vectorizer.c (supportable_widening_operation): Return false
17156         for unsupported FIX_TRUNC_EXPR tree code.
17157         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
17158
17159 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
17160
17161         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
17162         register on SPE targets.  Change documentation to reflect
17163         reality.
17164         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
17165         Change FIXED_SCRATCH to 14 and document why we're keeping r14
17166         out of the register allocation pool.
17167         (rs6000_reg_live_or_pic_offset_p): New function.
17168         (rs6000_emit_prologue): Move the actual saving of LR up to free
17169         r0 for holding r11.  Split saving of SPE 64-bit registers into
17170         its own case.  Ensure that offsets will always be in-range for
17171         'evstdd' by using r11 as a scratch register to point at the start
17172         of the SPE save area.  Save r11 if necessary, as it is the static
17173         chain register.
17174         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
17175         into its own case.  Ensure that offsets will always be in-range
17176         for 'evldd' by using r11 as a scratch register to point at the
17177         start of the SPE save area.  Also adjust r11 when restoring
17178         the stack pointer to compensate for pre-loading r11.
17179
17180 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
17181
17182         * cfg.c (init_flow): Use type safe memory macros.
17183         (alloc_block): Likewise.
17184         (unchecked_make_edge): Likewise.
17185         (dump_flow_info): Avoid using C++ keywords as variable names.
17186         (copy_original_table_clear): Cast according to the coding conventions.
17187         (copy_original_table_set): Likewise.
17188         * cfgexpand (label_rtx_for_bb): Likewise.
17189         (expand_gimple_basic_block): Likewise.
17190         * cfghooks.c (dump_bb): Likewise.
17191         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
17192         variable names.
17193         (lv_add_condition_to_bb): Likewise.
17194         * cfglayout (relink_block_chain): Cast according to the coding
17195         conventions.
17196         (fixup_reorder_chain): Likewise.
17197         (fixup_fallthru_exit_predecessor): Likewise.
17198         * cfgloop.c (glb_enum_p): Likewise.
17199         (get_exit_description): Likewise.
17200         (dump_recorded_exit): Likewise.
17201         * cfgloop.h (enum loop_estimation): Move out of struct scope...
17202         (struct loop): ... from here.
17203         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
17204         conventions.
17205         * cfgrtl.c (rtl_create_basic_block): Likewise.
17206         (rtl_split_block): Likewise.
17207         (rtl_dump_bb): Likewise.
17208         (cfg_layout_split_block): Likewise.
17209         (init_rtl_bb_info): Use typesafe memory macros.
17210
17211         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
17212         * graphds.h: Updated all usages of edge to graph_edge.
17213         * graphds.c: Likewise.
17214         * cfgloopanal.c: Likewise.
17215
17216 2007-06-05  Ian Lance Taylor  <iant@google.com>
17217
17218         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
17219         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
17220         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
17221         expression.
17222         (test_for_singularity): Likewise.
17223
17224 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17225
17226         * config/i386/constraints.md ("Y2"): Replaced by ...
17227         ("Yt"): This.
17228         * config/i386/i386.md: Likewise.
17229         * config/i386/mmx.md: Likewise.
17230         * config/i386/sse.md: Likewise.
17231
17232 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
17233
17234         * config/i386/constraints.md ("z"): Replaced by ...
17235         ("Y0"): This.
17236         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
17237         (sse4_1_blendvps): Likewise.
17238         (sse4_1_pblendvb): Likewise.
17239         (sse4_2_pcmpestr): Likewise.
17240         (sse4_2_pcmpestrm): Likewise.
17241         (sse4_2_pcmpestr_cconly): Likewise.
17242         (sse4_2_pcmpistr): Likewise.
17243         (sse4_2_pcmpistrm): Likewise.
17244         (sse4_2_pcmpistr_cconly): Likewise.
17245
17246 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
17247
17248         * matrix-reorg.c (transform_access_sites): Fix computation.
17249         (transform_allocation_sites): Same.
17250
17251 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17252
17253         * config/i386/i386.c (override_options): Use
17254         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
17255
17256 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
17257
17258         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
17259         (nonimm_not_xmm0_operand): Ditto.
17260         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
17261         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
17262         as operand[2] predicate.  Require "z" class XMM register for
17263         operand[3].  Adjust asm template.
17264         ("sse4_1_blendvpd"): Ditto.
17265         ("sse4_1_pblendvb"): Ditto.
17266         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
17267         force op2 into xmm0 register for variable blend instructions.
17268
17269 2007-06-04  Tom Tromey  <tromey@redhat.com>
17270
17271         * c-tree.h (start_enum): Update.
17272         (build_enumerator): Likewise.
17273         * c-decl.c (enum_next_value): Removed.
17274         (enum_overflow): Likewise.
17275         (start_enum): Add c_enum_contents argument.  Don't use globals.
17276         (build_enumerator): Likewise.
17277         * c-tree.h (struct c_enum_contents): New struct.
17278
17279 2007-06-04  Tom Tromey  <tromey@redhat.com>
17280
17281         * c-common.c (c_common_get_alias_set): Fix indentation.
17282
17283 2007-06-04  Ian Lance Taylor  <iant@google.com>
17284
17285         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
17286         to overflow, reduce overflow infinity to regular infinity.
17287         (vrp_var_may_overflow): New static function.
17288         (vrp_visit_phi_node): Check vrp_var_may_overflow.
17289
17290 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
17291
17292         * stor-layout.c (layout_type): Remove duplicate code.
17293
17294 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
17295
17296         PR c/32191
17297         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
17298         before build_common_builtin_nodes ().
17299
17300 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
17301
17302         PR target/31733
17303         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
17304
17305 2007-06-04  Jan Hubicka  <jh@suse.cz>
17306
17307         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
17308         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
17309         instead of _stat version.
17310
17311 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17312
17313         PR tree-optimization/32194
17314         * tree-predcom.c (determine_offset): Check that both references have
17315         the same type.
17316
17317 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
17318
17319         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
17320         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
17321         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
17322         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
17323         Add argument to iterate_fix_dominators call.
17324         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
17325         * gcse.c (hoist_code): Change domby to vector.
17326         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
17327         Add argument to iterate_fix_dominators call.
17328         * loop-doloop.c (doloop_modify): Changed recount_dominator to
17329         recompute_dominator.
17330         * lambda-code.c (perfect_nestify): Ditto.
17331         * cfgloopanal.c: Include graphds.h.
17332         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
17333         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
17334         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
17335         add_edge call.
17336         * graphds.c: New file.
17337         * graphds.h: New file.
17338         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
17339         (get_dominated_by, get_dominated_by_region): Change return type to
17340         vector.
17341         (verify_dominators): Recompute all dominators and compare the results.
17342         (recount_dominator): Renamed to ...
17343         (recompute_dominator): ... this.  Do not check that the block is
17344         dominated by entry.
17345         (iterate_fix_dominators): Reimplemented.
17346         (prune_bbs_to_update_dominators, root_of_dom_tree,
17347         determine_dominators_for_sons): New functions.
17348         * et-forest.c (et_root): New function.
17349         * et-forest.h (et_root): Declare.
17350         * Makefile.in (graphds.o): Add.
17351         (cfgloopanal.o): Add graphds.h dependency.
17352         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
17353         * basic-block.h (get_dominated_by, get_dominated_by_region,
17354         iterate_fix_dominators): Declaration changed.
17355         (recount_dominator): Renamed to ...
17356         (recompute_dominator): ... this.
17357         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
17358         (thread_through_all_blocks): Do not free dominance info.
17359
17360 2007-06-03  Andreas Schwab  <schwab@suse.de>
17361
17362         * config/m68k/m68k.c (override_options): Don't override
17363         REAL_MODE_FORMAT.
17364         * config/m68k/m68k-modes.def (SF, DF): Define to use
17365         motorola_single_format and motorola_double_format, resp.
17366         * real.c (motorola_single_format): Renamed from
17367         coldfire_single_format.
17368         (motorola_double_format): Renamed from coldfire_double_format.
17369         (encode_ieee_extended): Generate a proper canonical NaN image
17370         respecting canonical_nan_lsbs_set.
17371         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
17372         true.
17373         * real.h: Adjust declarations.
17374
17375 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
17376
17377         PR target/32163
17378         * config/sh/sh.md (symGOT_load): Don't schedule insns when
17379         the symbol is generated with the stack protector.
17380
17381 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
17382
17383         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
17384         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
17385         "interrupt".
17386         * doc/extend.texi (interrupt): Mention m68k.
17387
17388 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
17389
17390         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
17391         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
17392         (ix86_expand_sse_pcmpestr): Do not check operands for
17393         "register_operand", when insn operand predicate is "register_operand".
17394         (ix86_expand_sse_pcmpistr): Ditto.
17395
17396 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
17397             Uros Bizjak  <ubizjak@gmail.com>
17398
17399         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
17400         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
17401         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
17402         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
17403         * config/i386/constraints.md ("z"): New register constraint
17404         for members of SSE_FIRST_REG class.
17405         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
17406         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
17407         SSE_FIRST_REG class.
17408         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
17409         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
17410         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
17411         (IX86_BUILTIN_PCMPESTRM128): Likewise.
17412         (IX86_BUILTIN_PCMPESTRA128): Likewise.
17413         (IX86_BUILTIN_PCMPESTRC128): Likewise.
17414         (IX86_BUILTIN_PCMPESTRO128): Likewise.
17415         (IX86_BUILTIN_PCMPESTRS128): Likewise.
17416         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
17417         (IX86_BUILTIN_PCMPISTRI128): Likewise.
17418         (IX86_BUILTIN_PCMPISTRM128): Likewise.
17419         (IX86_BUILTIN_PCMPISTRA128): Likewise.
17420         (IX86_BUILTIN_PCMPISTRC128): Likewise.
17421         (IX86_BUILTIN_PCMPISTRO128): Likewise.
17422         (IX86_BUILTIN_PCMPISTRS128): Likewise.
17423         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
17424         (struct builtin_description): Change "flag" field to unsigned.
17425         (bdesc_pcmpestr): New builtin description table.
17426         (bdesc_pcmpistr): Likewise.
17427         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
17428         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
17429         Initialize pcmp[ei]str[im] insns for SSE4.2.
17430         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
17431         (ix86_expand_sse_pcmpistr): Likewise.
17432         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
17433         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
17434         (UNSPEC_PCMPISTR): Likewise.
17435         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
17436         (sse4_2_pcmpestri):New isns pattern.
17437         (sse4_2_pcmpestrm): Likewise.
17438         (sse4_2_pcmpestr_cconly): Likewise.
17439         (sse4_2_pcmpistr): New insn patern and splitter.
17440         (sse4_2_pcmpistri):New isns pattern.
17441         (sse4_2_pcmpistrm): Likewise.
17442         (sse4_2_pcmpistr_cconly): Likewise.
17443         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
17444         in SSE4.2.
17445
17446 2007-06-01  David Daney  <ddaney@avtrex.com>
17447
17448         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
17449         LOADGP_ABSOLUTE and not binds_local_p.
17450
17451 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
17452
17453         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
17454
17455 2007-06-01  Ian Lance Taylor  <iant@google.com>
17456
17457         * tree-vrp.c (compare_name_with_value): Always set
17458         used_strict_overflow if we get a result from the variable itself.
17459
17460 2007-06-01  Ian Lance Taylor  <iant@google.com>
17461
17462         PR rtl-optimization/31455
17463         * lower-subreg.c (find_decomposable_subregs): Don't decompose
17464         subregs which have a cast between modes which are not tieable.
17465
17466 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
17467
17468         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
17469         breaks after return statements.
17470
17471 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
17472
17473         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
17474         only after no_new_pseudos.
17475
17476 2007-05-31  Eric Christopher  <echristo@apple.com>
17477
17478         * expr.c (convert_move): Assert that we don't have a BLKmode
17479         operand.
17480         (store_expr): Handle BLKmode moves by calling emit_block_move.
17481
17482 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
17483
17484         * c-typeck.c (build_indirect_ref): Include type in error message.
17485         (build_binary_op): Pass types to binary_op_error.
17486         * c-common.c (binary_op_error): Take two type arguments, print out
17487         types with error.
17488         * c-common.h (binary_op_error): Update prototype.
17489
17490 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17491
17492         * config/i386/i386.c: Correct coments on -mno-sse4.
17493
17494 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
17495
17496         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
17497         (x86_64-*-*): Likewise.
17498         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
17499         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
17500         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
17501         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
17502         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
17503         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
17504         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
17505         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
17506         (OPTION_MASK_ISA_SSE4): Likewise.
17507         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
17508         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
17509         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
17510         (override_options): Support SSE4.2.
17511         (ix86_build_const_vector): Support SImode and DImode.
17512         (ix86_build_signbit_mask): Likewise.
17513         (ix86_expand_int_vcond): Support V2DImode.
17514         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
17515         (IX86_BUILTIN_CRC32HI): Likewise.
17516         (IX86_BUILTIN_CRC32SI): Likewise.
17517         (IX86_BUILTIN_CRC32DI): Likewise.
17518         (IX86_BUILTIN_PCMPGTQ): Likewise.
17519         (bdesc_crc32): Likewise.
17520         (bdesc_sse_3arg): Likewise.
17521         (ix86_expand_crc32): Likewise.
17522         (ix86_init_mmx_sse_builtins): Support SSE4.2.
17523         (ix86_expand_builtin): Likewise.
17524         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
17525         __SSE4_2__ for -msse4.2.
17526         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
17527         (CRC32MODE): Likewise.
17528         (crc32modesuffix): Likewise.
17529         (crc32modeconstraint): Likewise.
17530         (sse4_2_crc32<mode>): Likewise.
17531         (sse4_2_crc32di): Likewise.
17532         * config/i386/i386.opt (msse4.2): New for SSE4.2.
17533         (msse4): Likewise.
17534         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
17535         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
17536         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
17537         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
17538         (vcondu<mode>): Likewise.
17539         * doc/extend.texi: Document SSE4.2 built-in functions.
17540         * doc/invoke.texi: Document -msse4.2/-msse4.
17541
17542 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
17543
17544         PR tree-optimization/32160
17545         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
17546         variable as gimple reg.
17547         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
17548
17549 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
17550
17551         * gcc.c (main): Don't consider linker options when issuing the
17552         warning about a linker input file not being used.
17553
17554 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17555
17556         * tree-vrp.c (compare_names): Initialize sop.
17557
17558 2007-05-30  Dirk Mueller  <dmueller@suse.de>
17559
17560         * cgraphunit.c (cgraph_analyze_function): Remove
17561         computation of inline parameters.
17562
17563 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
17564
17565         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
17566
17567 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
17568
17569         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
17570         Add vx-common.h.  Include vxworks.h between vx-common.h and
17571         arm/vxworks.h.
17572         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
17573         redefining.
17574         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
17575         (TARGET_ASM_DESTRUCTOR): Likewise.
17576         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
17577         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
17578         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
17579         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
17580         (VXWORKS_ENDIAN_SPEC): Define.
17581         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
17582         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
17583         VXWORKS_* equivalents.
17584         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
17585         (ASM_FILE_START): Delete.
17586         (TARGET_VERSION): Reformat.
17587         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
17588         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
17589         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
17590         (FPBIT, DPBIT): Define.
17591         (fp-bit.c, dp-bit.c): New rules.
17592         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
17593         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
17594         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
17595         * config/arm/arm.h: Include vxworks-dummy.h.
17596         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
17597         Mark with ATTRIBUTE_UNUSED.
17598         (arm_override_options): Do not allow VxWorks RTP PIC to be used
17599         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
17600         make it incompatible with -msingle-pic-base.
17601         (arm_function_ok_for_sibcall): Return false for calls that might
17602         go through a VxWorks PIC PLT entry.
17603         (require_pic_register): New function, split out from...
17604         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
17605         for VxWorks RTPs.
17606         (arm_load_pic_register): Handle the VxWorks RTP initialization
17607         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
17608         (arm_emit_call_insn): New function.
17609         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
17610         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
17611         (pic_offset_arm): New pattern.
17612         (call, call_value): Use arm_emit_call_insn.
17613         (call_internal, call_value_internal): New expanders.
17614         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
17615         VxWorks unless __PIC__.
17616
17617 2007-05-30  Eric Christopher  <echristo@gmail.com>
17618
17619         * genrecog.c: Include regs.h in generated file.
17620         * genemit.c: Ditto. Fix up formatting.
17621         * config/mn10300/constraints.md: New.
17622         * config/mn10300/mn10300.md: Include.
17623         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
17624         Fix up for removed macro.
17625         * config/mn10300/predicates.md (call_address_operand): Ditto.
17626         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
17627         (CONST_OK_FOR_I): Ditto.
17628         (CONST_OK_FOR_J): Ditto.
17629         (CONST_OK_FOR_K): Ditto.
17630         (CONST_OK_FOR_L): Ditto.
17631         (CONST_OK_FOR_M): Ditto.
17632         (CONST_OK_FOR_N): Ditto.
17633         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
17634         (OK_FOR_Q): Ditto.
17635         (OK_FOR_R): Ditto.
17636         (OK_FOR_T): Ditto.
17637         (EXTRA_CONSTRAINT): Ditto.
17638
17639 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17640
17641         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
17642         Remove defines.
17643         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
17644         OPTION_MASK_ISA_64BIT.
17645         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
17646
17647 2007-05-30  Richard Guenther  <rguenther@suse.de>
17648
17649         PR middle-end/32152
17650         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
17651         types for comparison.
17652         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
17653         with original typed arguments.
17654         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
17655
17656 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
17657
17658         PR tree-optimization/31769
17659         * except.c (duplicate_eh_regions): Clear prev_try if
17660         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
17661
17662 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
17663
17664         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
17665         * tree-ssa-sink.c (statement_sink_location): Return basic block and
17666         bsi of the location where statements should be inserted.
17667         (sink_code_in_bb): Take bsi from statement_sink_location.
17668         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
17669         instead of bsi_start.
17670         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
17671         bsi_insert_after.
17672         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
17673         (bsi_move_before): Document inconsistency with bsi_move_after.
17674         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
17675
17676 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
17677
17678         * config/i386/i386.h (TARGET_ABM): New define.
17679         (TARGET_POPCNT): Ditto.
17680         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
17681         New temporary defines to redefine from OPTION_ISA_* defines.
17682         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
17683         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
17684         (ix86_isa_flags): New extern int declaration.
17685         (TARGET_SUBTARGET_DEFAULT): New define.
17686         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
17687         (TARGET_SUBTARGET32_DEFAULT): Ditto.
17688         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
17689         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17690         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
17691         * config/i386/darwin.h: Change TARGET_64BIT define to
17692         OPTION_ISA_64BIT.
17693
17694         * config/i386/i386.opt (m3dnowa): Define as undocumented option
17695         using existing "ix86_isa_flags" varible.
17696         (m32, m64): Use existing "ix86_isa_flags" variable.
17697         (mmmx, m3dnow): Ditto.
17698         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
17699         (mabm): Define as non-negative option using "x86_abm" variable.
17700         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
17701
17702         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
17703         Rewrite feature test bitmap.
17704         (ix86_isa_flags): New initialized global int varible.
17705         (ix86_isa_flags_explicit): New static int variable.
17706         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
17707         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
17708         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
17709         target_flags_explicit.
17710         (override_options): Remove "target_enable" and "target_disable" fields
17711         from "struct ptt". Update processor_target_table accordingly. Remove
17712         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
17713         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
17714         "target_flags" and "ix86_isa_flags_explicit" instead of
17715         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
17716         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
17717         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
17718         to true when either of PTA_POPCNT or PTA_ABM is set in
17719         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
17720         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
17721         processor_alias_table flags entry.  Remove handling of
17722         "target_enable" and "target_disable" fields of processor_target_table.
17723         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
17724         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
17725         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
17726         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
17727         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
17728         "target_flags".
17729         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
17730
17731 2007-05-29  David Daney  <ddaney@avtrex.com>
17732
17733         PR gcc/31975
17734         * config/mips/mips.c (mips_output_mi_thunk): Emit
17735         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
17736
17737 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
17738         * config/i386/i386.c (ix86_function_regparm): Added checking of
17739         ix86_force_align_arg_pointer to determine the number of
17740         register parameters.
17741
17742 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
17743
17744         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
17745         (SET_DR_MISALIGNMENT): New.
17746         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
17747         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
17748         Use SET_DR_MISALIGNMENT.
17749         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
17750         pointer.
17751         * tree-data-ref.c (create_data_ref, compute_all_dependences,
17752         find_loop_nest): Export.
17753         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
17754         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
17755         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
17756         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
17757         New macros.
17758         (struct mem_ref): Add field reuse_distance.
17759         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
17760         Initialize reuse_distance field.
17761         (issue_prefetch_ref): Select temporality of prefetch according to
17762         reuse_distance.
17763         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
17764         self_reuse_distance, determine_loop_nest_reuse): New functions.
17765         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
17766         (tree_ssa_prefetch_arrays): Dump L2 cache size.
17767         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
17768         dependency.
17769
17770 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
17771
17772         * tree-ssa-alias.c: Add aliasing overview.
17773
17774 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
17775             Danny Smith  <dannysmith@users.sourceforge.net>
17776
17777         PR target/29498
17778         * config/i386/t-crtfm: Compile crtfastmath.o with
17779         -minline-all-stringops.
17780         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
17781         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
17782
17783 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17784
17785         * doc/md.texi: Document constraints on HP PA-RISC.
17786
17787         * pa/constraints.md: New file.
17788         * pa.md: Include constraints.md.
17789         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
17790         (integer_store_memory_operand, ldil_cint_p): New functions.
17791         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
17792         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17793         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
17794         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
17795         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
17796
17797 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
17798
17799         PR c/31339
17800         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
17801         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
17802         case POSTDECREMENT_EXPR>): Return the error_mark_node
17803         if either the real or imaginary parts would an
17804         error_mark_node.
17805
17806 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
17807
17808         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
17809         name when we remove it from a call.
17810
17811 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
17812
17813         * targhooks.c (default_narrow_bitfield): Remove.
17814         * targhooks.h: Remove the prototype for
17815         default_narrow_bitfield.
17816
17817         * langhooks-def.h: Remove the prototype for
17818         hook_get_alias_set_0.
17819         * langhooks.c (hook_get_alias_set_0): Remove.
17820
17821         * global.c (EXECUTE_IF_CONFLICT): Remove.
17822
17823 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17824
17825         PR tree-opt/32100
17826         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
17827         return true when truth_value_p is true and the type
17828         is of signed:1.
17829
17830 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
17831
17832         * doc/install.texi (Prerequisites): We no longer require Autoconf
17833         2.13 for the top-level.
17834
17835 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
17836
17837         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
17838         memory access via x86_expand_vector_move_misalign() only for
17839         TImode values on 32-bit targets.
17840
17841 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
17842
17843         * matrix-reorg.c: New file. Implement matrix flattening and
17844         transposing optimization.
17845         * tree-pass.h: Add matrix reorg pass.
17846         * common.opt: Add fipa-mreorg flag.
17847         * Makefile.in: Add matrix-reorg.c.
17848         * passes.c: Add matrix reorg pass.
17849         * varpool.c (add_new_static_var): New function.
17850         * cgraph.h (add_new_static_var): Declare.
17851
17852 2007-05-27  Eric Christopher  <echristo@apple.com>
17853
17854         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
17855         sp_offset depending on stack size. Save r12 depending
17856         on registers we're saving later.
17857         (rs6000_emit_epilogue): Update sp_offset depending only
17858         on stack size.
17859
17860 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
17861
17862         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
17863         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
17864         * ifcvt.c (if_convert): Ditto.
17865         * tree-ssa-threadupdate.c (thread_block): Ditto.
17866         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
17867         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
17868         verify_loop_closed_ssa): Check number_of_loops instead of
17869         current_loops.
17870         * predict.c (tree_estimate_probability): Ditto.
17871         * tree-if-conv.c (main_tree_if_conversion): Ditto.
17872         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
17873         * modulo-sched.c (sms_schedule): Ditto.
17874         * tree-scalar-evolution.c (scev_const_prop): Ditto.
17875         (scev_finalize): Do not do anything if scev analysis was not
17876         initialized.
17877         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
17878         current_loops == NULL.
17879         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
17880         * loop-init.c (loop_optimizer_init): Do not free current_loops when
17881         there are no loops.
17882         (loop_optimizer_finalize): Assert that loops were analyzed.
17883         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
17884         rtl_doloop): Check number_of_loops instead of current_loops.
17885         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
17886         current_loops == NULL.
17887         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
17888         gate_tree_vectorize tree_linear_transform, check_data_deps,
17889         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
17890         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
17891         Check number_of_loops instead of current_loops.
17892         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
17893         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
17894         free loops if available.
17895         (execute_pre): Do not pass do_fre to fini_pre.
17896
17897 2007-05-27  Tobias Burnus  <burnus@net-b.de>
17898
17899         PR middle-end/32083
17900         * real.c (mpfr_from_real): Fix sign of -Inf.
17901
17902 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17903
17904         * tree-vect-transform.c (vectorizable_conversion): Initialize
17905         tree_code variables to ERROR_MARK.
17906         (vectorizable_type_demotion): Likewise.
17907         (vectorizable_type_promotion): Likewise.
17908
17909 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
17910
17911         PR target/32065
17912         * config/i386/i386.md (movti): Handle push operands via
17913         ix86_expand_push().
17914
17915 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
17916
17917         * basic-block.h: Remove the prototype for merge_seq_blocks.
17918         * cfgcleanup.c (merge_seq_blocks): Remove.
17919
17920         * tree-flow.h: Remove the prototype for is_aliased_with.
17921         * tree-ssa-alias.c (is_aliased_with): Remove.
17922
17923 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17924
17925         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
17926
17927         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
17928
17929         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
17930         ix86_expand_sse4_unpack if SSE4.1 is enabled.
17931         (vec_unpacks_hi_v16qi): Likewise.
17932         (vec_unpacku_lo_v16qi): Likewise.
17933         (vec_unpacks_lo_v16qi): Likewise.
17934         (vec_unpacku_hi_v8hi): Likewise.
17935         (vec_unpacks_hi_v8hi): Likewise.
17936         (vec_unpacku_lo_v8hi): Likewise.
17937         (vec_unpacks_lo_v8hi): Likewise.
17938         (vec_unpacku_hi_v4si): Likewise.
17939         (vec_unpacks_hi_v4si): Likewise.
17940         (vec_unpacku_lo_v4si): Likewise.
17941         (vec_unpacks_lo_v4si): Likewise.
17942
17943 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
17944
17945         * c-typeck.c, config/arm/arm.c, config/darwin.c,
17946         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
17947         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
17948         follow spelling conventions in various
17949         warning/error/diagnostic messages.
17950
17951         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
17952         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
17953         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
17954         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
17955         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
17956         * doc/tm.texi: Follow spelling conventions.
17957
17958 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17959
17960         PR tree-opt/32090
17961         * tree-ssa-forwprop.c
17962         (forward_propagate_addr_into_variable_array_index): Remove
17963         the lhs argument.  Use the type of def_rhs instead of lhs.
17964         (forward_propagate_addr_expr_1): Update use of
17965         forward_propagate_addr_into_variable_array_index.
17966
17967 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
17968             Nigel Stephens  <nigel@mips.com>
17969
17970         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
17971         function attributes, "far" being an alias for "long_call".
17972         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
17973         (mips_near_type_p, mips_far_type_p): New.
17974         (mips_comp_type_attributes): New function to check that attributes
17975         attached to a function type are compatible.
17976         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
17977         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
17978         to the target function of the thunk.
17979         (mips_encode_section_info): Check for "near" and "far" function
17980         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
17981
17982         * config/mips/predicates.md (const_call_insn_operand): Test only
17983         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
17984
17985         * doc/extend.texi (Function Attributes): Document MIPS "near" and
17986         "far" attributes.
17987
17988         * testsuite/gcc.target/mips/near-far-1.c: New test case.
17989         * testsuite/gcc.target/mips/near-far-2.c: New test case.
17990         * testsuite/gcc.target/mips/near-far-3.c: New test case.
17991         * testsuite/gcc.target/mips/near-far-4.c: New test case.
17992
17993 2007-05-25  Eric Christopher  <echristo@apple.com>
17994
17995         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
17996         to x86-darwin configurations.
17997         * config/i386/t-darwin: Add softfp support.
17998         * config/i386/t-darwin64: Ditto.
17999         * config/i386/sfp-machine.h: If mach then don't use
18000         aliasing, emit a stub to call.
18001
18002 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
18003
18004         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
18005         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
18006         tree-predcom.c, tree-ssa-alias-warnings.c,
18007         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
18008         comment typos.  Follow spelling conventions.
18009         * doc/cpp.texi, doc/invoke.texi: Fix typos.
18010
18011 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18012
18013         PR target/32065
18014         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
18015         constants into memory.  Expand unaligned memory references for
18016         SSE modes via x86_expand_vector_move_misalign() function.
18017
18018 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
18019
18020         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
18021         "memory" attribute for "sseishft" type insn without operands[2].
18022
18023 2007-05-25  Dirk Mueller  <dmueller@suse.de>
18024             Marcus Meissner <meissner@suse.de>
18025
18026         * doc/extend.texi (alloc_size): New attribute.
18027         * c-common.c (handle_alloc_size_attribute): New.
18028         * tree-object-size.c (alloc_object_size): Use alloc_size
18029         attribute, if available.
18030
18031 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18032
18033         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
18034         with MASK_SSE2.
18035         (__builtin_ia32_vec_ext_v2di): Likewise.
18036         (__builtin_ia32_vec_ext_v4si): Likewise.
18037         (__builtin_ia32_vec_ext_v8hi): Likewise.
18038         (__builtin_ia32_vec_ext_v16qi): Likewise.
18039         (__builtin_ia32_vec_set_v8hi): Likewise.
18040
18041 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18042
18043         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
18044
18045 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
18046
18047         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
18048         (arm_is_longcall_p): Rename to...
18049         (arm_is_long_call_p): ...this.  Take a single tree argument and
18050         return a bool.
18051         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
18052         (CUMULATIVE_ARGS): Remove call_cookie.
18053         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
18054         (ENCODED_LONG_CALL_ATTR_P): Delete.
18055         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
18056         LONG_CALL_FLAG_CHAR cases.
18057         (ARM_DECLARE_FUNCTION_SIZE): Delete.
18058         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
18059         ARM_DECLARE_FUNCTION_SIZE.
18060         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
18061         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
18062         (arm_encode_call_attribute, current_file_function_operand): Delete.
18063         (arm_function_in_section_p): New function.
18064         (arm_is_longcall_p): Rename to...
18065         (arm_is_long_call_p): ...this.  Take the target function as a single
18066         argument and return a bool.  Do not rely on call cookies.  Check
18067         whether the target symbol is in the same section as the current
18068         function, not just the same compilation unit.
18069         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
18070         (arm_encode_section_info): Don't encode a call type.
18071         * config/arm/arm.md (call, call_value): Update calls to
18072         arm_is_long(_)call_p.  Simplify logic.
18073         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
18074         Update calls to arm_is_long(_)call_p.
18075
18076 2007-05-25  Richard Guenther  <rguenther@suse.de>
18077
18078         PR tree-optimization/31982
18079         * tree-ssa-forwprop.c
18080         (forward_propagate_addr_into_variable_array_index): Handle arrays
18081         with element size one.
18082
18083 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18084
18085         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
18086         (umulsi3_highpart): Likewise.
18087
18088 2007-05-24  Ian Lance Taylor  <iant@google.com>
18089
18090         PR rtl-optimization/32069
18091         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
18092         is NULL.
18093
18094 2007-05-24  Ollie Wild  <aaw@google.com>
18095
18096         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
18097         description.
18098
18099 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
18100
18101         * postreload-gcse.c (reg_changed_after_insn_p): New function.
18102         (oprs_unchanged_p): Use it to check all registers in a REG.
18103         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
18104         (reg_set_between_after_reload_p): Delete.
18105         (reg_used_between_after_reload_p): Likewise.
18106         (reg_set_or_used_since_bb_start): Likewise.
18107         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
18108         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
18109         Use reg_set_between_p instead of reg_set_between_after_reload_p.
18110         * rtlanal.c (reg_set_p): Check whether REG overlaps
18111         regs_invalidated_by_call, rather than just checking the
18112         membership of REGNO (REG).
18113
18114 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18115
18116         * doc/passes.texi: Document predictive commoning.
18117         * doc/invoke.texi (-fpredictive-commoning): Document.
18118         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
18119         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
18120         adding indices to the generated name.
18121         (schedule_sm): Pass 0 to get_lsm_tmp_name.
18122         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
18123         * tree-pretty-print.c (op_symbol_1): Renamed to ...
18124         (op_symbol_code): ... and exported.
18125         (dump_omp_clause, op_symbol): Use op_symbol_code
18126         instead of op_symbol_1.
18127         * tree-pass.h (pass_predcom): Declare.
18128         * timevar.def (TV_PREDCOM): New timevar.
18129         * tree-ssa-loop.c (run_tree_predictive_commoning,
18130         gate_tree_predictive_commoning, pass_predcom): New.
18131         * tree-data-ref.c (find_data_references_in_loop): Find the
18132         references in dominance order.
18133         (canonicalize_base_object_address): Ensure that the result has
18134         pointer type.
18135         (dr_analyze_innermost): Export.
18136         (create_data_ref): Code to fail for references with invariant
18137         address moved ...
18138         (find_data_references_in_stmt): ... here.
18139         * tree-data-ref.h (dr_analyze_innermost): Declare.
18140         * tree-affine.c: Include tree-gimple.h and hashtab.h.
18141         (aff_combination_find_elt, name_expansion_hash,
18142         name_expansion_eq, tree_to_aff_combination_expand,
18143         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
18144         New functions.
18145         * tree-affine.h (aff_combination_constant_multiple_p,
18146         tree_to_aff_combination_expand): Declare.
18147         * tree-predcom.c: New file.
18148         * common.opt (fpredictive-commoning): New option.
18149         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
18150         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
18151         * Makefile.in (tree-predcom.o): Add.
18152         (tree-affine.o): Add TREE_GIMPLE_H dependency.
18153         * passes.c (init_optimization_passes): Add dceloop after
18154         copy propagation in loop optimizer.  Add predictive commoning
18155         to loop optimizer passes.
18156
18157 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18158
18159         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
18160         default hook.
18161
18162 2007-05-24  Jan Hubicka  <jh@suse.cz>
18163
18164         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
18165         statistics.
18166         (genheader): Include statistics.h.
18167
18168         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
18169         notes are gone.
18170         * print-rtl.c (flag_dump_unnumbered): Update comments.
18171         (print_rtl): Fix my previous change.
18172         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
18173         specific data.
18174
18175 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18176
18177         PR middle-end/32018
18178         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
18179         set_loop_copy.
18180         (thread_through_all_blocks): Call initialize_original_copy_tables
18181         and free_original_copy_tables.
18182         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
18183         Use set_loop_copy.
18184         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
18185         * cfghooks.c (duplicate_block): Use get_loop_copy.
18186         * cfg.c: Include cfgloop.h.
18187         (loop_copy): New hash table.
18188         (initialize_original_copy_tables): Initialize loop_copy table.
18189         (free_original_copy_tables): Free loop_copy table.
18190         (copy_original_table_clear, copy_original_table_set,
18191         set_loop_copy, get_loop_copy): New functions.
18192         (set_bb_original, set_bb_copy): Use copy_original_table_set.
18193         * cfgloop.h (struct loop): Remove copy field.
18194         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
18195         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
18196
18197 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18198
18199         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
18200         -msse/-msse2/-msse3.
18201
18202 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18203
18204         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
18205         __builtin_ia32_vec_set_v2di with MASK_64BIT.
18206
18207 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
18208
18209         PR target/27067
18210         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
18211         * targhooks.h (default_mangle_decl_assembler_name): Declare
18212         default hook.
18213         * targhooks.c (default_mangle_decl_assembler_name): Define
18214         default hook.
18215         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
18216         default hook.
18217         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
18218         * langhooks.c (lhd_set_decl_assembler_name): Call
18219         targetm.mangle_decl_assembler_name for names with global scope.
18220
18221         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
18222         default.
18223         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
18224         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
18225         Declare.
18226         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
18227         New. Factored out of i386_pe_encode_section_info.
18228         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
18229         Move check for prior decoration of stdcall
18230         symbols to i386_pe_encode_section_info.
18231         (i386_pe_encode_section_info): Adjust call to
18232         gen_stdcall_or_fastcall_suffix.  Use
18233         i386_pe_maybe_mangle_decl_assembler_name, if needed.
18234         (i386_pe_mangle_decl_assembler_name): New. Wrap
18235         i386_pe_maybe_mangle_decl_assembler_name.
18236
18237 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
18238
18239         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
18240         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
18241         * langhooks.c (get_signed_or_unsigned_type): Don't check for
18242         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
18243         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
18244         TYPE_UNSIGNED.
18245
18246 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
18247             Nigel Stephens  <nigel@mips.com>
18248             Richard Sandiford  <richard@codesourcery.com>
18249
18250         Fix up MIPS16 hard float and add support for complex.
18251
18252         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
18253         (TARGET_SOFT_FLOAT_ABI): New.
18254         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
18255         __mips_soft_float to reflect the ABI in use, not whether the
18256         FPU is directly accessible (e.g., in MIPS16 mode).
18257         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
18258         (UNITS_PER_FPVALUE): Likewise.
18259
18260         * config/mips/mips.c (mips_expand_call): Remove redundant
18261         TARGET_MIPS16 check.
18262         (mips_arg_regno): New.
18263         (function_arg_advance): When setting bits in cum->fp_code for
18264         MIPS16, don't subtract 1 from cum->arg_number, since it is now
18265         zero-based.
18266         (function_arg): Use mips_arg_regno.
18267         (mips_return_mode_in_fpr_p): New.
18268         (mips16_call_stub_mode_suffix): New.
18269         (mips16_cfun_returns_in_fpr_p): New.
18270         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
18271         (mips_output_function_prologue): Test mips16_hard_float, not
18272         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
18273         (mips_expand_epilogue): Call MIPS16 helper routines to copy
18274         return value into a floating-point register.
18275         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
18276         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
18277         (mips16_fp_args): Handle MIPS32r2 ISA which supports
18278         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
18279         word of double arguments from or to the high bits of 64-bit
18280         floating point registers.
18281         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
18282         (mips16_fpret_double): New helper function.
18283         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
18284         support for complex modes.  Fill in DECL_RESULT for stubdecl.
18285         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
18286
18287         * config/mips/mips16.S
18288         (RET, ARG1, ARG2): New.
18289         (MERGE_GPRf, MERGE_GPRt): New.
18290         (DELAYt, DELAYf): New.
18291         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
18292         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
18293         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
18294         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
18295         (SFOP): Renamed to...
18296         (OPSF3): This, and macro-ified.  Updated all uses.
18297         (SFOP2): Renamed to...
18298         (OPSF2): This, and macro-ified.  Updated all uses.
18299         (SFCMP): Renamed to...
18300         (CMPSF): This, and macro-ified.  Updated all uses.
18301         (SFREVCMP): Renamed to...
18302         (REVCMPSF): This, and macro-ified.  Updated all uses.
18303         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
18304         (LDDBL1, LDDBL2, RETDBL): Deleted.
18305         (DFOP): Renamed to...
18306         (OPDF3): This, and macro-ified.  Updated all uses.
18307         (DFOP2): Renamed to...
18308         (OPDF2): This, and macro-ified.  Updated all uses.
18309         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
18310         (DFCMP): Renamed to...
18311         (CMPDF): This, and macro-ified.  Updated all uses.
18312         (DFREVCMP): Renamed to...
18313         (REVCMPDF): This, and macro-ified.  Updated all uses.
18314         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
18315         (RET_FUNCTION): New.
18316         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
18317         (__mips16_ret_sc, __mips16_ret_dc): New.
18318         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
18319         STUB_ARGS_6, STUB_ARGS_10): New.
18320         (CALL_STUB_NO_RET): New.
18321         (__mips16_call_stub_1): Macro-ified.
18322         (__mips16_call_stub_5): Macro-ified.
18323         (__mips16_call_stub_2): Macro-ified.
18324         (__mips16_call_stub_6): Macro-ified.
18325         (__mips16_call_stub_9): Macro-ified.
18326         (__mips16_call_stub_10): Macro-ified.
18327         (CALL_STUB_RET): New.
18328         (__mips16_call_stub_sf_0): Macro-ified.
18329         (__mips16_call_stub_sf_1): Macro-ified.
18330         (__mips16_call_stub_sf_5): Macro-ified.
18331         (__mips16_call_stub_sf_2): Macro-ified.
18332         (__mips16_call_stub_sf_6): Macro-ified.
18333         (__mips16_call_stub_sf_9): Macro-ified.
18334         (__mips16_call_stub_sf_10): Macro-ified.
18335         (__mips16_call_stub_df_0): Macro-ified.
18336         (__mips16_call_stub_df_1): Macro-ified.
18337         (__mips16_call_stub_df_5): Macro-ified.
18338         (__mips16_call_stub_df_2): Macro-ified.
18339         (__mips16_call_stub_df_6): Macro-ified.
18340         (__mips16_call_stub_df_9): Macro-ified.
18341         (__mips16_call_stub_df_10): Macro-ified.
18342         (__mips16_call_stub_sc_0): New.
18343         (__mips16_call_stub_sc_1): New.
18344         (__mips16_call_stub_sc_5): New.
18345         (__mips16_call_stub_sc_2): New.
18346         (__mips16_call_stub_sc_6): New.
18347         (__mips16_call_stub_sc_9): New.
18348         (__mips16_call_stub_sc_10): New.
18349         (__mips16_call_stub_dc_0): New.
18350         (__mips16_call_stub_dc_1): New.
18351         (__mips16_call_stub_dc_5): New.
18352         (__mips16_call_stub_dc_2): New.
18353         (__mips16_call_stub_dc_6): New.
18354         (__mips16_call_stub_dc_9): New.
18355         (__mips16_call_stub_dc_10): New.
18356
18357         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
18358         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
18359         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
18360
18361 2007-05-23  Ian Lance Taylor  <iant@google.com>
18362
18363         * doc/invoke.texi (Invoking GCC): Document that the order of the
18364         -l option matters.
18365
18366 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
18367
18368         PR target/30987
18369         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
18370         * config/score/predicate.md (const_pow2, const_npow2): Remove.
18371         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
18372         undef.
18373
18374         PR target/30474
18375         * config/score/score.c (score_print_operand): Make sure that only
18376         lower bits are used.
18377
18378 2007-05-22  Ian Lance Taylor  <iant@google.com>
18379
18380         * tree-vrp.c (avoid_overflow_infinity): New static function,
18381         broken out of set_value_range_to_value.
18382         (set_value_range_to_value): Call avoid_overflow_infinity.
18383         (extract_range_from_assert): Likewise.
18384
18385 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18386
18387         PR middle-end/31095
18388          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
18389         change the type before looking for a COMPOUND_EXPR.
18390
18391 2007-05-22  Ian Lance Taylor  <iant@google.com>
18392
18393         * lower-subreg.c (decompose_multiword_subregs): If we change an
18394         insn, call remove_retval_note on it.
18395
18396 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18397
18398         * regs.h (end_hard_regno): New function.
18399         (END_HARD_REGNO, END_REGNO): New macros.
18400         (add_to_hard_reg_set): New function.
18401         (remove_from_hard_reg_set): Likewise.
18402         (in_hard_reg_set_p): Likewise.
18403         (overlaps_hard_reg_set_p): Likewise.
18404         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
18405         (note_btr_set): Use END_HARD_REGNO.
18406         * caller-save.c (setup_save_areas): Use end_hard_regno.
18407         (mark_set_regs): Use END_HARD_REGNO.
18408         (add_stored_regs): Use end_hard_regno.
18409         (mark_referenced_regs): Use add_to_hard_reg_set.
18410         * combine.c (update_table_tick): Use END_REGNO.
18411         (record_value_for_reg): Likewise.
18412         (record_dead_and_set_regs): Likewise.
18413         (get_last_value_validate): Likewise.
18414         (use_crosses_set_p): Likewise.
18415         (reg_dead_at_p_1): Likewise.
18416         (reg_dead_at_p): Likewise.
18417         (mark_used_regs_combine): Use add_to_hard_reg_set.
18418         (move_deaths): Use END_HARD_REGNO.
18419         (reg_bitfield_target_p): Use end_hard_regno.
18420         (distribute_notes): Use END_HARD_REGNO.
18421         * cse.c (mention_regs): Use END_REGNO.
18422         (insert): Use add_to_hard_reg_set.
18423         (invalidate): Use END_HARD_REGNO.
18424         (invalidate_for_call): Likewise.
18425         (exp_equiv_p): Use END_REGNO.
18426         (cse_insn): Likewise.
18427         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
18428         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
18429         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
18430         * function.c (keep_stack_depressed): Use end_hard_regno.
18431         * global.c (global_alloc): Use end_hard_regno.
18432         (global_conflicts): Use add_to_hard_reg_set instead of
18433         mark_reg_live_nc.
18434         (find_reg): Likewise.
18435         (mark_reg_store): Likewise.
18436         (mark_reg_conflicts): Likewise.
18437         (mark_reg_death): Use remove_from_hard_reg_set.
18438         (mark_reg_live_nc): Delete.
18439         (set_preference): Use end_hard_regno.
18440         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
18441         remove_from_hard_reg_set.
18442         (post_mark_life): Use add_to_hard_reg_set.
18443         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
18444         (reg_becomes_live): Use add_to_hard_reg_set.
18445         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
18446         (peep2_find_free_register): Use add_to_hard_reg_set.
18447         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
18448         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
18449         * regrename.c (note_sets): Use add_to_hard_reg_set.
18450         (clear_dead_regs): Use remove_from_hard_reg_set.
18451         (regrename_optimize): Use add_to_hard_reg_set.
18452         (find_oldest_value_reg): Use in_hard_reg_set_p.
18453         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
18454         (hard_reg_set_here_p): Use end_hard_regno.
18455         (decompose): Likewise.
18456         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
18457         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
18458         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
18459         (mark_home_live): Use end_hard_regno.
18460         (spill_hard_reg): Likewise.
18461         (clear_reload_reg_in_use): Likewise.
18462         * reorg.c (delete_prior_computation): Use END_REGNO.
18463         * resource.c (update_live_status): Use END_HARD_REGNO.
18464         (mark_referenced_resources): Use add_to_hard_reg_set.
18465         (mark_set_resources): Likewise.
18466         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
18467         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
18468         (reg_overlap_mentioned_p): Likewise.
18469         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
18470         (covers_regno_no_parallel_p): Use END_REGNO.
18471         (find_regno_note): Likewise.
18472         (find_reg_fusage): Use END_HARD_REGNO.
18473         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
18474         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
18475
18476 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
18477
18478         * mode-switching.c (reg_dies): Change type of second argument to
18479         "HARD_REG_SET *".
18480         (optimize_mode_switching): Update accordingly.
18481
18482 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
18483
18484         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
18485         in favor of...
18486         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
18487         (hard_reg_set_empty_p): ...these new functions.
18488         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
18489         GO_IF_HARD_REG_SUBSET.
18490         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
18491         instead of GO_IF_HARD_REG_EQUAL.
18492         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
18493         instead of GO_IF_HARD_REG_EQUAL.
18494         * global.c (find_reg): Use hard_reg_set_empty_p instead of
18495         GO_IF_HARD_REG_SUBSET.
18496         (modify_reg_pav): Use hard_reg_set_empty_p instead of
18497         GO_IF_HARD_REG_EQUAL.
18498         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
18499         of GO_IF_HARD_REG_SUBSET.
18500         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
18501         instead of GO_IF_HARD_REG_EQUAL.
18502         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
18503         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
18504         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
18505         of GO_IF_HARD_REG_SUBSET,
18506         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
18507         GO_IF_HARD_REG_SUBSET.
18508         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
18509         instead of GO_IF_HARD_REG_EQUAL.
18510         * config/sh/sh.c (push_regs, calc_live_regs): Use
18511         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
18512         (hard_regs_intersect_p): Delete.
18513
18514 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
18515
18516         * doc/sourcebuild.texi (Test Directives) Add dg-message.
18517
18518 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18519             Richard Henderson  <rth@redhat.com>
18520
18521         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
18522         extra_headers.
18523         (x86_64-*-*): Likewise.
18524
18525         * i386/i386-modes.def (V2QI): New.
18526
18527         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
18528         SSE4A.
18529         (override_options): Support SSE4.1.
18530         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
18531         (IX86_BUILTIN_BLENDPS): Likewise.
18532         (IX86_BUILTIN_BLENDVPD): Likewise.
18533         (IX86_BUILTIN_BLENDVPS): Likewise.
18534         (IX86_BUILTIN_PBLENDVB128): Likewise.
18535         (IX86_BUILTIN_PBLENDW128): Likewise.
18536         (IX86_BUILTIN_DPPD): Likewise.
18537         (IX86_BUILTIN_DPPS): Likewise.
18538         (IX86_BUILTIN_INSERTPS128): Likewise.
18539         (IX86_BUILTIN_MOVNTDQA): Likewise.
18540         (IX86_BUILTIN_MPSADBW128): Likewise.
18541         (IX86_BUILTIN_PACKUSDW128): Likewise.
18542         (IX86_BUILTIN_PCMPEQQ): Likewise.
18543         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
18544         (IX86_BUILTIN_PMAXSB128): Likewise.
18545         (IX86_BUILTIN_PMAXSD128): Likewise.
18546         (IX86_BUILTIN_PMAXUD128): Likewise.
18547         (IX86_BUILTIN_PMAXUW128): Likewise.
18548         (IX86_BUILTIN_PMINSB128): Likewise.
18549         (IX86_BUILTIN_PMINSD128): Likewise.
18550         (IX86_BUILTIN_PMINUD128): Likewise.
18551         (IX86_BUILTIN_PMINUW128): Likewise.
18552         (IX86_BUILTIN_PMOVSXBW128): Likewise.
18553         (IX86_BUILTIN_PMOVSXBD128): Likewise.
18554         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
18555         (IX86_BUILTIN_PMOVSXWD128): Likewise.
18556         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
18557         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
18558         (IX86_BUILTIN_PMOVZXBW128): Likewise.
18559         (IX86_BUILTIN_PMOVZXBD128): Likewise.
18560         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
18561         (IX86_BUILTIN_PMOVZXWD128): Likewise.
18562         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
18563         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
18564         (IX86_BUILTIN_PMULDQ128): Likewise.
18565         (IX86_BUILTIN_PMULLD128): Likewise.
18566         (IX86_BUILTIN_ROUNDPD): Likewise.
18567         (IX86_BUILTIN_ROUNDPS): Likewise.
18568         (IX86_BUILTIN_ROUNDSD): Likewise.
18569         (IX86_BUILTIN_ROUNDSS): Likewise.
18570         (IX86_BUILTIN_PTESTZ): Likewise.
18571         (IX86_BUILTIN_PTESTC): Likewise.
18572         (IX86_BUILTIN_PTESTNZC): Likewise.
18573         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
18574         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
18575         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
18576         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
18577         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
18578         (bdesc_ptest): New.
18579         (bdesc_sse_3arg): Likewise.
18580         (bdesc_2arg): Likewise.
18581         (bdesc_1arg): Likewise.
18582         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
18583         with 3 args.
18584         (ix86_expand_sse_4_operands_builtin): New.
18585         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
18586         smaller than 8 bits as the 2nd arg.
18587         (ix86_expand_sse_ptest): New.
18588         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
18589         (ix86_expand_vector_set): Support SSE4.1.
18590         (ix86_expand_vector_extract): Likewise.
18591
18592         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
18593         __SSE4_1__ for -msse4.1.
18594
18595         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
18596         (UNSPEC_INSERTPS): Likewise.
18597         (UNSPEC_DP): Likewise.
18598         (UNSPEC_MOVNTDQA): Likewise.
18599         (UNSPEC_MPSADBW): Likewise.
18600         (UNSPEC_PHMINPOSUW): Likewise.
18601         (UNSPEC_PTEST): Likewise.
18602         (UNSPEC_ROUNDP): Likewise.
18603         (UNSPEC_ROUNDS): Likewise.
18604
18605         * config/i386/i386.opt (msse4.1): New for SSE4.1.
18606
18607         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
18608         (const_pow2_1_to_32768_operand): Likewise.
18609
18610         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
18611         file.
18612
18613         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
18614         SSE4.1.
18615         (sse4_1_insertps): Likewise.
18616         (*sse4_1_extractps): Likewise.
18617         (sse4_1_ptest): Likewise.
18618         (sse4_1_mulv2siv2di3): Likewise.
18619         (*sse4_1_mulv4si3): Likewise.
18620         (*sse4_1_smax<mode>3): Likewise.
18621         (*sse4_1_umax<mode>3): Likewise.
18622         (*sse4_1_smin<mode>3): Likewise.
18623         (*sse4_1_umin<mode>3): Likewise.
18624         (sse4_1_eqv2di3): Likewise.
18625         (*sse4_1_pinsrb): Likewise.
18626         (*sse4_1_pinsrd): Likewise.
18627         (*sse4_1_pinsrq): Likewise.
18628         (*sse4_1_pextrb): Likewise.
18629         (*sse4_1_pextrb_memory): Likewise.
18630         (*sse4_1_pextrw_memory): Likewise.
18631         (*sse4_1_pextrq): Likewise.
18632         (sse4_1_blendpd): Likewise.
18633         (sse4_1_blendps): Likewise.
18634         (sse4_1_blendvpd): Likewise.
18635         (sse4_1_blendvps): Likewise.
18636         (sse4_1_dppd): Likewise.
18637         (sse4_1_dpps): Likewise.
18638         (sse4_1_movntdqa): Likewise.
18639         (sse4_1_mpsadbw): Likewise.
18640         (sse4_1_packusdw): Likewise.
18641         (sse4_1_pblendvb): Likewise.
18642         (sse4_1_pblendw): Likewise.
18643         (sse4_1_phminposuw): Likewise.
18644         (sse4_1_extendv8qiv8hi2): Likewise.
18645         (*sse4_1_extendv8qiv8hi2): Likewise.
18646         (sse4_1_extendv4qiv4si2): Likewise.
18647         (*sse4_1_extendv4qiv4si2): Likewise.
18648         (sse4_1_extendv2qiv2di2): Likewise.
18649         (*sse4_1_extendv2qiv2di2): Likewise.
18650         (sse4_1_extendv4hiv4si2): Likewise.
18651         (*sse4_1_extendv4hiv4si2): Likewise.
18652         (sse4_1_extendv2hiv2di2): Likewise.
18653         (*sse4_1_extendv2hiv2di2): Likewise.
18654         (sse4_1_extendv2siv2di2): Likewise.
18655         (*sse4_1_extendv2siv2di2): Likewise.
18656         (sse4_1_zero_extendv8qiv8hi2): Likewise.
18657         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
18658         (sse4_1_zero_extendv4qiv4si2): Likewise.
18659         (*sse4_1_zero_extendv4qiv4si2): Likewise.
18660         (sse4_1_zero_extendv2qiv2di2): Likewise.
18661         (*sse4_1_zero_extendv2qiv2di2): Likewise.
18662         (sse4_1_zero_extendv4hiv4si2): Likewise.
18663         (*sse4_1_zero_extendv4hiv4si2): Likewise.
18664         (sse4_1_zero_extendv2hiv2di2): Likewise.
18665         (*sse4_1_zero_extendv2hiv2di2): Likewise.
18666         (sse4_1_zero_extendv2siv2di2): Likewise.
18667         (*sse4_1_zero_extendv2siv2di2): Likewise.
18668         (sse4_1_roundpd): Likewise.
18669         (sse4_1_roundps): Likewise.
18670         (sse4_1_roundsd): Likewise.
18671         (sse4_1_roundss): Likewise.
18672         (mulv4si3): Don't expand for SSE4.1.
18673         (smax<mode>3): Likewise.
18674         (umaxv4si3): Likewise.
18675         (uminv16qi3): Likewise.
18676         (umin<mode>3): Likewise.
18677         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
18678
18679         * doc/extend.texi: Document SSE4.1 built-in functions.
18680
18681         * doc/invoke.texi: Document -msse4.1.
18682
18683 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
18684
18685         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
18686         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
18687         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
18688         (ASM_SPEC): Add asm_pcrel_spec.
18689         (EXTRA_SPECS): Add asm_pcrel_spec.
18690
18691 2007-05-21  David Daney  <ddaney@avtrex.com>
18692
18693         * doc/install.texi (Building a cross compiler): Add requirements
18694         for Java cross compiler.
18695
18696 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18697
18698         PR middle-end/31995
18699         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
18700         Add loopno argument.  Use evolution_function_is_invariant_rec_p
18701         instead of evolution_function_is_constant_p.
18702         Update calls to evolution_function_is_affine_multivariate_p.
18703         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
18704         Add loopno argument.
18705         * tree-scalar-evolution.c (gather_chrec_stats): Call
18706         evolution_function_is_affine_multivariate_p with a loop
18707         number of 0.
18708         * tree-data-ref.c (analyze_miv_subscript): Likewise.
18709         (analyze_overlapping_iterations): Likewise.
18710         (access_functions_are_affine_or_constant_p): Likewise.
18711         (build_classic_dist_vector_1): If the access functions
18712         are equal, don't do anything.
18713
18714 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
18715             Paolo Carlini  <pcarlini@suse.de>
18716             Uros Bizjak  <ubizjak@gmail.com>
18717
18718         * c-cppbuiltin.c (c_cpp_builtins): Define
18719         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
18720         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
18721         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
18722         * doc/cpp.texi ([Standard Predefined Macros]): Document.
18723
18724 2007-05-21  Mike Stump  <mrs@apple.com>
18725
18726         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
18727         handling as well.
18728         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18729
18730 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
18731
18732         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
18733         implementation if __OPTIMIZE__ is not defined.
18734         (_mm_alignr_pi8): Ditto.
18735         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18736         (_mm_inserti_si64): Ditto.
18737         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18738         (_mm_slli_epi16): Ditto.
18739         (_mm_slli_epi32): Ditto.
18740         (_mm_slli_epi64): Ditto.
18741         (_mm_srai_epi16): Ditto.
18742         (_mm_srai_epi32): Ditto.
18743         (_mm_srli_si128): Ditto.
18744         (_mm_slli_si128): Ditto.
18745         (_mm_srli_epi16): Ditto.
18746         (_mm_srli_epi32): Ditto.
18747         (_mm_srli_epi64): Ditto.
18748         (_mm_extract_epi16): Ditto.
18749         (_mm_insert_epi16): Ditto.
18750         (_mm_shufflehi_epi16): Ditto.
18751         (_mm_shufflelo_epi16): Ditto.
18752         (_mm_shuffle_epi32): Ditto.
18753         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
18754         (_m_pextrw): Ditto.
18755         (_mm_insert_pi16): Ditto.
18756         (_m_pinsrw): Ditto.
18757         (_mm_shuffle_pi16): Ditto.
18758         (_m_pshufw): Ditto.
18759         (_mm_shufle_ps): Ditto.
18760         (_mm_prefetch): Ditto.
18761
18762 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
18763
18764         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
18765         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
18766         * real.c (encode_i370_single, decode_i370_single,
18767         encode_i370_double, decode_i370_double): Functions removed.
18768         (i370_single_format, i370_double_format): Initializations removed.
18769         (real_maxval, round_for_format, exact_real_truncate, significand_size):
18770         Consider the log2_b field to always be one.
18771         (ieee_single_format, mips_single_format, coldfire_single_format,
18772         ieee_double_format, mips_double_format, coldfire_double_format,
18773         ieee_extended_motorola_format, ieee_extended_intel_96_format,
18774         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
18775         ibm_extended_format, mips_extended_format, ieee_quad_format,
18776         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
18777         decimal_single_format, decimal_double_format, decimal_quad_format,
18778         c4x_single_format, c4x_extended_format, real_internal_format): Remove
18779         initialization of log2_b.
18780         * real.h (i370_single_format, i370_double_format): Declarations
18781         removed.
18782         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
18783         field to always be one.
18784
18785 2007-05-21  Andreas Schwab  <schwab@suse.de>
18786
18787         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
18788         NOTE_INSN_BASIC_BLOCK_P.
18789         (process_for_unwind_directive): Likewise.
18790
18791 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
18792
18793         * builtins.c (expand_builtin_setjmp_setup): Update comment.
18794         * function.h (struct function): Move va_list_gpr_size,
18795         va_list_fpr_size, function_frequency to front of bitfields.  Add
18796         calls_unwind_init.
18797         (current_function_calls_unwind_init): New.
18798         * except.c (expand_builtin_unwind_init): Set
18799         current_function_calls_unwind_init not
18800         current_function_has_nonlocal_label.
18801         * reload1.c (has_nonexceptional_receiver): New.
18802         (reload): Use it and current_function_calls_unwind_init to
18803         determine whether call-saved regs must be saved.
18804
18805 2007-05-20  Jan Hubicka  <jh@suse.cz>
18806
18807         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
18808         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18809         * ddg.c (create_ddg): LIkewise.
18810         * final.c (final): Remove hunk moving line number notes around since
18811         they are no longer present at this stage.
18812         (final_scan_insn): Use NOTE_KIND instead of
18813         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18814         (output_asm_label): Likewise.
18815         * reorg.c (dbr_schedule): Likewise.
18816         * haifa-sched.c (unlink_other_notes): Likewise.
18817         * mode-switching.c (optimize_mode_switching): Likewise.
18818         * graph.c (start_bb): Likewise.
18819         * rtl.def (NOTE): Update description.
18820         * jump.c (squeeze_notes): Delete.
18821         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
18822         NOTE_INSN_BASIC_BLOCK_P when possible.
18823         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
18824         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
18825         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
18826         (dwarf2out_var_location): Likewise.
18827         * cfgbuild.c (make_edges): Likewise.
18828         (find_basic_blocks_1): Likewise.
18829         * function.c (reorder_blocks_1): Likewise.
18830         (epilogue_done): Likewise.
18831         (reposition_prologue_and_epilogue_notes): Likewise.
18832         * print-rtl.c (print_rtx): Likewise; drop code for printing
18833         line number notes.
18834         (print_rtl): Likewise.
18835         (print_rtl_single): Likewise.
18836         * gcse.c (insert_insn_start_bb): Likewise.
18837         * alias.c (init_alias_analysis): Likewise.
18838         * calls.c (fixup_tail_calls): Likewise.
18839         * except.c (sjlj_emit_function_enter): Likewise.
18840         * emit-rtl.c (add_insn_after): Likeiwse.
18841         (emit_label_before): Likewise.
18842         (emit_label_after): Likewise.
18843         (emit_note_before, emit_note_after, emit_note): Update
18844         parameter to be enum insn_note; do not deal with source
18845         files.
18846         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
18847         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
18848         when possible.
18849         (merge_blocks_move_successor_nojumps): Simplify now when
18850         we don't have BLOCK notes.
18851         (try_optimize_cfg): Likewise.
18852         * cfglayout.c (skip_insns_after_block): Likewise.
18853         (record_effective_endpoints): Likewise.
18854         (duplicate_insn_chain): Likewise.
18855         * varasm.c (output_constant_pool_1): Likewise.
18856         * sched-deps.c (sched_analyze): Likewise.
18857         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
18858         Exterminate.
18859         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
18860         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
18861         (SET_INSN_DELETED): Simplify.
18862         (NOTE_LINE_NUMBER): Exterminate.
18863         (NOTE_LINE_KIND): New.
18864         (NOTE_INSN_BASIC_BLOCK_P): Update.
18865         (enum insn_note): Simplify.
18866         (GET_NOTE_INSN_NAME) Simplify.
18867         (emit_note_before, emit_note_after, emit_note): Update prototype.
18868         (squeeze_notes): Remove.
18869         * sched-int.h (NOTE_NOT_BB_P): Update.
18870         * resource.c (mark_target_live_regs): Update.
18871         * sched-rgn.c (debug_dependencies): Update.
18872         * sched-vis.c (print_insn): Update.
18873         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
18874         * config/i386/i386.c (ix86_output_function_epilogue): Update.
18875         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
18876         (TARGET_ADJUST_UNROLL_MAX): Likewise.
18877         (split_branches): Update.
18878         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
18879         4.0.0.
18880         (sh_adjust_unroll_max): Exterminate.
18881         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
18882         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
18883         (m68hc11_reorg): Likewise.
18884         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
18885         (emit_predicate_relation_info): Update.
18886         (process_for_unwind_directive): Update.
18887         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
18888         (output_call): Update.
18889         * config/pa/pa.c (output_lbranch): Update.
18890         (output_millicode_call): Update.
18891         (output_call): Update.
18892         (pa_combine_instructions): Update.
18893         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
18894         * config/bfin/bfin.c (gen_one_bundle): Update.
18895         * cfgrtl.c (can_delete_note_p): Update.
18896         (delete_insn): Update.
18897         (rtl_merge_blocks): Update.
18898         (commit_one_edge_insertion): Update.
18899         (rtl_verify_flow_info): Update.
18900         * stmt.c (expand_case): Do not call squeeze_notes.
18901
18902 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18903
18904         PR middle-end/7651
18905         PR c++/11856
18906         PR c/12963
18907         PR c/23587
18908         PR other/29694
18909         * c.opt (Wtype-limits): New.
18910         * doc/invoke.texi (Wtype-limits): Document it.
18911         (Wextra): Enabled by -Wextra.
18912         * c-opts.c (c_common_post_options): Enabled by -Wextra.
18913         * c-common.c (shorten_compare): Warn with Wtype-limits.
18914
18915 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
18916
18917         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
18918         inlined function, not as a macro.
18919         (_mm_alignr_pi8): Ditto.
18920         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
18921         (_mm_inserti_si64): Ditto.
18922         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
18923         (_mm_extract_epi16): Ditto.
18924         (_mm_insert_epi16): Ditto.
18925         (_mm_shufflehi_epi16): Ditto.
18926         (_mm_shufflelo_epi16): Ditto.
18927         (_mm_shuffle_epi32): Ditto.
18928         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
18929         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
18930         all functions.
18931         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
18932         float constant.
18933         (_m_to_float): Use C89 compatible assignment.
18934
18935 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
18936
18937         PR target/32007
18938         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
18939
18940 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18941
18942         PR middle-end/7651
18943         * doc/invoke.texi (Wreturn-type): Complete description.
18944         (Wextra): Delete item about return-type warning.
18945         * c-decl.c: Delete redundant Wextra warning.
18946
18947 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
18948
18949         PR target/31585
18950         * config/i386/pmmintrin.h: Do not include xmmintrin.h
18951         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
18952         inlined function, not as a macro.
18953         (_mm_prefetch): Ditto.
18954         (_m_pextrw): Ditto.
18955         (_mm_insert_pi16): Ditto.
18956         (_m_pinsrw): Ditto.
18957         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
18958         (_m_pshufw): Ditto. Add const to __N argument.
18959         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
18960         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
18961         (_mm_slli_epi32): Ditto.
18962         (_mm_srli_si128): Implement as always inlined function, not as a
18963         macro.  Add __inline to function declaration.
18964         (_mm_slli_si128): Ditto.
18965
18966 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
18967
18968         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
18969         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
18970         New constants.
18971         (struct fenv): New structure.
18972         (FP_HANDLE_EXCEPTIONS): New define.
18973         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
18974         (_FP_DECL_EXP): New define.
18975         (FP_INIT_ROUNDMODE): New define.
18976         (FP_ROUNDMODE): New define.
18977
18978 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18979
18980         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
18981         (Wconversion): Update description.
18982         (Wconversion-sign): New.
18983         * c.opt (Wconversion-sign): New.
18984         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
18985         means disabled for C++. Otherwise, take the status of Wconversion.
18986         * c-common.c (conversion_warning): Warn with either Wconversion or
18987         Wconversion-sign.
18988         (warnings_for_convert_and_check): Conditions are already checked by
18989         conversion_warning.
18990         (convert_and_check): Don't check warnings if the conversion failed.
18991
18992 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
18993            Anatoly Sokolov <aesok@dol.ru>
18994
18995         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
18996         avr_epilogue_uses) : Add declaration.
18997         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
18998         * config/avr/constraints.md (R): New constraint.
18999         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
19000         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
19001         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
19002         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
19003         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
19004         call_prologue_saves, epilogue_restores, return_from_epilogue,
19005         return_from_main_epilogue, return_from_interrupt_epilogue,
19006         return_from_naked_epilogue, prologue, epilogue): New patterns.
19007         (jump): Handle symbol reference.
19008         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
19009         avr_output_function_prologue, avr_output_function_epilogue): Remove
19010         functions.
19011         (avr_init_machine_status, expand_prologue, expand_epilogue,
19012         avr_asm_function_end_prologue, avr_epilogue_uses,
19013         avr_asm_function_begin_epilogue): New functions.
19014         (prologue_size, epilogue_size, jump_tables_size): Remove global
19015         variables.
19016         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
19017         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
19018         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
19019         (avr_override_options): Initialise init_machine_status.
19020         (output_movhi): Handle all stack pointer loads.
19021         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
19022         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
19023         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
19024         (EPILOGUE_USES) Redefine.
19025         (machine_function) Declare.
19026
19027 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
19028
19029         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
19030         Use a single return statement.
19031
19032 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19033
19034         PR middle-end/30250
19035         * builtins.c (do_mpfr_lgamma_r): New.
19036         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
19037         * tree.h (CASE_FLT_FN_REENT): New.
19038
19039 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
19040
19041         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
19042         (output_die): Use 'unsigned long' with %x.
19043         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
19044         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
19045         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
19046
19047         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
19048
19049 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19050
19051         PR target/31989
19052         PR target/31681
19053         PR target/31666
19054         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
19055         true if function has no argument.
19056
19057 2007-05-18  DJ Delorie  <dj@redhat.com>
19058
19059         * config/mips/mips.c (mips_offset_within_alignment_p): New.
19060         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
19061
19062 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19063
19064         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
19065         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
19066         count_trailing_zeros.
19067         (__i386__): Implement count_leading_zeros using __builtin_clz().
19068         Implement count_trailing_zeros usign __builtin_ctz().
19069
19070 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
19071
19072         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
19073
19074 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19075
19076         PR middle-end/31344
19077         * expr.c (emit_move_change_mode): Change mode of push operands here.
19078
19079 2007-05-17  Ian Lance Taylor  <iant@google.com>
19080
19081         PR tree-optimization/31953
19082         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
19083         Change all callers.
19084         (set_value_range_to_null): Call set_value_range_to_value.
19085         (extract_range_from_comparison): Likewise.
19086
19087 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19088
19089         * toplev.c (print_version): Output GMP/MPFR version info.
19090
19091         * builtins.c (CASE_MATHFN_REENT): New macro.
19092         (mathfn_built_in): Use it.
19093         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
19094         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
19095         BUILT_IN_LGAMMAL_R): New.
19096         * doc/extend.texi: Document new builtins.
19097
19098         PR middle-end/31796
19099         * builtins.c (do_mpfr_remquo): New.
19100         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
19101         (fold_builtin_3): Handle BUILT_IN_REMQUO.
19102
19103         PR middle-end/30251
19104         * builtins.c (fold_builtin_1): Handle y0, y1.
19105         (fold_builtin_2): Handle yn.
19106
19107         PR middle-end/30251
19108         * builtins.c (do_mpfr_bessel_n): New.
19109         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
19110         (fold_builtin_2): Handle BUILT_IN_JN.
19111
19112 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
19113
19114         PR target/31965
19115         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
19116         TYPE_PRECISION (intmax_type_node).
19117
19118 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
19119
19120         PR target/31850
19121         * reload.c (subst_reloads): Remove checking.
19122
19123 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
19124
19125         PR rtl-optimization/31691
19126         * combine.c (simplify_set): Build a new src pattern instead of
19127         substituting its operands in the COMPARE case.
19128
19129 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
19130
19131         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
19132         (execute_vrp): Preserve loops through jump threading.
19133         * tree-ssa-threadupdate.c (thread_single_edge,
19134         dbds_continue_enumeration_p, determine_bb_domination_status,
19135         thread_through_loop_header): New functions.
19136         (create_edge_and_update_destination_phis,
19137         create_edge_and_update_destination_phis): Set loops for the new blocks.
19138         (prune_undesirable_thread_requests): Removed.
19139         (redirect_edges): Do not pretend that redirect_edge_and_branch can
19140         create new blocks.
19141         (thread_block): Do not call prune_undesirable_thread_requests.
19142         Update loops.
19143         (mark_threaded_blocks): Select edges to thread here.
19144         (thread_through_all_blocks): Take may_peel_loop_headers argument.
19145         Thread edges through loop headers independently.
19146         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
19147         * tree-pass.h (TODO_mark_first_instance): New.
19148         (first_pass_instance): Declare.
19149         * cfghooks.c (duplicate_block): Put the block to the original loop
19150         if copy is not specified.
19151         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
19152         jump threading.  Pass may_peel_loop_headers to
19153         thread_through_all_blocks according to first_pass_instance.
19154         * cfgloop.h (create_preheader): Declare.
19155         * tree-flow.h (thread_through_all_blocks): Declaration changed.
19156         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
19157         * passes.c (first_pass_instance): New variable.
19158         (next_pass_1): Set TODO_mark_first_instance.
19159         (execute_todo): Set first_pass_instance.
19160
19161 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
19162
19163         PR tree-optimization/24659
19164         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
19165         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
19166         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
19167         OTI_vec_pack_ufix_trunc.
19168         (vec_unpacks_float_hi_optab): Define new macro.
19169         (vec_unpacks_float_lo_optab): Ditto.
19170         (vec_unpacku_float_hi_optab): Ditto.
19171         (vec_unpacku_float_lo_optab): Ditto.
19172         (vec_pack_sfix_trunc_optab): Ditto.
19173         (vec_pack_ufix_trunc_optab): Ditto.
19174         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
19175         and vec_pack_[s|u]fix_trunc_optab using
19176         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
19177         * tree-vectorizer.c (supportable_widening_operation): Handle
19178         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
19179         (supportable_narrowing_operation): New function.
19180         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
19181         * tree-vect-transform.c (vectorizable_conversion): Handle
19182         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
19183         (vect_gen_widened_results_half): Move before vectorizable_conversion.
19184         (vectorizable_type_demotion): Call supportable_narrowing_operation()
19185         to check for target support.
19186         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
19187         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
19188         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
19189         for VEC_PACK_FIX_TRUNC_EXPR.
19190         (expand_binop): Special case mode of the result for
19191         vec_pack_[u|s]fix_trunc_optab.
19192         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
19193         vec_pack_[u|s]fix_trunc_optab.
19194
19195         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
19196         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
19197         * tree-pretty-print.c (dump_generic_node): Handle
19198         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
19199         VEC_PACK_FIX_TRUNC_EXPR.
19200         (op_prio): Ditto.
19201         * expr.c (expand_expr_real_1): Ditto.
19202         * tree-inline.c (estimate_num_insns_1): Ditto.
19203         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19204
19205         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
19206         (vec_unpacks_float_lo_v8hi): Ditto.
19207         (vec_unpacku_float_hi_v8hi): Ditto.
19208         (vec_unpacku_float_lo_v8hi): Ditto.
19209         (vec_unpacks_float_hi_v4si): Ditto.
19210         (vec_unpacks_float_lo_v4si): Ditto.
19211         (vec_pack_sfix_trunc_v2df): Ditto.
19212
19213         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
19214         Document.
19215         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
19216         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
19217         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
19218         [vec_pack_ufix_trunc]: Ditto.
19219         [vec_unpacks_float_hi]: Ditto.
19220         [vec_unpacks_float_lo]: Ditto.
19221         [vec_unpacku_float_hi]: Ditto.
19222         [vec_unpacku_float_lo]: Ditto.
19223
19224 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
19225
19226         * soft-fp/README: Update for new files.
19227         * soft-fp/floattisf.c: New file.
19228         * soft-fp/floattidf.c: New file.
19229         * soft-fp/floattitf.c: New file.
19230         * soft-fp/floatuntisf.c: New file.
19231         * soft-fp/floatuntidf.c: New file.
19232         * soft-fp/floatuntitf.c: New file.
19233         * soft-fp/fixsfti.c: New file.
19234         * soft-fp/fixdfti.c: New file.
19235         * soft-fp/fixtfti.c: New file.
19236         * soft-fp/fixunssfti.c: New file.
19237         * soft-fp/fixunsdfti.c: New file.
19238         * soft-fp/fixunstfti.c: New file.
19239         * soft-fp/extendxftf.c: New file.
19240         * soft-fp/trunctfxf.c: New file.
19241
19242         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
19243         (__trunctfxf2): Ditto.
19244
19245         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
19246         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
19247         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
19248         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
19249         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
19250         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
19251
19252         * config/i386/t-fprules-softfp64: New file.
19253         * config/i386/sfp-machine.h: New file.
19254         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
19255         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
19256         and soft-fp/t-softfp to tmake_file.
19257         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
19258         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
19259
19260         * config/i386/t-linux64 (softfp_wrap_start): New.
19261         (softfp_wrap_end): New.
19262         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
19263         supported for TARGET_64BIT.
19264
19265 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
19266
19267         * c-common.c (c_common_signed_or_unsigned_type): Emulate
19268         c_common_unsigned_type behavior.
19269
19270 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
19271
19272         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
19273         calls as pure.
19274
19275 2007-05-16  Eric Christopher  <echristo@apple.com>
19276
19277         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
19278         saving after stack push. Set sp_offset whenever we push.
19279         (rs6000_emit_epilogue): Move altivec register restore before
19280         stack push.
19281
19282 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19283
19284         * configure.ac: Allow sysroots to be relocated under $prefix as
19285         well as $exec_prefix.
19286         * configure: Regenerate.
19287
19288 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
19289
19290         Revert:
19291
19292         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19293
19294         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19295         (gcc_tooldir): Likewise.
19296         * configure: Regenerate.
19297         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19298         old configure.ac gcc_tooldir setting.
19299         (prefix_to_exec_prefix): New variable.
19300         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19301         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19302
19303 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
19304
19305         * c-typeck.c (build_binary_op): Return early for error.
19306
19307 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
19308
19309         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
19310         struct nb_iter_bound.
19311         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
19312         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
19313         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
19314         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
19315         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
19316         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
19317         (del_scev_info): Use ggc_free.
19318         (scev_initialize): Allocate scalar_evolution_info in gc memory.
19319         * loop-init.c: Include ggc.h.
19320         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
19321         (loop_optimizer_finalize): Use ggc_free.
19322         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
19323         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
19324         pass_iv_optimize): Add TODO_ggc_collect.
19325         * function.h (struct function): Remove skip marker from
19326         x_current_loops.
19327         * cfgloop.c: Include ggc.h.
19328         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
19329         memory.
19330         (establish_preds): Vector superloops is gc allocated.
19331         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
19332         loop->exits list.
19333         (flow_loops_find): Vector larray is gc allocated.
19334         (loop_exit_free): Use ggc_free.
19335         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
19336         that head of exits list is now not a part of struct loop.
19337         (record_loop_exits): Allocate exits table in gc memory.
19338         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
19339         that head of exits list is now not a part of struct loop.
19340         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
19341         struct loop_exit): Add GTY marker.
19342         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
19343         Add skip marker to aux field.  Make head of exits list a separate
19344         object.
19345         (struct loops): Add GTY marker.  Make larray vector gc allocated.
19346         Add param marker to exits table.
19347         (get_loops): Type changed.
19348         * Makefile.in (tree-scalar-evolution.o): Add
19349         gt-tree-scalar-evolution.h dependency.
19350         (cfgloop.o, loop-init.o): Add ggc.h dependency.
19351         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
19352         * basic-block.h (struct basic_block_def): Remove skip marker from
19353         loop_father field.
19354
19355 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
19356
19357         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
19358         of 0 in the call to expand_expr().
19359         (expand_builtin_mathfn_3): Ditto.
19360         (expand_builtin_interclass_mathfn): Ditto.
19361         (expand_builtin_cexpi): Ditto.
19362         (expand_builtin_int_roundingfn): Ditto.
19363         (expand_builtin_int_roundingfn_2): Ditto.
19364         (expand_builtin_pow): Ditto.
19365         (expand_builtin_powi): Ditto.
19366         (expand_builtin_bswap): Ditto.
19367         (expand_builtin_unop): Ditto.
19368         (expand_builtin_fabs): Ditto.
19369         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
19370         the call to expand_expr().
19371         (expand_builtin_sync_operation): Ditto.
19372         (expand_builtin_compare_and_swap): Ditto.
19373         (expand_builtin_lock_test_and_set): Ditto.
19374         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
19375         instead of 0 in the call to expand_expr().
19376         (expand_builtin_extract_return_addr): Ditto.
19377         (expand_builtin_eh_return): Ditto.
19378         (expand_eh_return): Ditto.
19379         * explow.c (expr_size): Ditto.
19380         * expr.c (optimize_bitfield_assignment_op): Ditto.
19381         (expand_assignement): Ditto.
19382         (store_expr): Ditto.
19383         (store_field): Ditto.
19384         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
19385         the call to expand_expr().
19386         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
19387         in the call to expand_expr().
19388         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
19389         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
19390         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
19391         of expand_expr().
19392         * optabs.c (expand_vec_shift_expr): Ditto.
19393         (expand_vec_cond_expr): Ditto.
19394         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
19395         call to expand_expr().
19396         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
19397         in the call to expand_expr().
19398
19399 2007-05-14  Dave Korn  <dave.korn@artimi.com>
19400
19401         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
19402
19403 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
19404
19405         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
19406         instead of c_common_unsigned_type.
19407         (c_common_unsigned_type): Remove.
19408         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
19409         c_common_unsigned_type.
19410         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
19411         c_common_unsigned_type.
19412         * c-common.h (c_common_unsigned_type): Remove.
19413         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
19414         c_common_unsigned_type.
19415         * c-format.c (check_format_types): Use unsigned_type_for instead of
19416         c_common_unsigned_type.
19417         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19418         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
19419         of c_common_unsigned_type.
19420         * convert.c (convert_to_integer): Use unsigned_type_for instead of
19421         lang_hooks.types.unsigned_type.
19422         * expmed.c (make_tree): Use unsigned_type_for instead of
19423         lang_hooks.types.unsigned_type.
19424         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
19425         lang_hooks.types.unsigned_type.
19426         (build_range_check): Likewise.
19427         (fold_unary): Likewise.
19428         (fold_binary): Likewise.
19429         (fold_ternary): Likewise.
19430         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
19431         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
19432         * tree.c (get_unsigned_type): New.
19433         (unsigned_type_for): Use get_unsigned_type instead of
19434         lang_hooks.types.unsigned_type.
19435
19436 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
19437
19438         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
19439         to m68k_get_function_kind.  Update its prototype.
19440         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
19441         interrupt_thread.
19442         (m68k_interrupt_function_p): Return enum m68k_function_type
19443         instead of bool.  Rename to m68k_get_function_kind.
19444         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
19445         target is not fido.
19446         (m68k_compute_frame_layout): Don't mark any register for save
19447         if an interrupt_thread attribute is specified.
19448         (m68k_hard_regno_rename_ok): Update a use of
19449         m68k_interrupt_function_p.
19450         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
19451         m68k_interrupt_function_p.
19452         (m68k_function_type): New.
19453         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
19454         for a function with an interrupt_thread attribute.
19455         * doc/extend.texi: Document the interrupt_thread attribute.
19456
19457 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
19458
19459         Fix PR tree-optimization/31911
19460         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
19461         if they didn't change the expression.
19462
19463 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
19464
19465         * tree-scalar-evolution.c (resolve_mixers): Exported.
19466         * tree-scalar-evolution.h (resolve_mixers): Declare.
19467         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
19468         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
19469         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
19470         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
19471         init_array_ref, init_pointer_ref, analyze_indirect_ref,
19472         strip_conversion, analyze_offset_expr, address_analysis,
19473         object_analysis, analyze_offset): Removed.
19474         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
19475         split_constant_offset, canonicalize_base_object_address,
19476         object_address_invariant_in_loop_p, disjoint_objects_p,
19477         dr_may_alias_p, dr_address_invariant_p): New functions.
19478         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
19479         and dr_analyze_alias.
19480         (initialize_data_dependence_relation): Use dr_may_alias_p
19481         and object_address_invariant_in_loop_p.
19482         (compute_self_dependence): Handle the case when
19483         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
19484         (find_data_references_in_stmt): Restrict the analysis of data
19485         references to the given loop nest.
19486         (find_data_references_in_loop): Made static.  Pass loop nest to
19487         find_data_references_in_stmt.
19488         (compute_data_dependences_for_loop): Use DR_VOPS.
19489         (free_data_ref): Free DR_VOPS.
19490         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
19491         (struct innermost_loop_behavior): ... new.
19492         (struct base_object_info): Replaced by ...
19493         (struct indices): ... new.
19494         (struct dr_alias): New.
19495         (enum data_ref_type): Removed.
19496         (struct data_reference): Consist of struct innermost_loop_behavior,
19497         struct indices and struct dr_alias.
19498         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
19499         (DR_MEMTAG): Renamed to ...
19500         (DR_SYMBOL_TAG): ... this.
19501         (find_data_references_in_loop): Declaration removed.
19502         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
19503         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
19504         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
19505         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
19506
19507 2007-05-13  Revital Eres  <eres@il.ibm.com>
19508
19509         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
19510         which walks virtual def-use chains to find redundant stores.
19511         (dse_optimize_stmt): Call it.
19512
19513 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19514
19515         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
19516         * passes.c (init_optimization_passes): Move pass_jump_bypass
19517         after loop2.
19518
19519         * basic-block.h (bb_has_eh_pred): Fix style issue.
19520
19521 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
19522
19523         PR rtl-optimization/31848
19524         * loop-invariant.c (move_invariant_reg): If we move an insn
19525         with a REG_EQUAL note, and that insn is not always executed,
19526         remove the REG_EQUAL note.
19527
19528 2007-05-12  Richard Guenther  <rguenther@suse.de>
19529
19530         PR tree-optimization/31797
19531         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
19532         propagate into a stmt that has volatile ops.
19533
19534 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
19535
19536         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
19537         (gcc_tooldir): Likewise.
19538         * configure: Regenerate.
19539         * Makefile.in (libsubdir_to_prefix): New variable, based on the
19540         old configure.ac gcc_tooldir setting.
19541         (prefix_to_exec_prefix): New variable.
19542         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
19543         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
19544
19545 2007-05-11  Silvius Rus  <rus@google.com>
19546
19547         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
19548         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
19549         * c-common.h (strict_aliasing_warning): Change return type.
19550         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
19551         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
19552         (build_c_cast): Condition call to strict_aliasing_warning.
19553         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
19554         * flags.h (set_Wstrict_aliasing): Declare.
19555         * opts.c (set_Wstrict_alising): Define, add call to.
19556         * tree-flow.h (strict_aliasing_warning_backend): Declare.
19557         * tree-ssa-alias-warnings.c: New file.
19558         * tree-ssa-alias.c (compute_may_aliases): Add call to
19559         strict_aliasing_warning_backend.
19560
19561 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
19562
19563         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
19564         Use loop_depth and loop_outer accessor functions.
19565         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
19566         determine_invariantness_stmt, move_computations_stmt): Ditto.
19567         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
19568         add_loop, loopify, unloop, fix_loop_structure): Ditto.
19569         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
19570         * tree-scalar-evolution.c (interpret_loop_phi,
19571         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
19572         instantiate_parameters_1, scev_const_prop): Ditto.
19573         * cfghooks.c (make_forwarder_block): Ditto.
19574         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
19575         * modulo-sched.c (loop_canon_p): Ditto.
19576         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
19577         slpeel_can_duplicate_loop_p): Ditto.
19578         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
19579         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
19580         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
19581         cancel_loop, verify_loop_structure): Ditto.
19582         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
19583         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
19584         superloops vector instead of "pred" array.
19585         (establish_preds): Take father loop as an argument.  Initialize the
19586         superloops vector.
19587         (flow_loop_tree_node_add): Pass father loop to establish_preds.
19588         Do not initialize loop->outer.
19589         (flow_loop_tree_node_remove): Truncate the superloops vector.
19590         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
19591         "pred" merged to "superloops" vector.
19592         (loop_depth, loop_outer): New.
19593         (fel_init): Use loop_outer.
19594
19595 2007-05-11  Jan Hubicka  <jh@suse.cz>
19596
19597         * cgraphunit.c: Include gt-cgraphunit.h
19598         (static_ctors, static_dtors): New static vars.
19599         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
19600         based on implementation in c-common.c
19601         (cgraph_finalize_function): Call record_cdtor_fn.
19602         (cgraph_optimize): Call cgraph_build_cdtor_fns.
19603         * decl.c (finish_function): Do not call c_record_cdtor_fn.
19604         (c_write_global_declarations): Do not call c_build_cdtor_fns.
19605         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
19606         build_cdtor, c_build_cdtor_fns): Remove.
19607         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
19608         c_build_cdtor_fns): Remove prototype.
19609
19610 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
19611
19612         PR other/31852
19613         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
19614         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
19615         * builtins.c (fold_builtin_memchr): New.
19616         (expand_builtin_memchr): Call the latter.
19617         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
19618         * doc/extend.texi ([Other built-in functions provided by GCC]):
19619         Document memchr.
19620
19621 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
19622
19623         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
19624         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
19625         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
19626         PFPO_OP1_TYPE_SHIFT): Constants added.
19627         (DFP_ALL): Mode macro defined.
19628         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
19629         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
19630         Insn definitions added.
19631         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
19632         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
19633         Expanders added.
19634
19635 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
19636
19637         PR tree-optimization/31885
19638         * tree-chrec.c (chrec_contains_undetermined): Do not consider
19639         NULL_TREE to be undetermined.
19640         (automatically_generated_chrec_p): Return false for NULL.
19641
19642 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19643
19644         * config/bfin/bfin.h (MOVE_RATIO): Define.
19645
19646 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
19647
19648         * config.gcc (sparc-wrs-vxworks): New target.
19649         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
19650         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
19651         * config/sparc/sparc.h: Include vxworks-dummy.h.
19652         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
19653         include LABEL_REFs too.
19654         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
19655         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
19656         VxWorks.
19657         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
19658         on VxWorks.
19659         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
19660         (sparc_emit_call_insn): New function.
19661         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
19662         functions when generating VxWorks PIC.
19663         * config/sparc/sparc.md (vxworks_load_got): New pattern.
19664         (call, call_value): Use sparc_emit_call_insn instead of
19665         emit_call_insn.
19666
19667 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19668
19669         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
19670
19671 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
19672
19673         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
19674         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
19675         split_double instead of operand_subword.
19676
19677 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
19678
19679         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
19680         * config/bfin/bfin.c (bfin_local_alignment): New function.
19681         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
19682
19683 2007-05-08  Chao-ying Fu  <fu@mips.com>
19684
19685         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
19686         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
19687         (smsub_widen_optab, umsub_widen_optab): Define.
19688         * optabs.c (init_optabs): Initialize smsub_widen_optab and
19689         umsub_widen_optab.
19690         * genopinit.c (optabs): Fill in smsub_widen_optab and
19691         umsub_widen_optab.
19692         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
19693         and umsub_widen_optab to implement multiply-subtract sequences.
19694         * config/mips/mips.md (*msac<u>_di): Rename to...
19695         (<u>msubsidi4): ...this.  Extend condition to include
19696         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
19697         of operand 0 to "ka" and use the three-operand form of msub<u>
19698         for TARGET_DSPR2.
19699         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
19700         to define_expands.
19701
19702 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19703
19704         PR rtl-optimization/28011
19705         * reload.c (push_reload): Set dont_share if IN appears in OUT
19706         also when IN is a PLUS rtx.
19707         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
19708         are same PLUS rtx.
19709
19710 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
19711
19712         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
19713         call unshare_all_decls.
19714         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
19715         (unshare_all_decls): Remove.
19716
19717 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
19718
19719         PR 31847
19720         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
19721         dumps.
19722
19723 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
19724             Nigel Stephens  <nigel@mips.com>
19725
19726         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
19727         Update comments and all uses.
19728         (MIN_FPRS_PER_FMT): Define.
19729         * config/mips/mips.c (function_arg): Fix to correctly handle
19730         the -mips32r2 -mfp64 -mabi=32 case.
19731         (override_options): Enable use of odd-numbered registers for
19732         SFmode values on MIPS32.
19733         (mips_save_reg_p): Save whole floating-point register pair if
19734         either half is used.
19735         (compute_frame_size): Fix comment.
19736
19737 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
19738
19739         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
19740         argument of type bool.
19741         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
19742         argument. Safely select temporary P register according to it.
19743         (do_link): Change call site of add_to_reg accordingly.
19744         (do_unlink): Add epilogue_p as a fourth argument and pass it
19745         to add_to_reg.
19746         (expand_interrupt_handler_epilogue): Change call of do_unlink
19747         accordingly.
19748         (bfin_expand_prologue): Add a third argument sibcall_p.
19749         * config/bfin/bfin.md (epilogue): Change call of
19750         bfin_expand_epilogue accordingly.
19751         (sibcall_epilogue): Likewise.
19752         (eh_return_internal): Likewise.
19753
19754         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
19755         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
19756         * config/bfin/bfin.c (bfin_handle_option): Handle
19757         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
19758         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
19759         Support bf534, bf536 and bf561.
19760         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
19761
19762 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
19763
19764         PR target/31854
19765         * config/i386/i386.c (ix86_function_regparm): Process local
19766         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
19767
19768 2007-05-07  Mike Stump  <mrs@apple.com>
19769
19770         * doc/invoke.texi (Warning Options): Document that -Wempty-body
19771         also checks for and while statements in C++.
19772
19773 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
19774
19775         * gcc.c (at_file_supplied): New variable.
19776         (main): Set it if we expanded argv.
19777         (do_spec_1): Pass an @-file to the linker if we were called with
19778         an @-file argument and HAVE_GNU_LD.
19779         * collect2.c (at_file_supplied): New variable.
19780         (response_file): New variable.
19781         (collect_exit): Unlink response_file if necessary.
19782         (handler): Likewise.
19783         (do_wait): Likewise.
19784         (main): Set at_file_supplied if we expanded argv.
19785         (collect_execute): Pass an @-file to subprocesses if we were called
19786         with an @-file argument.
19787         * configure.ac: Add define for HAVE_GNU_LD.
19788         * configure: Regenerate.
19789         * config.in: Regenerate.
19790
19791 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
19792
19793         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
19794         operand to HI mode.
19795         (mulsi3): New.
19796         (divsi3): New.
19797         (udivsi3): New.
19798
19799 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
19800
19801         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19802         (TARGET_ENCODE_SECTION_INFO): Re-define.
19803         (m32c_encode_section_info): New
19804         (function_vector_handler): New
19805         (current_function_special_page_vector): New
19806         (m32c_special_page_vector_p): New.
19807         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
19808         Prototype.
19809         * config/m32c/jump.md: Added instruction JSRS for functions
19810         with attribute "function_vector".
19811         * doc/extend.texi (function_vector): Added description
19812         for M16C, M32C targets.
19813
19814 2007-05-07  DJ Delorie  <dj@redhat.com>
19815
19816         PR 31794
19817         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
19818         ashrpsi3, lshrpsi3): Update shift count constraint.
19819
19820 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
19821             Nathan Froyd  <froydnj@codesourcery.com>
19822
19823         PR 22133
19824         * c-incpath.c (add_path): Strip trailing path separators.
19825
19826 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
19827
19828         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
19829         Free dominance info before purging EH edges.
19830         (eliminate_degenerate_phis): Likewise.
19831         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
19832
19833 2007-05-07  Jan Hubicka  <jh@suse.cz>
19834
19835         * gimplify.c (gimplify_expr): Do not crash when folding
19836         (void *)(int)&a + 4.
19837
19838 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19839
19840         PR driver/31694
19841         * c-opts.c (lang_fortran): Make it non static.
19842         * c-common.h (lang_fortran): New prototype.
19843         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
19844         -lang-fortran option was passed by the driver.
19845
19846 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
19847
19848         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
19849         of ASSERT_CHECKING.  Tweak message.
19850
19851 2007-05-06  Revital Eres  <eres@il.ibm.com>
19852
19853         PR 30957
19854         * loop-unroll.c (insert_var_expansion_initialization):
19855         Initialize the expansions with -zero instead of +zero.
19856
19857 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
19858
19859         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
19860         into pic and non-pic versions. Mark r19 as used for
19861         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
19862         for tgd_load, tld_load and tie_load .
19863         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
19864         version of tgd_load, tld_load and tie_load depending on the
19865         value of flag_pic.
19866
19867 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
19868             Jakub Jelinek  <jakub@redhat.com>
19869
19870         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
19871         (__do_global_dtors_aux): Use more paranoid loop to run
19872         destructors if HIDDEN_DTOR_LIST_END.
19873         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
19874
19875 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
19876
19877         * varasm.c (align_variable): Don't increase alignment for
19878         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
19879         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
19880
19881 2007-05-04  Josh Conner  <jconner@apple.com>
19882
19883         * basic-block.h (cdi_direction): Assign values to all enumeration
19884         constants.
19885         (dom_computed): Remove.
19886         (dom_info_state): New.
19887         (set_dom_info_availability): New.
19888         * tree-ssa-loop-im.c (determine_invariantness): Initialize
19889         walk_data.dom_direction.
19890         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
19891         instead of dom_computed[].
19892         (split_edge): Likewise.
19893         (create_basic_block): Likewise.
19894         (merge_blocks): Likewise.
19895         * ifcvt.c (find_if_header): Likewise.
19896         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
19897         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
19898         * tree-ssa.c (verify_ssa): Likewise.
19899         * tree-cfg.c (tree_verify_flow_info): Likewise.
19900         (remove_edge_and_dominated_blocks): Likewise.
19901         * dominance.c (dom_computed): Make static.
19902         (calc_dfs_tree_nonrec): Change third param to a bool.
19903         (calc_dfs_tree): Change second param to a bool.
19904         (calc_idioms): Change second param to a bool.  Use
19905         dom_convert_dir_to_idx.
19906         (init_dom_info): Validate dir before using.
19907         (dom_convert_dir_to_idx): New.
19908         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
19909         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
19910         (free_dominance_info): Use dom_convert_dir_to_idx.
19911         (get_immediate_dominator): Likewise.
19912         (set_immediate_dominator): Likewise.
19913         (get_dominated_by): Likewise.
19914         (redirect_immediate_dominators): Likewise.
19915         (nearest_common_denominator): Likewise.
19916         (dominated_by_p): Likewise.
19917         (bb_dom_dfs_in): Likewise.
19918         (bb_dom_dfs_out): Likewise.
19919         (recount_dominator): Likewise.
19920         (iterate_fix_dominators): Likewise.
19921         (add_to_dominance_info): Likewise.
19922         (delete_from_dominance_info): Likewise.
19923         (first_dom_son): Likewise.
19924         (next_dom_son): Likewise.
19925         (dom_info_available_p): Likewise.
19926         (dom_info_state): New.
19927         (set_dom_info_availability): New.
19928
19929 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
19930
19931         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
19932         Expander removed.
19933         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
19934
19935 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
19936
19937         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
19938         (subdi3, subdi_carry): Delete.
19939
19940 2007-05-04  Jan Hubicka  <jh@suse.cz>
19941             Richard Guenther  <rguenther@suse.de>
19942
19943         * opts.c (decode_options): Do not fiddle with inlining
19944         parameters in case of optimizing for size.
19945         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
19946         for size do nothing.
19947         (cgraph_decide_inlining_of_small_function): When optimizing for
19948         size never inline functions increasing caller size.
19949         (cgraph_early_inlining): Inline for size when optimizing for size.
19950
19951 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
19952
19953         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
19954         logical operations piecewise.
19955         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
19956         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
19957         subdi_sesidi_di): Delete.
19958         (add_with_carry): Produce carry in CC instead of a DREG to shorten
19959         the generated sequence.  Allow three-reg add in constraints.  Rewrite
19960         the rtl expression for carry to avoid zero_extend of a constant.
19961         (sub_with_carry): New pattern.
19962         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
19963         different sequence not involving jumps.
19964         (notbi): Now a named pattern.
19965
19966 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
19967
19968         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
19969         Add the note about a significant loss of accuracy of some
19970         mathematical routines when these options are used.
19971
19972 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19973
19974         * haifa-sched.c (rtx_vec_t): New typedef.
19975         (contributes_to_priority_p): Extract piece of priority () into new
19976         static function.
19977         (priority): Use the function.  Add assertion.
19978         (rank_for_schedule, set_priorities): Add assertion to check that
19979         insn's priority is initialized.
19980         (clear_priorities, calc_priorities): Change signature.  Make it update
19981         all relevant insns.  Update all callers ('add_to_speculative_block ()'
19982         and 'create_block_check_twin ()').
19983         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
19984         Add new field 'priority_status'.
19985         (INSN_PRIORITY_STATUS): New macro.
19986         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
19987
19988 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19989
19990         * sched-ebb.c (debug_ebb_dependencies): New static function.
19991         (init_ready_list): Use it.
19992
19993         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
19994         with changed signature and 'debug_rgn_dependencies ()'.
19995         (debug_rgn_dependencies): New static function.
19996         (init_ready_list): Use it.
19997
19998         * sched-int.h (debug_dependencies): Declare.
19999
20000 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20001
20002         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
20003
20004 2007-05-04  Dirk Mueller  <dmueller@suse.de>
20005
20006         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
20007
20008 2007-05-03  Jan Hubicka  <jh@suse.cz>
20009
20010         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
20011         ((T1)X op (T1)Y), for pointer type in more cases than before.
20012
20013         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
20014
20015         * tree-object-size.c (plus_expr_object_size): When operand size is
20016         unknown, return unknown.
20017
20018 2007-05-03  Dirk Mueller  <dmueller@suse.de>
20019
20020         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
20021
20022         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
20023         options.
20024
20025         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
20026
20027 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
20028
20029         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
20030
20031 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
20032
20033         * config/soft-fp/double.h, config/soft-fp/extended.h,
20034         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
20035         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
20036         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
20037         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
20038         glibc CVS.
20039
20040 2007-05-03  Ian Lance Taylor  <iant@google.com>
20041
20042         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
20043         MASK_PPC_GFXOPT for 8540 or 8548.
20044
20045 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20046
20047         * tree-vect-transform.c (vect_update_inits_of_drs): Use
20048         vect_print_dump_info() to output debug information.
20049
20050 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20051
20052         PR target/31768
20053         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
20054         operands of size 2 when operand is not MEM_P.
20055
20056 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20057
20058         PR tree-optimization/30565
20059         * lambda-code.c (perfect_nestify): Fix updating of dominators.
20060
20061 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
20062
20063         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
20064         (umulsi3_highpart): Use them.
20065         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
20066         for final accumulator to D regisster tranfser.
20067
20068 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
20069
20070         PR tree-optimization/31699
20071         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
20072         wrong code.
20073         (vect_enhance_data_refs_alignment): Compute peel amount using
20074         TYPE_VECTOR_SUBPARTS instead of vf.
20075         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
20076
20077 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
20078
20079         PR bootstrap/31776
20080         * system.h: Remove inclusion of double-int.h
20081         * tree.h: Include double-int.h
20082         * gengtype.c: Likewise
20083         * cfgloop.h: Likewise
20084         * Makefile.in: Adjust dependencies on double-int.h
20085
20086 2007-05-02  Eric Christopher  <echristo@apple.com>
20087
20088         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
20089         -shared to -Zdynamiclib.
20090
20091 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
20092
20093         PR c++/31663
20094         * c-common.c (strip_pointer_or_array_types): New function.
20095         * c-common.h (strip_pointer_or_array_types): New function declaration.
20096
20097 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20098
20099         PR tree-optimization/31771
20100         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
20101
20102 2007-05-02  Paul Brook  <paul@codesourcery.com>
20103
20104         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
20105
20106 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20107
20108         PR middle-end/29715
20109         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
20110         transformation.
20111
20112 2007-05-02  Nick Clifton  <nickc@redhat.com>
20113
20114         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
20115
20116 2007-05-02  Richard Guenther  <rguenther@suse.de>
20117
20118         PR tree-optimization/31146
20119         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
20120         argument, single_use_p.  If we have a single use that is
20121         a conversion to the definition rhs type, propagate that rhs.
20122         (forward_propagate_addr_expr): Pass single_use_p argument
20123         to forward_propagate_addr_expr_1.
20124
20125 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20126
20127         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
20128         variable.
20129
20130 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20131
20132         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
20133         'AMD Family 10 core'.
20134
20135 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20136
20137         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
20138         and athlon64-sse3 as improved versions of k8, opteron and athlon64
20139         with SSE3 instruction set support.
20140         * doc/invoke.texi: Likewise.
20141
20142 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20143
20144         * config/i386/i386.c (override_options): Tuning 32-byte loop
20145         alignment for amdfam10 architecture. Increasing the max loop
20146         alignment to 24 bytes.
20147
20148 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
20149
20150         * config/m68k/constraints.md: New.
20151         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
20152         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
20153         EXTRA_CONSTRAINT): Remove.
20154         * config/m68k/m68k.md: Include constraints.md.
20155         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
20156
20157 2007-05-01  Ian Lance Taylor  <iant@google.com>
20158
20159         PR tree-optimization/31739
20160         * tree-vrp.c (vrp_val_is_max): New static function.
20161         (vrp_val_is_min): New static function.
20162         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
20163         copying the node.
20164         (set_value_range): Use vrp_val_is_{max,min}.
20165         (extract_range_from_assert): Likewise.
20166         (extract_range_from_binary_expr): Likewise.
20167         (extract_range_from_unary_expr): Likewise.
20168         (dump_value_range, vrp_meet): Likewise.
20169         (vrp_visit_phi_node): Likewise.
20170         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
20171
20172 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
20173
20174         * config/i386/gmon-sol2.c (size_t): New type.
20175         (intptr_t): Likewise.
20176         (s_textsize): Declare as size_t.
20177         (sbrk): Declare.
20178         (monstartup): Use size_t for sizes.
20179         (_mcount): Save and restore registers.
20180         (internal_mcount): Pass 0 as the first argument to monstartup
20181         in 64-bit mode.
20182         (moncontrol): Convert pointer to appropriately sized integer
20183         before passing to profil.
20184
20185 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20186
20187         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
20188         __NO_FPRS__, not just if _SOFT_DOUBLE.
20189         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
20190         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
20191         also for E500 double.
20192         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
20193         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
20194         && !TARGET_FPRS).
20195
20196 2007-05-01  Richard Guenther  <rguenther@suse.de>
20197
20198         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
20199         is NULL.
20200
20201 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
20202
20203         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
20204
20205 2007-05-01  Jan Hubicka  <jh@suse.cz>
20206
20207         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
20208         invariant.
20209
20210 2007-05-01  Jan Hubicka  <jh@suse.cz>
20211
20212         * tree.h (maybe_fold_offset_to_component_ref): Remove.
20213         (maybe_fold_offset_to_reference): Declare.
20214         * fold-const.c (fold_unary): Do not fold
20215         (type *)&A into &A->field_of_type_and_offset_0
20216         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
20217         size is unknown, give up.
20218         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
20219         offsets.
20220         (maybe_fold_offset_to_reference): New.
20221         (maybe_fold_stmt_indirect): Use it.
20222         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
20223         * gimplify.c (gimplify_conversion): Canonicalize conversions to
20224         field references.
20225         (gimplify_expr): Likewise for plus_expr.
20226
20227 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
20228
20229         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
20230         bsi_after_labels.  Always insert statements before bsi.
20231         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
20232         * predict.c (apply_return_prediction): Check for empty blocks.
20233         * cfgexpand.c (lab_rtx_for_bb): New variable.
20234         (label_rtx_for_bb): Do not create new tree labels.
20235         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
20236         (tree_expand_cfg): Initialize lab_rtx_for_bb.
20237         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
20238         creating edges.
20239         (label_for_bb): Add field used.
20240         (update_eh_label, main_block_label): Mark the label used.
20241         (cleanup_dead_labels): Remove unused labels.
20242
20243 2007-05-01  Richard Guenther  <rguenther@suse.de>
20244
20245         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
20246         if it is not about to be set.
20247         (get_value_range): Do not pre-allocate equiv bitmap.
20248         (update_value_range): No need to clear equiv field.
20249         (add_equivalence): Change prototype to get bitmap pointer.
20250         Allocate bitmap here if it is not already.
20251         (extract_range_from_assert): Do not allocate bitmap here.
20252         Update callers to add_equivalence.
20253         (extract_range_from_ssa_name): Likewise.
20254         (get_vr_for_comparison): New static helper.
20255         (compare_name_with_value): Handle NULL equiv bitmap by
20256         peeling the first iteration of the comparison loop.
20257         Use get_vr_for_comparison.
20258         (compare_names): Handle NULL equiv bitmaps by using fake
20259         ones.  Use get_vr_for_comparison.
20260
20261 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
20262
20263         * double-int.c (mpz_set_double_int): Moved from
20264         tree-ssa-loop-niter.c.
20265         (mpz_get_double_int): Likewise; also, add option to wrap
20266         out-of-range integers.
20267         * double-int.h: New prototypes for above.
20268         * tree.c (get_static_type_bounds): Moved from
20269         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
20270         TYPE_MAX_VALUE if they exist..
20271         * tree.h: New prototype for above.
20272         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
20273         get_type_bounds calls.
20274         (mpz_set_double_int): Move to double-int.c.
20275         (get_type_bounds): Move to tree.c, rename to
20276         get_static_type_bounds.
20277         (mpz_to_double_int): Move to double-int.c, rename to
20278         mpz_get_double_int.
20279
20280 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
20281
20282         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
20283         DIV0 exception can fall through to a normal return.
20284
20285 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
20286
20287         PR middle-end/22156
20288         Temporarily revert:
20289         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
20290         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
20291         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20292         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
20293         initialize align to silence bogus warning.
20294         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20295         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
20296         all_no_warning.
20297         (struct sra_walk_fns): Remove use_all parameter from use.
20298         (sra_hash_tree): Handle BIT_FIELD_REFs.
20299         (sra_elt_hash): Don't hash bitfld blocks.
20300         (sra_elt_eq): Skip them in parent compares as well.  Handle
20301         BIT_FIELD_REFs.
20302         (sra_walk_expr): Don't maintain or pass down use_all_p.
20303         (scan_use): Remove use_all parameter.
20304         (scalarize_use): Likewise.  Re-expand assignment to
20305         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
20306         output, and re-scalarize after output.  Don't mark anything
20307         for no warning.
20308         (scalarize_ldst): Adjust.
20309         (scalarize_walk_gimple_modify_statement): Likewise.
20310         (build_element_name_1): Handle BIT_FIELD_REFs.
20311         (instantiate_element): Don't warn for any element whose parent
20312         is used as a whole.
20313         (instantiate_missing_elements_1): Return the sra_elt.
20314         (canon_type_for_field): New.
20315         (try_instantiate_multiple_fields): New.
20316         (instantiate_missing_elemnts): Use them.
20317         (mark_no_warning): Removed.
20318         (generate_one_element_ref): Handle BIT_FIELD_REFs.
20319         (REPLDUP, sra_build_elt_assignment): New.
20320         (generate_copy_inout): Use them.
20321         (generate_element_copy): Likewise.  Handle bitfld differences.
20322         (generate_element_zero): Don't recurse for blocks.  Use
20323         sra_build_elt_assignment.
20324         (generate_one_element_int): Take elt instead of var.  Use
20325         sra_build_elt_assignment.
20326         (generate_element_init_1): Adjust.
20327         (scalarize_use, scalarize_copy): Use REPLDUP.
20328         (scalarize_ldst): Move assert before dereference.
20329         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20330
20331 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20332
20333         PR C++/31721
20334         * tree.c (reconstruct_complex_type): Reconstruct a reference
20335         correctly.
20336         Also use the same mode for the pointer as the old pointer type.
20337
20338 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20339
20340         * doc/trouble.texi (Interoperation): Remove note about Ultrix
20341         Fortran compiler.
20342
20343 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
20344
20345         PR rtl-optimization/31676
20346         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
20347         (df_refs_record): Call it.
20348
20349 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
20350
20351         * rtl.def (SS_ABS): New code.
20352         * config/bfin/bfin.c (print_operand): New modifier 'v'.
20353         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
20354         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
20355         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
20356         (bfin_init_builtins): Define them.
20357         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
20358         (bfin_expand_builtin): ... and handle the others here.
20359         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
20360         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
20361         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
20362         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
20363         operand is only HImode.
20364
20365 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
20366
20367         * regclass.c (scan_one_insn): Remove splitting of
20368         two address insns.
20369
20370 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
20371             Nigel Stephens  <nigel@mips.com>
20372
20373         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
20374
20375 2007-04-28  Jan Hubicka  <jh@suse.cz>
20376
20377         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
20378         insn_locators_alloc instead of insn_locators_initialize;
20379         call reset_block_changes.
20380         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20381         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
20382         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
20383         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
20384         * config/score/score.c (th_output_mi_thunk): Likewise.
20385         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
20386         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
20387         tolerate uninitialized locator info.
20388
20389         Re-apply:
20390         * function.c (init_function_start): Don't init line number info.
20391         (expand_function_end): Update.
20392         (reset_block_changes, record_block_change, finalize_block_changes,
20393         check_block_change, free_block_changes): Kill.
20394         * function.h (reset_block_changes, record_block_change,
20395         finalize_block_changes, check_block_change, free_block_changes):
20396         Remove prototypes.
20397         (struct function): Remove ib_boundaries_block.
20398         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20399         Use curr_insn_locator to initialize locator.
20400         (emit_line_note): Remove.
20401         * cfgexpand.c (expand_gimple_cond_expr): Update.
20402         (construct_exit_block): Likewise.
20403         (tree_expand_cfg): Initialize/finalize locators.
20404         * expr.c (expand_expr_real): Update.
20405         * cfglayout.c (line_locators_locs, line_locators_lines,
20406         file_locators_locs, file_locators_files): Remove.
20407         (set_block_levels): Move to cfgexpand.c.
20408         (insn_locators_initialize): Remove.
20409         (pass_insn_locators_initialize): Remove.
20410         (locations_locators_locs, locations_locators_vals): New static vars.
20411         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20412         Likewise.
20413         (insn_locators_alloc, insn_locators_finalize,
20414         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20415         New functions.
20416         (locator_location): New.
20417         (locator_line, locator_file): Rewrite.
20418         * rtl.h (emit_line_note): Kill.
20419         (insn_locators_alloc, insn_locators_finalize,
20420         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20421         Declare.
20422         * tree-inline.c (initialize_cfun): Do not initialize
20423         ib_boundaries_block.
20424         * passes.c (pass_insn_locators_initialize): Remove.
20425
20426 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
20427
20428         * tree-cfg.c (move_block_to_fn): Release bb from dominance
20429         info.  Update last_basic_block correctly.
20430
20431 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
20432
20433         PR target/31701
20434         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
20435         register itself to hold the offset constant.  Tell flow the use
20436         of r4 and r5 when they are used.
20437
20438 2007-04-27  Richard Guenther  <rguenther@suse.de>
20439
20440         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
20441         if we simplified anything.
20442         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
20443         warnings until we did a simplification and the stmt was not
20444         marked as TREE_NO_WARNING.
20445
20446 2007-04-27  Mike Stump  <mrs@apple.com>
20447
20448         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
20449
20450 2007-04-27  Ian Lance Taylor  <iant@google.com>
20451
20452         PR middle-end/31710
20453         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
20454         TYPE_MAX_VALUE exist, convert them to the new type.
20455
20456 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20457
20458         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
20459         if it claims to be available.
20460         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
20461         edge is redirected.
20462         (perform_tree_ssa_dce): Always free postdominators.
20463
20464 2007-04-27  Richard Henderson  <rth@redhat.com>
20465
20466         * config/alpha/predicates.md (aligned_memory_operand): Mark
20467         as define_special_predicate.
20468         (unaligned_memory_operand, normal_memory_operand): Likewise.
20469         (reg_or_unaligned_mem_operand): Remove.
20470         (any_memory_operand): Match the documentation and check for
20471         non-renumbered pseudos during reload.
20472         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
20473         alpha_secondary_reload_class, update to new interface, make static.
20474         Handle CQImode like HImode.  Remove FP subreg check.
20475         (alpha_expand_mov): Use replace_equiv_address.
20476         (alpha_expand_mov_nobwx): Use any_memory_operand.
20477         (TARGET_SECONDARY_RELOAD): New.
20478         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
20479         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
20480         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
20481         * config/alpha/alpha.md: ... here.
20482         (RELOAD12, reloadmode): New.
20483         (movcqi): New.
20484         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
20485         Don't handle the aligned case here.
20486         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
20487         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
20488         reload_inhi_help.  Don't expect a scratch register.
20489         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
20490         reload_outhi_help.
20491         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
20492
20493 2007-04-27  Richard Guenther  <rguenther@suse.de>
20494
20495         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
20496
20497 2007-04-27  Richard Guenther  <rguenther@suse.de>
20498
20499         PR tree-optimization/30965
20500         PR tree-optimization/30978
20501         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
20502         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
20503         (find_equivalent_equality_comparison): Likewise.
20504         (simplify_cond): Likewise.
20505         (get_prop_source_stmt): New helper.
20506         (get_prop_dest_stmt): Likewise.
20507         (can_propagate_from): Likewise.
20508         (remove_prop_source_from_use): Likewise.
20509         (combine_cond_expr_cond): Likewise.
20510         (forward_propagate_comparison): New function.
20511         (forward_propagate_into_cond): Rewrite to use fold for
20512         tree combining.
20513         (tree_ssa_forward_propagate_single_use_vars): Call
20514         forward_propagate_comparison to propagate comparisons.
20515
20516 2007-04-27  Richard Guenther  <rguenther@suse.de>
20517
20518         PR tree-optimization/31715
20519         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
20520         sure to do computation on the offset in an appropriate
20521         signed type.
20522
20523 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
20524
20525         * reload.h (elimination_target_reg_p): Declare.
20526         * reload.c (find_reloads): Don't apply the reg_rtx move
20527         optimization if the SET_DEST satisfies elimination_target_reg_p.
20528         * reload1.c (elimination_target_reg_p): New function.
20529         (gen_reload): In the move/add2 fallback, make sure that op0
20530         does not overlap the destination register.
20531
20532 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20533
20534         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
20535         transform only GIMPLE_MODIFY_STMTs.
20536         * tree-complex.c (expand_complex_operations_1): Ditto.
20537         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
20538         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
20539         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
20540         branches.
20541         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
20542         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
20543         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
20544         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
20545         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
20546         slpeel_add_loop_guard): Ditto.
20547         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
20548         * lambda-code.c (perfect_nestify): Ditto.
20549         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
20550         before the first statement.
20551         * tree-optimize.c (execute_free_datastructures): Fix comments.
20552         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
20553         * tree-flow.h (disband_implicit_edges): Declaration removed.
20554         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
20555         branches.
20556         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
20557         COND_EXPRs without gotos.
20558         (disband_implicit_edges, has_label_p): Removed.
20559         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
20560         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
20561         branches.
20562         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
20563         side effects.
20564         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
20565         also for COND_EXPRs.
20566         * cfgexpand.c (label_rtx_for_bb): New function.
20567         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
20568         Use label_rtx_for_bb to find the labels.
20569         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
20570         last block.  Detect fallthru edges.
20571
20572 2007-04-26  Ian Lance Taylor  <iant@google.com>
20573
20574         PR target/28675
20575         * reload.c (find_reloads_subreg_address): If the address was valid
20576         in the original mode but not in the new mode, reload the whole
20577         address.
20578
20579 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
20580
20581         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
20582         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
20583         (cleanup_control_expr_graph): Do not invalidate dominance info.
20584         Record altered blocks.
20585         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
20586         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
20587         cleanup_tree_cfg_bb): New functions.
20588         (remove_forwarder_block): Do not maintain the worklist of blocks.
20589         Record altered blocks.
20590         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
20591         not over whole cfg.
20592         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
20593         delete_unreachable_blocks if dominators are not available.
20594         * tree-inline.c (optimize_inline_calls): Free dominance information
20595         earlier.
20596         * tree-flow.h (remove_edge_and_dominated_blocks,
20597         cfgcleanup_altered_bbs): Altered.
20598         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
20599         blocks.
20600         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
20601         functions.
20602         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
20603         do not invalidate dominators.
20604
20605 2007-04-26  Anatoly Sokolov <aesok@post.ru>
20606
20607         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
20608         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
20609         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
20610         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
20611
20612 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
20613
20614         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
20615
20616 2007-04-26  Richard Guenther  <rguenther@suse.de>
20617
20618         PR tree-optimization/31703
20619         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
20620         the right type for the target of the bittest.
20621
20622 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20623
20624         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
20625         ix86_sol10_return_in_memory.
20626
20627 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20628
20629         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
20630         variables.
20631
20632 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
20633
20634         PR c++/31598
20635         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
20636
20637         PR tree-optimization/30558
20638         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
20639         clear this_state.prev_try.
20640
20641 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20642             Mark Mitchell  <mark@codesourcery.com>
20643
20644         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
20645         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
20646         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
20647
20648 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
20649
20650         PR driver/31107
20651         * doc/invoke.texi (%:print-asm-header): Document.
20652         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
20653         and -ftarget-help.
20654         (static_spec_functions): Add print-asm-header.
20655         (main): Print a banner before the --target-help linker options.
20656         (print_asm_header_spec_function): New function.
20657
20658 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
20659
20660         PR target/31403
20661         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
20662         (movsf_ie): Likewise.
20663
20664 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
20665
20666         * doc/extend.texi ([Type Traits]): Adjust per N2255.
20667
20668 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
20669
20670         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
20671         exception for divide-by-zero.
20672         (__umodsi3, __modsi3): Likewise.
20673
20674 2007-04-25  Dirk Mueller  <dmueller@suse.de>
20675
20676         * c-typeck.c (build_compound_expr): Annotate warning()
20677         call with OPT_Wunused_value.
20678         * tree-ssa.c (warn_uninit): Annotate warning with
20679         OPT_Wunintialized.
20680         * c-common.c (handle_sentinel_attribute): Annotate warning
20681         call with OPT_Wattributes.
20682
20683 2007-04-25  Thiemo Seufer  <ths@mips.com>
20684
20685         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
20686         (mips16): Fix typo.
20687         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
20688         on to the assembler.  Improve handling of -mno-mips16.  Add handling
20689         of -mno-mips3d, -mno-dsp, -mno-dspr2.
20690         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
20691         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
20692         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
20693
20694 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
20695
20696         PR target/31680
20697         * config/i386/winnt.c (i386_pe_file_end): Strip only
20698         USER_LABEL_PREFIX when writing export name.
20699
20700 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
20701
20702         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
20703         sh/elf.h, vx-common.h and vxworks.h.
20704         * config/sh/sh.h: Include config/vxworks-dummy.h.
20705         (SUBTARGET_OVERRIDE_OPTIONS): Define.
20706         (OVERRIDE_OPTIONS): Use it.
20707         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
20708         (vxworks_picreg): New pattern.
20709         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
20710         VXWORKS_OS_CPP_BUILTINS.
20711         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
20712         to their VXWORKS_* equivalents.
20713         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
20714         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
20715         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
20716         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
20717         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
20718         -mrtp/-fPIC multilibs.
20719         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
20720         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
20721         (MULTILIB_OSDIRNAMES): Delete.
20722
20723 2007-04-25  Anatoly Sokolov <aesok@post.ru>
20724
20725         PR target/18989
20726         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
20727
20728 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
20729
20730         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
20731         rounding mode to be specified by the caller.
20732         (real_to_mpfr) Likewise.
20733         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
20734         include new arguments.
20735         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
20736
20737 2007-04-24  Ian Lance Taylor  <iant@google.com>
20738
20739         PR tree-optimization/31605
20740         * tree-vrp.c (set_value_range): Check that min and max are not
20741         both overflow infinities.
20742         (set_value_range_to_value): New static function.
20743         (extract_range_from_binary_expr): Call set_value_range_to_value.
20744         (extract_range_from_cond_expr): Likewise.
20745         (extract_range_from_expr): Likewise.
20746         (extract_range_from_unary_expr): Likewise.  Don't create a range
20747         which overflows on both sides.
20748         (vrp_meet): Check for a useless range.
20749         (vrp_visit_phi_node): If we see a constant which looks like an
20750         overflow infinity, turn off the TREE_OVERFLOW flag.
20751
20752 2007-04-24  Ian Lance Taylor  <iant@google.com>
20753
20754         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
20755
20756 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
20757
20758         PR diagnostic/25923
20759         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
20760         diagnostic message is being built.
20761         * tree-pretty-print.c (dump_generic_node): Only write the
20762         formatted text into BUFFER's stream if we are not building a
20763         diagnostic message.
20764         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
20765         dump_generic_node.
20766         * Makefile.in (toplev.o): Depend on tree-pass.h.
20767
20768 2007-04-24  Ian Lance Taylor  <iant@google.com>
20769
20770         PR tree-optimization/31602
20771         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
20772         conditionals in the copied loop header.
20773         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
20774         warnings if TREE_NO_WARNING is set.
20775         * doc/invoke.texi (Warning Options): Clarify that
20776         -Wstrict-overflow does not warn about loops.
20777
20778 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
20779
20780         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
20781         expand on the comment about _Decimal128 arguments and check the
20782         integer result of the modulus operation; for 64-bit ELF ABI, ensure
20783         that _Decimal128 argument uses even/odd register pair.
20784         (function_arg): Ditto.
20785
20786 2007-04-24  Hui-May Chang <hm.chang@apple.com>
20787
20788         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
20789         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
20790
20791 2007-04-24  Richard Guenther  <rguenther@suse.de>
20792             Olga Golovanevsky  <olga@il.ibm.com>
20793
20794         * fold-const.c (multiple_of_p): Check for bottom
20795         to be zero.
20796
20797 2007-04-24  Richard Henderson  <rth@redhat.com>
20798
20799         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
20800         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
20801         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
20802         looking for non-zero bits shifted out.  Avoid a recursive call
20803         when constructing the scalar.
20804         (__floatundisf): Likewise.
20805
20806 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20807
20808         * dwarf2out.c (field_byte_offset): Move the existing logic
20809         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
20810         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
20811
20812 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20813
20814         PR target/31641
20815         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
20816         length argument of 0 for memset.
20817         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
20818         unsigned shift instead of the signed variant.
20819
20820 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
20821
20822         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
20823         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
20824         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
20825         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
20826         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
20827         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
20828         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
20829         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
20830         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
20831         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
20832         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
20833         "mul<mode>3", "div<mode>3"): Insn definitions added.
20834         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
20835         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
20836         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
20837         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
20838         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
20839         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
20840         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
20841         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
20842         TARGET_FLOAT_FORMAT): Macro definitions removed.
20843         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
20844         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
20845         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
20846         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
20847         (s390_gen_rtx_const_DI): Function removed.
20848         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
20849
20850 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
20851
20852         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
20853         over an external ffs function.
20854
20855 2007-04-24  Chao-ying Fu  <fu@mips.com>
20856             Richard Sandiford  <richard@nildram.co.uk>
20857
20858         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
20859         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
20860         (smadd_widen_optab, umadd_widen_optab): Define.
20861         * optabs.c (init_optabs): Initialize smadd_widen_optab and
20862         umadd_widen_optab.
20863         * genopinit.c (optabs): Fill in smadd_widen_optab and
20864         umadd_widen_optab.
20865         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
20866         and umadd_widen_optab to implement multiply-add sequences.
20867         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
20868         (<u>maddsidi4): ...this.  Extend condition to include
20869         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
20870         of operand 0 to "ka" and use the three-operand form of madd<u>
20871         for TARGET_DSPR2.
20872         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
20873         to define_expands.
20874         * config/mips/constraints.md (ka): New register constraint.
20875
20876 2007-04-24  Jan Hubicka  <j@suse.cz>
20877
20878         Revert:
20879
20880         2007-04-23  Jan Hubicka  <jh@suse.cz>
20881         * function.c (init_function_start): Don't init line number info.
20882         (expand_function_end): Update.
20883         (reset_block_changes, record_block_change, finalize_block_changes,
20884         check_block_change, free_block_changes): Kill.
20885         * function.h (reset_block_changes, record_block_change,
20886         finalize_block_changes, check_block_change, free_block_changes):
20887         Remove prototypes.
20888         (struct function): Remove ib_boundaries_block.
20889         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
20890         Use curr_insn_locator to initialize locator.
20891         (emit_line_note): Remove.
20892         * cfgexpand.c (expand_gimple_cond_expr): Update.
20893         (construct_exit_block): Likewise.
20894         (tree_expand_cfg): Initialize/finalize locators.
20895         * expr.c (expand_expr_real): Update.
20896         * cfglayout.c (line_locators_locs, line_locators_lines,
20897         file_locators_locs, file_locators_files): Remove.
20898         (set_block_levels): Move to cfgexpand.c.
20899         (insn_locators_initialize): Remove.
20900         (pass_insn_locators_initialize): Remove.
20901         (locations_locators_locs, locations_locators_vals): New static vars.
20902         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
20903         Likewise.
20904         (insn_locators_alloc, insn_locators_finalize,
20905         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20906         New functions.
20907         (locator_location): New.
20908         (locator_line, locator_file): Rewrite.
20909         * rtl.h (emit_line_note): Kill.
20910         (insn_locators_alloc, insn_locators_finalize,
20911         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
20912         Declare.
20913         * tree-inline.c (initialize_cfun): Do not initialize
20914         ib_boundaries_block.
20915         * passes.c (pass_insn_locators_initialize): Remove.
20916
20917 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
20918
20919         * doc/invoke.texi: Removed leading '-' from option index entries.
20920
20921 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
20922
20923         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
20924         Use phi_nodes_ptr.
20925         (create_phi_node): Use set_phi_nodes.
20926         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
20927         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
20928         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
20929         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
20930         (bsi_start, bsi_last): Use bb_stmt_list.
20931         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
20932         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
20933         Traverse the statements using tsi iterator.
20934         * basic-block.h (struct basic_block_def): Fields stmt_list
20935         and phi_nodes moved to ...
20936         (struct tree_bb_info): ... new structure.
20937         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
20938         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
20939         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
20940         (tree_verify_flow_info): Verify that il.tree is not set for
20941         entry and exit block.
20942         (tree_split_block): Use set_bb_stmt_list.
20943
20944 2007-04-23  Mike Stump  <mrs@apple.com>
20945
20946         * config/i386/i386.c (ix86_tune_features
20947         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
20948         nocona and core2.
20949
20950 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
20951
20952         * config/i386/i386.md (prefix_extra): New attribute.
20953         (length): Add prefix_extra.
20954
20955         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
20956         (sse2_movntv2di): Likewise.
20957         (sse2_cvtps2dq): Likewise.
20958         (sse2_cvtpd2pi): Likewise.
20959         (sse2_cvttpd2pi): Likewise.
20960         (*sse2_cvtpd2ps): Likewise.
20961         (*add<mode>3): Likewise.
20962         (sse2_ssadd<mode>3): Likewise.
20963         (sse2_usadd<mode>3): Likewise.
20964         (*sub<mode>3): Likewise.
20965         (sse2_sssub<mode>3): Likewise.
20966         (sse2_ussub<mode>3): Likewise.
20967         (*mulv8hi3): Likewise.
20968         (*smulv8hi3_highpart): Likewise.
20969         (*umulv8hi3_highpart): Likewise.
20970         (sse2_umulv2siv2di3): Likewise.
20971         (sse2_pmaddwd): Likewise.
20972         (ashr<mode>3): Likewise.
20973         (lshr<mode>3): Likewise.
20974         (ashl<mode>3): Likewise.
20975         (sse2_ashlti3): Likewise.
20976         (sse2_lshrti3): Likewise.
20977         (*umaxv16qi3): Likewise.
20978         (*smaxv8hi3): Likewise.
20979         (*uminv16qi3): Likewise.
20980         (*sminv8hi3): Likewise.
20981         (sse2_eq<mode>3): Likewise.
20982         (sse2_gt<mode>3): Likewise.
20983         (*and<mode>3): Likewise.
20984         (sse2_nand<mode>3): Likewise.
20985         (*ior<mode>3): Likewise.
20986         (*xor<mode>3): Likewise.
20987         (sse2_packsswb): Likewise.
20988         (sse2_packssdw): Likewise.
20989         (sse2_packuswb): Likewise.
20990         (sse2_punpckhbw): Likewise.
20991         (sse2_punpcklbw): Likewise.
20992         (sse2_punpckhwd): Likewise.
20993         (sse2_punpcklwd): Likewise.
20994         (sse2_punpckhdq): Likewise.
20995         (sse2_punpckldq): Likewise.
20996         (sse2_punpckhqdq): Likewise.
20997         (sse2_punpcklqdq): Likewise.
20998         (*sse2_pinsrw): Likewise.
20999         (*sse2_pextrw): Likewise.
21000         (sse2_pshufd_1): Likewise.
21001         (sse2_uavgv16qi3): Likewise.
21002         (sse2_uavgv8hi3): Likewise.
21003         (sse2_psadbw): Likewise.
21004         (sse2_pmovmskb): Likewise.
21005         (*sse2_maskmovdqu): Likewise.
21006         (*sse2_maskmovdqu_rex64): Likewise.
21007         (sse4a_extrqi): Likewise.
21008         (sse4a_extrq): Likewise.
21009         (sse3_lddqu): Set prefix_rep.
21010         (sse3_addsubv4sf3): Likewise.
21011         (sse3_haddv4sf3): Likewise.
21012         (sse3_hsubv4sf3): Likewise.
21013         (sse_cvtss2si): Likewise.
21014         (sse_cvtss2si_2): Likewise.
21015         (sse_cvtss2siq): Likewise.
21016         (sse_cvtss2siq_2): Likewise.
21017         (sse_cvttss2si): Likewise.
21018         (sse_cvttss2siq): Likewise.
21019         (sse2_cvttps2dq): Likewise.
21020         (sse3_movshdup): Likewise.
21021         (sse3_movsldup): Likewise.
21022         (sse2_cvtsd2si): Likewise.
21023         (sse2_cvtsd2si_2): Likewise.
21024         (sse2_cvtsd2siq): Likewise.
21025         (sse2_cvtsd2siq_2): Likewise.
21026         (sse2_cvttsd2si): Likewise.
21027         (sse2_cvttsd2siq): Likewise.
21028         (*sse2_cvtpd2dq): Likewise.
21029         (*sse2_cvttpd2dq): Likewise.
21030         (sse2_pshuflw_1): Likewise.
21031         (sse2_pshufhw_1): Likewise.
21032         (sse4a_insertqi): Likewise.
21033         (sse4a_insertq): Likewise.
21034         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
21035         (ssse3_phadddv4si3): Likewise.
21036         (ssse3_phaddswv8hi3): Likewise.
21037         (ssse3_phsubwv8hi3): Likewise.
21038         (ssse3_phsubdv4si3): Likewise.
21039         (ssse3_phsubswv8hi3): Likewise.
21040         (ssse3_pmaddubswv8hi3): Likewise.
21041         (ssse3_pmulhrswv8hi3): Likewise.
21042         (ssse3_pshufbv16qi3): Likewise.
21043         (ssse3_psign<mode>3): Likewise.
21044         (ssse3_palignrti): Likewise.
21045         (abs<mode>2): Likewise.
21046         (ssse3_phaddwv4hi3): Set prefix_extra.
21047         (ssse3_phadddv2si3): Likewise.
21048         (ssse3_phaddswv4hi3): Likewise.
21049         (ssse3_phsubwv4hi3): Likewise.
21050         (ssse3_phsubdv2si3): Likewise.
21051         (ssse3_phsubswv4hi3): Likewise.
21052         (ssse3_pmaddubswv4hi3): Likewise.
21053         (ssse3_pmulhrswv4hi3): Likewise.
21054         (ssse3_pshufbv8qi3): Likewise.
21055         (ssse3_psign<mode>3): Likewise.
21056         (ssse3_palignrdi): Likewise.
21057         (abs<mode>2): Likewise.
21058         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
21059         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
21060         (sse2_pmovmskb): Set mode to SI instead of V2DF.
21061
21062 2007-04-23  Nick Clifton  <nickc@redhat.com>
21063
21064         * params.def: Fix formatting of emacs local variables.
21065
21066 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21067
21068         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
21069         move if inter-unit move isn't allowed.
21070         Don't split moving the first element of V2DI to DI to inter-unit
21071         move if inter-unit move isn't allowed.
21072
21073 2007-04-23  Richard Guenther  <rguenther@suse.de>
21074
21075         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
21076         and CDI_POST_DOMINATORS separately.
21077
21078 2007-04-23  Nick Clifton  <nickc@redhat.com>
21079
21080         * c.opt (Wformat-contains-nul): Add warning attribute.
21081
21082 2007-04-23  Jan Hubicka  <jh@suse.cz>
21083
21084         * function.c (init_function_start): Don't init line number info.
21085         (expand_function_end): Update.
21086         (reset_block_changes, record_block_change, finalize_block_changes,
21087         check_block_change, free_block_changes): Kill.
21088         * function.h (reset_block_changes, record_block_change,
21089         finalize_block_changes, check_block_change, free_block_changes):
21090         Remove prototypes.
21091         (struct function): Remove ib_boundaries_block.
21092         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21093         Use curr_insn_locator to initialize locator.
21094         (emit_line_note): Remove.
21095         * cfgexpand.c (expand_gimple_cond_expr): Update.
21096         (construct_exit_block): Likewise.
21097         (tree_expand_cfg): Initialize/finalize locators.
21098         * expr.c (expand_expr_real): Update.
21099         * cfglayout.c (line_locators_locs, line_locators_lines,
21100         file_locators_locs, file_locators_files): Remove.
21101         (set_block_levels): Move to cfgexpand.c.
21102         (insn_locators_initialize): Remove.
21103         (pass_insn_locators_initialize): Remove.
21104         (locations_locators_locs, locations_locators_vals): New static vars.
21105         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21106         Likewise.
21107         (insn_locators_alloc, insn_locators_finalize,
21108         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21109         New functions.
21110         (locator_location): New.
21111         (locator_line, locator_file): Rewrite.
21112         * rtl.h (emit_line_note): Kill.
21113         (insn_locators_alloc, insn_locators_finalize,
21114         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21115         Declare.
21116         * tree-inline.c (initialize_cfun): Do not initialize
21117         ib_boundaries_block.
21118         * passes.c (pass_insn_locators_initialize): Remove.
21119
21120 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21121
21122         PR middle-end/31448
21123         * expr.c (reduce_to_bit_field_precision): Handle
21124         CONST_INT rtx's.
21125
21126 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
21127
21128         PR tree-optimization/24659
21129         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
21130         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
21131         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
21132         * genopinit.c (optabs): Rename vec_pack_mod_optab
21133         to vec_pack_trunc_optab.
21134         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
21135         early for scalar floating point operands for NOP_EXPR.
21136         (vectorizable_type_promotion): Ditto.
21137         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
21138         vec_pack_trunc_optab.
21139         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
21140
21141         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
21142         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
21143         Rename from VEC_PACK_MOD_EXPR.
21144         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
21145         * expr.c (expand_expr_real_1): Ditto.
21146         * tree-inline.c (estimate_num_insns_1): Ditto.
21147         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
21148
21149         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
21150         (vec_unpacks_lo_v4sf): Ditto.
21151         (vec_pack_trunc_v2df): Ditto.
21152         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
21153         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21154         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
21155
21156         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
21157         vec_pack_mod_v8hi.
21158         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
21159
21160         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
21161         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
21162         packing of floating point operands.
21163         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
21164         represent unpacking of floating point operands.
21165         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
21166         [vec_unpacks_hi]: Ditto.
21167         [vec_unpacks_lo]: Ditto.
21168
21169 2007-04-22  Jan Hubicka  <jh@suse.cz>
21170
21171         * final.c (rest_of_handle_final): Call
21172         targetm.asm_out.constructor/targetm.asm_out.destructor
21173         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
21174         proper priority via decl_*_priority_insert.
21175         * c-common.c (c_expand_body): Likewise.
21176
21177 2007-04-22  Richard Guenther  <rguenther@suse.de>
21178
21179         PR tree-optimization/29789
21180         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
21181         (rewrite_reciprocal): New helper split out from
21182         determine_invariantness_stmt.
21183         (rewrite_bittest): Likewise.
21184         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
21185         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
21186         is not.
21187
21188 2007-04-22  Revital Eres  <eres@il.ibm.com>
21189
21190         * loop-unroll.c (var_to_expand): New field to support also
21191         insns of the form x = something + x.
21192         (analyze_insn_to_expand_var): Use it.
21193         (expand_var_during_unrolling): Likewise.
21194
21195 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21196
21197         * predict.c: Include pointer-set.h.
21198         (bb_predictions): New variable.
21199         (tree_predicted_by_p, tree_predict_edge,
21200         remove_predictions_associated_with_edge): Use bb_predictions map
21201         instead of bb->predictions.
21202         (clear_bb_predictions, assert_is_empty): New functions.
21203         (combine_predictions_for_bb): Use bb_predictions map.  Call
21204         clear_bb_predictions.
21205         (tree_estimate_probability): Create and free bb_predictions map.
21206         * Makefile.in (predict.o): Add pointer-set.h dependency.
21207         * basic-block.h (struct basic_block_def): Remove predictions
21208         field.
21209         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
21210
21211 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
21212
21213         PR target/31480
21214         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
21215         is null.
21216
21217 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21218
21219         * timevar.c (timevar_print): Change reference of --disable-checking to
21220         --enable-checking=release.  Also warn if assert checking is disabled.
21221
21222 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21223
21224         PR C/30265
21225         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
21226         decl as addressable if the compound literal was marked as
21227         addressable.
21228         Mark the decl as a gimple register if it is a complex or
21229         vector decl and does not live in memory.
21230
21231 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21232
21233         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
21234         (GENERIC_NEXT): New function macro.
21235         (PHI_CHAIN): Use phi_node's new chain variable.
21236         (tree_phi_node): Change tree_common to tree_base
21237         and add the chain field.
21238         * tree-phinodes.c (make_phi_node): Don't set
21239         TREE_TYPE on the new node.
21240         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
21241         instead of checking GIMPLE_TUPLE_P in chain_next.
21242         * tree-vect-transform.c
21243         (get_initial_def_for_induction): Look at
21244         PHI_RESULT_TREE for the type of the phi node.
21245         (update_vuses_to_preheader): Use PHI_CHAIN
21246         instead of TREE_CHAIN on the phi node.
21247         * tree-ssa-structalias.c (compute_points_to_sets):
21248         Likewise.
21249         (ipa_pta_execute): Likewise.
21250
21251 2007-04-21  Richard Guenther  <rguenther@suse.de>
21252
21253         PR middle-end/31136
21254         * fold-const.c (fold_unary): Call fold_convert_const on the
21255         original tree.
21256
21257 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
21258
21259         * gcse.c (store_killed_in_insn): Handle PARALLELs.
21260         (store_killed_in_pat): New.
21261
21262 2007-04-20  Richard Henderson  <rth@redhat.com>
21263
21264         PR target/31628
21265         * config/i386/i386.c (type_has_variadic_args_p): Look for any
21266         TREE_LIST with a void_type_node value, not void_list_node exactly.
21267
21268 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
21269
21270         * doc/standards.texi: Re-arrange into language-specific
21271         subsections. Add a C++ section, documenting which standards we
21272         support.
21273
21274 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
21275
21276         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
21277         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
21278
21279 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
21280
21281         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
21282         ecrti.o and crtbegin.o.
21283         (LIB_DEFAULT_SPEC): Include -lc.
21284         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
21285
21286 2007-04-20  Richard Henderson  <rth@redhat.com>
21287
21288         PR target/28623
21289         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
21290         argument; update all callers.
21291         (get_unaligned_offset): New.
21292         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
21293         get_unaligned_address, just pass on the address directly.
21294         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
21295         the subreg in the helper patterns.
21296         (unaligned_extendqidi_le): Use get_unaligned_offset.
21297         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
21298         (unaligned_extendhidi_be): Likewise.
21299         (unaligned_extendhidi): Tidy.
21300         * config/alpha/alpha-protos.h: Update.
21301
21302 2007-04-20  Richard Henderson  <rth@redhat.com>
21303
21304         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
21305         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
21306         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
21307         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21308         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21309         (CPP_SPEC): Don't include %(cpp_subtarget).
21310         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
21311         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
21312         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
21313
21314 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
21315
21316         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
21317         for __builtin_ia32_cmpordss.
21318
21319         PR tree-optimization/31632
21320         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
21321         and arg1 for optimizations of comparison against min/max values.
21322         Fold arg0 to arg1's type for optimizations of comparison against
21323         min+1 and max-1 values.
21324
21325 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
21326
21327         * reload.c (combine_reloads): When trying to use a dying register,
21328         check whether it's uninitialized and don't use if so.
21329
21330 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
21331
21332         * fold-const.c: Remove prototypes for native_encode_expr and
21333         native_interpret_expr.
21334         (native_encode_expr): Make non-static.
21335         (native_interpret_expr): Likewise.
21336         * tree.h: Add prototypes for the above.
21337
21338 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21339
21340         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
21341         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
21342         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
21343         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
21344         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
21345         Add length attributes.
21346
21347 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
21348
21349         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
21350         not that it is 1.
21351
21352         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
21353         __STDC_WANT_DEC_FP__.
21354
21355 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
21356
21357         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
21358         for long double compatibility.
21359         * configure: Regenerate.
21360
21361 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
21362
21363         PR rtl-optimization/29841
21364         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
21365         trap instructions.
21366         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
21367         that may cause control flow transfer from being moved.
21368
21369 2007-04-18  Jan Hubicka  <jh@suse.cz>
21370
21371         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
21372         types.
21373
21374 2007-04-18  Eric Christopher  <echristo@apple.com>
21375
21376         * config/rs6000/darwin.md (load_macho_picbase): Use link register
21377         only. Update operands.
21378         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
21379         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
21380         link register to pic register.
21381
21382 2007-04-18  Dirk Mueller  <dmueller@suse.de>
21383
21384         PR diagnostic/31227
21385         * tree-vrp.c (search_for_addr_array): New.
21386         (check_array_bounds): Suppress warning about
21387         address taken of array refs if its not de-referenced.
21388
21389 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21390
21391         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
21392         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
21393
21394         * tree-vectorizer.h (NITERS_KNOWN_P): New.
21395         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
21396         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
21397
21398         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
21399         dump print.
21400         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
21401         print message.
21402         (vect_analyze_scalar_cycles): Fix indentation.
21403         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
21404         (vect_mark_relevant): Include phis in relevance analysis.
21405
21406         * tree-vect-transform.c (vect_transform_loop): Add an assert.
21407
21408 2007-04-18  Anatoly Sokolov <aesok@post.ru>
21409
21410         * config/avr/avr.c (ptrreg_to_str): Replace error() with
21411         output_operand_lossage().
21412
21413 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21414
21415         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
21416         the unused code for reduction without adjust-in-epilog to simplify the
21417         function.
21418
21419 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
21420
21421         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
21422         (S390_TDC_NEGATIVE_ZERO): New constant.
21423         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
21424         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
21425         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
21426         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
21427         (S390_TDC_POSITIVE_INFINITY): New constant.
21428         (S390_TDC_NEGATIVE_INFINITY): New constant.
21429         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
21430         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
21431         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
21432         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
21433         (S390_TDC_INFINITY): New constant.
21434         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
21435         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
21436         optimization for UNSPEC_CCZ_TO_INT.
21437         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
21438         ("*ccz_to_int"): New insn.
21439         ("isinf<mode>2"): New insn.
21440         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
21441         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
21442         (UNSPEC_CCZ_TO_INT): New constant.
21443
21444 2007-04-18  Richard Guenther  <rguenther@suse.de>
21445
21446         PR tree-optimization/19431
21447         PR tree-optimization/21463
21448         * tree-pass.h (pass_phiprop): Declare.
21449         * passes.c (init_optimization_passes): New phiprop pass.
21450         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
21451         (phivn_valid_p): New helper function.
21452         (phiprop_insert_phi): Likewise.
21453         (propagate_with_phi): Likewise.
21454         (tree_ssa_phiprop): New propagator propagating loads
21455         through phi nodes if profitable.
21456
21457 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
21458
21459         * tree-vect-analyze.c (process_use): New function.
21460         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
21461         Check phis in all bbs.
21462         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
21463         assert.
21464
21465 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
21466
21467         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
21468         we use REG_EQUAL.
21469
21470 2007-04-17  Anatoly Sokolov <aesok@post.ru>
21471
21472         PR target/30483
21473         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
21474         error().
21475
21476 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21477
21478         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
21479         on "0".
21480         (sse_vmmulv4sf3): Likewise.
21481         (sse2_vmaddv2df3): Likewise.
21482         (sse2_vmmulv2df3): Likewise.
21483
21484 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
21485
21486         PR rtl-optimization/31360
21487         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
21488         (target_reg_cost): New.
21489         (init_set_costs): Initialize target_reg_cost.  Add comments
21490         regarding the rationale of the costs.
21491         (global_cost_for_size): Renamed to...
21492         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
21493         of register pressure.
21494         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
21495         estimate_reg_pressure_cost.  Add number of ivs.
21496         (determine_set_costs): Dump target_reg_cost.
21497         * loop-invariant.c (gain_for_invariant): Use
21498         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
21499         (best_gain_for_invariant, find_invariants_to_move): Remove
21500         n_inv_uses.
21501         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
21502         (target_reg_cost): Declare.
21503         (global_cost_for_size): Declaration removed.
21504         (estimate_reg_pressure_cost): Declare.
21505
21506 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
21507
21508         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
21509         regnos into even/odd register pairs.
21510         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
21511         TDmode similar to the other floating point modes.
21512         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
21513         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
21514         define_expand's.
21515         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
21516         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
21517         (movdd_hardfloat64): Use TARGET_MFPGPR.
21518
21519 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
21520
21521         * reload1.c (delete_output_reload): Don't count output in n_inherited.
21522
21523         Revert
21524         2005-01-05  Richard Henderson  <rth@redhat.com>
21525         PR rtl-opt/10692
21526         * reload1.c (do_input_reload): Restrict the optimization deleteing
21527         a previous output reload to RELOAD_FOR_INPUT.
21528
21529 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
21530
21531         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
21532         induc_vec_info_type.
21533         (vectorizable_induction): New function declaration.
21534         * tree-vect-transform.c (get_initial_def_for_induction): No need to
21535         check if already vectorized.  Find first place in BB where new stmts
21536         can be inserted.  Takes only one argument.
21537         (vectorizable_induction): New function.
21538         (vect_transform_stmt): Add case for induc_vec_info_type to call
21539         vectorizable_induction.
21540         (vect_transform_loop): Consider phis for vectorization.
21541         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
21542         condition.
21543         (analyze_operations): Call vectorizable_induction when analyzing phis.
21544         Fix comment.
21545         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
21546         (vect_mark_relevant): Include phis in relevance analysis.
21547         (vect_mark_stmts_to_be_vectorize): Likewise.
21548         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
21549
21550 2007-04-16  Lawrence Crowl  <crowl@google.com>
21551
21552         * doc/invoke.texi (Debugging Options): Add documentation for the
21553         -femit-struct-debug options -femit-struct-debug-baseonly,
21554         -femit-struct-debug-reduced, and
21555         -femit-struct-debug-detailed[=...].
21556
21557         * c-opts.c (c_common_handle_option): Add
21558         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
21559         and OPT_femit_struct_debug_detailed_.
21560         * c.opt: Add specifications for
21561         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
21562         and -femit-struct-debug-detailed[=...].
21563         * opts.c (set_struct_debug_option): Parse the
21564         -femit-struct-debug-... options.
21565         * opts.c (matches_main_base, main_input_basename,
21566         main_input_baselength, base_of_path, matches_main_base): Add
21567         variables and functions to compare header base name to compilation
21568         unit base name.
21569         * opts.c (should_emit_struct_debug): Add to determine to emit a
21570         structure based on the option.
21571         (dump_struct_debug) Also disabled function to debug this
21572         function.
21573         * opts.c (handle_options): Save the base name of the
21574         compilation unit.
21575
21576         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
21577         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
21578         This hook indicates if a type is generic.  Set it by default
21579         to "never generic".
21580         * langhooks.h (struct lang_hooks_for_types): Add a new hook
21581         to determine if a struct type is generic or not.
21582         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
21583         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
21584         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
21585         with live C++ hook.
21586
21587         * flags.h (enum debug_info_usage): Add an enumeration to describe
21588         a program's use of a structure type.
21589         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
21590         to indicate the program's usage of the type.  Filter structs based
21591         on the -femit-struct-debug-... specification.
21592         (gen_type_die): Split into two routines, gen_type_die and
21593         gen_type_die_with_usage.  gen_type_die is now a wrapper
21594         that assumes direct usage.
21595         (gen_type_die_with_usage): Replace calls to gen_type_die
21596         with gen_type_die_with_usage adding the program usage of
21597         the referenced type.
21598         (dwarf2out_imported_module_or_decl): Suppress struct debug
21599         information using should_emit_struct_debug when appropriate.
21600
21601 2007-04-16  Ian Lance Taylor  <iant@google.com>
21602
21603         PR tree-optimization/31522
21604         * tree-vrp.c (vr_phi_edge_counts): New static variable.
21605         (vrp_initialize): Allocate vr_phi_edge_counts.
21606         (vrp_visit_phi_node): Don't push to infinity if we saw a new
21607         executable edge.  Drop test for all constants.
21608         (vrp_finalize): Free vrp_phi_edge_counts.
21609
21610         * doc/cpp.texi (Common Predefined Macros): Clarify description of
21611         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
21612
21613         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
21614         predecessors at head rather than tail.
21615
21616 2007-04-16  Matthias Klose  <doko@debian.org>
21617
21618         * config/alpha/linux.h (CPP_SPEC): Define.
21619         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
21620
21621 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
21622
21623         * function.h: Remove sequence_stack extern declaration.
21624
21625 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21626
21627         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
21628         TARGET_FIDOA.
21629         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
21630         defined.
21631
21632 2007-04-16  Anatoly Sokolov <aesok@post.ru>
21633
21634         * config/avr/avr.c (avr_arch_types): Rearranging  array.
21635         (enum avr_arch): Add.
21636         (avr_mcu_types): Use avr_arch enumeration constants instead of
21637         numbers.
21638         * config/avr/avr.h (LINK_SPEC): Simplify.
21639
21640 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
21641
21642         * config/m68k/m68k.c (m68k_libcall_value,
21643         m68k_function_value): Use macros for register names more.
21644
21645         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
21646         instead.
21647         (M68K_REGNAME): Use A6_REG.
21648         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
21649
21650 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21651
21652         PR middle-end/28071
21653         * sched-int.h (struct deps): Split field 'pending_lists_length' into
21654         'pending_read_list_length' and 'pending_write_list_length'.  Update
21655         comment.
21656         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
21657         to handle two length counters instead of one.  Update all uses.
21658         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
21659         two length counters instead of one.
21660         * sched-rgn.c (propagate_deps): Update to handle two length counters
21661         instead of one.
21662
21663 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
21664
21665         PR target/31582
21666         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
21667         copy of source, pass it to ix86_expand_vector_set and return
21668         it as target.
21669
21670 2007-04-16  David Ung  <davidu@mips.com>
21671             Joseph Myers  <joseph@codesourcery.com>
21672
21673         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
21674         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
21675         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
21676         Add 74K processor information.
21677         * config/mips/mips.md: Include 74k.md.
21678         (cpu): Add 74kc,74kf,74kx.
21679         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
21680         * config/mips/74k.md: New.
21681         * doc/invoke.texi (MIPS Options): Document 74K support.
21682
21683 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
21684
21685         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
21686         vectorizable_* functions.
21687         * tree-vect-transform.c (vectorizable_call): Add check for
21688         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
21689         (vectorizable_store): likewise.
21690         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
21691         Add comments.
21692         (vectorizable_operation, vectorizable_type_demotion): Likewise.
21693         (vectorizable_type_promotion, vectorizable_load): Likewise.
21694         (vectorizable_live_operation, vectorizable_condition): Likewise.
21695         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
21696         STMT_VINFO_LIVE_P.
21697         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
21698
21699 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21700
21701         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
21702         register numbers more.
21703         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
21704         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
21705         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
21706         FUNCTION_VALUE_REGNO_P): Likewise.
21707         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
21708         STATIC_CHAIN_REGNUM): Likewise.
21709         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
21710         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
21711         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
21712         * config/m68k/m68k.md (FP_REG): New.
21713
21714 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21715
21716         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
21717         alignment on fido.
21718
21719 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
21720
21721         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
21722         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
21723         comment typos.
21724
21725 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
21726
21727         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
21728         cold loops.
21729
21730 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21731
21732         PR c/31520
21733         * c-decl.c (finish_decl): Grab the type of the decl after the call
21734         to store_init_value.
21735
21736 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
21737
21738         * common.opt (fforward-propagate): Fix "Optimization" annotation.
21739
21740 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
21741
21742         PR c++/25874
21743         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
21744         dominators, post dominators and cleanup cfg before returning.
21745
21746 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
21747
21748         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
21749         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
21750
21751 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
21752
21753         * config.gcc: Recognize fido.
21754         * config/m68k/m68k-devices.def (fidoa): New.
21755         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
21756         __mfido__.
21757         (FL_FIDOA, TARGET_FIDOA): New.
21758         * config/m68k/m68k.opt (mfidoa): New.
21759
21760 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21761
21762         PR middle-end/31322
21763         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
21764         when a personality function is used.
21765
21766 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
21767
21768         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
21769
21770 2007-04-13  Mike Stump  <mrs@apple.com>
21771
21772         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
21773         we can...
21774         * config/darwin.opt (fapple-kext): Make C++ only.
21775         * config/darwin.c (darwin_override_options): Remove code to ensure
21776         -fapple-kext is given for C++ only.
21777
21778 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
21779
21780         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
21781         * config/mips/mips.c (override_options): Call
21782         SUBTARGET_OVERRIDE_OPTIONS, if defined.
21783
21784 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21785
21786         * config/i386/i386.opt (msvr3-shlib): Removed.
21787
21788         * doc/invoke.texi: Remove -msvr3-shlib.
21789
21790 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21791
21792         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
21793         with "popcnt" instruction.
21794
21795 2007-04-13  Richard Guenther  <rguenther@suse.de>
21796
21797         PR tree-optimization/21258
21798         * tree-vrp.c (compare_case_labels): New helper.
21799         (find_switch_asserts): New function.
21800         (find_assert_locations): Call it for SWITCH_EXPRs.
21801
21802 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
21803
21804         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
21805         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
21806         check is now implied in X87_FLOAT_MODE_P.
21807         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
21808         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
21809         (fix_trunc<mode>_i386_fisttp): Ditto.
21810         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
21811         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
21812         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
21813         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
21814         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
21815         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
21816         (unnamed_splitters): Ditto.
21817         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
21818         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
21819         FIRST_SSE_REG for local functions when SSE math is enabled or
21820         for functions with sseregparm attribute.
21821         (standard_80387_constant_p): Return -1 if mode is not
21822         X87_FLOAT_MODE_P.
21823         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
21824         (ix86_expand_compare): Ditto.
21825         (ix86_expand_carry_flag_compare): Ditto.
21826         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
21827         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
21828         DECIMAL_FLOAT_MODE_P.
21829         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
21830         of SCALAR_FLOAT_MODE_P.
21831         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
21832         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
21833         checks before FLOAT_MODE_P.
21834         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
21835         before FLOAT_MODE_P.
21836         [DIV]: Ditto.
21837         [NEG]: Ditto.
21838         [ABS]: Ditto.
21839         [SQRT]: Ditto.
21840         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
21841
21842 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
21843             Charles Wilson  <libtool@cwilson.fastmail.fm>
21844
21845         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
21846         (libgcc.mvars): Don't depend on them.
21847         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
21848         * exec-tool.in: New.
21849
21850 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
21851
21852         * doc/invoke.text (--help): Document --help=common.
21853
21854 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
21855
21856         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
21857
21858 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21859
21860         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
21861         * genemit.c (main): Emit #include "integrate.h".
21862         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
21863         (LOADGP_RTP): New mips_loadgp_style.
21864         * config/mips/mips.h: Include config/vxworks-dummy.h.
21865         (TARGET_RTP_PIC): New macro.
21866         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
21867         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
21868         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
21869         for TARGET_RTP_PIC.
21870         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
21871         -mvxworks-pic when using -mrtp and a PIC option.
21872         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
21873         for RTP PIC.
21874         (mips_symbolic_constant_p, mips_symbolic_address_p)
21875         (mips_symbol_insns): Handle SYMBOL_HALF.
21876         (override_options): Warn about -G and -mrtp being used together.
21877         Initialize mips_lo_relocs[SYMBOL_HALF].
21878         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
21879         (mips_emit_loadgp): Handle LOADGP_RTP.
21880         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
21881         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
21882         (tablejump): Handle function-relative case table entries if
21883         TARGET_RTP_PIC.
21884         * config/mips/predicates.md (symbol_ref_operand): New predicate.
21885
21886 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21887
21888         * config/mips/mips.md (load_call<mode>): Allow any general register.
21889         destination.
21890         (sibcall_value_internal, sibcall_value_multiple_internal)
21891         (call_value_internal, call_value_split, call_value_multiple_internal)
21892         (call_value_multiple_split): Remove constraints from operand 0.
21893
21894 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21895
21896         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
21897         rather than loadgp_noshared.
21898         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
21899         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
21900         gen_loadgp.
21901         * config/mips/mips.md (loadgp): Rename to...
21902         (loadgp_newabi): ...this.
21903         (loadgp_noshared): Rename to...
21904         (loadgp_absolute): ...this.
21905
21906 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21907
21908         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
21909         false for locally-binding symbols.
21910         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
21911
21912 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21913
21914         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
21915         (SYMBOL_GOT_PAGE_OFST): ...this.
21916         (SYMBOL_GOT_GLOBAL): Rename to...
21917         (SYMBOL_GOT_DISP): ...this.
21918         (SYMBOL_GOTOFF_GLOBAL): Rename to...
21919         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
21920         * config/mips/mips.c (mips_global_symbol_p): New function.
21921         (mips_symbol_binds_local_p): Likewise.
21922         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
21923         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
21924         mips_global_symbol_p and mips_symbol_binds_local_p.
21925         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
21926         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
21927         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
21928         SYMBOL_GOTOFF_DISP.
21929         (mips_ok_for_lazy_binding_p): New function.
21930         (mips_load_call_address, mips_expand_call): Use it.
21931         (mips_dangerous_for_la25_p): Likewise.
21932         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
21933         (*got_disp<mode>): Use got_disp_operand instead of
21934         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
21935         SYMBOL_GOTOFF_GLOBAL.
21936         (*got_page<mode>): Use got_page_ofst_operand instead of
21937         local_got_operand.
21938         * config/mips/predicates.md (const_call_insn_operand): Use
21939         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
21940         (global_got_operand): Rename to...
21941         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
21942         SYMBOL_GOT_GLOBAL.
21943         (local_got_operand): Rename to...
21944         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
21945         of SYMBOL_GOT_LOCAL.
21946
21947 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
21948
21949         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
21950         TARGET_CALL_CLOBBERED_GP.
21951         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21952         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
21953         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
21954         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
21955         of TARGET_ABICALLS && !TARGET_NEWABI.
21956         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21957         * config/mips/mips.c (mips_load_call_address): Check
21958         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
21959         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21960         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
21961         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
21962         TARGET_ABICALLS && TARGET_NEWABI.
21963         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
21964         TARGET_ABICALLS.
21965         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
21966         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
21967         TARGET_ABICALLS && TARGET_NEWABI.
21968         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
21969         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
21970         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
21971         whether indirect calls must use $25.
21972         (mips_extra_live_on_entry): Check TARGET_GOT instead of
21973         TARGET_ABICALLS.
21974         * config/mips/mips.md (jal_macro): Check flag_pic and
21975         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
21976         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
21977         instead of TARGET_ABICALLS.
21978         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
21979         TARGET_ABICALLS && TARGET_OLDABI.
21980         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
21981         (sibcall): In the comment above the define_insn, mention
21982         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
21983         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
21984         instead of TARGET_ABICALLS.
21985
21986 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
21987
21988         * doc/md.texi (Blackfin family constraints): Document PA and PB.
21989         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
21990         (MACFLAGS_MATCH_P): New macro.
21991         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
21992         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
21993         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
21994         the other MACFLAG constants.
21995         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
21996         (flag_machi): Tighten constraints.  Renumber some of the operands.
21997         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
21998         output template.
21999         (flag_machi_parts_acconly): New pattern.
22000         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
22001         used.
22002         (flag_macinit1hi): Tighten constraints.
22003         (flag_mul_macv2hi_parts_acconly): New pattern.
22004
22005         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
22006         Use a more efficient implementation.
22007         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
22008         inline sequences when not optimizing for size.
22009
22010         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
22011         movhi_high2low): Delete, merge functionality into...
22012         (packv2hi): ... this pattern.
22013
22014         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
22015         * config/bfin/bfin.opt (msim): New option.
22016         (mcpu=): New option.
22017         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
22018         (bfin_cpu_t): Typedef of enum bfin_cpu.
22019         (bfin_cpu_type): New declaration.
22020         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
22021         -msim and -mcpu= options.
22022         (LIB_SPEC): Likewise.
22023         * config/bfin/bfin.c (bfin_cpu_type): Define.
22024         (bfin_handle_option): Handle -mcpu= option.
22025         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
22026         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
22027         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
22028
22029 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22030
22031         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
22032         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
22033         (powerpc-wrs-vxworksae): Use ${tm_file}.
22034         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
22035         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
22036         * config/i386/vx-common.h: New file.
22037
22038 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22039
22040         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
22041         of crt0.o%s.
22042
22043 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
22044
22045         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
22046         ldxtr.
22047
22048 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
22049
22050         PR c++/31078
22051         PR c++/31103
22052         * c-common.c (c_build_qualified_type): Set canonical type
22053         appropriately.
22054
22055 2007-04-12  Richard Guenther  <rguenther@suse.de>
22056
22057         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
22058         lower bound and element size if lower bound is not zero
22059         or either of the ARRAY_REF operands is set.
22060
22061 2007-04-12  Richard Guenther  <rguenther@suse.de>
22062
22063         PR tree-optimization/24689
22064         PR tree-optimization/31307
22065         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
22066         indices by value.
22067         * gimplify.c (canonicalize_addr_expr): To be consistent with
22068         gimplify_compound_lval only set operands two and three of
22069         ARRAY_REFs if they are not gimple_min_invariant.  This makes
22070         it never at this place.
22071         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
22072
22073 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22074
22075         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
22076         null before emitting a .nsubspa directive.
22077
22078 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22079
22080         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
22081         need_to_partition_p if there are no memory statements in the
22082         function.
22083
22084 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22085
22086         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
22087         (gcd_of_steps_may_divide_p): New function.
22088         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
22089
22090 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22091
22092         * reload.c (find_reloads_toplev, find_reloads_address,
22093         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
22094         not a pointer equality test, to decide if we need to call
22095         push_reg_equiv_alt_mem.
22096
22097 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
22098
22099         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
22100         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
22101         New.
22102         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
22103
22104 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22105
22106         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
22107         vector to be positive.
22108
22109 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22110
22111         PR 30735
22112         PR 31090
22113         * doc/invoke.texi: Document --params max-aliased-vops and
22114         avg-aliased-vops.
22115         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
22116         debug_memory_partitions): Move to tree-flow.h
22117         * params.h (AVG_ALIASED_VOPS): Define.
22118         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
22119         users.
22120         (mp_info_t): Likewise.
22121         (get_mem_sym_stats_for): New.
22122         (set_memory_partition): Move from tree-flow-inline.h.
22123         (mark_non_addressable): Only clear the set of symbols for the
22124         partition if it exists.
22125         (dump_memory_partitions): Move from tree-ssa-operands.c
22126         (debug_memory_partitions): Likewise.
22127         (need_to_partition_p): New.
22128         (dump_mem_ref_stats): New.
22129         (debug_mem_ref_stats): New.
22130         (dump_mem_sym_stats): New.
22131         (debug_mem_sym_stats): New.
22132         (update_mem_sym_stats_from_stmt): New.
22133         (compare_mp_info_entries): New.
22134         (mp_info_cmp): Call it.
22135         (sort_mp_info): Change argument to a list of mem_sym_stats_t
22136         objects.
22137         (get_mpt_for): Move from tree-ssa-operands.c.
22138         (find_partition_for): New.
22139         (create_partition_for): Remove.
22140         (estimate_vop_reduction): New.
22141         (update_reference_counts): New.
22142         (build_mp_info): New.
22143         (compute_memory_partitions): Refactor.
22144         Document new heuristic.
22145         Call build_mp_info, update_reference_counts,
22146         find_partition_for and estimate_vop_reduction.
22147         (compute_may_aliases): Populate virtual operands before
22148         calling debugging dumps.
22149         (delete_mem_sym_stats): New.
22150         (delete_mem_ref_stats): New.
22151         (init_mem_ref_stats): New.
22152         (init_alias_info): Call it.
22153         (maybe_create_global_var): Remove alias_info argument.
22154         Get number of call sites and number of pure/const call sites
22155         from gimple_mem_ref_stats().
22156         (dump_alias_info): Call dump_memory_partitions first.
22157         (dump_points_to_info_for): Show how many times a pointer has
22158         been dereferenced.
22159         * opts.c (decode_options): For -O2 set --param
22160         max-aliased-vops to 500.
22161         For -O3 set --param max-aliased-vops to 1000 and --param
22162         avg-aliased-vops to 3.
22163         * fortran/options.c (gfc_init_options): Remove assignment to
22164         MAX_ALIASED_VOPS.
22165         * tree-flow-inline.h (gimple_mem_ref_stats): New.
22166         * tree-dfa.c (dump_variable): Dump memory reference
22167         statistics.
22168         Dump NO_ALIAS* settings.
22169         (referenced_var_lookup): Tidy.
22170         (mem_sym_stats): New.
22171         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
22172         and ORIG are different SSA names for a memory partition.
22173         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
22174         * tree-flow.h (struct mem_sym_stats_d): Define.
22175         (mem_sym_stats_t): Define.
22176         (struct mem_ref_stats_d): Define.
22177         (struct gimple_df): Add field mem_ref_stats.
22178         (enum noalias_state): Define.
22179         (struct var_ann_d): Add bitfield noalias_state.
22180         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
22181         debug_mem_ref_stats, debug_memory_partitions,
22182         debug_mem_sym_stats): Declare.
22183         * tree-ssa-structalias.c (update_alias_info): Update call
22184         sites, pure/const call sites and asm sites in structure
22185         returned by gimple_mem_ref_stats.
22186         Remove local variable IS_POTENTIAL_DEREF.
22187         Increase NUM_DEREFS if the memory expression is a potential
22188         dereference.
22189         Call update_mem_sym_stats_from_stmt.
22190         If the memory references memory, call
22191         update_mem_sym_stats_from_stmt for all the direct memory
22192         symbol references found.
22193         (intra_create_variable_infos): Set noalias_state field for
22194         pointer arguments according to the value of
22195         flag_argument_noalias.
22196         * tree-ssa-structalias.h (struct alias_info): Remove fields
22197         num_calls_found and num_pure_const_calls_found.
22198         (update_mem_sym_stats_from_stmt): Declare.
22199         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
22200         Set default value to 100.
22201         (PARAM_AVG_ALIASED_VOPS): Define.
22202
22203 2007-04-11  Richard Guenther  <rguenther@suse.de>
22204
22205         PR middle-end/31530
22206         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
22207         a * -b + c as c - a * b if we honor sign dependent rounding.
22208
22209 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22210
22211         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
22212         bfin_expand_strmov.
22213         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
22214         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
22215         variables.
22216         (initialize_trampoline): Don't use old-style function definition.
22217         (bfin_secondary_reload): Mark IN_P argument as unused.
22218
22219 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
22220
22221         PR tree-optimization/31343
22222         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
22223         (build_polynomial_chrec): Return a scalar when the evolution is zero.
22224         * testsuite/gcc.dg/vect/pr31343.c: New.
22225
22226 2007-04-10  Eric Christopher  <echristo@apple.com>
22227
22228         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
22229         * config/i386/i386.md (*cmpfp0): Use.
22230         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
22231         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
22232         (fix_trunc<mode>_i386_fisttp): Ditto.
22233         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
22234         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
22235         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
22236         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
22237         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
22238         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
22239         (unnamed_splitters): Ditto.
22240         * config/i386/i386.c (output_fix_trunc): Assert that
22241         we're not being passed a TFmode operand.
22242
22243 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
22244
22245         PR tree-optimization/31526
22246         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
22247         n_basic_blocks to find newly added blocks.
22248
22249 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
22250
22251         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
22252         alternative.
22253         (fix_trunc<mode>si_sse): Ditto.
22254         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
22255         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
22256         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
22257         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
22258         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
22259         expander using SSEMODEF mode macro.
22260         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
22261         expander using SSEMODEF mode macro.
22262         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
22263         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
22264         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
22265         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
22266         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
22267         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
22268         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
22269         Macroize insn using X87MODEF mode macro.
22270
22271 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
22272
22273         * config/i386/sse.md (sse2_pinsrw): Removed.
22274         (sse2_pextrw): Renamed to ...
22275         (*sse2_pextrw): This.
22276
22277 2007-04-09  Jan Hubicka  <jh@suse.cz>
22278
22279         PR target/27869
22280         * config/i386/sse.md
22281         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
22282         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
22283         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
22284         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
22285
22286 2007-04-09  Jan Hubicka  <jh@suse.cz>
22287
22288         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
22289         multiple fields of union.
22290
22291 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
22292
22293         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
22294         (create_preheaders): Check that loops are available.
22295         (fix_loop_structure): Clean up, improve comments.
22296         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
22297         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
22298         state flags.
22299         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
22300         * predict.c (tree_estimate_probability): Do not call
22301         calculate_dominance_info.  Call create_preheaders.
22302         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
22303         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
22304         flags.
22305         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
22306         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
22307         * tree-cfg.c (tree_split_edge): Make an assert more precise.
22308         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
22309         arguments.
22310
22311 2007-04-08  Jan Hubicka  <jh@suse.cz>
22312
22313         * tree.h (maybe_fold_offset_to_component_ref): Declare.
22314         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
22315         * fold-const.c (fold_unary): Use it.
22316
22317 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22318
22319         * varasm.c (assemble_variable): Remove call to
22320         lang_hooks.decls.prepare_assemble_variable.
22321         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
22322         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
22323         * langhooks.h (lang_hooks_for_decls): Remove
22324         prepare_assemble_variable.
22325
22326 2007-04-08  Mike Stump  <mrs@apple.com>
22327
22328         * config/i386/i386.c: Use inc/dec on Core2.
22329
22330 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
22331
22332         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
22333         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22334         lhd_tree_inlining_end_inlining): Remove.
22335         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
22336         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
22337         end_inlining hooks.
22338         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
22339         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
22340         lhd_tree_inlining_end_inlining): Remove prototypes.
22341         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
22342         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
22343         LANG_HOOKS_TREE_INLINING_START_INLINING,
22344         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
22345
22346         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
22347         not set it.
22348
22349 2007-04-08  Anatoly Sokolov <aesok@post.ru>
22350
22351         PR target/29932
22352         * config/avr/predicates.md (io_address_operand): Delete predicate.
22353         (low_io_address_operand): Don't use 'mode' argument.
22354         (higth_io_address_operand): Rename ...
22355         (high_io_address_operand): ... to this. Don't use 'mode' argument.
22356         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
22357         for above change.
22358
22359 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
22360
22361         Revert change removing staticp.
22362
22363 2007-04-07  Anatoly Sokolov <aesok@post.ru>
22364
22365         PR target/30289
22366         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
22367         earlyclobber.
22368
22369 2007-04-07  Bruce Korb  <bkorb@gnu.org>
22370
22371         * c.opt: Add -Wformat-contains-nul.
22372         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
22373           -Wformat setting.
22374         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
22375         the NUL byte warning.
22376
22377 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
22378
22379         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
22380
22381 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22382
22383         * tree.c (staticp): No longer use staticp langhook.
22384         * langhooks.c (lhd_staticp): Removed.
22385         * langhooks.h (struct lang_hooks): Remove staticp.
22386         * c-common.c (c_staticp): Remove.
22387         * c-common.h (c_staticp): Ditto.
22388         * langhooks-defs.h (lhd_staticp): Ditto.
22389         (LHD_HOOKS_STATICP): Ditto
22390         * tree.h (gcc_assert_lowered): New macro.
22391
22392 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
22393
22394         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
22395         argument "reliable".
22396         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
22397         Add argument "reliable".  Propagate it through calls.
22398         (infer_loop_bounds_from_undefined): Derive number of iterations
22399         estimates from references in blocks that do not dominate loop latch.
22400         (gcov_type_to_double_int): New function.
22401         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
22402         and expected_loop_iterations_unbounded.
22403         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
22404         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
22405         * tree-data-ref.c (estimated_loop_iterations): Export.
22406         (get_references_in_stmt): Fix -- do not return addresses of local
22407         objects.
22408         * cfgloop.h (expected_loop_iterations_unbounded,
22409         estimated_loop_iterations): Declare.
22410
22411 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
22412
22413         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
22414
22415 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22416
22417         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
22418         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
22419         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
22420         Use output_387_reg_move().
22421         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
22422         expander using X87MODEF12 mode macro.
22423         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
22424         choosing register preferences.  Use output_387_reg_move().
22425         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
22426         instead of "x".  Use output_387_reg_move().
22427         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
22428         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
22429         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
22430         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
22431         Use output_387_reg_move().
22432         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
22433         mode macro.
22434         (*truncxf?f_i387 splitter): Ditto.
22435
22436 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
22437
22438         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
22439         LANG_HOOKS_SAFE_FROM_P.
22440         * expr.c (safe_from_p): Remove langhook call.
22441         * langhooks.h (lang_hooks): Remove safe_from_p.
22442         (lhd_safe_from_p): Remove prototype.
22443         * langhooks.c (lhd_safe_from_p): Remove.
22444
22445 2007-04-06  Jan Hubicka  <jh@suse.cz>
22446
22447         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
22448         functions.
22449
22450 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
22451
22452         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
22453         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
22454         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
22455         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
22456         alternative.
22457         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
22458         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
22459
22460 2007-04-05  Richard Henderson  <rth@redhat.com>
22461
22462         * config/alpha/alpha.c (print_operand) [+]: Remove.
22463         (alpha_end_function): Print nop if call at end of function.
22464         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
22465         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
22466         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
22467         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
22468         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
22469         the call pattern. Update peepholes to match.
22470
22471 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
22472
22473         * doc/extend.texi (Other Builtins): Add decimal float variants
22474         of signbit.
22475         * builtins.def: Ditto.
22476         * builtins.c (expand_builtin): Ditto.
22477
22478 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
22479             H.J. Lu  <hongjiu.lu@intel.com>
22480
22481         PR target/31478
22482         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
22483         of V8HImode when calling ix86_binary_operator_ok.
22484         (sse2_pmaddwd): Call ix86_binary_operator_ok.
22485         (sdot_prodv8hi): Operands 1 and 2 must be register.
22486
22487 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22488
22489         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
22490         initialize align to silence bogus warning.
22491
22492 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
22493
22494         PR middle-end/22156
22495         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
22496         all_no_warning.
22497         (struct sra_walk_fns): Remove use_all parameter from use.
22498         (sra_hash_tree): Handle BIT_FIELD_REFs.
22499         (sra_elt_hash): Don't hash bitfld blocks.
22500         (sra_elt_eq): Skip them in parent compares as well.  Handle
22501         BIT_FIELD_REFs.
22502         (sra_walk_expr): Don't maintain or pass down use_all_p.
22503         (scan_use): Remove use_all parameter.
22504         (scalarize_use): Likewise.  Re-expand assignment to
22505         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
22506         output, and re-scalarize after output.  Don't mark anything
22507         for no warning.
22508         (scalarize_ldst): Adjust.
22509         (scalarize_walk_gimple_modify_statement): Likewise.
22510         (build_element_name_1): Handle BIT_FIELD_REFs.
22511         (instantiate_element): Don't warn for any element whose parent
22512         is used as a whole.
22513         (instantiate_missing_elements_1): Return the sra_elt.
22514         (canon_type_for_field): New.
22515         (try_instantiate_multiple_fields): New.
22516         (instantiate_missing_elemnts): Use them.
22517         (mark_no_warning): Removed.
22518         (generate_one_element_ref): Handle BIT_FIELD_REFs.
22519         (REPLDUP, sra_build_elt_assignment): New.
22520         (generate_copy_inout): Use them.
22521         (generate_element_copy): Likewise.  Handle bitfld differences.
22522         (generate_element_zero): Don't recurse for blocks.  Use
22523         sra_build_elt_assignment.
22524         (generate_one_element_int): Take elt instead of var.  Use
22525         sra_build_elt_assignment.
22526         (generate_element_init_1): Adjust.
22527         (scalarize_use, scalarize_copy): Use REPLDUP.
22528         (scalarize_ldst): Move assert before dereference.
22529         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
22530
22531 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22532
22533         * regmove.c: Fix unused variable warnings due to previous commit.
22534
22535 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
22536
22537         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
22538         (regmove_bb_head): Remove.
22539         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
22540         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
22541         problems with fixup_match_1.
22542         Don't initialize/free regmove_bb_head.
22543
22544         (reg_is_remote_constant_p): If an insn is in the same basic block
22545         but not before INSN, consider it remote, too.
22546
22547 2007-04-05  Anatoly Sokolov <aesok@post.ru>
22548
22549         PR target/25448
22550         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
22551         DECL_ASSEMBLER_NAME, not the DECL_NAME.
22552
22553 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
22554
22555         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
22556         (CONDITIONAL_REGISTER_USAGE): Likewise.
22557
22558 2007-04-04  Richard Henderson  <rth@redhat.com>
22559
22560         * config/alpha/lib1funcs.asm: Remove unused file.
22561
22562 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22563
22564         PR other/31356
22565         * opts.c (print_specific_help): Fix --help=<language>
22566         header line.
22567         (common_handle_option): Support --help=common.
22568
22569 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22570
22571         PR other/31353
22572         * gcc.c (main): Do not run the linker if
22573         print_subprocess_help indicates that it shouldn't be
22574         run.
22575
22576 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
22577
22578         PR doc/31355
22579         * doc/invoke.texi (--help=): Document <languages> value, fix
22580         formatting in tables of values.
22581
22582 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
22583
22584         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
22585         dllimport attribute of virtual methods.
22586
22587 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
22588
22589         * config/score/crti.asm: Change _bss_start to __bss_start.
22590         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
22591         (OUTGOING_REG_PARM_STACK_SPACE) update.
22592         * config/score/score.opt: add options to make backend support
22593         score5, score5u, score7 and score7d.
22594         * config/score/score.md: Likewise.
22595         * config/score/misc.md: Likewise.
22596         * config/score/mac.md: Likewise.
22597         * doc/invoke.texi: Likewise.
22598         * doc/md.texi: update constraints define.
22599
22600 2007-04-03  Richard Henderson  <rth@redhat.com>
22601
22602         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
22603         an appropriate type, use the mode instead.
22604
22605 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
22606
22607         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
22608         Set the default --with-arch setting to mips2.
22609         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
22610         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
22611         (MULTILIB_OSDIRNAMES): Delete.
22612         (MULTILIB_DIRNAMES): Define.
22613         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
22614         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
22615         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
22616         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
22617         VXWORKS_OS_CPP_BUILTINS.
22618         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
22619         (MIPS_DEBUGGING_INFO): Undefine.
22620         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
22621
22622 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
22623
22624         PR middle-end/30704
22625         * fold-const.c (native_encode_real): Encode real.c provided longs
22626         as a series of 32-bit native integers.
22627         (native_interpret_real): Interpret buffer as a series of 32-bit
22628         native integers.
22629
22630 2007-04-03  Richard Guenther  <rguenther@suse.de>
22631
22632         * genpreds.c (write_insn_constraint_len): Write function
22633         optimized for CONSTRAINT_LEN implementation.
22634         (write_tm_preds_h): Output insn_constraint_len inline and
22635         use it for CONSTRAINT_LEN.
22636         (write_insn_preds_c): Don't output insn_constraint_len.
22637         * doc/md.texi (define_register_constraint): Document multi-letter
22638         constraints shall have the same length if they start with the same
22639         letter.
22640
22641 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22642
22643         PR target/31175
22644         * config/i386/i386.md (isinf<mode>2): Expand only when
22645         TARGET_C99_FUNCTIONS is set.
22646
22647 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
22648
22649         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
22650         (x86_64-*-linux*): Ditto.
22651         * config/i386/i386.opt (mpc): New option.
22652         * config/i386/i386.c (overrride_options): Handle
22653         ix87_precision_string.
22654         * config/i386/crtprec.c: New file.
22655         * config/i386/t-crtpc: Ditto.
22656         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
22657         and -mpc80 options.
22658         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
22659         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
22660         crtprec32.o, crtprec64.o and crtprec80.o.
22661
22662         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
22663         and -mpc80 options.
22664         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
22665
22666 2007-04-02  Eric Christopher  <echristo@apple.com>
22667
22668         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
22669         limitations on darwin.
22670
22671 2007-04-02  Anatoly Sokolov <aesok@post.ru>
22672
22673         PR target/31137
22674         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
22675
22676 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22677
22678         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
22679
22680 2007-04-02  Dave Korn  <dave.korn@artimi.com>
22681
22682         * libgcc2.h (exception_descriptor): Don't forward-declare.
22683         (__get_eh_table_language, __get_eh_table_version): Delete
22684         prototypes of long-dead functions.
22685
22686 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
22687
22688         * ebitmap.h: New file
22689         * ebitmap.c: New file
22690         * Makefile.in (ebitmap.o): New target.
22691
22692 2007-04-01  Jan Hubicka  <jh@suse.cz>
22693
22694         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
22695         before very first instruction.
22696
22697 2007-04-01  Jan Hubicka  <jh@suse.cz>
22698
22699         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
22700         waring on 64bit hosts.
22701         * bitmap.h: Fix typo in bitmap_head_def.
22702
22703 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
22704
22705         PR rtl-optimization/31391
22706         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
22707         into a DELETED_LABEL note, and the label is in an empty basic
22708         block, update BB_END as well as BB_HEAD.
22709
22710 2007-04-01  Richard Henderson  <rth@redhat.com>
22711
22712         PR tree-optimization/31169
22713         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
22714         to varying if the range is outside [0,  prec-1].
22715
22716 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
22717
22718         PR target/31388
22719         * config/mips/mips.md (load_const_gp): New insn.
22720         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
22721         the MIPS16 GP pseudo register if no_new_pseudos.
22722         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
22723
22724 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22725
22726         PR target/31364
22727         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
22728         secureplt.
22729         (call_value): Likewise.
22730
22731 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
22732             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22733
22734         PR 14737
22735         * doc/invoke.texi: (optimization options): Reword description
22736         of -ffast-math. Document its primary purpose.
22737
22738 2007-03-31  Richard Guenther  <rguenther@suse.de>
22739
22740         * omp-low.c (splay-tree.h): Include.
22741         (lookup_decl): Replace splay-tree usage by pointer-map.
22742         (maybe_lookup_decl): Likewise.
22743         (new_omp_context): Likewise.
22744         (delete_omp_context): Likewise.
22745         * gimplify.c (splay-tree.h): Include.
22746         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
22747         pointer-map.
22748         (remap_ssa_name): Likewise.
22749         (remap_decl): Likewise.
22750         (remap_type_1): Likewise.
22751         (remap_type): Likewise.
22752         (copy_body_r): Likewise.
22753         (expand_call_inline): Likewise.
22754         (clone_body): Likewise.
22755         (copy_tree_r): Likewise.
22756         (remap_save_expr): Likewise.
22757         (unsave_r): Likewise.
22758         (unsave_expr_now): Likewise.
22759         (tree_function_versioning): Likewise.
22760         (build_duplicate_type): Likewise.
22761         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
22762         (struct copy_body_data): Replace splay-tree by pointer-map.
22763         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
22764         not $(SPLAY_TREE_H).
22765         (gimplify.o): Depend on $(SPLAY_TREE_H).
22766         (omp-low.p): Likewise.
22767
22768 2007-03-31  Anatoly Sokolov <aesok@post.ru>
22769
22770         * config/avr/predicates.md (even_register_operand,
22771         odd_register_operand): New predicates.
22772         * config/avr/avr.md (movw peephole2): New.
22773         (movw_r peephole2): New.
22774
22775 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
22776
22777         * tree.h (get_signed_or_unsigned_type): New.
22778         * fold-const.c (operand_equal_for_comparison_p): Use
22779         get_signed_or_unsigned_type instead of
22780         lang_hooks.types.signed_or_unsigned_type.
22781         * expr.c (store_expr): Ditto.
22782         * langhooks.c (get_signed_or_unsigned_type): New.
22783         (lhd_signed_or_unsigned_type): New.
22784         * langhooks.h (lhd_signed_or_unsigned_type): New.
22785         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
22786
22787 2007-03-30  Richard Henderson  <rth@redhat.com>
22788
22789         * tree-ssa-loop-ivopts.c: Include target.h.
22790         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
22791         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
22792         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
22793         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
22794
22795 2007-03-30  Richard Henderson  <rth@redhat.com>
22796             Kai Tietz  <kai.tietz@onevision.com>
22797
22798         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
22799         default for 64-bit.
22800         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
22801         (TARGET_64BIT_MS_ABI): New.
22802         (DBX_REGISTER_NUMBER): Handle 64-bit.
22803         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
22804         (LONG_TYPE_SIZE): Force to 32.
22805         (REG_PARM_STACK_SPACE): New.
22806         (OUTGOING_REG_PARM_STACK_SPACE): New.
22807         (REGPARM_MAX, SSE_REGPARM_MAX): New.
22808         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22809         (STACK_BOUNDARY): Use 128 for 64-bit.
22810         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
22811         Add 64-bit implementation.
22812         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
22813         argument unused.
22814         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
22815         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
22816         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
22817         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
22818         (ix86_handle_cconv_attribute): Don't warn when ignoring if
22819         TARGET_64BIT_MS_ABI.
22820         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
22821         (ix86_pass_by_reference): Likewise.
22822         (ix86_function_value_regno_p): Likewise.
22823         (ix86_build_builtin_va_list): Likewise.
22824         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
22825         (function_arg_advance_ms_64): New.
22826         (function_arg_advance): Call it.
22827         (function_arg_ms_64): New.
22828         (function_arg): Call it.
22829         (function_value_ms_64): New.
22830         (ix86_function_value_1): Call it.
22831         (return_in_memory_ms_64): New.
22832         (ix86_return_in_memory): Call it.
22833         (setup_incoming_varargs_ms_64): New.
22834         (ix86_setup_incoming_varargs): Call it.
22835         (ix86_expand_prologue): Handle 64-bit stack probing.
22836         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
22837         (output_pic_addr_const): Likewise.
22838         (x86_this_parameter): Likewise.
22839         (x86_output_mi_thunk): Likewise.
22840         (x86_function_profiler): Likewise.
22841         (TARGET_STRICT_ARGUMENT_NAMING): New.
22842         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
22843         (TARGET_64BIT_MS_ABI): New.
22844         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
22845         * config/i386/i386.md (allocate_stack_worker): Remove.
22846         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
22847         describe the clobber of eax without a match_scratch.
22848         (allocate_stack_worker_postreload): Remove.
22849         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
22850         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
22851         (allocate_stack_worker_rex64_postreload): Remove.
22852         (allocate_stack): Handle 64-bit.
22853         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
22854         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
22855         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
22856         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
22857         (STANDARD_STARTFILE_PREFIX_1): Likewise.
22858         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
22859         * config.build (x86_64-*-mingw*): New host.
22860         * config.host (x86_64-*-mingw*): New host.
22861         * config.gcc (x86_64-*-mingw*): New target.
22862         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
22863
22864 2007-03-30  Richard Henderson  <rth@redhat.com>
22865             Kai Tietz  <kai.tietz@onevision.com>
22866
22867         * c-pragma.c (struct def_pragma_macro_value): New.
22868         (struct def_pragma_macro): New.
22869         (pushed_macro_table): New.
22870         (dpm_hash, dpm_eq): New.
22871         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
22872         (init_pragma): Install them.
22873         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
22874
22875 2007-03-30  Anatoly Sokolov <aesok@post.ru>
22876
22877         * config/avr/avr.c (avr_override_options): Clear
22878         'flag_delete_null_pointer_checks'.
22879
22880 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
22881
22882         PR c++/26099
22883         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
22884         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
22885         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
22886         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
22887         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
22888         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
22889         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
22890         C++ extensions.
22891         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
22892
22893 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
22894
22895         * regmove.c: Move all of pass_stack_adjustments from here...
22896         * combine-stack-adj.c: ...to this new file.
22897         * Makefile.in: Add rules for combine-stack-adj.o.
22898
22899 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
22900
22901         PR tree-optimization/31383
22902         * tree-data-ref.c (affine_function_equal_p): Do not require the
22903         vectors to have the same length.
22904
22905 2007-03-30  Jan Hubicka  <jh@suse.cz>
22906
22907         PR middle-end/30700
22908         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
22909         availablility; add more sanity checking; ask varpool only about
22910         VAR_DECL.
22911
22912 2007-03-29  Richard Henderson  <rth@redhat.com>
22913
22914         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
22915         to decide, but __SIZEOF_LONG_LONG__.
22916
22917 2007-03-29  Richard Henderson  <rth@redhat.com>
22918
22919         * emutls.c (struct __emutls_array): New.
22920         (emutls_destroy): Use it instead of casting element 0 from void*.
22921         (__emutls_get_address): Likewise.
22922
22923 2007-03-29  Richard Henderson  <rth@redhat.com>
22924
22925         * varasm.c (initializer_constant_valid_p): Don't deny
22926         DECL_DLLIMPORT_P on functions.
22927
22928         * config/i386/cygming.h: Remove function declarations.
22929         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
22930         (ASM_OUTPUT_LABELREF): Remove.
22931         (COMMON_ASM_OP): Remove.
22932         (ASM_OUTPUT_COMMON): Remove.
22933         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
22934         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
22935         (ASM_DECLARE_FUNCTION_NAME): Likewise.
22936         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
22937         Rename from TARGET_ENCODE_SECTION_INFO.
22938         * config/i386/netware.h: Likewise.
22939         * config/i386/i386-protos.h: Update.
22940         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
22941         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
22942         (legitimate_constant_p): Reject dllimports.
22943         (dllimport_map, get_dllimport_decl): New.
22944         (legitimize_dllimport_symbol): New.
22945         (legitimize_address, ix86_expand_move): Use it.
22946         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
22947         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
22948         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
22949         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
22950         * config/i386/predicates.md (constant_call_address_operand): Only
22951         accept symbols; reject dllimport_p symbols.
22952         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
22953         i386_pe_maybe_record_exported_symbol.
22954         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
22955         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
22956         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
22957         trust the setting of DECL_DLLIMPORT_P.
22958         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
22959         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
22960         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
22961         tidy the argument scanning loop.
22962         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
22963         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
22964         (i386_pe_strip_name_encoding): Remove.
22965         (i386_pe_binds_local_p): New.
22966         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
22967         (i386_pe_output_labelref): Remove.
22968         (i386_pe_asm_output_aligned_decl_common): New.
22969         (i386_pe_maybe_record_exported_symbol): Rename from
22970         i386_pe_record_exported_symbol; check for dllexported symbols.
22971
22972 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
22973
22974         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
22975         add comment explaining why vsnprintf cannot be used.
22976
22977 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
22978
22979         PR tree-optimization/30666
22980         * tree.c (build_complex_type): When creating type names for DWARF2
22981         debug info, create TYPE_DECLs for TYPE_NAME instead of
22982         IDENTIFIER_NODEs.
22983         (build_common_tree_nodes_2): Use build_complex_type when building
22984         predefined complex types, to preserve canonical types.
22985
22986 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
22987
22988         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
22989         (noce_get_alt_condition): Look at it to determine whether to
22990         reverse the condition or not.
22991         (noce_get_condition): Substitute the truth for lies.
22992         (noce_find_if_block): Set the then_else_reversed field.
22993
22994 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
22995
22996         * config/fr30/fr30.md (movdi): Do not accept immediates as the
22997         destination of this insn.
22998         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
22999         than calling gen_rtx_SET directly.  Use r0 to hold the value of
23000         'address + 4' rather than a stack based temporary which can be
23001         mis-optimized away.
23002
23003 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23004
23005         * config/s390/s390.c (s390_secondary_input_reload_class,
23006         s390_secondary_output_reload_class): Functions removed.
23007         (s390_secondary_reload): New function.
23008         (TARGET_SECONDARY_RELOAD): Target macro defined.
23009         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
23010         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
23011         * config/s390/s390.md ("reload_outti", "reload_outdi",
23012         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
23013         "reload_out<mode>"): Expanders removed.
23014         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
23015         "reload<mode>_nonoffmem_out"): Expanders added.
23016
23017 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23018
23019         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
23020         action if SRC->DEST replacement failed anyway.
23021
23022 2007-03-28  Mike Stump  <mrs@apple.com>
23023
23024         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
23025         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
23026         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
23027
23028 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
23029
23030         * config.gcc: Accept barcelona as a variant of amdfam10.
23031         * config/i386/i386.c (override_options): Likewise.
23032         * doc/invoke.texi: Likewise.
23033
23034 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
23035
23036         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
23037         offsets for BIT_FIELD_REF and COMPONENT_REF.
23038
23039 2007-03-28  Richard Guenther  <rguenther@suse.de>
23040
23041         * tree.c (is_global_var): Move ...
23042         * tree-flow-inline.h (is_global_var): ... here.
23043         * tree.h (is_global_var): Remove declaration.
23044
23045 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
23046
23047         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
23048         option.
23049         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
23050         * config/i386/i386.c (ix86_tune_features): Initialize new
23051         tuning option.
23052         * config/i386/predicates.md (promotable_binary_operator): Use
23053         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
23054
23055 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
23056
23057         PR target/31380
23058         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
23059
23060 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
23061
23062         * config/fr30/fr30.md (movsi_internal): Change destination
23063         constraint from m to V and add m to the end.
23064
23065 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23066
23067         * config/sh/sh.md (movsi_i): Fix type attribute.
23068
23069 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23070
23071         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
23072         (movsf_ie): Likewise.
23073
23074 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23075
23076         * config.gcc: Add sh4-300 to multilib.
23077         * config/sh/t-mlib-sh4-300: New file.
23078
23079 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
23080
23081         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
23082         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
23083         fix_trunc<mode>di2.
23084         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
23085         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
23086         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
23087         "fixuns_trunctddi2"): Whitespace fix.
23088
23089 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
23090
23091         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
23092         the definition of struct sh_args.
23093         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
23094         CALL_COOKIE_INT_REG_GET): Likewise.
23095
23096 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
23097
23098         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
23099         transformations are applied successfully.
23100
23101 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
23102
23103         * tree.c (tree_contains_struct): Permit 512 tree codes.
23104         * tree.h (tree_contains_struct): Ditto.
23105         (MAX_TREE_CODES): Ditto.
23106         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
23107         SPARE member to store remaining padding bits.
23108
23109 2007-03-27  Anatoly Sokolov <aesok@post.ru>
23110
23111         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
23112         architecture.
23113
23114 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
23115
23116         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
23117         * configure: Regenerate.
23118
23119         * configure: Regenerate using the correct version of autoconf.
23120
23121 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
23122
23123         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
23124         pointer regs.
23125         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
23126         regs to "__SP_L__" and "__SP_H__".
23127
23128 2007-03-27  Richard Guenther  <rguenther@suse.de>
23129
23130         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
23131         computations with it with a HOST_WIDE_INT variable.
23132
23133 2007-03-26  Mike Stump  <mrs@apple.com>
23134
23135         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
23136         objective-c-header, objective-c++-header and objc++-cpp-output
23137         support.
23138         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23139
23140 2007-03-26  Richard Henderson  <rth@redhat.com>
23141
23142         PR target/31361
23143         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
23144         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
23145         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
23146         IX86_BUILTIN_PSRLQ128): New.
23147         (ix86_init_mmx_sse_builtins): Add them.
23148         (ix86_expand_builtin): Expand them.
23149         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
23150         operand 2 be TImode.
23151         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
23152         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
23153         _mm_srli_epi64): Mark __B const.
23154         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
23155         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
23156         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
23157         new two-vector shift builtins.
23158
23159 2007-03-26  Ian Lance Taylor  <iant@google.com>
23160
23161         PR tree-optimization/31345
23162         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
23163         [+INF, +INF(OVF)] into VARYING.
23164
23165 2007-03-26  Zack Weinberg  <zackw@panix.com>
23166
23167         * gengtype-parse.c: New file.
23168         * gengtype-yacc.y: Delete.
23169         * gengtype-lex.l: Don't include gengtype-yacc.h.
23170         Define YY_DECL and yyterminate appropriately for recursive
23171         descent parser.  yylval is now a string out-parameter to yylex.
23172         (HWS, EOID): New shorthand.
23173         (IWORD): Add a couple more types.
23174         (yylex): Add a setup stanza.  Remove the complex rules for
23175         detecting GTY'ed types and typedefs; replace with simple
23176         keyword detectors.  Adjust everything for the changed
23177         definition of yylval.  Ignore all pp-directives, not just #define.
23178         (yyerror): Delete.
23179         (parse_file): Rename yybegin; do not call yyparse.
23180         (yyend): New.
23181         * gengtype.c (xasprintf): Export again.
23182         (this_file): New.  Use everywhere __FILE__ was being used.
23183         (get_lang_bitmap): Special case types defined in gengtype.c.
23184         (do_typedef, new_structure): Suppress definition of certain types.
23185         (new_structure): Improve diagnostics of duplicate definitions.
23186         Make sure location_s is associated with input.h.
23187         (nreverse_pairs, define_location_structures): New functions.
23188         (main): Improve tagging of kludge types.  Remove old kludges
23189         for input.h types; use define_location_structures.
23190         * gengtype.h: Update prototypes.  Define token codes here.
23191         * Makefile.in: Remove all references to gengtype-yacc.
23192         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
23193         and gengtype.
23194         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
23195         add GTY((skip)) to the field that's only conditionally there.
23196         * doc/install.texi: Document that Bison is no longer required
23197         unless building treelang.
23198
23199         * gengtype.c: Don't include gtyp-gen.h.
23200         (srcdir): Declare here.
23201         (base_files, lang_dir_names): Allocate dynamically.
23202         (gt_files, num_gt_files, num_lang_dirs): New globals.
23203         (measure_input_list, read_input_line, read_input_list)
23204         (set_lang_bitmap): New functions.
23205         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
23206         simplify, relying on read_input_list to set up the bitmaps.
23207         (main): Arguments are no longer unused.  Check for correct number
23208         of command line arguments, set srcdir and srcdir_len, then call
23209         read_input_list, before doing anything else.  No need to worry
23210         about duplicates in main loop.
23211         * configure.ac: Simplify the calculation of all_gtfiles.
23212         Put language tags in there.  Don't set or substitute
23213         all_gtfiles_files_langs or all_gtfiles_files_frags.
23214         * Makefile.in: Revamp the way gengtype is invoked, now that it
23215         takes a file on its command line with a much simpler format.
23216         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
23217         (GTFILES): Remove duplicates and C source files.
23218         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
23219         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
23220         * configure: Regenerate.
23221
23222         * gengtype.h: Remove all type definitions to gengtype.c; leave
23223         only definitions of options_p, type_p, and pair_p as opaque
23224         pointers.  Update prototypes.
23225         * gengtype.c: Many type definitions moved here from gengtype.h.
23226         Consolidate type definitions at the top of the file.
23227         (xvasprintf): Delete.
23228         (xasprintf): Make static.
23229         (create_nested_pointer_option): Add 'next' parameter.
23230         (create_field_all, create_field_at): New functions.
23231         (create_field): Now a thin wrapper around create_field_all.
23232         (create_optional_field): Rename create_optional_field_ and add
23233         line argument.  Original name is now a macro which supplies
23234         __LINE__.
23235         (oprintf): Use vsnprintf directly.
23236         (close_output_files): Use fatal rather than perror/exit.
23237         (note_def_vec, note_def_vec_alloc): Use create_field_at.
23238         (main): Set progname.  Don't use exit.
23239         * gengtype-yacc.y (struct_fields): Use create_field_at.
23240         (option, optionseqopt): Delete.
23241         (optionseq): Consolidate productions from option here so we
23242         can use the first argument to create_option.
23243
23244         * gengtype-lex.l: Distinguish unions from structures in the
23245         token type.  Don't call find_structure; return the tag as a string.
23246         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
23247         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
23248         string.  Reorganize typedef_struct production accordingly.
23249         Use create_nested_ptr_option.
23250         * gengtype.c (create_nested_ptr_option): New function.
23251         * gengtype.h: Declare it.
23252
23253         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
23254         (string_type): Don't declare.
23255         (do_scalar_typedef): Declare.
23256         (create_scalar_type): Update prototype.
23257         * gengtype.c (string_type): Make static.
23258         (scalar_nonchar, scalar_char): New.
23259         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
23260         (resolve_typedef): Use scalar_nonchar for error recovery.
23261         (create_scalar_type): Remove name_len field.  Return scalar_char
23262         or scalar_nonchar as appropriate.
23263         (adjust_field_type): Look at scalar_is_char boolean to decide whether
23264         to use string_type.
23265         (throughout): Use scalar_nonchar instead of calling
23266         create_scalar_type, whenever possible.
23267         (main): Initialize scalar_char and scalar_nonchar before calling
23268         gen_rtx_next.
23269         * gengtype-lex.l: Adjust for removal of second argument to
23270         create_scalar_type.  Use yylval.s instead of yylval.t when
23271         returning SCALAR.
23272         * gengtype-yacc.y: Type of SCALAR is string.  Call
23273         create_scalar_type from type:SCALAR rule.  Adjust for removal of
23274         second argument to create_scalar_type.
23275
23276         * vec.h: Remove all #if IN_GENGTYPE blocks.
23277         Add comment saying that changes may require adjustments to gengtype.
23278         * gengtype.c: Don't include coretypes.h or tm.h.
23279         Add comment to inclusion of errors.h.
23280         (note_def_vec, note_def_vec_alloc): New functions.
23281         * gengtype.h: Declare new functions.
23282         * gengtype-lex.l: Don't include coretypes.h.
23283         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
23284         Delete.
23285         (update_lineno): Remove unnecessary prototype.
23286         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
23287         (VEC rule): Just return VEC_TOKEN.
23288         * gengtype-yacc.y (VEC_TOKEN): New token type.
23289         (type): Add a production for VEC(a,b).
23290         * Makefile.in: Update dependencies.
23291
23292         * gengtype-lex.l: Remove rules for parsing pointer-to-function
23293         typedefs that use the old PARAMS macro.
23294
23295         * gengtype-lex.l: Remove all rules and states relating to yacc
23296         input files.
23297         * gengtype-yacc.y: Similarly.
23298         * gengtype.c (note_yacc_type): Delete function.
23299         * gengtype.h: Update prototypes.
23300
23301 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
23302
23303         * tree-pretty-print.c (dump_generic_node): Report precision of
23304         unnamed integer types.
23305
23306 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
23307
23308         * ifcvt.c (noce_try_store_flag_constants): Don't check
23309         no_new_pseudos here.
23310         (noce_try_store_flag_constants): Don't check no_new_pseudos.
23311         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
23312         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
23313         noce_try_sign_mask): Likewise.
23314         (if_convert): Check no_new_pseudos here.
23315
23316         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
23317         Remove prototypes.
23318         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
23319         (noce_get_condition): Handle new then_else_reversed argument.
23320         (noce_init_if_info): Remove, fold into noce_find_if_block.
23321         (noce_process_if_block): Take a struct noce_if_info as the
23322         argument.  Don't set up one based on ce_if_info.  Update pointer
23323         references accordingly.
23324         (cond_move_process_if_block): Likewise.
23325         (process_if_block): Removed.
23326         (find_if_block): Removed.  Move functionality two new functions,
23327         noce_find_if_block and cond_exec_find_if_block.
23328         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
23329         blocks and the symmetric IF-ELSE-JOIN case.
23330         (cond_exec_find_if_block): Also new function mostly based on old
23331         find_if_block and process_if_block.
23332         (find_if_header): Replace find_if_block call with separately
23333         guarded calls to noce_find_if_block and cond_exec_find_if_block.
23334         (find_cond_trap): Update noce_get_condition call.
23335         (dead_or_predicable): Likewise.
23336
23337 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
23338
23339         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
23340         Remove.
23341         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
23342         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
23343         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
23344         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
23345         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
23346         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
23347         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
23348         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
23349         __builtin_ia32_psrad128 builtins.
23350
23351 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
23352
23353         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
23354         * config/i386/constraints.md
23355         (define_constraint "I"): Use IN_RANGE macro.
23356         (define_constraint "J"): Ditto.
23357         (define_constraint "K"): Ditto.
23358         (define_constraint "M"): Ditto.
23359         (define_constraint "N"): Ditto.
23360         (define_constraint "O"): Ditto.
23361         * config/i386/predicates.md
23362         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
23363         (define_predicate "const_0_to_3_operand"): Ditto.
23364         (define_predicate "const_0_to_7_operand"): Ditto.
23365         (define_predicate "const_0_to_15_operand"): Ditto.
23366         (define_predicate "const_0_to_63_operand"): Ditto.
23367         (define_predicate "const_0_to_255_operand"): Ditto.
23368         (define_predicate "const_1_to_31_operand"): Ditto.
23369         (define_predicate "const_2_to_3_operand"): Ditto.
23370         (define_predicate "const_4_to_7_operand"): Ditto.
23371
23372 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23373
23374         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
23375         in SImode for save_world.
23376         * config/rs6000/altivec.md (save_world, restore_world): Convert to
23377         LR hard reg.
23378
23379 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
23380
23381         PR tree-optimization/30784
23382         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
23383         BIT_FIELD_REF.
23384
23385 2007-03-25  Revital Eres  <eres@il.ibm.com>
23386
23387         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
23388           Fold movement_possibility function into it.
23389
23390 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
23391
23392         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
23393         (load_macho_picbase_{si,di}): Convert to LR hard reg.
23394         (call_indirect_nonlocal_darwin64): Same.
23395         (call_nonlocal_darwin64): Same.
23396         (call_value_indirect_nonlocal_darwin64): Same.
23397         (call_value_nonlocal_darwin64): Same.
23398         (sibcall_nonlocal_darwin64): Same.
23399         (sibcall_value_nonlocal_darwin64): Same.
23400         (sibcall_symbolic_64): Same.
23401         (sibcall_value_symbolic_64): Same.
23402         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
23403         LR pseudo.
23404         (rs6000_emit_load_toc_table): Same.
23405         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
23406         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
23407         (mull_call): Same.
23408         (divss_call): Same.
23409         (divus_call): Same.
23410         (quoss_call): Same.
23411         (quous_call): Same.
23412         (load_toc_v4_pic_si): Same
23413         (load_toc_v4_PIC_1): Same.
23414         (load_toc_v4_PIC_1b): Same.
23415         (call_indirect_aix{32,64}): Same.
23416         (call_value_indirect_aix{32,64}): Same.
23417         (call): Same.
23418         (call_value): Same.
23419         (call_local{32,64}): Same.
23420         (call_value_local{32,64}): Same.
23421         (call_indirect_nonlocal_aix{32,64}): Same.
23422         (call_nonlocal_aix{32,64}): Same.
23423         (call_value_indirect_nonlocal_aix{32,64}): Same.
23424         (call_value_nonlocal_aix{32,64}): Same.
23425         (call_indirect_nonlocal_sysv<mode>): Same.
23426         (call_nonlocal_sysv<mode>): Same.
23427         (call_value_indirect_nonlocal_sysv<mode>): Same.
23428         (call_value_nonlocal_sysv<mode>): Same.
23429         (sibcall): Same.
23430         (sibcall_local{32,64}): Same.
23431         (sibcall_value_local{32,64}): Same.
23432         (sibcall_nonlocal_aix{32,64}): Same.
23433         (sibcall_value_nonlocal_aix{32,64}): Same.
23434         (sibcall_nonlocal_sysv<mode>): Same.
23435         (sibcall_value): Same.
23436         (sibcall_value_nonlocal_sysv<mode>): Same.
23437
23438 2007-03-24  Paul Brook  <paul@codesourcery.com>
23439
23440         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
23441         * config/arm/linux-eabi.h: Remove legacy syscall hack.
23442
23443 2007-03-24  Richard Henderson  <rth@redhat.com>
23444
23445         * config/ia64/constraints.md: New file.
23446         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
23447         satisfies_constraint_?.
23448         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
23449         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
23450         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
23451         ia64_output_mi_thunk): Likewise.
23452         (ia64_const_ok_for_letter_p): Remove.
23453         (ia64_const_double_ok_for_letter_p): Remove.
23454         (ia64_extra_constraint): Remove.
23455         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
23456         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
23457         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
23458         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
23459         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
23460         EXTRA_MEMORY_CONSTRAINT): Remove.
23461         * config/ia64/ia64.md: Include constriants.md.  Replace
23462         CONST_OK_FOR_? with satisfies_constraint_?.
23463
23464 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
23465             H.J. Lu  <hongjiu.lu@intel.com>
23466
23467         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
23468         DPD or BID name.
23469         (name macros): Use DPD_BID_NAME to convert names properly.
23470
23471         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
23472         decimal floating point format.
23473         (init_floating_libfuncs): Change decimal functions so that they
23474         have a "bid_" prefix if the decimal system uses the BID format,
23475         and "dpd_" prefix if the decimal system uses the DPD format.
23476         (init_interclass_conv_libfuncs): Ditto.
23477         (init_intraclass_conv_libfuncs): Ditto.
23478
23479         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23480         using the BID format.
23481
23482         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23483         whether we are using the BID decimal format.
23484         * configure: Regenerate.
23485
23486         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23487         the compiler has decimal floating point enabled.  Define
23488         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23489         instead of DPD.
23490
23491         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
23492         using the BID format.
23493
23494         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
23495         whether we are using the BID decimal format.
23496         * configure: Regenerate.
23497
23498         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
23499         the compiler has decimal floating point enabled.  Define
23500         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
23501         instead of DPD.
23502
23503         * doc/install.texi (--enable-decimal-float): Document BID and DPD
23504         options, and that it is enabled for i386/x86_64 systems.
23505
23506         * Makefile.in (enable_decimal_float): New.
23507         (DECNUMFMT): New.
23508         (DECNUMINC): Add  -I$(DECNUMFMT).
23509         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
23510         to $(DECNUMFMT) from $(DECNUM).
23511
23512         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
23513         Substitute enable_decimal_float.
23514         * configure: Regenerated.
23515
23516         PR other/30529
23517         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
23518         unsigned long.
23519
23520         * configure.ac: Enable decimal float for x86_64-*-linux*.
23521         * configure: Regenerated.
23522
23523         PR other/30530
23524         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
23525         decimal128ClearSign to flip and clear the sign bit in decimal128.
23526         (decimal_real_maxval): Set decimal128SetSign to set the sign
23527         bit in decimal128.
23528
23529 2007-03-23  Ian Lance Taylor  <iant@google.com>
23530
23531         * fold-const.c (fold_binary): Correct warning for X - c >= X.
23532
23533 2007-03-23  Ian Lance Taylor  <iant@google.com>
23534
23535         * tree-dump.c (dump_files): Correct comment.
23536
23537 2007-03-23  Ian Lance Taylor  <iant@google.com>
23538
23539         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
23540
23541 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
23542
23543         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
23544         in cfglayout mode.  Don't go into and out of cfglayout mode.
23545         Link the blocks in the order of the constructed traces.
23546         (rest_of_handle_tracer): Adjust call to tracer.
23547         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
23548         Don't go into cfglayout mode.
23549         (rtl_loop_done): Don't go out of cfglayout mode.
23550         * cfglayout.c (relink_block_chain): New function, split out from...
23551         (fixup_reorder_chain): ...here.  Remove redundant checking.
23552         (cfg_layout_finalize): Don't clear the header, footer, and aux
23553         fields here, move the code to do so to relink_block_chain.  Likewise
23554         for free_original_copy_tables.
23555         * rtl.h (tracer): Update prototype.
23556         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
23557         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
23558         mode.  Use relink_block_chain to serialize the CFG according to the
23559         new basic block order.  Move targetm.cannot_modify_jumps_p check from
23560         here...
23561         (gate_handle_reorder_blocks): ...to here.
23562         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
23563         from here...
23564         (gate_duplicate_computed_gotos): ...to here.
23565         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
23566         something always changes when going into and out of cfglayout mode.
23567         Perform an expensive cfg cleanup while going into cfglayout mode.
23568         Always update liveness information on HAVE_conditional_execution
23569         targets.  Reserialize the basic blocks and go out of cfglayout mode.
23570         * reg-stack.c: Include cfglayout.h.
23571         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
23572         the call to reorder_basic_blocks.
23573         * basic-block.h (reorder_basic_blocks): Update prototype.
23574         (relink_block_chain): New prototype.
23575         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
23576
23577 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
23578
23579         * config/mips/mips.md (type, hazard, *movdi_32bit,
23580         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
23581         *movhi_internal, *movqi_internal, *movsf_hardfloat,
23582         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
23583         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
23584         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
23585         applicable.
23586         (movcc): Change first xfer to multi.
23587         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
23588         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
23589         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
23590         config/mips/generic.md: Change reservations using "xfer" to use
23591         "mfc,mtc".
23592         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
23593         using match_operand.
23594         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
23595         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
23596         examining mode.
23597         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
23598
23599 2007-03-22  Richard Henderson  <rth@redhat.com>
23600
23601         * config/i386/i386.c: Remove unnecessary function declarations.
23602         Move targetm definition, and all related macros, to the end of
23603         the file.  Resort some functions to put definitions before uses.
23604         (ix86_attribute_table): Make static.  Move to end of file.
23605         (ix86_gimplify_va_arg): Make static.
23606
23607 2007-03-22  Richard Henderson  <rth@redhat.com>
23608
23609         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
23610         don't increase local_regparm with force_align_arg_pointer check.
23611         (ix86_function_sseregparm): Assert 32-bit.
23612         (type_has_variadic_args_p): New.
23613         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
23614         type_has_variadic_args_p.
23615         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
23616         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
23617         use memset instead.  Do maybe_vaarg check first; skip attribute
23618         tests if true; skip attribute tests for 64-bit.
23619         (construct_container): Remove TARGET_DEBUG_ARG.
23620         (function_arg_advance_32, function_arg_advance_64): Split out ...
23621         (function_arg_advance): ... from here.
23622         (function_arg_32, function_arg_64): Split out ...
23623         (function_arg): ... from here.
23624         (ix86_pass_by_reference): Tidy.
23625         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
23626         (function_value_32): New, from parts of ix86_function_value
23627         and ix86_value_regno.
23628         (function_value_64): New, from parts of ix86_function_value
23629         and ix86_libcall_value.
23630         (ix86_function_value_1): New.
23631         (ix86_function_value, ix86_libcall_value): Use it.
23632         (return_in_memory_32, return_in_memory_64): Split out ...
23633         (ix86_return_in_memory): ... from here.
23634         (ix86_struct_value_rtx): Skip for 64-bit.
23635         (ix86_libcall_value, ix86_value_regno): Remove.
23636         (setup_incoming_varargs_64): Split out ...
23637         (ix86_setup_incoming_varargs): ... from here.
23638         (ix86_va_start): Remove TARGET_DEBUG_ARG.
23639         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
23640         * config/i386/i386-protos.h (ix86_function_value): Remove.
23641         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
23642
23643 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23644
23645         PR other/23572
23646         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
23647         infinities not supported, otherwise emit warning if -Woverflow. On
23648         underflow, emit warning if -Woverflow.
23649         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
23650         and 0 otherwise.
23651         * real.h (real_from_string): Update declaration
23652
23653 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
23654             Richard Henderson  <rth@redhat.com>
23655
23656         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
23657         * calls.c (compute_argument_block_size, expand_call,
23658         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
23659         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
23660         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
23661         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
23662         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
23663         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
23664         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
23665         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
23666         Set to 1.
23667
23668 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
23669
23670         * c-incpath.c (add_sysroot_to_chain): New.
23671         (merge_include_chains): Add sysroot argument.  Call
23672         add_sysroot_to_chain if sysrooted.
23673         (register_include_chains): Update call to merge_include_chains.
23674         * doc/cppopts.texi: Document use of '=' in include directory
23675         arguments.
23676
23677 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
23678
23679         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
23680         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
23681         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
23682         insn pattern using X87MODEF12 mode macro.
23683
23684 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
23685
23686         * regmove.c (regmove_optimize): Use reg_mentioned_p
23687         instead of reg_overlap_mentioned_p for DST.
23688
23689 2007-03-21  Mike Stump  <mrs@apple.com>
23690
23691         * c.opt: Fixup for Objective-C/C++.
23692
23693 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
23694
23695         * explow.c (convert_memory_address): Fold memory reference when
23696         POINTERS_EXTEND_UNSIGNED < 0
23697
23698 2007-03-21  Richard Henderson  <rth@redhat.com>
23699
23700         PR target/31245
23701         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
23702         * config/i386/mmintrin.h (__m64): Likewise.
23703         * config/i386/xmmintrin.h (__m128): Likewise.
23704
23705 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23706
23707         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
23708         (VXWORKS_OS_CPP_BUILTINS): Define.
23709         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
23710         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
23711
23712 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23713
23714         * rtl.h (constant_pool_reference_p): Delete.
23715         (find_constant_src): Declare.
23716         * rtlanal.c (find_constant_src): New function.
23717         * simplify-rtx.c (constant_pool_reference_p): Delete.
23718         * config/i386/i386.md: Use find_constant_src instead of
23719         constant_pool_reference_p/avoid_constant_pool_reference pairs.
23720
23721 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
23722
23723         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
23724         * c-cppbuiltin.c (c_cpp_builtins): Define them.
23725
23726 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
23727
23728         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
23729         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
23730         (arm_elf_asm_constructor): Use it.
23731         (arm_elf_asm_destructor): New function.
23732
23733 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
23734
23735         * jump.c (mark_jump_label): Treat SEQUENCE specially.
23736
23737 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
23738
23739         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
23740
23741 2007-03-19  Andrew Haley  <aph@redhat.com>
23742
23743         PR tree-optimization/31264
23744         * tree-vrp.c (register_edge_assert_for_1): Don't look though
23745         VIEW_CONVERT_EXPRs.
23746
23747 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
23748
23749         PR rtl-optimization/30907
23750         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
23751         (fwprop_init): Always call loop_optimizer_initialize.
23752         (fwprop_done): Always call loop_optimizer_finalize.
23753         (fwprop): We always have loop info now.
23754         (gate_fwprop_addr): Remove.
23755         (pass_fwprop_addr): Use gate_fwprop as gate.
23756
23757         PR rtl-optimization/30841
23758         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
23759         df_chain_alloc): Call df_reorganize_refs unconditionally.
23760         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
23761         refs_organized to refs_organized_size.
23762         (df_ref_create_structure): Use refs_organized_size instead of
23763         bitmap_size if refs had been organized, and keep refs_organized_size
23764         up-to-date.
23765         * df.h (struct df_ref_info): Change refs_organized to
23766         refs_organized_size.
23767         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
23768         bitmap_size.
23769
23770 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
23771
23772         * except.c (output_function_exception_table): Do not reference the
23773         EH personality routine for functions that do not require an
23774         exception table.
23775
23776 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
23777
23778         PR c/30762
23779         * c-typeck.c (convert_for_assignment): Call comptypes for
23780         RECORD_TYPE or UNION_TYPE.
23781
23782         PR inline-asm/30505
23783         * reload1.c (reload): Do invalid ASM checking after
23784         cleanup_subreg_operands.
23785
23786 2007-03-19  Jeff Law  <law@redhat.com>
23787
23788         * tree-cfg.c (find_taken_edge): Tighten conditions for
23789         optimizing computed gotos.
23790
23791 2007-03-19  Michael Matz  <matz@suse.de>
23792
23793         * builtins.c (expand_builtin_sync_operation,
23794         expand_builtin_compare_and_swap,
23795         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
23796         correctly.
23797
23798         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
23799         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
23800         for operand 3.
23801
23802 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23803
23804         * doc/tm.texi: Add brackets around the return type of
23805         TARGET_SECONDARY_RELOAD.
23806
23807 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23808         Richard Guenther  <rguenther@suse.de>
23809
23810         PR tree-optimization/31254
23811         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
23812         Use handled_component_p () where appropriate.  Continue
23813         propagating into the rhs if we propagated into an INDIRECT_REF
23814         on the lhs.
23815
23816 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23817
23818         * config/s390/s390.md (op_type attribute): RRR instruction type added.
23819         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
23820         (xde, xdee): Mode attributes adjusted to support DFP modes.
23821         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
23822         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
23823         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
23824         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
23825         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
23826         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23827         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
23828         numbers.
23829         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
23830         "movsf"): Insn definitions removed.
23831         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
23832         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
23833         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
23834         definitions added.
23835         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
23836         "reload_in<mode>", "reload_out<mode>"): Expander added.
23837         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
23838         Expander removed.
23839
23840 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23841
23842         * config/s390/s390.md: Only non-functional changes.  Renamed
23843         FPR mode macro to BFP all over the file.
23844
23845 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23846
23847         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
23848         (op_type attribute): RRF instruction type added.
23849         (fT0): New mode attribute.
23850         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
23851         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
23852         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
23853         instruction no secondary memory is needed when moving DFmode values
23854         between GPRs and FPRs.
23855
23856 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23857
23858         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
23859         inverted and documentation adjusted.
23860         ("mhard-dfp", "msoft-dfp"): New options.
23861         * config/s390/s390.c (s390_handle_arch_option): New architecture
23862         switch: z9-ec.
23863         (override_options): Sanity checks for the new options added.
23864         * config.gcc: New architecture switch: z9-ec.
23865         * config/s390/s390.h (processor_flags): PF_DFP added.
23866         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
23867         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
23868         when the bit is NOT set so remove it from the defaults.
23869
23870 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23871
23872         * genemit.c (main): Print include statement for dfp.h.
23873         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
23874         is not available.
23875
23876 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23877
23878         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
23879
23880 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
23881
23882         PR target/31022
23883         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
23884         instead of PATTERN.
23885
23886 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23887
23888         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
23889         attr_length_call, output_call, output_indirect_call): Cleanup
23890         formatting of targetm calls.
23891
23892 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
23893
23894         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
23895
23896 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23897
23898         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
23899         reservation, bypass and anti-bypass descriptions for these
23900         instructions.  Update move patterns.
23901         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
23902         TYPE_FPSTORE.
23903
23904 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
23905
23906         * tree-vect-transform.c (get_initial_def_for_induction): Replace
23907         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
23908         (get_initial_def_for_reduction): Likewise.
23909
23910 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
23911
23912         Fix PR tree-optimization/29922
23913         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
23914         (get_representative): Removed.
23915         (value_dies_in_block_x): Update for rvuse removal.
23916         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
23917         (compute_antic_aux): Handle when PHI nodes appear in
23918         non-single-successors.
23919         (dump_bitmap_of_names): Removed.
23920         (compute_antic_safe): Renamed and removed rvuse calculation.
23921         Calculate only antic safe.
23922         (insert_into_preds_of_block): Remove assert.
23923         (execute_pre): Update for renamed functions.
23924         (defer_or_phi_translate_block): New function.
23925
23926 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
23927
23928         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
23929         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
23930         typos.
23931         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
23932         Follow spelling conventions.
23933
23934         * tree-data-ref.h: Remove the prototype for analyze_array.
23935
23936 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
23937
23938         PR tree-optimization/31041
23939         * tree-vect-transform.c (get_initial_def_for_induction): Call
23940         force_gimple_operand.
23941
23942 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
23943
23944         * ipa-type-escape.c (look_for_casts) : Revert code to use
23945         handled_component_p due to ada test a-numaux.adb.
23946
23947 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
23948
23949         * final.c (final_scan_insn): Alter the condition of a
23950         conditional trap if we have nonstandard CC.
23951
23952 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
23953
23954         * configure.ac: Remove excess quoting from asm line 0 test.
23955         * configure: Rebuilt.
23956
23957 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23958
23959         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
23960         * c-common.c (convert_and_check): Move warning logic to...
23961         (warnings_for_convert_and_check): ...here. Define.
23962         * c-common.h (warnings_for_convert_and_check): Declare.
23963
23964 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23965
23966         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
23967         (output_call): Likewise.
23968
23969 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
23970
23971         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
23972
23973 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
23974
23975         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
23976
23977 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
23978
23979         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
23980         opteron, athlon-64 and athlon-fx processor_alias_table entries.
23981
23982 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
23983
23984         PR tree-optimization/31183
23985         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
23986         Use double_int instead of unsigned int for representing access_strides.
23987         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
23988
23989 2007-03-16  Richard Guenther  <rguenther@suse.de>
23990
23991         PR tree-optimization/31146
23992         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
23993         to allow recursion of forward_propagate_addr_expr.
23994         (forward_propagate_addr_into_variable_array_index): Likewise.
23995         (forward_propagate_addr_expr): Likewise.
23996         (tree_ssa_forward_propagate_single_use_vars): Likewise.
23997         (forward_propagate_addr_expr_1): Recurse on simple copies
23998         instead of propagating into them.  Do so for useless conversions
23999         as well.
24000         (forward_propagate_addr_expr): Clean up unused statements after
24001         recursion.
24002
24003 2007-03-16  Richard Guenther  <rguenther@suse.de>
24004
24005         * builtins.c (expand_builtin_cexpi): Use the right argument
24006         for the expansion via cexp.
24007
24008 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24009
24010         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
24011         * configure: Rebuilt.
24012
24013 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24014
24015         PR debug/29906
24016         * dwarf2out.c (force_type_die): Adjust comment.
24017         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
24018
24019 2007-03-15  DJ Delorie  <dj@redhat.com>
24020
24021         * config/frv/predicates.md (minmax_operator): Don't check operands
24022         here.
24023
24024 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24025
24026         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
24027         Update constant estimates of number of iterations.
24028         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
24029         argument renamed to "realistic".
24030         (compute_estimated_nb_iterations): Removed.
24031         (record_niter_bound): New function.
24032         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
24033         call record_nonwrapping_iv with upper = false.
24034         (infer_loop_bounds_from_signedness): Pass upper argument to
24035         record_nonwrapping_iv.
24036         (estimate_numbers_of_iterations_loop): Do not call
24037         compute_estimated_nb_iterations.  Record estimate based on profile
24038         information.  Initialize the constant estimates of number of
24039         iterations.
24040         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
24041         estimates.
24042         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
24043         number of iterations is too small.
24044         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
24045         (EST_NOT_AVAILABLE): Removed.
24046         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
24047         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
24048         fields.
24049
24050 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24051
24052         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
24053         Handle NE_EXPR guards.
24054
24055 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24056
24057         PR c++/24924
24058         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
24059         Set also -pedantic-errors by default for the  preprocessor unless
24060         -fpermissive is given.
24061
24062 2007-03-15  Richard Guenther  <rguenther@suse.de>
24063
24064         PR middle-end/29719
24065         PR middle-end/31161
24066         * builtins.c (expand_builtin_cexpi): As a fallback if we
24067         don't have builtins for sincos or cexp create a function
24068         declaration for cexp and expand to a call to that.
24069         (expand_builtin_int_roundingfn): Always fall
24070         back to floor/ceil and its variants even if they may be
24071         not available.
24072
24073 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
24074
24075         PR middle-end/31159
24076         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
24077         jump tables, move the call to delete_dead_jumptables from here...
24078         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
24079         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
24080         don't allow merging of blocks that try_redirect_by_replacing_jump
24081         also does not handle when not optimizing.
24082
24083 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24084             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24085
24086         * config/i386/i386.md (x86_sahf_1): Correctly handle
24087         HAVE_AS_IX86_SAHF.
24088
24089 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24090
24091         PR target/31167
24092         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
24093         x86_64_general_operand as operand[2] predicate.  Remove "iF"
24094         from operand constraints and use "e" constraint instead.
24095         (*subti3_1, *subti3_1 splitter): Ditto.
24096         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
24097         operand[1] predicate.
24098
24099 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
24100
24101         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
24102         arrays, multiply the access strides by the size of the sub-array.
24103         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
24104
24105 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24106
24107         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
24108         the configured assembler supports the sahf mnemonic.
24109         * configure: Regenerate.
24110         * config.in: Regenerate.
24111
24112         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
24113         emit "sahf" or ".byte\t0x9e" as asm template.
24114
24115 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
24116
24117         PR 31018
24118         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
24119         option to replace hard coded TARGET_xxx in md file.
24120         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
24121         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24122         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
24123         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
24124         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
24125         (X86_TUNE_NOT_VECTORMODE): Ditto.
24126         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
24127         (TUNE_AVOID_VECTOR_DECODE): Ditto.
24128         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24129         (TUNE_SLOW_IMUL_IMM8): Ditto.
24130         (TUNE_MOVE_M1_VIA_OR): Ditto.
24131         (TUNE_NOT_UNPAIRABLE): Ditto.
24132         (TUNE_NOT_VECTORMODE): Ditto.
24133
24134         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
24135         options.
24136
24137         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
24138         tuning options instead of hard coded TARGET_xxx.
24139         (fix ssemode peephole2's): Ditto.
24140         (imul peephole2's): Ditto.
24141         (movsi_or): Ditto.
24142         (movdi_or_rex64): Ditto.
24143         (move peephole2): Ditto.
24144         (not peephole2's): Ditto.
24145
24146 2007-03-14  Dirk Mueller  <dmueller@suse.de>
24147
24148         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
24149         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
24150         * c-parser.c (c_parser_if_body): Always add an empty statement in case
24151         of empty body.
24152         * c-parser.c (c_parser_do_statement): Warn about empty body in
24153         do/while statement.
24154         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
24155         * doc/invoke.texi (-Wempty-body): Update documentation.
24156
24157 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24158
24159         PR c/21438
24160         * c-common.h (warn_for_div_by_zero): Declare.
24161         * c-common.c (warn_for_div_by_zero): Define.
24162         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
24163         warning.
24164
24165 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24166
24167         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
24168         to PREFIX and STANDARD_PREFIX.
24169
24170 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24171             Phil Edwards  <phil@codesourcery.com>
24172
24173         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
24174         (__gthread_once_t): Remove busy field for RTPs.
24175         (__GTHREAD_ONCE_INIT): Update accordingly.
24176
24177 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
24178
24179         * doc/invoke.texi: Document VxWorks options.
24180
24181 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24182
24183         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
24184
24185 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
24186
24187         PR tree-optimization/30590
24188         * tree-nrv.c (tree_nrv): Check for the partial update of the
24189         return value.
24190
24191 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24192
24193         * flags.h (flag_random_seed): Remove declaration, in favor of...
24194         * toplev.h (get_random_seed, set_random_seed): ... these.
24195         * tree.c (get_file_function_name): Use the former.
24196         * opts.c (common_handle_option): Use the latter.
24197         * toplev.c
24198
24199 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
24200
24201         PR middle-end/31127
24202         * cse.c (cse_find_path): Do not bail out if a basic block that
24203         we already visited now becomes part of a path that starts at a
24204         different basic block.  Just disallow this, to make sure we
24205         visit each basic block at most once.
24206
24207 2007-03-13  Jan Hubicka  <jh@suse.cz>
24208
24209         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
24210         attributes, when profile esitmate is present, calls with very low
24211         frequency are cold.
24212
24213 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
24214
24215         PR tree-optimization/30730
24216         PR tree-optimization/26900
24217         * tree-ssa-loop-niter.c: Include gmp.h.
24218         (bounds): New type.
24219         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
24220         split_to_var_and_offset, determine_value_range,
24221         bound_difference_of_offsetted_base, refine_bounds_using_guard,
24222         bound_difference, bounds_add, bounds_negate,
24223         number_of_iterations_ne_max, dump_affine_iv): New functions.
24224         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
24225         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
24226         difference of initial and final value of control iv to validate
24227         results.
24228         (number_of_iterations_cond): Add loop parameter.  Determine bounds
24229         on the difference of the extremes of the control iv.  Add dumps.
24230         (expand_simple_operations): Handle phi nodes.
24231         (simplify_using_initial_conditions): Do not record used conditions.
24232         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
24233         Do not set additional_info.
24234         (implies_nonnegative_p, implies_ge_p): Removed.
24235         (derive_constant_upper_bound): Do not use parameter `additional'.
24236         (record_estimate): Parameter `additional' removed.  Parameter
24237         `i_bound' added.  Do not call derive_constant_upper_bound.
24238         (record_nonwrapping_iv): Use derive_constant_upper_bound to
24239         bound the number of iterations estimate.
24240         (estimate_numbers_of_iterations_loop): Pass the estimate from
24241         the number of iterations analysis to record_estimate.
24242         * tree.h (multiple_of_p): Declare.
24243         * tree-scalar-evolution.c (expression_expensive_p): Removed.
24244         (scev_const_prop): Do not check expression_expensive_p.
24245         * fold-const.c (multiple_of_p): Exported.
24246         * double-int.c (double_int_mask): Exported.
24247         * double-int.h (double_int_mask): Declare.
24248         * tree-flow.h (struct tree_niter_desc): Removed additional_info
24249         field.  Added max field.
24250
24251 2007-03-13  David Taylor  <taylor@candd.org>
24252
24253         PR driver/12448:
24254         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
24255         default -MQ.
24256
24257 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24258
24259         PR target/31123
24260         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
24261         two unamed patterns.
24262
24263 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
24264
24265         * config/i386/i386.opt (mcx16, msahf): New options.
24266         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
24267         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
24268
24269         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
24270         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
24271         Output -mcx16 and -msahf options when corresponding bit is set.
24272
24273         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
24274         and -msahf options.
24275
24276 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
24277
24278         * configure.ac: Test for assembler tolerance to # 0 "".
24279         * configure, config.in: Rebuilt.
24280         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
24281
24282 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
24283
24284         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
24285
24286         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
24287         (handle_syscall): Handle direct system calls.
24288         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
24289
24290 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24291
24292         * doc/invoke.texi: Fix cpp.info cross-reference.
24293         * doc/passes.texi: Fix gcc.info cross-reference.
24294
24295 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
24296
24297         PR tree-optimization/30835
24298         * lambda-code.c (can_convert_to_perfect_nest): Check whether
24299         bb_for_stmt is not NULL before accessing it.
24300
24301 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
24302
24303         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
24304         some multilibs.
24305
24306 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
24307
24308         PR 30635
24309         * doc/install.texi: Document --enable-stage1-languages
24310
24311 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
24312
24313         * tree-pass.h (pass_into_cfg_layout_mode,
24314         pass_outof_cfg_layout_mode): Declare.
24315         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
24316         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
24317         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
24318         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
24319
24320 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
24321
24322         * c-decl.c (warn_variable_length_array): New function.
24323         Refactored from grokdeclarator to handle warn_vla
24324         and handle unnamed array case.
24325         (grokdeclarator): Refactored VLA warning case.
24326         * c.opt (Wvla): New flag.
24327         * doc/invoke.texi (Wvla): New warning.
24328
24329 2007-03-12  Richard Henderson  <rth@redhat.com>
24330
24331         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
24332         (TARGET_SECTION_TYPE_FLAGS): New.
24333
24334 2007-03-12  Richard Henderson  <rth@redhat.com>
24335
24336         * config/darwin.c (machopic_reloc_rw_mask): New.
24337         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
24338         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
24339
24340 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
24341
24342         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
24343         * cppdefault.h (cpp_PREFIX): Document.
24344         (cpp_PREFIX_len): Likewise.
24345         (cpp_EXEC_PREFIX): New variable.
24346         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
24347         * c-incpath.c (add_standard_paths): Correct logic for relocating
24348         paths within prefix.
24349
24350 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
24351
24352         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
24353         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
24354         mode macro.
24355         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
24356         fix_truncdfdi_sse using SSEMODEF mode macro.
24357         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
24358         fix_truncdfsi_sse using SSEMODEF mode macro.
24359         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
24360         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
24361
24362 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
24363
24364         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
24365         elfos.h to tm_file.
24366
24367 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
24368
24369         * tree.h : Add multiple_of_p declaration.
24370         * fold-const.c (multiple_of_p): Make multiple_of_p public.
24371         * ipa-type-escape.c (results_of_malloc): Redundant.
24372         (visited_stmts): New. Visited stmt for walk_use_def_chains.
24373         (cast_type): Extended with new members.
24374         (check_cast): Returns cast_type.
24375         (cast): New structure for data of walk_use_def_chains.
24376         (is_malloc_result, is_cast_from_non_pointer_1,
24377         is_cast_from_non_pointer,
24378         is_array_access_through_pointer_and_index): New functions.
24379         (look_for_casts): Returns cast types.
24380         (check_call): Returns void.
24381         (okay_pointer_operation): Use support of pointer plus index,
24382         pointer plus constant and allow all multiplications.
24383
24384 2007-03-11  Richard Guenther  <rguenther@suse.de>
24385
24386         PR tree-optimization/31115
24387         * tree-vrp.c (extract_range_from_binary_expr): Make sure
24388         the shift count is positive and non-anti-range for RSHIFT_EXPR.
24389         A shift count of zero is not special as with *_DIV_EXPR.
24390         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
24391         direction.
24392
24393 2007-03-11  Ian Lance Taylor  <iant@google.com>
24394
24395         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
24396         the *_DIV_EXPR codes correctly with overflow infinities.
24397
24398 2007-03-11  Ira Rosen  <irar@il.ibm.com>
24399
24400         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
24401         indicate success/failure of the analysis. Add negation to subtrahend
24402         in case of subtraction. Fail if both operands contain constants.
24403         (create_data_ref): Fail if analyze_offset fails.
24404
24405 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
24406
24407         * config/i386/i386.md (frndintxf2): Rename to ...
24408         (rintxf2): ... this. Remove expander having same name.
24409         (rintsf2, rintdf2): Implement using SSEMODEF macro.
24410         (roundsf2, rounddf2): Ditto.
24411         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
24412         (lround<mode>di2, lround<mode>si2): Ditto.
24413
24414 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
24415
24416         * lower-subreg.c: Include except.h.
24417         (decompose_multiword_subregs): Verify that the only control flow
24418         insns we can split are loads to multi-words pseudos.
24419         Handle breaking such blocks after splitting, instead of calling
24420         find_many_sub_basic_blocks.
24421
24422         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
24423         on the new basic block.  Add a lengthy comment explaining why we
24424         thought this was necessary.
24425         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
24426
24427 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
24428
24429         PR c++/30924
24430         * tree.c (walk_type_fields): Recurse into the element type of
24431         ARRAY_TYPEs if there is a pointer set.
24432
24433 2007-03-10  Dirk Mueller  <dmueller@suse.de>
24434
24435         * c-common.c (warn_logical_operator): Fix condition.
24436
24437 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
24438
24439         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
24440         quotation mark.
24441         * config/darwin.c (machopic_select_section): Remove superfluous
24442         argument in call to categorize_decl_for_section.  Remove unused
24443         variable shlib.
24444
24445 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
24446
24447         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
24448         defined.
24449         * configure: Regenerate.
24450
24451 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
24452
24453         PR target/31101
24454         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
24455         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
24456         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
24457         Add LABEL_NUSES to emitted label.
24458         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
24459         branch probability value to emitted jump insn.
24460         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
24461         Do not check life information and do not re-arrange input operands
24462         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
24463
24464 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24465
24466         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
24467         the change of decode_asm_operands.
24468
24469 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
24470
24471         * mode-switching.c (create_pre_exit): Skip blockage insn.
24472
24473 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
24474
24475         * tree-pass.h (TODO_update_smt_usage): Remove.
24476         Update all users.
24477         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
24478         argument SOME.
24479         Update all users.
24480
24481 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24482
24483         * pa.c (attr_length_call): Revise condition for long
24484         pc-relative branch.
24485         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
24486         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
24487         sequence on SOM target.
24488
24489 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
24490
24491         * gcc.c: Document %{, in big comment at top.
24492         (input_suffix_matches): Remove special handling for .s and
24493         .S.
24494         (input_spec_matches): New.
24495         (handle_braces): Handle %{,.
24496         (validate_switches): ',' indicates a value which is not a switch.
24497         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
24498         to detect assembler input.
24499         * config/i386/sol2.h (CPP_SPEC): Likewise.
24500         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
24501         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
24502         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
24503         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
24504         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
24505         -m64 causes deployment target to default to 10.5.
24506         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
24507
24508 2007-03-09  Richard Henderson  <rth@redhat.com>
24509
24510         PR target/26090
24511         * target.h (targetm.asm.out.reloc_rw_mask): New.
24512         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
24513         (TARGET_ASM_OUT): Use it.
24514         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
24515         * varasm.c (categorize_decl_for_section): Remove shlib argument;
24516         use the new reloc_rw_mask target hook instead.
24517         (default_section_type_flags_1): Merge into...
24518         (default_section_type_flags): ... here.
24519         (decl_readonly_section_1): Merge into...
24520         (decl_readonly_section): ... here.
24521         (default_elf_select_section_1): Merge into...
24522         (default_elf_select_section): ... here.
24523         (default_unique_section_1): Merge into...
24524         (default_unique_section): ... here.
24525         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
24526         (default_select_rtx_section): Use it.
24527         (default_elf_select_rtx_section): Likewise.
24528         * output.h: Update to match.
24529         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
24530         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
24531         (TARGET_ASM_RELOC_RW_MASK): New.
24532         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
24533         to categorize_decl_for_section.
24534         (x86_64_elf_unique_section): Likewise.
24535         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
24536         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
24537         (TARGET_ASM_RELOC_RW_MASK): New.
24538         * config/ia64/ia64.c (ia64_rwreloc_select_section,
24539         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
24540         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
24541         (TARGET_RWRELOC): Remove.
24542         (ia64_section_type_flags): Adjust call to default_section_type_flags.
24543         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24544         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
24545         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
24546         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
24547         (rs6000_xcoff_select_section): Use decl_readonly_section.
24548         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
24549         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
24550         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
24551         (TARGET_SECTION_TYPE_FLAGS): Remove.
24552         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
24553
24554 2007-03-09  Roger Sayle  <roger@eyesopen.com>
24555
24556         * fold-const.c (fold_comparison): Remove compile-time evaluation of
24557         complex constant equality/inequality comparisons for here.
24558         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
24559         known at compile-time or can be simplified to a scalar comparison.
24560         (fold_relational_const): Move compile-time evaluation of complex
24561         constant equality/inequality comparisons to here.
24562
24563 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24564
24565         PR rtl-optimization/30643
24566         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
24567         dest_addr_elt.
24568         (fold_rtx): Recurse, like before 2006-11-03.
24569
24570 2007-03-09  DJ Delorie  <dj@redhat.com>
24571
24572         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
24573         m32c-pragma.o.
24574
24575 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
24576
24577         PR tree-optimization/30375
24578         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
24579         LHS of statements is not the same.
24580         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
24581
24582 2007-03-09  Chao-ying Fu  <fu@mips.com>
24583
24584         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
24585         REV 2.
24586         * doc/invoke.texi (-mdspr2): Document new option.
24587         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
24588         New unspec for DSP REV 2.
24589         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
24590         these instructions are extended in DSP REV 2.
24591         (mips-dspr2.md): Include.
24592         * config/mips/mips.opt (mdspr2): New option.
24593         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
24594         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
24595         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
24596         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
24597         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
24598         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
24599         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
24600         and 2 builtins.
24601         (bdesc_map): Add one field of unsupported_target_flags.
24602         (bdesc_arrays): Update entries to have extra fields.  Add
24603         dsp_32only_bdesc.
24604         (mips_init_builtins): Initialize new function types.
24605         Check unsupported_target_fileds to filter out builtins.
24606         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
24607         TARGET_DSPR2.
24608         (ASM_SPEC): Pass mdspr2 to the assembler.
24609         * config/mips/mips-dspr2.md: New file.
24610
24611 2007-03-09  Sa Liu  <saliu@de.ibm.com>
24612
24613         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
24614
24615 2007-03-09  Ian Lance Taylor  <iant@google.com>
24616
24617         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
24618         argument) like -Wstrict-overflow=2.
24619         * doc/invoke.texi (Warning Options): Update documentation.
24620
24621 2007-03-09  Dirk Mueller  <dmueller@suse.de>
24622
24623         PR c++/17946
24624         * doc/invoke.texi (-Wlogical-op): Document.
24625         * common.opt (-Wlogical-op): New.
24626         * c-common.h (warn_logical_operator): Declare.
24627         * c-common.c (warn_logical_operator): Define.
24628         * c-typeck.c (parser_build_binary_op): Call
24629         warn_logical_operator.
24630
24631 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24632
24633         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
24634         * final.c (final_scan_insn): Test for non-"" file name.
24635
24636 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
24637
24638         * doc/loop.texi: Document the Omega linear constraints solver.
24639         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
24640         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
24641         omega-hash-table-size, omega-max-keys, and
24642         omega-eliminate-redundant-constraints.
24643         * tree-pass.h (pass_check_data_deps): Declared.
24644         * omega.c: New.
24645         * omega.h: New.
24646         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
24647         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
24648         pass_check_data_deps): New.
24649         * tree-data-ref.c (init_data_ref): Remove declaration.
24650         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
24651         (analyze_array): Renamed init_array_ref, move up initializations.
24652         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
24653         Removed arguments that are set to NULL.
24654         (analyze_indirect_ref): Correct indentation, correct call to
24655         init_pointer_ref.
24656         (object_analysis): Call init_array_ref instead of analyze_array.
24657         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
24658         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
24659         of DR_ACCESS_FNS_ADDR.
24660         (init_omega_eq_with_af, omega_extract_distance_vectors,
24661         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
24662         ddr_consistent_p): New.
24663         (compute_affine_dependence): Check consistency of ddrs when
24664         flag_check_data_deps is passed.
24665         (analyze_all_data_dependences): Uncomment.
24666         (tree_check_data_deps): New.
24667         * tree-data-ref.h: Include omega.h.
24668         (DR_ACCESS_FNS_ADDR): Removed.
24669         (data_dependence_relation): Add inner_loop.
24670         (DDR_INNER_LOOP): New.
24671         * common.opt (fcheck-data-deps): New.
24672         * tree-flow.h (tree_check_data_deps): Declare.
24673         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
24674         (OBJS-common): Depend on omega.o.
24675         (omega.o): Define.
24676         * passes.c (pass_check_data_deps): Scheduled.
24677         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
24678         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
24679         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
24680         PARAM_VECT_MAX_VERSION_CHECKS,
24681         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
24682
24683 2007-03-09  Richard Guenther  <rguenther@suse.de>
24684
24685         PR tree-optimization/30904
24686         PR middle-end/31058
24687         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
24688         the same way as *_DIV_EXPR.
24689
24690 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24691
24692         * recog.c (decode_asm_operands): No mixed declarations and code.
24693
24694 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
24695
24696         * rtl.def (ASM_INPUT): Add location.
24697         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
24698         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
24699         (decode_asm_operands): Add loc operand.
24700         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
24701         * stmt.c (expand_asm): Rename to...
24702         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
24703         gen_rtx_ASM_INPUT_loc.
24704         (expand_asm_expr): Adjust.
24705         * recog.c (decode_asm_operands): Add loc operand.
24706         (check_asm_operands, extract_insn): Adjust.
24707         * reload1.c (maybe_fix_stack_asms): Likewise.
24708         * final.c (asm_insn_count): Likewise.
24709         (final_scan_insn): Output # line before and after asm.
24710
24711 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
24712
24713         * tree-ssa-structalias.c (variable_info): Remove
24714         finished_solution.
24715         (new_var_info): Ditto.
24716         (shared_bitmap_info_t): New structure.
24717         (shared_bitmap_table): New variable.
24718         (shared_bitmap_hash): New function.
24719         (shared_bitmap_eq): Ditto
24720         (shared_bitmap_lookup): Ditto.
24721         (shared_bitmap_add): Ditto.
24722         (merge_smts_into): Change to take bitmap directly.
24723         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
24724         (init_alias_vars): Init shared bitmap hashtable.
24725         (delete_points_to_sets): Delete shared bitmap hashtable.
24726         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
24727         is_aliased removal as a change that was still necessary was
24728         deleted.
24729
24730 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
24731
24732         * config/i386/i386.h (override_options): Conditionally disable
24733         x86_sahf for 64bit targets only.
24734
24735 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24736
24737         PR C/31072
24738         * c-decl.c (merge_decls): Don't call make_var_volatile.
24739         * varasm.c (make_var_volatile): Remove.
24740         * output.h (make_var_volatile): Remove.
24741
24742 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
24743
24744         PR tree-optimization/31085
24745         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
24746
24747 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24748
24749         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
24750         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
24751         ATTR_CONST_NOTHROW_LIST.
24752
24753         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24754         FIX_TRUNC_EXPR.
24755
24756 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
24757
24758         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
24759
24760 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
24761
24762         PR 31013
24763         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
24764         is declared.
24765         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
24766         passed, use shared libgcc.
24767
24768 2007-03-08  Roger Sayle  <roger@eyesopen.com>
24769
24770         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
24771         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24772         (honor_protect_cleanup_actions, lower_try_finally_switch):
24773         Likewise.
24774         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
24775         ifc_temp_var): Likewise.
24776         * tree-inline.c (setup_one_parameter): Likewise.
24777         * tree-mudflap.c (mf_decl_cache_locals,
24778         mf_build_check_statement_for): Likewise.
24779         * tree-nested.c (init_tmp_var, save_tmp_var,
24780         finalize_nesting_tree_1): Likewise.
24781         * tree-outof-ssa.c (insert_copy_on_edge,
24782         insert_backedge_copies): Likewise.
24783         * tree-profile.c (tree_gen_edge_profiler,
24784         tree_gen_ic_profiler): Likewise.
24785         * tree-scalar-evolution.c (scev_const_prop): Likewise.
24786         * tree-sra.c (sra_build_assignment): Likewise.
24787         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
24788         * tree-ssa-math-opts.c (insert_reciprocals,
24789         execute_cse_sincos_1): Likewise.
24790         * tree-tailcall.c (adjust_accumulator_values,
24791         adjust_return_value): Likewise.
24792         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
24793         * tree-vect-transform.c (vect_create_data_ref_ptr,
24794         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
24795         vect_create_epilog_for_reduction, vectorizable_reduction,
24796         vectorizable_call, vectorizable_conversion,
24797         vectorizable_assignment, vectorizable_operation,
24798         vectorizable_type_demotion, vect_gen_widened_results_half,
24799         vect_permute_store_chain, vectorizable_store,
24800         vect_setup_realignment, vect_permute_load_chain,
24801         vectorizable_load, vectorizable_condition,
24802         vect_create_cond_for_align_checks): Likewise.
24803         * tree-vrp.c (build_assert_expr_for): Likewise.
24804
24805 2007-03-08  Ian Lance Taylor  <iant@google.com>
24806
24807         * tree-vrp.c: Include "intl.h".
24808         (usable_range_p): New static function.
24809         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
24810         overflowed values, juts set *strict_overflow_p.
24811         (compare_values): Only return -2 if one of the operands is not a
24812         constant.
24813         (compare_ranges): Call usable_range_p.
24814         (compare_range_with_value): Likewise.
24815         (vrp_evaluate_conditional_warnv): Rename from
24816         vrp_evaluate_conditional.  Make static.  Change all callers.
24817         (vrp_evaluate_conditional): New function.
24818         (simplify_div_or_mod_using_ranges): Issue warning about reliance
24819         on signed overflow.
24820         (simplify_abs_using_ranges): Likewise.
24821         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
24822         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
24823         within_stmt parameter.
24824         * tree-ssa-propagate.c (fold_predicate_in): Update call to
24825         vrp_evaluate_conditional.
24826         * tree-ssa-threadedge.c
24827         (record_temporary_equivalences_from_stmts_at_dest): Change
24828         simplify parameter to take a second tree parameter.
24829         (simplify_control_stmt_condition): Likewise.
24830         (thread_across_edge): Likewise.
24831         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
24832         (thread_across_edge): Likewise.
24833         * Makefile.in (tree-vrp.o): Depend upon intl.h.
24834
24835 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
24836
24837         * config/i386/i386.h (TARGET_SAHF): New define.
24838         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
24839         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
24840         (x86_sahf): New global variable.
24841         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
24842         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
24843         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
24844         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
24845         for 64-bit.
24846         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
24847         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
24848         when expanding fcomi/sahf based tests.
24849         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
24850         expanding sahf based alternative. Emit sahf based sequence when
24851         optimizing for code size.
24852         * config/i386/i386.md (x86_sahf_1): Do not disable for
24853         TARGET_64BIT, enable for TARGET_SAHF.
24854
24855 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
24856
24857         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
24858         spurious whitespace from error message.
24859
24860 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
24861
24862         PR c++/30852
24863         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
24864
24865 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
24866
24867         * c-decl.c (grokdeclarator): Disable warnings for anonymous
24868         bitfields.
24869         * tree-sra.c (instantiate_element): Propagate disabled warnings
24870         from the element itself to the created variable.
24871
24872 2007-03-07  Richard Henderson  <rth@redhat.com>
24873
24874         PR target/30848
24875         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
24876         silently fix up the stack in the case of a missing register.
24877
24878 2007-03-07  Paul Brook  <paul@codesourcery.com>
24879
24880         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
24881
24882 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
24883
24884         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
24885         New.
24886         (phase1_vrs): Use them.
24887         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
24888         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
24889         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
24890         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
24891         __gnu_Unwind_Restore_WMMXC if required.
24892         (_Unwind_VRS_Pop): Implement iWMMXt support.
24893         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
24894         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
24895         gnu_Unwind_Save_WMMXC): Define.
24896
24897 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24898
24899         * config/vxworks.h (vxworks_override_options): Declare.
24900         (VXWORKS_OVERRIDE_OPTIONS): Use it.
24901         * config/vxworks.c: Include target.h and toplev.h.
24902         (vxworks_override_options): New function.
24903         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
24904
24905 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
24906
24907         * config/s390/s390.c (override_options): Don't emit an error when
24908         -mstack-size is used without providing -mstack-guard.
24909         (s390_emit_prologue): Choose stack_guard value automatically if not
24910         provided via command line.
24911         * doc/invoke.texi: Adjust description of -mstack-guard and
24912         -mstack-size.
24913
24914 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
24915
24916         * config/i386/i386.c (output_set_got): Add a GOT initialization
24917         sequence for VxWorks PIC.
24918         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
24919         around labels as well as symbols.  Use gotoff_operand instead
24920         of local_symbolic_operand.
24921         (legitimize_pic_address): Use gotoff_operand instead of
24922         local_symbolic_operand.  Use @GOT accesses for labels as
24923         well as symbols.
24924         (ix86_output_addr_diff_elt): Use PC-relative rather than
24925         GP-relative offsets for VxWorks PIC.
24926         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
24927         no_new_pseudos.  Check whether the returned register is op0.
24928         * config/i386/i386.md (tablejump): Use PC-relative rather than
24929         GP-relative offsets for VxWorks PIC.
24930         * config/i386/predicates.md (gotoff_operand): New predicate.
24931
24932 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24933
24934         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
24935         before defining.
24936         * config/vxworks-dummy.h: New file.
24937         * config/i386/i386.h: Include it.
24938
24939 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
24940
24941         * dwarf2out.c (is_inlined_entry_point): New
24942         (add_high_low_attributes): Emit DW_AT_entry_pc along with
24943         DW_AT_ranges if the first subblock is the entry point.
24944
24945 2007-03-06  David Daney  <ddaney@avtrex.com>
24946
24947         * doc/install.texi (mips-*-*): Change recommended binutils
24948         version.
24949
24950 2007-03-06  Anatoly Sokolov <aesok@post.ru>
24951
24952         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
24953         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
24954         devices.
24955         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24956         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24957
24958 2007-03-06  Jan Hubicka  <jh@suse.cz>
24959
24960         * errors.h (warning, error, fatal, internal_error): Mark as cold.
24961         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
24962         functions are hot.
24963         (probably_cold_bb_p): Cold functions are cold.
24964         (probably_never_executed_bb_p): Cold functions are cold.
24965         (tree_bb_level_predictions): Predict calls to cold functions as not
24966         taken.
24967         (compute_function_frequency): Check hot/cold attributes.
24968         * function.h (function_frequency): Update comments.
24969         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
24970         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
24971         (c_common_att): Add cold and hot.
24972
24973         * doc/extend.texi (hot,cold attributes): Document.
24974
24975 2007-03-06  Andrew Haley  <aph@redhat.com>
24976
24977         * function.c (expand_function_end): Move blockage to just after we
24978         emit the label for the naked return from the function.
24979
24980 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
24981
24982         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
24983         before redefining.
24984
24985 2007-03-06  Jan Hubicka  <jh@suse.cz>
24986
24987         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
24988         loaded for constant large models.  Non-large 64bit PIC can do.
24989         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
24990         * cmodel.h: Add LARGE PIC.
24991         * i386.md (UNSPEC_PLTOFF): New.
24992         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
24993         unspecs as needed.
24994         (*call_1_rex64): Disable for large models.
24995         (*call_1_rex64_large): New.
24996         (*call_value_1_rex64): Disable for large models.
24997         (*call_value_1_rex64_large): New.
24998         (set_rip_rex4): New.
24999         (set_got_offset_rex64): New.
25000         * predicates.md (constant_call_address_operand): For large model
25001         constant calls are not possible.
25002         * i386-protos.h (construct_plt_address): Declare.
25003         * i386.c (override_options): Accept large models.
25004         (ix86_expand_prologue): Expand large PIC GOT pointer load.
25005         (legitimate_constant_p): Add new UNSPECs.
25006         (legitimate_pic_operand_p): Likewise.
25007         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
25008         (legitimize_pic_address): Do easy RIP relative way for TLS only for
25009         non-large model.
25010         (output_pic_addr_const): Add PLTOFF.
25011         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
25012         (ix86_expand_move): Legitimize pic address when in PIC mode.
25013         (construct_plt_address): New function.
25014         (ix86_expand_call): Offload the address to register and use GOT
25015         pointer for large model.
25016         * invoke.texi (mcmodel=large): Update documentation.
25017
25018 2007-03-06  Richard Henderson  <rth@redhat.com>
25019
25020         * config/i386/i386.c (x86_use_leave, x86_push_memory,
25021         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
25022         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
25023         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
25024         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
25025         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
25026         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
25027         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
25028         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
25029         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
25030         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25031         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
25032         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25033         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25034         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
25035         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
25036         x86_schedule, x86_use_bt, x86_pad_returns,
25037         x86_use_xchgb): Merge into ...
25038         (ix86_tune_features): ... here.  New array.
25039         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25040         x86_bswap): Merge into ...
25041         (ix86_arch_features): ... here.  New array.
25042         (x86_3dnow_a): Remove.
25043         (x86_accumulate_outgoing_args): Make static.
25044         (x86_arch_always_fancy_math_387): Make static.
25045         (ix86_tune_mask, ix86_arch_mask): Move ...
25046         (override_options): ... to local variables here.  Apply the
25047         appropriate mask to each element of ix86_arch_features and
25048         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
25049         as were done in the old macros.
25050         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
25051         * config/i386/i386.h (x86_use_leave, x86_push_memory,
25052         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
25053         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
25054         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
25055         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
25056         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
25057         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
25058         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
25059         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
25060         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
25061         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25062         x86_accumulate_outgoing_args, x86_prologue_using_move,
25063         x86_epilogue_using_move, x86_decompose_lea,
25064         x86_arch_always_fancy_math_387, x86_shift1,
25065         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25066         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25067         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
25068         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25069         x86_use_incdec, x86_pad_returns, x86_bswap,
25070         x86_partial_flag_reg_stall): Remove.
25071         (enum ix86_tune_indices): New.
25072         (ix86_tune_features): New.
25073         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
25074         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
25075         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
25076         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
25077         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
25078         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
25079         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
25080         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
25081         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
25082         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
25083         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
25084         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
25085         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
25086         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
25087         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
25088         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
25089         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
25090         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
25091         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
25092         TARGET_EXT_80387_CONSTANTS): Use it.
25093         (enum ix86_arch_indices): New.
25094         (ix86_arch_features): New.
25095         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
25096         TARGET_BSWAP): Use it.
25097         (ix86_tune_mask, ix86_arch_mask): Remove.
25098
25099 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
25100
25101         PR bootstrap/31020
25102         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
25103         Define using $${sysroot_headers_suffix}.
25104         * configure: Regenerate.
25105         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
25106         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
25107         defined.
25108         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
25109         * gcc.c (print_sysroot_headers_suffix): New.
25110         (option_map): Include --print-sysroot-headers-suffix.
25111         (display_help): Mention -print-sysroot-headers-suffix.
25112         (process_command): Handle -print-sysroot-headers-suffix.
25113         (do_spec_1): Append multilib directory to include-fixed path if
25114         sysroot suffixes in use.
25115         (main): Handle -print-sysroot-headers-suffix.
25116         * Makefile.in (start.encap): Don't depend on xlimits.h
25117         (xlimits.h): Remove.
25118         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
25119         limits.h for each multilib in fixinc_list.
25120         (fixinc_list, s-fixinc_list): New.
25121         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
25122         generate them for each multilib in fixinc_list.
25123         (stmp-fixproto): Use include-fixed.  Run fixproto for each
25124         multilib in fixinc_list.
25125         (mostlyclean): Don't remove xlimits.h.
25126         (clean): Remove include-fixed.
25127         (real-install-headers-tar, real-install-headers-cpio,
25128         real-install-headers-cp): Don't copy include, only include-fixed.
25129         (install-mkheaders): Depend on fixinc_list.  Don't depend on
25130         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
25131         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
25132         SYSTEM_HEADER_DIR setting in mkheaders.conf.
25133
25134 2007-03-06  Jan Hubicka  <jh@suse.cz>
25135
25136         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
25137         NANs easilly.
25138
25139 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25140
25141         * configure.ac: Allow tm_file to contain build-directory files.
25142         * configure: Regenerate.
25143         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
25144         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
25145         * config/m68k/print-sysroot-suffix.sh: New file.
25146
25147 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25148
25149         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
25150         of pic_offset_table_rtx if reload_completed.
25151         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
25152         PIC_OFFSET_TABLE_REGNUM.
25153         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
25154         return true.
25155         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
25156         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
25157
25158 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25159
25160         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25161         functions that call eh_return.
25162
25163 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25164
25165         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
25166         functions that need a constant pool.
25167
25168 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25169
25170         PR target/28181
25171         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
25172         (m68k_preferred_reload_class): Likewise.
25173         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
25174         (SECONDARY_RELOAD_CLASS): Define.
25175         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
25176         (LIMIT_RELOAD_CLASS): Delete.
25177         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
25178         registers from storing bytes.
25179         (m68k_secondary_reload_class): New function.
25180         (m68k_preferred_reload_class): Likewise.
25181
25182 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25183
25184         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
25185         leaf functions.
25186         (m68k_expand_prologue): Likewise.
25187
25188 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25189
25190         * config/m68k/m68k-protos.h (output_sibcall): Declare.
25191         (mips_expand_epilogue): Add a bool parameter.
25192         (m68k_legitimize_sibcall_address): Declare.
25193         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
25194         (m68k_expand_epilogue): Add a parameter to select between sibling
25195         and normal epilogues.  Only generate a return for the latter.
25196         (m68k_ok_for_sibcall_p): New function.
25197         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
25198         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
25199         (sibcall_value, *sibcall_value): Likewise.
25200         (*call, *call_value): Require !SIBLING_CALL_P.
25201         (epilogue): Update call to m68k_expand_epilogue.
25202         (sibcall_epilogue): New pattern.
25203         * config/m68k/predicates.md (const_call_operand): Say that this
25204         predicate applies to sibling calls too.
25205         (sibcall_operand): New predicate.
25206
25207 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25208
25209         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
25210         alternatives as movsi_cf.
25211         (movsf_cf_hard): Add commentary.
25212
25213 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
25214             Richard Sandiford  <richard@codesourcery.com>
25215
25216         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
25217         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
25218         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
25219         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
25220         as being live on exit from an interrupt function.
25221         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
25222         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
25223         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
25224         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
25225         (m68k_interrupt_function_p): Globalize.
25226         (m68k_compute_frame_layout): Remove reverse mask code.
25227         (m68k_emit_movem, m68k_set_frame_related): New functions.
25228         (m68k_output_function_prologue): Delete in favor of...
25229         (m68k_expand_prologue): ...this new function.
25230         (m68k_output_function_epilogue): Delete in favor of...
25231         (m68k_expand_epilogue): ...this new function.
25232         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
25233         functions.
25234         (print_operand): Handle %?.
25235         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
25236         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
25237         (prologue, epilogue): New patterns.
25238         (return): Turn into a define_expand.
25239         (*return): New pattern, derived from old "return" pattern.  Use rte
25240         rather than rts for interrupt functions.  Only use rtd if the pop
25241         count is nonzero.
25242         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
25243         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
25244         (link, *link, unlink, *unlink, load_got): Likewise.
25245
25246 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25247
25248         PR target/23482
25249         PR target/17114
25250         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
25251         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
25252         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
25253         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
25254         and m68k_matches_u_p.
25255         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
25256         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
25257         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
25258         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
25259         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
25260         (REG_STRICT_P): New macro.
25261         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
25262         PCREL_GENERAL_OPERAND_OK.
25263         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
25264         m68k_legitimate_base_reg_p.
25265         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
25266         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
25267         (PIC_CASE_VECTOR_ADDRESS): Update comment.
25268         * config/m68k/m68k.c (m68k_address): New structure.
25269         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
25270         (m68k_decompose_index, m68k_legitimate_constant_address_p)
25271         (m68k_jump_table_ref_p, m68k_decompose_address)
25272         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
25273         (m68k_matches_u_p): New functions.
25274         (print_operand_address): Rewrite to use m68k_decompose_index.
25275
25276 2007-03-05  David Taylor  <dtaylor@emc.com>
25277
25278         * gcc.c: Correct copyright date in --version output.
25279
25280 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25281
25282         * pa.md: In unamed move patterns, disparge copies between general
25283         and floating point registers using '?' modifier.  Don't include 'f'
25284         constraint for register preferences in DImode, SImode, HImode and
25285         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
25286         Remove constraints for copies between general and floating registers
25287         in soft-float DFmode pattern.
25288         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
25289         floating register.
25290         (movsf): Likewise.
25291
25292 2007-03-05  Mike Stump  <mrs@apple.com>
25293
25294         * c-common.c (targetcm): Add.
25295         * c-opts.c (c_common_handle_option): Handle language specific
25296         target options.
25297         * opts.c (handle_option): Verify language for target options, if
25298         any are given.
25299         * opth-gen.awk: Add CL_LANG_ALL.
25300         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
25301         (TARGETCM_INITIALIZER): Add.
25302         * target.h (struct gcc_targetcm): Add.
25303         (targetcm): Add.
25304         * targhooks.c (default_handle_c_option): Add.
25305         * targhooks.h (default_handle_c_option): Add.
25306         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
25307
25308         * config/darwin.opt (iframework): Add.
25309         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
25310         * config/darwin-c.c (handle_c_option): Add.
25311         (TARGET_HANDLE_C_OPTION): Add.
25312         (targetcm): Add.
25313         * doc/invoke.texi (Darwin Options): Add -iframework.
25314
25315 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25316
25317         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
25318         conversion.
25319
25320 2007-03-05  Ian Lance Taylor  <iant@google.com>
25321
25322         * c.opt (fgnu89-inline): New option.
25323         * c-opts.c (c_common_post_options): Set default value for
25324         flag_gnu89_inline.
25325         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
25326         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
25327         inline functions.
25328         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
25329         (grokdeclarator, start_function): Likewise.
25330         * c-cppbuiltin.c (c_cpp_builtins): Define either
25331         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
25332         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
25333         (C Dialect Options): Document -fgnu89-inline.
25334         * doc/extend.texi (Function Attributes): Explain what the
25335         gnu_inline attribute does.
25336         * doc/cpp.texi (Common Predefined Macros): Document
25337         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
25338
25339 2007-03-05  Ian Lance Taylor  <iant@google.com>
25340
25341         PR tree-optimization/31034
25342         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
25343         half-range if the other side is an overflow infinity.
25344
25345 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
25346
25347         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
25348         (bfin*-linux-uclibc*): New configuration.
25349         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
25350         defining.
25351         * config/bfin/linux.h: New file.
25352         * config/bfin/libgcc-bfin.ver: New file.
25353         * config/bfin/t-bfin-uclinux: New file.
25354         * config/bfin/t-bfin-linux: New file.
25355         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
25356         (TARGET_OS_CPP_BUILTINS): New macro.
25357
25358 2007-03-05  Richard Guenther  <rguenther@suse.de>
25359
25360         * fold-const.c (fold_binary): Remove duplicate folding
25361         of comparison of non-null ADDR_EXPR against null.
25362
25363 2007-03-05  Richard Guenther  <rguenther@suse.de>
25364             Dorit Nuzman  <dorit@il.ibm.com>
25365
25366         PR tree-optimization/26420
25367         * tree-vectorizer.c (vectorize_loops): Bail out early if there
25368         are no loops in the function.  Only print the number of
25369         vectorized loops if it is greater than zero or we are supposed
25370         to print information about unvectorized loops.
25371
25372 2007-03-05  Revital Eres  <eres@il.ibm.com>
25373
25374         * gcc.dg/var-expand1.c: New test.
25375         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
25376         when an accumulator is expanded.
25377
25378 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25379
25380         PR other/30465
25381         * c-common.c (convert_and_check): Don't give warnings for
25382         conversion if 'expr' already overflowed.
25383
25384 2007-03-04  Roger Sayle  <roger@eyesopen.com>
25385
25386         PR middle-end/30744
25387         * fold-const.c (fold_comparison): Enforce type consistency when
25388         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
25389
25390 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
25391
25392         * tree-ssa-address.c (create_mem_ref): Do not put an expression
25393         containing a cast to the base of TARGET_MEM_REF.
25394
25395 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
25396
25397         * tree.c (tree_contains_struct_check_failed): Remove spurious
25398         whitespace from error message.
25399
25400 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
25401
25402         PR target/30406
25403         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
25404         instead of precision.
25405
25406 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
25407             Nathan Sidwell  <nathan@codesourcery.com>
25408
25409         * emit-rtl.c (find_auto_inc): New.
25410         (try_split): recreate REG_INC notes,
25411         Use regular for loops rather than whiles.
25412
25413 2007-03-03  Andreas Schwab  <schwab@suse.de>
25414
25415         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
25416         * configure: Regenerate.
25417
25418 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25419
25420         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
25421         flag_rounding_math, not flag_unsafe_math_optimizations.
25422
25423         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
25424         fold_build2.
25425         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
25426         alpha_fold_vector_minmax): Likewise.
25427         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
25428         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
25429
25430 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25431
25432         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
25433         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
25434         if the lhs has side-effects.
25435         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
25436
25437 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25438
25439         * config/i386/i386.h (TUNEMASK): Remove define.
25440         (ARCHMASK): Remove define.
25441         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
25442          Use ix86_arch_mask variable instead of ARCHMASK.
25443         * config/i386/i386.c (override_options): Ditto.
25444         (standard_80387_constant_p): Ditto.
25445
25446 2007-03-02  Ian Lance Taylor  <iant@google.com>
25447
25448         Used signed infinities in VRP.
25449         * tree-vrp.c (uses_overflow_infinity): New static function.
25450         (supports_overflow_infinity): New static function.
25451         (make_overflow_infinity): New static function.
25452         (negative_overflow_infinity): New static function.
25453         (positive_overflow_infinity): New static function.
25454         (is_negative_overflow_infinity): New static function.
25455         (is_positive_overflow_infinity): New static function.
25456         (is_overflow_infinity): New static function.
25457         (overflow_infinity_range_p): New static function.
25458         (compare_values_warnv): New function split out of compare_values.
25459         (compare_value): Call it.
25460         (set_value_range_to_nonnegative): Add overflow_infinity
25461         parameter.  Change caller.
25462         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
25463         Change callers.
25464         (vrp_expr_computes_nonzero): Likewise.
25465         (compare_ranges, compare_range_with_value): Likewise.
25466         (compare_name_with_value, compare_names): Likewise.
25467         (vrp_evaluate_conditional): Likewise.
25468         (set_value_range): Handle infinity
25469         (vrp_operand_equal_p, operand_less_p): Likewise.
25470         (extract_range_from_assert): Likewise.
25471         (vrp_int_const_binop): Likewise.
25472         (extract_range_from_binary_expr): Likewise.
25473         (extract_range_from_unary_expr): Likewise.
25474         (extract_range_from_comparison): Likewise.
25475         (extract_range_from_expr): Likewise.
25476         (dump_value_range): Likewise.
25477         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
25478         (test_for_singularity): Likewise.
25479         (vrp_int_const_binop): Remove inline qualifier.
25480         (adjust_range_with_scev): Add comment.
25481         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
25482
25483 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
25484
25485         * tree-ssa-structalias.c (could_have_pointers): Tidy.
25486         (get_constraint_for): Likewise.
25487         (do_structure_copy): Likewise.
25488         (find_func_aliases): Fix references to MODIFY_EXPR.
25489         (intra_create_variable_infos): Tidy.
25490         * tree-ssa-operands.c (add_virtual_operand): Add argument
25491         IS_CALL_SITE.
25492         When adding members of alias sets, if IS_CALL_SITE is true and
25493         the symbol is not call-clobbered, skip it.
25494         Adjust all callers.
25495
25496 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25497
25498         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
25499         entry by means of emit_insn_at_entry.
25500
25501 2007-03-02  Richard Henderson  <rth@redhat.com>
25502
25503         * expr.h (promoted_input_arg): Remove decl.
25504         * function.c (promoted_input_arg): Merge into ...
25505         * combine.c (setup_incoming_promotions): ... only caller.
25506         Rearrange to avoid double loop.
25507
25508 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25509             Peter Bergner  <bergner@vnet.ibm.com>
25510             Janis Johnson  <janis187@us.ibm.com>
25511
25512         * config/rs6000/dfp.md: New file.
25513         * config/rs6000/rs6000.md: Include dfp.md.
25514         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
25515         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
25516         and TDmode decimal float modes in FP registers.
25517         (num_insns_constant): Likewise.
25518         (rs6000_legitimate_offset_address_p): Likewise.
25519         (rs6000_legitimize_address): Likewise.
25520         (rs6000_legitimize_reload_address): Likewise.
25521         (rs6000_legitimate_address): Likewise.
25522         (rs6000_emit_move): Likewise.
25523         (function_arg_boundary): Likewise.
25524         (function_arg_advance): Likewise.
25525         (rs6000_darwin64_record_arg_recurse): Likewise.
25526         (function_arg): Likewise.
25527         (rs6000_gimplify_va_arg): Likewise.
25528         (rs6000_split_multireg_move): Likewise.
25529         (rs6000_output_function_epilogue): Likewise.
25530         (rs6000_output_function_epilogue): Likewise.
25531         (rs6000_register_move_cost): Likewise.
25532         (rs6000_function_value): Likewise.
25533         (rs6000_libcall_value): Likewise.
25534
25535 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25536
25537         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
25538
25539 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
25540
25541         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
25542         Use $MULTIDIR to choose between the kernel and RTP headers,
25543         and use $WIND_BASE and $WIND_USR to locate them.
25544
25545 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25546
25547         * config/i386/i386.c (override_options): Put initialization of
25548         ix86_tune_mask and ix86_arch_mask to the correct place.
25549
25550 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
25551             Michael Meissner  <michael.meissner@amd.com>
25552
25553         PR target/31019
25554         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
25555         (ARCHMASK): Define.
25556         (TARGET_CMOVE): Use ARCHMASK.
25557         (TARGET_CMPXCHG): Ditto.
25558         (TARGET_CMPXCHG8B): Ditto.
25559         (TARGET_XADD): Ditto.
25560         (TARGET_BSWAP): Ditto.
25561         * config/i386/i386.c (ix86_tune_mask): New global variable.
25562         (ix86_arch_mask): Ditto.
25563         (override_options): Initialize ix86_tune_mask and
25564         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
25565         target_flags.
25566
25567 2007-03-02  Ben Elliston  <bje@au.ibm.com>
25568
25569         PR 30992
25570         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
25571
25572 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
25573
25574         * target.h (init_dwarf_reg_sizes_extra): New target hook.
25575         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
25576         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
25577         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
25578         hook.
25579         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
25580         rs6000_init_dwarf_reg_sizes_extra): New.
25581         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
25582         SPE register high parts.
25583
25584 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
25585
25586         * Makefile.in: Add install-pdf target as
25587         copied from automake v1.10 rules.
25588         * configure.ac: Add install-pdf to target list.
25589         * configure: Regenerate.
25590
25591 2007-03-01  Paul Brook  <paul@codesourcery.com>
25592
25593         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
25594         modes to LDRD for DImode.
25595         (output_move_double): Fixup out of range ldrd/strd.
25596         (vfp_secondary_reload_class): Rename...
25597         (coproc_secondary_reload_class): ... to this.  Add wb argument.
25598         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
25599         coproc_secondary_reload_class for CLASS_IWMMXT.
25600         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
25601         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
25602
25603 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
25604
25605         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
25606         unroll factor by the estimated number of iterations.
25607         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
25608         than prefetch latency.
25609
25610         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
25611         decode_caches_intel, detect_caches_intel): New functions.
25612         (host_detect_local_cpu): Use detect_caches_amd and
25613         detect_caches_intel.
25614
25615 2007-03-01  Richard Henderson  <rth@redhat.com>
25616
25617         * expr.c (emit_move_complex_push): Export.
25618         (emit_move_complex_parts): Split out from ...
25619         (emit_move_complex): ... here.
25620         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
25621         * config/i386/i386.md (movcdi): New.
25622
25623 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
25624
25625         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
25626         size of mode1 to check for tieable modes in MMX case.
25627
25628 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
25629
25630         * Makefile.in (rtlanal.o): Depend on tree.h.
25631         * rtl.h (offset_within_section_p, split_const): Declare.
25632         * rtlanal.c: Include tree.h.
25633         (offset_within_block_p): New function, taken from
25634         mips_offset_within_object_p.
25635         (split_const): New function, taken from mips_split_const.
25636         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
25637         Declare.
25638         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
25639         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
25640         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
25641         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
25642         (m68k_illegitimate_symbolic_constant_p): New function.
25643         * config/m68k/m68k.md (movsi): Remove misleading predicates.
25644         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
25645         symbolic constant that might be outside the symbol's section,
25646         move the symbol first and then add the offset.
25647         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
25648         Override.
25649         * config/mips/mips.c (mips_split_const): Delete.
25650         (mips_offset_within_object_p): Delete.
25651         (mips_symbolic_constant_p): Use offset_within_section_p and
25652         split_const instead of mips_offset_within_object_p and
25653         mips_split_const.
25654         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
25655         (mips_legitimize_const_move, print_operand_reloc)
25656         (mips_dangerous_for_la25_p): Use split_const instead of
25657         mips_split_const.
25658
25659 2007-02-28  Eric Christopher  <echristo@apple.com>
25660
25661         * Makefile.in (install-include-dir): Don't rm -rf include.
25662
25663 2007-02-28  Richard Guenther  <rguenther@suse.de>
25664
25665         PR middle-end/30364
25666         * fold-const.c (fold_binary): Do not associate expressions
25667         with more than one variable for integer types that do not wrap.
25668
25669 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
25670
25671         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
25672         Delete, and replace with...
25673         (fold_builtin_call_array): This.  Update callers to use it.
25674         * fold-const.c (fold_build_call_list): Delete, and replace with...
25675         (fold_build_call_array): This.
25676         (fold_build_call_list_initializer): Delete, and replace with...
25677         (fold_build_call_array_initializer): This.
25678         * tree.h: Update declarations to reflect above changes.
25679
25680         * c-typeck.c (build_function_call): Store converted arguments
25681         in a stack-allocated array instead of building a list.
25682         (convert_arguments): Store arguments in the array passed in as an
25683         argument, and return the actual number of arguments.
25684         * c-format.c: (check_function_format): Pass arguments in an
25685         array instead of a list.
25686         * c-common.c (check_function_nonnull): Likewise.
25687         (check_function_sentinel): Likewise.
25688         (check_function_arguments): Likewise.
25689         * c-common.h: Update declarations to reflect above changes.
25690
25691 2007-02-28  Jan Hubicka  <jh@suse.cz>
25692
25693         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
25694         PRED_NEGATIVE_RETURN): Update outcomes.
25695
25696 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
25697
25698         * calls.c (emit_library_call_value_1): Handle partial registers
25699         correctly when building up CALL_INSN_FUNCTION_USAGE.
25700
25701 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25702
25703         * pa/predicates.md (move_src_operand): Allow zero for mode.
25704         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
25705         move pattern.
25706
25707 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
25708
25709         PR target/30970
25710         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
25711         *movv2df_internal): Enable pattern only for valid operand
25712         combinations.
25713         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
25714         tie only 128bit modes. For MMX registers, tie only 64bit modes.
25715
25716 2007-02-27  Mike Stump  <mrs@apple.com>
25717
25718         * config/darwin-crt3.c: Avoid compilation when compiling for a
25719         kext multilib.
25720
25721 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
25722
25723         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
25724         FIXED_INCLUDE_DIR.
25725         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
25726         for fixed headers and limits.h.
25727         (install-include-dir, install-headers-tar, install-headers-cpio,
25728         install-headers-cp, real-install-headers-tar,
25729         real-install-headers-cpio, real-install-headers-cp): Handle
25730         include-fixed as well as include.
25731         (install-mkheaders): Don't install files that go only in include
25732         not include-fixed.
25733         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
25734         from GCC_INCLUDE_DIR.
25735         * gcc.c (process_command): Remove special -BstageN/ handling.
25736         (do_spec_1): Add include-fixed directories.
25737
25738 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25739
25740         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
25741         _smulsi3_highpart.
25742         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
25743         New functions.
25744         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
25745         patterns.
25746
25747 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
25748
25749         * c-common.c (get_priority): Add check for
25750         SUPPORTS_INIT_PRIORITY.
25751
25752 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25753
25754         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
25755
25756         * config/bfin/bfin.c: Include "cfglayout.h".
25757         (MAX_LSETUP_DISTANCE): New macro.
25758         (struct loop_info): New members incoming, incoming_src and
25759         incoming_dest.  Delete member predecessor.
25760         (length_for_loop): New function.
25761         (bfin_optimize_loop): Handle more different loop structures.
25762         (bfin_discover_loop): Rework detection of predecessor blocks by
25763         examining incoming edges.
25764         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
25765         bfin_reorg_loops.
25766         (bfin_reorder_loops): New function.
25767         (bfin_reorg_loops): Use these three new functions.
25768
25769         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
25770         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
25771         (CONSTRAINT_LEN): Add entry for 'q'.
25772         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
25773         Add 'q' constraints.
25774         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
25775         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
25776
25777         * config/bfin/bfin.md (add_with_carry): New pattern.
25778         (s_or_u, su_optab, su_modifier): New code macros/attrs.
25779         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
25780         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
25781         support unsigned multiplies too.  Removed incorrect commutativity from
25782         operand 1 constraint where appropriate.
25783         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
25784         patterns.
25785         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
25786         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
25787         New patterns.
25788         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
25789         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
25790         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
25791         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
25792         usmulhisi_hh_huh): New patterns.
25793
25794         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
25795         lshifthi3): Fix output template to use half reg for operand 2.
25796
25797         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
25798         instead of R2.
25799
25800         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
25801
25802 2007-02-27  Andreas Schwab  <schwab@suse.de>
25803
25804         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
25805
25806 2007-02-27  Jan Hubicka  <jh@suse.cz>
25807
25808         * predict.c (last_basic_block_p): Remove.
25809         (tree_estimate_probability): Update return heuristic for commonized
25810         return blocks.
25811
25812 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25813
25814         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
25815
25816 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
25817
25818         * doc/include/gcc-common.texi (versionsubtitle): New macro.
25819         * doc/cpp.texi: Standardize title page.
25820         * doc/cppinternals.texi: Likewise.
25821         * doc/gcc.texi: Standardize title page, remove version number
25822         from copyright page.
25823         * doc/gccint.texi: Likewise.
25824         * doc/install.texi: Standardize title page, add table of
25825         contents.
25826
25827 2007-02-26  Jan Hubicka  <jh@suse.cz>
25828
25829         * predict.def: Set outcomes according to more recent results.
25830         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
25831         Remove dead predictors.
25832         * predict.c (return_prediction): Fix pasto.
25833
25834 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
25835
25836         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
25837         change; avoid a memory leak when returning early.
25838
25839 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
25840
25841         * c-decl.c (static_ctors): Move to c-common.c.
25842         (static_dtors): Likewise.
25843         (finish_function): Use c_record_cdtor_fn.
25844         (build_cdtor): Move to c-common.c.
25845         (c_write_global_declarations): Use c_build_cdtor_fns.
25846         * c-common.h (static_ctors): Declare.
25847         (static_dtors): Likewise.
25848         (c_record_cdtor_fn): Likewise.
25849         (c_build_cdtor_fns): Likewise.
25850         * c-common.c (static_ctors): New variable.
25851         (static_dtors): Likewise.
25852         (c_record_cdtor_fn): New function.
25853         (build_cdtor): Move from c-decl.c
25854         (c_build_cdtor_fns): New function.
25855
25856         * output.h (assemble_addr_to_section): Declare.
25857         (get_cdtor_priority_section): Likewise.
25858         * varasm.c (assemble_addr_to_section): New function.
25859         (get_cdtor_priority_section): Likewise.
25860         (default_named_section_asm_out_destructor): Use them.
25861         (destor_dtor_section_asm_out_destructor): Likewise.
25862         (default_named_section_asm_out_constructor): Likewise.
25863         (default_ctor_section_asm_out_constructor): Likewise.
25864         * config.gcc (*-*-vxworks*): Include vxworks.o.
25865         * config/t-vxworks (vxworks.o): New target.
25866         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
25867         (TARGET_ASM_CONSTRUCTOR): Define.
25868         (TARGET_ASM_DESTRUCTOR): Likewise.
25869         (vxworks_asm_out_constructor): Declare.
25870         (vxworks_asm_out_destructor): Likewise.
25871
25872         * c-common.c (get_priority): Check that we have not just an
25873         INTEGER_CST, but an integer constant with integeral type.
25874
25875 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
25876
25877         PR tree-optimization/30938
25878         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
25879         use &dt[nargs-1] instead of &dt[nargs] in the call to
25880         vect_is_simple_use().
25881
25882 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
25883
25884         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
25885         from register elimination as PRE_MODIFY / POST_MODIFY increments.
25886         Do not attempt to handle MEM inside auto-inc expressions.
25887         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
25888         of a register modified by an auto-inc expression.  However, do handle
25889         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
25890         (elimination_effects): Prohibit elimination of a register modified
25891         by an auto-inc expression.  Disable register elimination rules whose
25892         target register is modified by an auto-inc expression with variable
25893         increment.
25894
25895 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
25896
25897         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
25898         off-by-one error.
25899         (array_at_struct_end_p): New function.
25900         (idx_infer_loop_bounds): Use it.
25901         (estimate_numbers_of_iterations_loop): Export.
25902         * predict.c (predict_loops): Use estimated_loop_iterations_int.
25903         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
25904         (tree_estimate_probability): Call record_loop_exits.
25905         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
25906         (estimated_loop_iterations, estimated_loop_iterations_int,
25907         estimated_loop_iterations_tree): New functions.
25908         (analyze_siv_subscript_cst_affine,
25909         compute_overlap_steps_for_affine_1_2,
25910         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
25911         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
25912         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
25913         (PRED_LOOP_ITERATIONS_GUESSED): New.
25914         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
25915         * cfgloop.h (estimate_numbers_of_iterations_loop,
25916         estimated_loop_iterations_int): Declare.
25917
25918 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
25919
25920         * doc/extend.texi: Document optional priority argument to
25921         constructors and destructors.
25922         * tree.c (init_priority_for_decl): Adjust GTY markers.
25923         (init_ttree): Use priority-info hash functions for
25924         init_priority_for_decl.
25925         (tree_map_eq): Rename to ...
25926         (tree_map_base_eq): ... this.
25927         (tree_map_marked_p): Rename to ...
25928         (tree_map_base_marked_p): ... this.
25929         (tree_map_base_hash): New function.
25930         (decl_init_priority_lookup): Rework.
25931         (decl_fini_priority_lookup): New function.
25932         (decl_priority_info): New function.
25933         (decl_init_priority_insert): Use it.
25934         (decl_fini_priority_insert): Likewise.
25935         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
25936         hierarchy.
25937         (decl_restrict_base_insert): Likewise.
25938         (decl_debug_expr_insert): Likewise.
25939         (decl_value_expr_lookup): Likewise.
25940         (decl_value_expr_insert): Likewise.
25941         * tree.h (priority_type): New type.
25942         (decl_init_priority_lookup): Use priority_type.
25943         (decl_fini_priority_lookup): New function.
25944         (decl_init_priority_insert): Use priority_type.
25945         (decl_fini_priority_insert): New function.
25946         (DECL_HAS_INIT_PRIORITY): Tweak comments.
25947         (DECL_INIT_PRIORITY): Likewise.
25948         (SET_DECL_INIT_PRIORITY): Add comment.
25949         (DECL_FINI_PRIORITY): New macro.
25950         (SET_DECL_FINI_PRIORITY): Likewise.
25951         (DEFAULT_INIT_PRIORITY): Document.
25952         (MAX_INIT_PRIORITY): Likewise.
25953         (MAX_RESERVED_INIT_PRIORITY): Likewise.
25954         (tree_map_base): New type.
25955         (tree_map_base_eq): New function.
25956         (tree_map_base_hash): Likewise.
25957         (tree_map_base_marked_p): Likewise.
25958         (tree_map): Inherit from tree_map_base.
25959         (tree_map_eq): Make it a macro.
25960         (tree_map_marked_p): Likewise.
25961         (tree_int_map): Inherit from tree_map_base.
25962         (tree_int_map_eq): Make it a macro.
25963         (tree_int_map_hash): Likewise.
25964         (tree_int_map_marked_p): Likewise.
25965         (tree_priority_map): New type.
25966         (tree_priority_map_eq): New macro.
25967         (tree_priority_map_hash): Likewise.
25968         (tree_priority_map_marked_p): Likewise.
25969         * varasm.c (emults_decl): Adjust for refactoring of tree_map
25970         hierarchy.
25971         (emutls_common_1): Likewise.
25972         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
25973         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
25974         of tree_map hierarchy.
25975         * tree-cfg.c (move_stmt_r): Likewise.
25976         (new_label_mapper): Likewise.
25977         * c-tree.h (c_expand_body): Move to ...
25978         * c-common.h (c_expand_body): ... here.
25979         * c-decl.c (c_expand_body): Move to ...
25980         * c-common.c (c_expand_body): ... here.
25981         (c_common_attribute_table): Allow 1 argument for the constructor
25982         and destructor attributes.
25983         (get_priority): New function.
25984         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
25985         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
25986
25987 2007-02-24  Jan Hubicka  <jh@suse.cz>
25988
25989         PR middle-end/30509
25990         * tree-inline.c (copy_bb): Produce exact copy of EH info when
25991         copying for inlining.
25992
25993 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
25994             Jan Hubicka  <jh@suse.cz>
25995
25996         PR target/30778
25997         * i386.c (counter_mode): New function.
25998         (expand_set_or_movmem_via_loop): Use it.
25999         (expand_movmem_epilogue): Likewise; fix pasto.
26000         (ix86_expand_movmem): Do emit guard even for constant counts.
26001         (ix86_expand_setmem): Likewise.
26002
26003 2007-02-25  Nick Clifton  <nickc@redhat.com>
26004
26005         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
26006         (JUMP_TABLES_IN_TEXT_SECTION): Define.
26007
26008 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26009
26010         PR target/30770
26011         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
26012         count argument with 0x10, not with 0x16.
26013         (expand_setmem_epilogue): Ditto.
26014
26015 2007-02-24  Mike Stump  <mrs@apple.com>
26016
26017         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
26018         symbols.
26019
26020 2007-02-24  Richard Guenther  <rguenther@suse.de>
26021
26022         PR middle-end/30951
26023         * fold-const.c (fold_binary): Fold x +- CST op x for
26024         EQ_EXPR and NE_EXPR.
26025
26026 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26027
26028         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
26029
26030 2007-02-24  Jan Hubicka  <jh@suse.cz>
26031
26032         * cgraphunit.c (decide_is_function_needed): Honor
26033         -fkeep-inline-functions.
26034
26035 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26036
26037         * builtins.c (fold_builtin_modf): New.
26038         (fold_builtin_2): Use it.
26039
26040 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
26041
26042         * loop-iv.c (implies_p): Detect additional cases where A implies B.
26043         (determine_max_iter): Take additional LOOP arg; all callers changed.
26044         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
26045         one using simplifications.
26046         (simplify_using_initial_values): Return if the expression becomes
26047         invalid due to altered regs.
26048
26049 2007-02-23  DJ Delorie  <dj@redhat.com>
26050
26051         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
26052
26053 2007-02-23  Mike Stump  <mrs@apple.com>
26054
26055         * tlink.c (scan_linker_output): Parse linker messages from
26056         darwin9's linker better.
26057
26058 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
26059
26060         PR debug/29614
26061         * varpool.c (varpool_assemble_pending_decls): Set
26062         varpool_last_needed_node to null.
26063
26064 2007-02-23  DJ Delorie  <dj@redhat.com>
26065
26066         * config/i386/i386.c (ix86_data_alignment): Don't specify an
26067         alignment bigger than the object file can handle.
26068
26069 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
26070
26071         PR target/30825
26072         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
26073         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
26074         (*movsf_1): Penalize MMX moves.
26075
26076 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26077
26078         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
26079         2^32-1 or more times unless flag_unsafe_loop_optimizations.
26080
26081         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
26082
26083 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26084
26085         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
26086         (fold_builtin_1): Use them.
26087         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
26088         BUILT_IN_SIGNIFICAND.
26089
26090 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
26091
26092         * config/i386/i386.c (bdesc_1arg): Initialize
26093         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
26094         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
26095         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
26096         and IX86_BUILTIN_MOVSLDUP.
26097
26098 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
26099
26100         PR rtl-optimization/30841
26101         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
26102
26103 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26104
26105         * builtins.c (fold_builtin_frexp): New.
26106         (fold_builtin_2): Use it.
26107
26108 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
26109
26110         * doc/invoke.texi (Spec Files): Document getenv spec function.
26111
26112         * gcc.c (getenv_spec_function): New function.
26113         (static_spec_functions): Add it.
26114         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
26115         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
26116         header files.
26117
26118 2007-02-22  Michael Matz  <matz@suse.de
26119
26120         PR c++/29433
26121         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
26122         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
26123
26124 2007-02-22  Ian Lance Taylor  <iant@google.com>
26125
26126         PR debug/30898
26127         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
26128         (mem_loc_descriptor): Call it.
26129
26130 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
26131             Ira Rosen  <irar@il.ibm.com>
26132
26133         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
26134
26135 2007-02-22  Ira Rosen  <irar@il.ibm.com>
26136
26137         PR tree-optimization/30843
26138         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
26139         stores only after all the group is vectorized.
26140
26141 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
26142
26143         PR tree-optimization/30858
26144         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
26145         in the reduction cycle have a single use in the loop.
26146         * tree-vectorizer.h (relevant): Add documentation.
26147
26148 2007-02-20  Mike Stump  <mrs@apple.com>
26149
26150         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
26151         * configure: Regenerate.
26152
26153 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
26154
26155         Change the defaults of some parameters and options.
26156         * config/spu/spu-protos.h (spu_optimization_options): Declare.
26157         * config/spu/spu.c (spu_optimization_options): Add.
26158         (spu_override_options): Change params in spu_optimization_options.
26159         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
26160
26161         Register 127 is only 16 byte aligned when used as a frame pointer.
26162         * config/spu/spu-protos.h (spu_init_expanders): Declare.
26163         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
26164         HARD_FRAME_POINTER_REGNUM.
26165         (spu_legitimate_address): Use regno_aligned_for_reload.
26166         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
26167         aligned when frame_pointer_needed is true.
26168         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
26169         to 8 bits.
26170         * config/spu/spu.h (INIT_EXPANDERS): Define.
26171
26172         Make sure shift and rotate instructions have valid immediate operands.
26173         * config/spu/predicates.md (spu_shift_operand): Remove.
26174         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
26175         * config/spu/constraints.md (W, O): Extend range.
26176         * config/spu/spu.md (umask, nmask): Define.
26177         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
26178         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
26179         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
26180         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
26181         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
26182         (lshr<mode>3_reg): Fix rtl description.
26183
26184         Make sure mulhisi immediate operands are valid.
26185         * config/spu/predicates.md (imm_K_operand): Add.
26186         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
26187
26188         Generate constants using fsmbi and andi.
26189         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
26190         (print_operand, spu_split_immediate, classify_immediate,
26191         fsmbi_const_p): Handle IC_FSMBI2.
26192
26193         Correctly handle a CONST_VECTOR containing symbols.
26194         * config/spu/spu.c (print_operand): Handle HIGH correctly.
26195         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
26196         (immediate_load_p): Allow symbols that use 2 instructions to create.
26197         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
26198         with symbols when flag_pic is set.
26199         (const_vector_immediate_p): New.
26200         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
26201         accept a CONST_VECTOR with symbols.
26202         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
26203         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
26204         correctly.
26205         * config/spu/spu.md (high, low): Delete.
26206         (low_<mode>): Define.
26207
26208         Remove INTRmode and INTR_REGNUM, which didn't work.
26209         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
26210         of INTR_REGNUM.
26211         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
26212         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
26213         peephole2 pattern): Don't use INTR or 131.
26214         (movintrcc): Delete.
26215         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
26216         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
26217         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
26218         (UNSPEC_SET_INTR): Add.
26219         * config/spu/spu-modes.def (INTR): Remove.
26220
26221         More accurate warnings about run-time relocations.
26222         * config/spu/spu.c (reloc_diagnostic): Test in_section.
26223
26224         Correctly warn about immediate arguments to specific intrinsics.
26225         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
26226         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
26227         the instruction predicate.
26228
26229         Fix tree check errors with latest update.
26230         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
26231         CALL_EXPR_ARG.
26232         (spu_expand_builtin): Use CALL_EXPR_FN.
26233
26234         Add missing specific intrinsics.
26235         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
26236         si_bislede.
26237         * config/spu/spu_internals.h: Ditto.
26238
26239         Fix incorrect operand modifiers.
26240         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
26241         * config/spu/spu.md (xor<mode>3): Change %S to %J.
26242
26243         Optimize one case of zero_extend of a vec_select.
26244         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
26245
26246         Accept any immediate for hbr.
26247         * config/spu/spu.md (hbr): Change s constraints to i.
26248
26249 2007-02-21  Paul Brook  <paul@codesourcery.com>
26250
26251         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
26252         condexec_count when skipping USE and CLOBBER.
26253
26254 2007-02-21  Nick Clifton  <nickc@redhat.com>
26255
26256         * common.opt (Warray-bounds): Add Warning attribute.
26257         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
26258         Likewise.
26259         (fsized-zeroes): Add Optimization attribute.
26260         (fsplit-wide-types, ftree-scev-cprop): Likewise.
26261         * c.opt (Wc++0x-compat): Add Warning attribute.
26262
26263 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
26264
26265         PR middle-end/30761
26266         * reload1.c (eliminate_regs_in_insn): In the single_set special
26267         case, attempt to re-recognize the insn before falling back to
26268         having reload fix it up.
26269
26270 2007-02-20  Eric Christopher  <echristo@gmail.com>
26271
26272         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
26273         Rewrite accordingly.
26274         (frv_read_iacc_argument): Ditto.
26275         (frv_expand_set_builtin): Take a call instead of arglist, update for
26276         above changes.
26277         (frv_expand_unop_builtin): Ditto.
26278         (frv_expand_binop_builtin): Ditto.
26279         (frv_expand_cut_builtin): Ditto.
26280         (frv_expand_binopimm_builtin): Ditto.
26281         (frv_expand_voidbinop_builtin): Ditto.
26282         (frv_expand_int_void2arg): Ditto.
26283         (frv_expand_prefetches): Ditto.
26284         (frv_expand_voidtriop_builtin): Ditto.
26285         (frv_expand_voidaccop_builtin): Ditto.
26286         (frv_expand_load_builtin): Ditto.
26287         (frv_expand_store_builtin): Ditto.
26288         (frv_expand_mdpackh_builtin): Ditto.
26289         (frv_expand_mclracc_builtin): Ditto.
26290         (frv_expand_mrdacc_builtin): Ditto.
26291         (frv_expand_mwtacc_builtin): Ditto.
26292         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
26293         calls for above.
26294
26295 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
26296
26297         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
26298         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
26299         cmpb instruction.
26300         (HAVE_GAS_DFP): Check for assembler support of decimal floating
26301         point instructions.
26302         * configure: Regenerate.
26303         * config.in: Regenerate.
26304         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
26305         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
26306         masks to power6 and power6x and to POWERPC_MASKS.
26307         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26308         _ARCH_PWR6.
26309         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
26310         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
26311         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
26312         Access PROTOTYPE as variable, not mask.
26313
26314 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26315
26316         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
26317         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
26318         * combine.c (adjust_for_new_dest): Use it.
26319         * postreload.c (reload_combine): Likewise.
26320
26321 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
26322
26323         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
26324         notes on an insn with multiple sets, even if single_set returns
26325         non-NULL for that insn.
26326
26327 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26328
26329         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
26330         scalbn and scalbln.
26331
26332 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
26333
26334         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
26335         if user didn't pass it.
26336         * config/i386/darwin.h (CC1_SPEC): Likewise.
26337         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
26338         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
26339         -mmacosx-version-min.
26340
26341 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26342             Uros Bizjak  <ubizjak@gmail.com>
26343
26344         * optabs.h (enum optab_index): Add new OTI_scalb.
26345         (scalb_optab): Define corresponding macro.
26346         * optabs.c (init_optabs): Initialize scalb_optab.
26347         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
26348         patterns.
26349         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
26350         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
26351         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
26352         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
26353         flag_unsafe_math_optimizations is set.
26354
26355         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
26356         to implement scalbf, scalb and scalbl built-ins as inline x87
26357         intrinsics.
26358
26359 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26360             DJ Delorie <dj@redhat.com>
26361
26362         PR other/30824
26363         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
26364         (diagnostic_report_diagnostic): ... here, and turn them into real
26365         errors. If warnings are inhibited, no need to do anything.
26366
26367 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
26368
26369         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
26370         better code generation.
26371
26372 2007-02-20  Ben Elliston  <bje@au.ibm.com>
26373
26374         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
26375
26376 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
26377
26378         * config/alpha/alpha.c, config/alpha/alpha.md,
26379         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
26380         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
26381         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
26382         config/arm/lib1funcs.asm: Follow spelling conventions.
26383
26384         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
26385         config/fr30/fr30.md, config/i386/i386.h,
26386         config/iq2000/iq2000.h, config/iq2000/predicates.md,
26387         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
26388         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
26389         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
26390         config/rs6000/altivec.md, config/rs6000/rs6000.c,
26391         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
26392         config/sparc/sparc.c, config/sparc/sparc.h,
26393         config/sparc/sparc.md, config/spu/constraints.md,
26394         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
26395         conventions.
26396
26397 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
26398
26399         PR target/29943
26400         * varasm.c (use_blocks_for_decl_p): Return false for decls with
26401         alias attribute.
26402
26403 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26404
26405         * doc/invoke.texi (-ftree-lrs): Remove.
26406
26407 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
26408
26409         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
26410         NULL.
26411
26412 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
26413
26414         * config/ia64/ia64.c (ia64_expand_builtin): Use the
26415         new CALL_EXPR_FN macro for retrieving the function
26416         declaration of the input expression.
26417
26418 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26419
26420         * c.opt (Waddress): New.
26421         * common.opt (Walways-true): Delete.
26422         (Wstring-literal-comparison): Delete.
26423         * doc/invoke.texi (Warning Options): Delete -Walways-true and
26424         -Wstring-literal-comparison. Add -Waddress.
26425         (Waddress): New.
26426         (Walways-true): Delete.
26427         (Wstring-literal-comparison): Delete.
26428         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
26429         consistently instead of -Walways-true in example.
26430         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
26431         * c-typeck.c (parser_build_binary_op): Replace
26432         -Wstring-literal-comparison and -Walways-true with -Waddress.
26433         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
26434         with -Waddress.
26435
26436 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26437
26438         * tree-cfg.c (dump_function_to_file): Be prepared for functions
26439         without DECL_STRUCT_FUNCTION initialized.
26440
26441 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
26442
26443         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
26444         due to calls to functions taking pointers as parameters.
26445
26446 2007-02-19  Richard Henderson  <rth@redhat.com>
26447
26448         PR debug/29558
26449         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
26450         in memory.
26451
26452 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
26453
26454         * config/s390/s390.c (s390_call_saved_register_used,
26455         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
26456         accessed to the new scheme.
26457
26458 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
26459
26460         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
26461         (cris_print_index, cris_print_operand, cris_print_operand_address)
26462         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
26463         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
26464         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
26465         GET_CODE () == xxx.
26466         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
26467         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
26468         GO_IF_LEGITIMATE_ADDRESS): Ditto.
26469         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
26470         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
26471         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
26472         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
26473         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
26474         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
26475         (uminsi3, call, call_value): Ditto.
26476         (define_split: indir_to_reg_split, unnamed): Ditto.
26477
26478 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
26479
26480         PR tree-optimization/30975
26481         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
26482         wrong assert.
26483
26484 2007-02-18  Eric Christopher  <echristo@gmail.com>
26485
26486         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
26487         Remove use of arglist.
26488         (mips_expand_builtin): Remove use of arglist, pass in expr.
26489         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
26490         (mips_expand_builtin_movtf): Ditto.
26491         (mips_expand_builtin_compare): Ditto.
26492
26493 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26494
26495         * tree-sra.c (sra_build_assignment): Replace assertion
26496         checking with a comment explaining why it can't be done.
26497
26498 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26499
26500         PR middle-end/30833
26501         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
26502         during CALL_EXPR representation conversion.
26503         * tree-ssa-propagate.c (set_rhs): Likewise.
26504
26505 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
26506
26507         * tree-sra.c (sra_build_assignment): Disable assertion checking
26508         for now.
26509
26510 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26511
26512         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
26513         instead of calling build2 with a GIMPLE_MODIFY_STMT.
26514         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
26515         Likewise.
26516         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
26517         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
26518         gimplify_init_ctor_eval_range, gimple_push_cleanup,
26519         gimplify_omp_for, gimplify_omp_atomic_pipeline,
26520         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
26521         force_gimple_operand): Likewise.
26522         * ipa-cp.c (constant_val_insert): Likewise.
26523         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
26524         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
26525         perfect_nestify): Likewise.
26526         * langhooks.c (lhd_omp_assignment): Likewise.
26527         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
26528         lower_copyprivate_clauses, lower_send_clauses,
26529         lower_send_shared_vars, expand_parallel_call,
26530         expand_omp_for_generic, expand_omp_for_static_nochunk,
26531         expand_omp_for_static_chunk, expand_omp_sections,
26532         lower_omp_single_copy, lower_omp_for_lastprivate,
26533         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
26534         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
26535         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
26536         Likewise.
26537
26538 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
26539
26540         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
26541         config/sh/sh.md: Follow spelling conventions.
26542
26543         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
26544         config/frv/predicates.md: Follow spelling conventions.
26545
26546         * config/m68k/linux-unwind.h: Fix a comment typo.
26547         * target.h: Follow spelling conventions.
26548
26549 2007-02-18  Roger Sayle  <roger@eyesopen.com>
26550
26551         PR rtl-optimization/28173
26552         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
26553         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
26554         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
26555         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
26556         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
26557
26558 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26559
26560         * builtins.c (fold_builtin_load_exponent): New.
26561         (fold_builtin_2): Use it.
26562
26563 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
26564
26565         PR rtl-optimization/30773
26566         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
26567         if we fail to attach a REG_EQUIV note.
26568
26569 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
26570             Roger Sayle  <roger@eyesopen.com>
26571
26572         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
26573
26574 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
26575
26576         * calls.c (initialize_argument_information): Pass original EXP
26577         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
26578         code to split complex arguments here, as part of initializing the
26579         ARGS array.
26580         (expand_call): Remove code that builds a list of arguments and
26581         inserts implicit arguments into it.  Instead, just count how many
26582         implicit arguments there will be so we can determine the size of
26583         the ARGS array, and let initialize_argument_information do the work.
26584         (split_complex_values): Delete unused function.
26585
26586 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26587
26588         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
26589
26590 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
26591
26592         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
26593         for arg pointer based indexed addressing.
26594
26595 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26596
26597         * config/ia64/ia64.h, config/ia64/ia64.md,
26598         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
26599         spelling conventions.
26600
26601 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26602
26603         * config/m68k/m68k.c (split_di): New.
26604         * config/m68k/m68k-protos.h: Declare split_di.
26605         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
26606           Improve predicate handling and split constant shifts.
26607
26608 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26609
26610         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
26611         parameter for register bitfield operations, general predicates
26612         cleanup
26613
26614 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
26615
26616         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
26617         * config/m68k/linux-unwind.h: New file.
26618
26619 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
26620
26621         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
26622         config/i386/athlon.md, config/ia64/ia64.md,
26623         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
26624         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
26625         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
26626         tree-ssa-loop-niter.c, tree-vect-analyze.c,
26627         tree-vect-transform.c: Fix comment typos.
26628
26629 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
26630
26631         * sched-deps.c (find_insn_list): Remove.
26632         * sched-int.h: Remove the prototype for find_insn_list.
26633
26634 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
26635
26636         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
26637         to linker.
26638         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
26639         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
26640         darwin_rs6000_override_options.
26641         (C_COMMON_OVERRIDE_OPTIONS): Expect
26642         darwin_macosx_version_min to be non-NULL always.
26643         (TARGET_C99_FUNCTIONS): Likewise.
26644         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
26645         (DARWIN_MINVERSION_SPEC): New.
26646         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
26647         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
26648         to cc1*.
26649         (DARWIN_MINVERSION_SPEC): New.
26650         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
26651         value.
26652         * config/darwin-c.c (darwin_cpp_builtins): Expect
26653         darwin_macosx_version_min to be non-NULL always.
26654
26655         * config/rs6000/rs6000.c: Clean up trailing whitespace.
26656
26657 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
26658
26659         * config/i386/i386.h (x86_use_xchgb): New.
26660         (TARGET_USE_XCHGB): New macro.
26661         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
26662         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
26663         Split after reload into bswaphi for shifts of 8.
26664         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
26665         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
26666         or when optimizing for size.
26667
26668 2007-02-16  Richard Guenther  <rguenther@suse.de>
26669             Christian Bruel  <christian.bruel@st.com>
26670
26671         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
26672         DECLs but prefer SSA_NAMEs over DECLs.
26673
26674 2007-02-16  Richard Guenther  <rguenther@suse.de>
26675
26676         * tree-flow-inline.h (single_imm_use_p): Remove.
26677         (zero_imm_uses_p): Likewise.
26678         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
26679         instead of single_imm_use_p.
26680         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
26681         zero_imm_uses_p.
26682
26683 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26684
26685         PR other/27843
26686         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
26687         nested double- and backquotes.
26688
26689 2007-02-15  Roger Sayle  <roger@eyesopen.com>
26690
26691         PR middle-end/30391
26692         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
26693         should be unreachable.
26694         (build2_stat): Allow construction of MODIFY_EXPR at any time.
26695         For the time being redirect GIMPLE_MODIFY_STMT to the new
26696         (renamed) build_gimple_modify_stmt_stat.
26697         (build2_gimple_stat): Rename to...
26698         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
26699         Always build a GIMPLE_MODIFY_STMT node.
26700         * tree.h (build2_gimple, build2_gimple_stat): Delete.
26701         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
26702         declarations.
26703
26704         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
26705         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
26706         * tree-complex.c (set_component_ssa_name, expand_complex_move,
26707         expand_complex_div_wide): Likewise.
26708         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
26709         * tree-ssa-loop-im.c (schedule_sm): Likewise.
26710         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
26711         * tree-ssa-loop-manip.c (create_iv): Likewise.
26712         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
26713         abs_replacement): Likewise.
26714         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
26715         realify_fake_stores): Likewise.
26716
26717         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
26718         node rather than a GIMPLE_MODIFY_STMT node.
26719         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
26720         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
26721         Likewise.
26722         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
26723         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
26724         GIMPLE_MODIFY_STMT.
26725
26726 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26727
26728         PR middle-end/30433
26729         * fold-const.c (fold_comparison): Add back the
26730         folding of constant complex comparisions.
26731
26732 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26733
26734         PR middle-end/30729
26735         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
26736         effects unknown to this function, return early.
26737
26738 2007-02-15  Ian Lance Taylor  <iant@google.com>
26739
26740         * lower-subreg.c (move_eh_region_note): New static function.
26741         (resolve_simple_move): Call it.
26742         (decompose_multiword_subregs): Track blocks for which we resolve a
26743         simple move which is also a control flow insn.  Pass them to
26744         find_many_sub_basic_blocks.
26745         (pass_lower_subreg): Add TODO_verify_flow.
26746         (pass_lower_subreg2): Likewise.
26747
26748 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26749             Brooks Moses  <brooks.moses@codesourcery.com>
26750             Lee Millward  <lee.millward@codesourcery.com>
26751
26752         * tree.h (enum tree_code_class): Add tcc_vl_exp.
26753         (VL_EXP_CLASS_P): New.
26754         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
26755         TREE_CODE_LENGTH.
26756         (TREE_OPERAND_CHECK_CODE): Likewise.
26757         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
26758         (TREE_RTL_OPERAND_CHECK): Likewise.
26759         (tree_operand_check_failed): Make second parameter the whole tree
26760         instead of its code.  Fixed callers.
26761         (VL_EXP_CHECK): New.
26762         (TREE_OPERAND_LENGTH): New.
26763         (VL_EXP_OPERAND_LENGTH): New.
26764         (CALL_EXPR_FN): New.
26765         (CALL_EXPR_STATIC_CHAIN): New.
26766         (CALL_EXPR_ARGS): New.
26767         (CALL_EXPR_ARG): New.
26768         (call_expr_nargs): New.
26769         (CALL_EXPR_ARGP): New.
26770         (build_nt_call_list): Declare.
26771         (build_vl_exp_stat): Declare.
26772         (build_vl_exp): New.
26773         (build_call_list): Declare.
26774         (build_call_nary): Declare.
26775         (build_call_valist): Declare.
26776         (build_call_array): Declare.
26777         (call_expr_arg): Declare.
26778         (call_expr_argp): Declare.
26779         (call_expr_arglist): Declare.
26780         (fold_build_call_list): Declare.
26781         (fold_build_call_list_initializer): Declare.
26782         (fold_call_expr): Declare to replace fold_builtin.
26783         (fold_builtin_fputs): Update to agree with modified definition.
26784         (fold_builtin_strcpy): Likewise.
26785         (fold_builtin_strncpy): Likewise.
26786         (fold_builtin_memory_chk): Likewise.
26787         (fold_builtin_stxcpy_chk): Likewise.
26788         (fold_builtin_strncpy_chk): Likewise.
26789         (fold_builtin_next_arg): Likewise.
26790         (fold_build_call_expr): Declare.
26791         (fold_builtin_call_list): Declare.
26792         (fold_builtin_call_valist): Declare.
26793         (build_call_expr): Declare.
26794         (validate_arglist): Update to agree with modified definition.
26795         (tree_operand_length): New.
26796         (call_expr_arg_iterator): New.
26797         (init_call_expr_arg_iterator): New.
26798         (next_call_expr_arg): New.
26799         (first_call_expr_arg): New.
26800         (more_call_expr_args_p): New.
26801         (FOR_EACH_CALL_EXPR_ARG): New.
26802
26803         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
26804         and tcc_gimple_stmt.
26805         (tree_code_size): Update documentation.  Use sizeof (tree) rather
26806         than sizeof (char *).
26807         (tree_size): Likewise.  Add case for tcc_vl_exp.
26808         (tree_node_structure): Add case for tcc_vl_exp.
26809         (contains_placeholder_p): Likewise.
26810         (substitute_in_expr): Likewise.
26811         (substitute_placeholder_in_expr): Likewise.
26812         (stabilize_reference_1): Likewise.
26813         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
26814         to diagnose breakage of this interface for constructing CALL_EXPRs.
26815         (build_nt): Add similar assertion here.
26816         (build_nt_call_list): New.
26817         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
26818         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
26819         TREE_CODE_LENGTH.
26820         (get_callee_fndecl): Use new CALL_EXPR accessors.
26821         (tree_operand_check_failed): Change parameters to pass entire node
26822         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
26823         (process_call_operands): New.
26824         (build_vl_exp_stat): New.
26825         (build_call_list): New.
26826         (build_call_nary): New.
26827         (build_call_valist): New.
26828         (build_call_array): New.
26829         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
26830         (call_expr_arglist): New.
26831
26832         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
26833         tcc_vl_exp instead of a fixed-size tcc_expression.
26834
26835         * doc/c-tree.texi (CALL_EXPR): Document new representation and
26836         accessors for CALL_EXPRs.
26837         (AGGR_INIT_EXPR): Likewise.
26838
26839 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
26840             Brooks Moses  <brooks.moses@codesourcery.com>
26841             Lee Millward  <lee.millward@codesourcery.com>
26842
26843         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
26844         (expand_builtin_nonlocal_goto): Change parameter to be entire
26845         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
26846         (expand_builtin_prefetch): Likewise.
26847         (expand_builtin_classify_type): Likewise.
26848         (mathfn_built_in): Return NULL_TREE instead of 0.
26849         (expand_errno_check): Use new CALL_EXPR accessors.
26850         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
26851         Return NULL_RTX instead of 0.
26852         (expand_builtin_mathfn_2): Likewise.
26853         (expand_builtin_mathfn_3): Likewise.
26854         (expand_builtin_interclass_mathfn): Likewise.
26855         (expand_builtin_sincos): Likewise.
26856         (expand_builtin_cexpi): Likewise.
26857         (expand_builtin_int_roundingfn): Likewise.
26858         (expand_builtin_int_roundingfn_2): Likewise.
26859         (expand_builtin_pow): Likewise.
26860         (expand_builtin_powi): Likewise.
26861         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
26862         of arglist, fixing callers appropriately.  Use new CALL_EXPR
26863         accessors and constructors.  Return NULL_RTX instead of 0.
26864         (expand_builtin_strstr): Likewise.
26865         (expand_builtin_strchr): Likewise.
26866         (expand_builtin_strrchr): Likewise.
26867         (expand_builtin_strpbrk): Likewise.
26868         (expand_builtin_memcpy): Likewise.
26869         (expand_builtin_mempcpy): Likewise.
26870         (expand_builtin_mempcpy_args): New.
26871         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
26872         (expand_builtin_memmove_args): New.
26873         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
26874         (expand_movstr): Likewise.
26875         (expand_builtin_strcpy): Likewise.
26876         (expand_builtin_strcpy_args): New.
26877         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
26878         (expand_builtin_strncpy): Likewise.
26879         (expand_builtin_memset): Likewise.
26880         (expand_builtin_memset_args): New.
26881         (expand_builtin_bzero): Similarly to expand_builtin_memset.
26882         (expand_builtin_memcmp): Likewise.
26883         (expand_builtin_strcmp): Likewise.
26884         (expand_builtin_strncmp): Likewise.
26885         (expand_builtin_strcat): Likewise.
26886         (expand_builtin_strncat): Likewise.
26887         (expand_builtin_strspn): Likewise.
26888         (expand_builtin_strcspn): Likewise.
26889         (expand_builtin_args_info): Likewise.
26890         (expand_builtin_va_start): Likewise.
26891         (gimplify_va_arg_expr): Likewise.
26892         (expand_builtin_va_end): Likewise.
26893         (expand_builtin_va_copy): Likewise.
26894         (expand_builtin_frame_address): Likewise.
26895         (expand_builtin_alloca): Likewise.
26896         (expand_builtin_bswap): Likewise.
26897         (expand_builtin_unop): Likewise.
26898         (expand_builtin_fputs): Likewise.
26899         (expand_builtin_expect): Likewise.
26900         (expand_builtin_fabs): Likewise.
26901         (expand_builtin_copysign): Likewise.
26902         (expand_builtin_printf): Likewise.
26903         (expand_builtin_fprintf): Likewise.
26904         (expand_builtin_sprintf): Likewise.
26905         (expand_builtin_init_trampoline): Likewise.
26906         (expand_builtin_signbit): Likewise.
26907         (expand_builtin_fork_or_exec): Likewise.
26908         (expand_builtin_sync_operation): Likewise.
26909         (expand_builtin_compare_and_swap): Likewise.
26910         (expand_builtin_lock_test_and_set): Likewise.
26911         (expand_builtin_lock_release): Likewise.
26912         (expand_builtin): Likewise.
26913         (builtin_mathfn_code): Likewise.
26914
26915         (fold_builtin_constant_p): Pass call arguments individually instead
26916         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26917         accessors and constructors.  Return NULL_TREE instead of 0.
26918         (fold_builtin_expect): Likewise.
26919         (fold_builtin_classify_type): Likewise.
26920         (fold_builtin_strlen): Likewise.
26921         (fold_builtin_nan): Likewise.
26922         (integer_valued_real_p): Likewise.
26923         (fold_trunc_transparent_mathfn): Likewise.
26924         (fold_fixed_mathfn): Likewise.
26925         (fold_builtin_cabs): Likewise.
26926         (fold_builtin_sqrt): Likewise.
26927         (fold_builtin_cbrt): Likewise.
26928         (fold_builtin_cos): Likewise.
26929         (fold_builtin_cosh): Likewise.
26930         (fold_builtin_tan): Likewise.
26931         (fold_builtin_sincos): Likewise.
26932         (fold_builtin_cexp): Likewise.
26933         (fold_builtin_trunc): Likewise.
26934         (fold_builtin_floor): Likewise.
26935         (fold_builtin_ceil): Likewise.
26936         (fold_builtin_round): Likewise.
26937         (fold_builtin_int_roundingfn): Likewise.
26938         (fold_builtin_bitop): Likewise.
26939         (fold_builtin_bswap): Likewise.
26940         (fold_builtin_logarithm): Likewise.
26941         (fold_builtin_hypot): Likewise.
26942         (fold_builtin_pow): Likewise.
26943         (fold_builtin_powi): Likewise.
26944         (fold_builtin_exponent): Likewise.
26945         (fold_builtin_memset): Likewise.
26946         (fold_builtin_bzero): Likewise.
26947         (fold_builtin_memory_op): Likewise.
26948         (fold_builtin_bcopy): Deleted; call site changed to invoke
26949         fold_builtin_memory_op directly.
26950         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
26951         (fold_builtin_strncpy): Likewise.
26952         (fold_builtin_memcmp): Likewise.
26953         (fold_builtin_strcmp): Likewise.
26954         (fold_builtin_strncmp): Likewise.
26955         (fold_builtin_signbit): Likewise.
26956         (fold_builtin_copysign): Likewise.
26957         (fold_builtin_isascii): Likewise.
26958         (fold_builtin_toascii): Likewise.
26959         (fold_builtin_isdigit): Likewise.
26960         (fold_builtin_fabs): Likewise.
26961         (fold_builtin_abs): Likewise.
26962         (fold_builtin_fmin_fmax): Likewise.
26963         (fold_builtin_carg): Likewise.
26964         (fold_builtin_classify): Likewise.
26965         (fold_builtin_unordered_cmp): Likewise.
26966
26967         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
26968         New functions split out from fold_builtin_1.
26969         (fold_builtin_n): New.
26970         (fold_builtin_varargs): New.
26971         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
26972         instead.
26973         (fold_call_expr): New.
26974         (build_function_call_expr): Rewrite to use new helper function.
26975         (fold_builtin_call_list): New.
26976         (build_call_expr): New.
26977         (fold_builtin_call_valist): New.
26978         (rewrite_call_expr): New.
26979         (validate_arg): New.
26980         (validate_arglist): Change parameter to be entire CALL_EXPR instead
26981         of an arglist.  Change return type to bool.  Use new CALL_EXPR
26982         accessors.
26983
26984         (fold_builtin_strstr): Pass call arguments individually instead
26985         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
26986         accessors and constructors.  Return NULL_TREE instead of 0.
26987         (fold_builtin_strchr): Likewise.
26988         (fold_builtin_strrchr): Likewise.
26989         (fold_builtin_strpbrk): Likewise.
26990         (fold_builtin_strcat): Likewise.
26991         (fold_builtin_strncat): Likewise.
26992         (fold_builtin_strspn): Likewise.
26993         (fold_builtin_strcspn): Likewise.
26994         (fold_builtin_fputs): Likewise.
26995         (fold_builtin_next_arg): Likewise.
26996         (fold_builtin_sprintf): Likewise.
26997
26998         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
26999         NULL_RTX instead of 0.
27000         (expand_builtin_memory_chk): Likewise.
27001         (maybe_emit_chk_warning): Likewise.
27002         (maybe_emit_sprintf_chk_warning): Likewise.
27003
27004         (fold_builtin_object_size): Pass call arguments individually instead
27005         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27006         accessors and constructors.  Return NULL_TREE instead of 0.
27007         (fold_builtin_memory_chk): Likewise.
27008         (fold_builtin_stxcpy_chk): Likewise.
27009         (fold_builtin_strncpy_chk): Likewise.
27010         (fold_builtin_strcat_chk): Likewise.
27011         (fold_builtin_strcat_chk): Likewise.
27012         (fold_builtin_strncat_chk): Likewise.
27013         (fold_builtin_sprintf_chk): Likewise.
27014         (fold_builtin_snprintf_chk): Likewise.
27015         (fold_builtin_printf): Likewise.
27016         (fold_builtin_vprintf): Likewise.
27017
27018         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
27019         constructors.
27020         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
27021         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27022         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
27023         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
27024         (fold_unary): Likewise.
27025         (fold_binary): Likewise.
27026         (fold_ternary): Remove CALL_EXPR case, since they are no longer
27027         ternary expressions.
27028         (fold): Add logic for tcc_vl_exp.
27029         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
27030         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27031         (fold_build3_stat): Add assertion to flag broken interface for
27032         constructing CALL_EXPRs.
27033         (fold_build_call_list): New.
27034         (fold_build_call_list_initializer): New.
27035         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
27036         constructors.
27037         (fold_strip_sign_ops): Likewise.
27038
27039 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27040             Brooks Moses  <brooks.moses@codesourcery.com>
27041             Lee Millward  <lee.millward@codesourcery.com>
27042
27043         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
27044         accessors and dump arguments explicitly.
27045
27046         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
27047         TREE_CODE_LENGTH.
27048         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
27049         explicitly.
27050         (print_call_name): Use new CALL_EXPR accessors.
27051
27052         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
27053         CALL_EXPR arguments explicitly instead of as a list.  Use
27054         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27055
27056         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
27057         (vrp_visit_stmt): Likewise.
27058
27059         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
27060         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
27061         TREE_CODE_LENGTH.
27062         (force_move_till_expr): Likewise.
27063
27064         * targhooks.c (default_external_stack_protect_fail): Use
27065         build_call_expr instead of build_function_call_expr.
27066         (default_hidden_stack_protect_fail): Likewise.
27067
27068         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
27069         build the call.
27070
27071         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
27072         and walk arguments explicitly.
27073
27074         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
27075         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27076         (expand_simple_operations): Likewise.
27077         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
27078
27079         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
27080         of TREE_CODE_LENGTH.
27081         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
27082
27083         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
27084         instead of TREE_CODE_LENGTH.
27085
27086         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
27087         (tree_ic_transform): Likewise.
27088         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
27089         parameter instead of arglist.  Fix callers.
27090         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
27091         (tree_stringops_transform): Likewise.
27092         (tree_indirect_call_to_profile): Likewise.
27093         (tree_stringops_values_to_profile): Likewise.
27094
27095         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
27096         (eliminate_tail_call): Likewise.
27097
27098         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
27099
27100         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
27101         Use TREE_OPERAND_LENGTH and generalize to handle any number of
27102         operands.
27103         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
27104
27105         * omp-low.c (build_omp_barrier): Use build_call_expr.
27106         (lower_rec_input_clauses): Likewise.
27107         (lower_reduction_clauses): Likewise.
27108         (expand_parallel_call): Likewise.
27109         (maybe_catch_exception): Likewise.
27110         (expand_omp_for_generic): Likewise.
27111         (expand_omp_for_static_nochunk): Likewise.
27112         (expand_omp_sections): Likewise.
27113         (lower_omp_single_simple): Likewise.
27114         (lower_omp_single_copy): Likewise.
27115         (lower_omp_master): Likewise.
27116         (lower_omp_ordered): Likewise.
27117         (lower_omp_critical): Likewise.
27118
27119         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
27120         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
27121
27122         * tree-gimple.c (is_gimple_call_addr): Fix doc.
27123         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
27124         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
27125
27126         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
27127         and generalize to handle any number of operands.
27128         (chrec_contains_undetermined): Likewise.
27129         (tree_contains_chrecs): Likewise.
27130         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
27131
27132         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
27133
27134         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
27135         fold_call_expr instead of fold_builtin.
27136         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
27137         match declarations there.
27138         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
27139         updates.
27140
27141         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
27142         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27143
27144         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
27145         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
27146
27147         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
27148         accessors.
27149
27150         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
27151         (execute_cse_sincos): Use new CALL_EXPR accessors.
27152
27153         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
27154
27155         * gimple-low.c (lower_function_body): Use build_call_expr.
27156         (lower_builtin_setjmp): Likewise.
27157
27158         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
27159         (set_storage_via_libcall): Likewise.
27160         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
27161         instead of TREE_CODE_LENGTH.
27162         (expand_expr_real_1): Use new CALL_EXPR accessors.
27163
27164         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
27165         generalize to handle any number of operands.
27166         (TB_parent_eq): Likewise.
27167
27168         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
27169         (strip_builtin_expect): Likewise.
27170
27171         * function.c (gimplify_parameters): Use build_call_expr.
27172
27173         * tree-vectorizer.c (vect_is_simple_reduction): Use
27174         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27175
27176         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
27177         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
27178
27179         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
27180         iterators.
27181
27182         * gimplify.c (build_stack_save_restore): Use build_call_expr.
27183         (gimplify_decl_expr): Likewise.
27184         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
27185         Use new CALL_EXPR iterators.
27186         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
27187         (gimplify_modify_expr_to_memset): Likewise.
27188         (gimplify_variable_sized_compare): Likewise.
27189         (gimplify_omp_atomic_fetch_op): Likewise.
27190         (gimplify_omp_atomic_pipeline): Likewise.
27191         (gimplify_omp_atomic_mutex): Likewise.
27192         (gimplify_function_tree): Likewise.
27193
27194         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
27195         (call_expr_flags): Likewise.
27196         (expand_call): Likewise.
27197
27198         * except.c (expand_builtin_eh_return_data_regno): Pass entire
27199         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27200         accessors.
27201
27202         * coverage.c (create_coverage): Use build_call_expr.
27203
27204         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
27205         (temp_call_expr_obstack): New.
27206         (pool_copy_list): Delete.
27207         (temp_copy_call_expr): New.
27208         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
27209         CALL_EXPR accessors.  Get rid of special goo for copying argument
27210         lists and use temp_copy_call_expr instead.
27211         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
27212         CALL_EXPR accessors.
27213         (create_expression_by_pieces): Likewise.  Use build_call_array
27214         to construct the result instead of fold_build3.
27215         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
27216         dealing with argument lists.
27217         (init_pre): Remove references to expression_node_pool and
27218         list_node_pool.  Init temp_call_expr_obstack instead.
27219         (fini_pre): Remove references to expression_node_pool and
27220         list_node_pool.
27221
27222         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
27223         and walk arguments explicitly instead of as a list.
27224
27225         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
27226         (mx_register_decls): Likewise.
27227         (mudflap_register_call): Likewise.
27228         (mudflap_finish_file): Likewise.
27229
27230         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
27231         (ipa_callsite_compute_param): Likewise.
27232
27233         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
27234         accessors and constructor.
27235
27236         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
27237         accessors and constructor.
27238         (convert_tramp_reference): Likewise.
27239         (convert_call_expr): Likewise.
27240         (finalize_nesting_tree_1): Likewise.
27241
27242         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
27243         accessors.
27244
27245         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
27246
27247         * tree-inline.c (initialize_inlined_parameters): Pass entire
27248         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
27249         accessors.
27250         (estimate_num_insns_1): Use new CALL_EXPR accessors.
27251         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
27252
27253         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
27254         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27255         (vectorizable_reduction): Likewise.
27256         (vectorizable_call): Use new CALL_EXPR iterators.
27257         (vectorizable_conversion): Use build_call_expr.
27258         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
27259         (vect_gen_widened_results_half): Use build_call_expr.
27260         (vect_setup_realignment): Likewise.
27261         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
27262
27263         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
27264         (pass_through_call): Likewise.
27265         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
27266         fold_builtin.
27267
27268         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
27269         (tree_gen_pow2_profiler): Likewise.
27270         (tree_gen_one_value_profiler): Likewise.
27271         (tree_gen_ic_func_profiler): Likewise.
27272         (tree_gen_average_profiler): Likewise.
27273         (tree_gen_ior_profiler): Likewise.
27274
27275         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
27276         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
27277         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27278
27279         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
27280         of TREE_CODE_LENGTH.
27281
27282         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
27283         of TREE_CODE_LENGTH.
27284
27285         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
27286         constructor.
27287         (convert_to_integer): Likewise.
27288
27289         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
27290         accessors.
27291
27292 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27293             Brooks Moses  <brooks.moses@codesourcery.com>
27294             Lee Millward  <lee.millward@codesourcery.com>
27295
27296         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
27297         accessors.
27298         * config/frv/frv.c (frv_expand_builtin): Likewise.
27299         * config/s390/s390.c (s390_expand_builtin): Likewise.
27300
27301         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
27302         (sparc_expand_builtin): Use new CALL_EXPR accessors.
27303
27304         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
27305         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
27306         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
27307         (ix86_expand_store_builtin): Likewise.
27308         (ix86_expand_unop_builtin): Likewise.
27309         (ix86_expand_unop1_builtin): Likewise.
27310         (ix86_expand_sse_compare): Likewise.
27311         (ix86_expand_sse_comi): Likewise.
27312         (ix86_expand_vec_init_builtin): Likewise.
27313         (ix86_expand_vec_ext_builtin): Likewise.
27314         (ix86_expand_vec_set_builtin): Likewise.
27315         (ix86_expand_builtin): Use new CALL_EXPR accessors.
27316
27317         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
27318         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
27319
27320         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
27321         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27322         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
27323
27324         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
27325         build_call_expr.
27326         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
27327         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
27328         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27329         (altivec_expand_abs_builtin): Likewise.
27330         (rs6000_expand_binop_builtin): Likewise.
27331         (altivec_expand_predicate_builtin): Likewise.
27332         (altivec_expand_lv_builtin): Likewise.
27333         (spe_expand_stv_builtin): Likewise.
27334         (altivec_expand_stv_builtin): Likewise.
27335         (rs6000_expand_ternop_builtin): Likewise.
27336         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
27337         (altivec_expand_st_builtin): Likewise.
27338         (altivec_expand_dst_builtin): Likewise.
27339         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
27340         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27341         (altivec_expand_vec_set_builtin): Likewise.
27342         (altivec_expand_vec_ext_builtin): Likewise.
27343         (altivec_expand_builtin): Use new CALL_EXPR accessors.
27344         (spe_expand_builtin): Likewise.
27345         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
27346         arglist.  Use new CALL_EXPR accessors.  Fix callers.
27347         (spe_expand_evsel_builtin): Likewise.
27348         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
27349         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
27350
27351         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
27352         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
27353         (arm_expand_unop_builtin): Likewise.
27354         (arm_expand_builtin): Use new CALL_EXPR accessors.
27355
27356         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
27357         accessors.
27358
27359         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
27360         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
27361         Fix callers.
27362         (bfin_expand_unop_builtin): Likewise.
27363         (bfin_expand_builtin): Use new CALL_EXPR accessors.
27364
27365 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27366             Brooks Moses  <brooks.moses@codesourcery.com>
27367             Lee Millward  <lee.millward@codesourcery.com>
27368
27369         * c-semantics.c (build_stmt): Add internal diagnostic check.
27370
27371         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
27372         accessors.  Print arguments explicitly instead of as a list.
27373
27374         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
27375
27376         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
27377         (c_finish_omp_flish): Likewise.
27378
27379         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
27380         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
27381         instead of TREE_CODE_LENGTH.
27382         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
27383         (c_warn_unused_result): Likewise.
27384
27385 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27386
27387         PR c/26494
27388         * doc/invoke.texi (Warning Options): Remove
27389         -Werror-implicit-function-declaration.
27390         (Wimplicit-function-declaration): Update description.
27391         * opts.c (common_handle_option): Move handling of -Werror=* to...
27392         (enable_warning_as_error): ...here.
27393         * opts.h (enable_warning_as_error): Declare.
27394         * c-decl.c (implicit_decl_warning): Unless
27395         -Wno-implicit-function-declaration is given, emit a pedwarn if
27396         -std=c99 or emit a warning if -Wimplicit-function-declaration.
27397         * c.opt (Wimplicit-function-declaration): Replace
27398         mesg_implicit_function_declaration with
27399         warn_implicit_function_declaration.
27400         * c-opts.c (c_common_handle_option):
27401         -Werror-implicit-function-declaration is exactly equal as
27402         -Werror=implicit-function-declaration.
27403         (set_Wimplicit): Replace mesg_implicit_function_declaration with
27404         warn_implicit_function_declaration.
27405         (c_common_post_options): -Wimplict-function-declaration is enabled
27406         by default by -std=c99, otherwise is disabled by default.
27407         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
27408
27409 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27410
27411         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
27412         DECL on the rhs to a DECL on the lhs for debug info purposes if the
27413         former is ignored but not the latter.
27414
27415 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
27416
27417         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
27418         is made and the reference doesn't use the alias set of its type,
27419         do not create the temporary using that type.
27420
27421 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
27422
27423         * jump.c: Remove prototypes for delete_computation and
27424         delete_prior_computation.
27425
27426 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27427
27428         * jump.c (get_label_after): Delete.
27429         (get_label_before, delete_computation, delete_jump,
27430         delete_prior_computation, follow_jumps): Move...
27431         * reorg.c (delete_computation, delete_prior_computation): ... here...
27432         (get_label_before, delete_jump): ... making these static ...
27433         (follow_jumps): ... and simplifying this since it only runs after
27434         reload.
27435         * rtl.h (get_label_after, get_label_before, delete_jump,
27436         follow_jumps): Delete prototypes.
27437
27438 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
27439
27440         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
27441
27442 2007-02-15  Nick Clifton  <nickc@redhat.com>
27443
27444         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
27445         order to prevent it from being munged by the target.
27446
27447 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
27448
27449         * config/i386/i386.md: Remove misleading comment.
27450
27451 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27452
27453         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
27454         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
27455         invalid patterns.
27456
27457 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27458
27459         * tree-sra.c (instantiate_missing_elements): Canonicalize
27460         bit-field types.
27461         (sra_build_assignment): New.
27462         (generate_copy_inout, generate_element_copy,
27463         generate_element_zero, generate_one_element_init): Use it.
27464
27465 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27466
27467         * tree-sra.c (instantiate_missing_elements): Canonicalize
27468         bit-field types.
27469         (sra_build_assignment): New.
27470         (generate_copy_inout, generate_element_copy,
27471         generate_element_zero, generate_one_element_init): Use it.
27472
27473 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
27474
27475         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
27476         limbo die nodes.
27477
27478 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
27479
27480         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
27481         types as aggregates not scalars.
27482         * function.c (assign_stack_temp_for_type): Likewise.
27483
27484 2007-02-14  Roger Sayle  <roger@eyesopen.com>
27485             Zdenek Dvorak  <dvorakz@suse.cz>
27486
27487         * tree-dump.c (dump_switch_p_1): Require exact match of the option
27488         name.
27489
27490 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
27491
27492         * passes.c (next_pass_1): Clear the next field of the copied
27493         pass structure.
27494
27495 2007-02-14  Richard Henderson  <rth@redhat.com>
27496
27497         * tree-sra.c (early_sra): New.
27498         (decl_can_be_decomposed_p): Deny va_list if early_sra.
27499         (tree_sra_early, pass_sra_early): New.
27500         * tree-pass.h (pass_sra_early): Declare.
27501         * passes.c (init_optimization_passes): Use it.
27502
27503 2007-02-14  Richard Guenther  <rguenther@suse.de>
27504
27505         * flags.h (issue_strict_overflow_warning): Convert to a macro.
27506
27507 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
27508
27509          PR tree-optimization/30771
27510         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
27511         also phi nodes.
27512         (vect_analyze_operations): Induction phis can now be marked as
27513         used_in_loop.
27514         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
27515         Update documentation accordingly.
27516
27517 2007-02-14  Nick Clifton  <nickc@redhat.com>
27518
27519         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
27520         most 3 arguments are supported.
27521         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
27522
27523 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
27524
27525         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
27526         Ensure dst->current is valid.
27527
27528 2007-02-13  Paul Brook  <paul@codesourcery.com>
27529
27530         * config.gcc: Add arm*-*-uclinux-*eabi.
27531         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
27532         (SUBTARGET_EXTRA_LINK_SPEC): Define.
27533         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
27534         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
27535         (LINK_SPEC): Define.
27536         (LIB_SPEC): Define.
27537         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
27538         register.
27539         * config/arm/uclinux-eabi.h: New file.
27540         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
27541         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
27542         based targets.
27543
27544 2007-02-13  Ian Lance Taylor  <iant@google.com>
27545
27546         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
27547         * flags.h (warn_strict_overflow): Declare.
27548         (enum warn_strict_overflow_code): Define.
27549         (issue_strict_overflow_warning): New static inline function.
27550         * opts.c (warn_strict_overflow): New variable.
27551         (common_handle_option): Handle OPT_Wstrict_overflow and
27552         OPT_Wstrict_overflow_.
27553         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
27554         OPT_Wall.
27555         * fold-const.c: Include intl.h.
27556         (fold_deferring_overflow_warnings): New static variable.
27557         (fold_deferred_overflow_warning): New static variable.
27558         (fold_deferred_overflow_code): New static variable.
27559         (fold_defer_overflow_warnings): New function.
27560         (fold_undefer_overflow_warnings): New function.
27561         (fold_undefer_and_ignore_overflow_warnings): New function.
27562         (fold_deferring_overflow_warnings_p): New function.
27563         (fold_overflow_warning): New static function.
27564         (make_range): Add strict_overflow_p parameter.  Change all
27565         callers.
27566         (extract_muldiv, extract_muldiv_1): Likewise.
27567         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
27568         tree_expr_nonnegative_p.
27569         (fold_negate_expr): Call fold_overflow_warning.
27570         (fold_range_test): Likewise.
27571         (fold_comparison): Likewise.
27572         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
27573         instead of tree_expr_nonnegative_p.
27574         (tree_expr_nonnegative_warnv_p): Rename from
27575         tree_expr_nonnegative_p, add strict_overflow_p parameter.
27576         (tree_expr_nonnegative_p): New function.
27577         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
27578         strict_overflow_p parameter.
27579         (tree_expr_nonzero_p): New function.
27580         * passes.c (verify_interpass_invariants): New static function.
27581         (execute_one_pass): Call it.
27582         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
27583         warnings.
27584         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
27585         (estimate_numbers_of_iterations): Likewise.
27586         (scev_probably_wraps_p): Likewise.
27587         * tree-ssa-ccp.c: Include "toplev.h".
27588         (evaluate_stmt): Defer fold overflow warnings until we know we are
27589         going to optimize.
27590         (struct fold_stmt_r_data): Add stmt field.
27591         (fold_stmt_r): Defer fold overflow warnings until we know we
27592         optimized.
27593         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
27594         (fold_stmt_inplace): Likewise.
27595         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
27596         (cleanup_control_expr_graph): Defer fold overflow warnings until
27597         we know we are going to optimize.
27598         * tree-cfg.c (fold_cond_expr_cond): Likewise.
27599         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
27600         Likewise.
27601         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
27602         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
27603         * tree-ssa-loop-manip.c (create_iv): Likewise.
27604         * c-typeck.c (build_conditional_expr): Likewise.
27605         (build_binary_op): Likewise.
27606         * tree-vrp.c (vrp_expr_computes_nonzero): Call
27607         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
27608         (extract_range_from_unary_expr): Likewise.
27609         * simplify-rtx.c (simplify_const_relational_operation): Warn when
27610         assuming that signed overflow does not occur.
27611         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
27612         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
27613         (fold_defer_overflow_warnings): Declare.
27614         (fold_undefer_overflow_warnings): Declare.
27615         (fold_undefer_and_ignore_overflow_warnings): Declare.
27616         (fold_deferring_overflow_warnings_p): Declare.
27617         (tree_expr_nonzero_warnv_p): Declare.
27618         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
27619         of warning options.
27620         (Warning Options): Document -Wstrict-overflow.
27621         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
27622         (tree-ssa-ccp.o): Likewise.
27623         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
27624         (fold-const.o): Depend on intl.h.
27625
27626 2007-02-13  Ian Lance Taylor  <iant@google.com>
27627
27628         PR middle-end/30751
27629         * lower-subreg.c (resolve_simple_move): Decompose subregs in
27630         addresses.
27631
27632 2007-02-13  Stuart Hastings  <stuart@apple.com>
27633
27634         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
27635
27636 2007-02-13  Richard Henderson  <rth@redhat.com>
27637
27638         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
27639         handled_component_p before looking for the indirect_ref.
27640
27641 2007-02-13  Richard Henderson  <rth@redhat.com>
27642
27643         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
27644         remove flags clobber.
27645         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
27646         (bswaphi_lowpart): New.
27647         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
27648         remove TARGET_BSWAP test.  Delete expander of the same name.
27649
27650         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
27651         (expand_unop): Use them.
27652
27653 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
27654
27655         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
27656         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
27657         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
27658         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
27659         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
27660         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
27661         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
27662         assembler dialect choice from asm templates.
27663
27664 2007-02-12  Richard Henderson  <rth@redhat.com>
27665
27666         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
27667         (fixuns_trunc<SSEMODEF>si2): Use it.
27668         * config/i386/sse.md (vec_setv4sf_0): Export.
27669         * config/i386/i386.c (ix86_build_const_vector): Export.
27670         (ix86_split_convert_uns_si_sse): Rename from
27671         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
27672         * config/i386/i386-protos.h: Update.
27673
27674 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27675
27676         PR c/29521
27677         * c-typeck.c (c_finish_return): Improve warning message.
27678
27679 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27680
27681         * alias.c (find_symbolic_term): Delete unused function.
27682
27683 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
27684
27685         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
27686         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
27687         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
27688
27689 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27690
27691         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
27692         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
27693         the function, temporarily point the debug interface to the null one.
27694
27695 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27696
27697         * dwarf2out.c (round_up_to_align): New static function.
27698         (field_byte_offset): Use it to round the offset.
27699
27700 2007-02-12  Richard Henderson  <rth@redhat.com>
27701
27702         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
27703         (inswl_const): Export.
27704
27705 2007-02-12  Richard Henderson  <rth@redhat.com>
27706
27707         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
27708         result mode of the libcall, convert back to outmode.
27709
27710 2007-02-12  Roger Sayle  <roger@eyesopen.com>
27711
27712         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
27713         (bswapdi2): New define_expand to implement 32-bit implementation.
27714
27715 2007-02-12  Nick Clifton  <nickc@redhat.com>
27716
27717         * doc/invoke.texi (Overall Options): Document --help=.
27718         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
27719         (cc1_options): Pass --help= on to cc1.
27720         (display_help): Add description of --help=.
27721         (process_command): Add code to handle --help=.  Allow translated
27722         --help and --target-help switches to be passed on to compiler
27723         sub-process.
27724         (main): Remove unused if statement.
27725         * opts.c (columns): Remove.
27726         (LEFT_COLUMN): Define.
27727         (wrap_help): Add columns argument.
27728         (print_filtered_help): Change parameters to be an include bitmask,
27729         an exclude bitmask, an any bitmask and the column width.  Move the
27730         code to display the params list here.  Add code to display the
27731         status of options rather than their descriptions if the quiet flag
27732         is not active.
27733         (print_specific_help): Change parameters to be an include bitmask,
27734         an exclude bitmask and an any bitmask.  Move code to look up the
27735         column width here.  Decide upon the title for an options listing.
27736         (common_handle_options): Add code to handle --help=.  Adapt code
27737         for --help and --target-help to use the revised form of the
27738         print_specific_help function.
27739         (print_help): Delete.
27740         (print_param_help): Delete.
27741         (print_switch): Delete.
27742         * opts.h (cl_lang_count): Add prototype.
27743         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
27744         CL_MAX_OPTION_CLASS): New defines.
27745         * optc-gen.awk: Add construction of cl_lang_count.
27746         * c.opt: Add Warning attribute to warning options and Optimization
27747         attribute to optimization options.
27748         * common.opt: Likewise.
27749         Add --help=.
27750         Add -fhelp and -ftarget-help as aliases for the transformed --help
27751         and --target-help options.
27752         * opt-functions.awk: Add code to handle Warning and Optimization
27753         attributes.
27754
27755 2007-02-12  Richard Henderson  <rth@redhat.com>
27756
27757         * config/alpha/constraints.md: New file.
27758         * config/alpha/alpha.c: Include tm-constrs.h.
27759         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
27760         alpha_extra_constraint): Remove.
27761         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
27762         * config/alpha/alpha-protos.h: Update.
27763         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
27764         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
27765         (EXTRA_CONSTRAINT): Remove.
27766         * config/alpha/alpha.md: Include constraints.md.
27767         (adddi splitter): Use satisfies_constraint_*.
27768         * config/alpha/predicates.md (add_operand): Likewise.
27769         (sext_add_operand, addition_operation): Likewise.
27770
27771 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
27772
27773         PR tree-optimization/29145
27774         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
27775         in our handling of restrict qualified pointers.
27776
27777 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27778
27779         PR middle-end/7651
27780         * doc/invoke.texi (Wunused-value): Update description.
27781         (Wextra): Delete item.
27782         * opts.c (set_Wextra): Don't use the value of Wextra to set the
27783         value of Wunused-value.
27784         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
27785         (c_finish_stmt_expr): Don't check extra_warnings.
27786         (emit_side_effect_warnings): The caller is responsible to check
27787         warn_unused_value.
27788
27789 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27790             Matt Thomas  <matt@3am-software.com>
27791
27792         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
27793
27794 2007-02-11  Roger Sayle  <roger@eyesopen.com>
27795
27796         * simplify-rtx.c (simplify_relational_operation_1): Optimize
27797         comparisons of POPCOUNT against zero.
27798         (simplify_const_relational_operation): Likewise.
27799
27800 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27801
27802         * doc/invoke.texi (Wextra): Delete outdated paragraph.
27803
27804 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27805
27806         * dwarf2out.c (root_type): Delete unused function.
27807
27808 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27809
27810         * genattrtab.c (contained_in_p): Delete unused function.
27811         (write_expr_attr_cache): Likewise.
27812
27813 2007-02-11  Jan Hubicka  <jh@suse.cz>
27814
27815         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
27816         previous patch.
27817
27818 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
27819
27820         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
27821         to add the REG_EQ* note.
27822         * see.c (see_merge_one_use_extension): Likewise.
27823         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
27824         turn REG_EQUAL notes into REG_EQUIV notes if the target
27825         register may have more than one set.
27826         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
27827         * gcse.c (try_replace_reg): Likewise.
27828         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
27829         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
27830         more than one REG_EQUIV note.
27831         * reload1.c (gen_reload): Use set_unique_reg_note.
27832
27833 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
27834
27835         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
27836         (ix86_builtin_conversion): New function.
27837
27838 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
27839
27840         PR target/29487
27841         * tree.h (DECL_REPLACEABLE_P): New macro.
27842         * except.c (set_nothrow_function_flags): Likewise.
27843
27844 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
27845             Ira Rosen  <irar@il.ibm.com>
27846             Dorit Nuzman  <dorit@il.ibm.com>
27847
27848         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
27849         * targhooks.c (default_builtin_vectorized_conversion): New.
27850         * targhooks.h (default_builtin_vectorized_function): New declaration.
27851         * target.h (struct vectorize): Add builtin_conversion field.
27852         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
27853         stmt_vec_info_type value.
27854         (vectorizable_conversion): New declaration.
27855         * tree-vect-analyze.c (vect_analyze_operations): Add
27856         vectorizable_conversion call.
27857         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
27858         * tree-vect-transform.c (vectorizable_conversion): New function.
27859         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
27860         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
27861         mode.
27862         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
27863         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
27864         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
27865         or ALTIVEC_BUILTIN_VCFSX.
27866
27867 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27868
27869         PR target/30634
27870         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
27871         CONST_DOUBLE and operand 0 is a hard register.
27872         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
27873         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
27874         is a hard floating-point register.
27875
27876 2007-02-10  Richard Henderson  <rth@redhat.com>
27877             Jakub Jelinek  <jakub@redhat.com>
27878             Alexandre Oliva  <aoliva@redhat.com>
27879
27880         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
27881         * builtin-types.def (BT_WORD): Make unsigned.
27882         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
27883         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
27884         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
27885         * c-decl.c (grokdeclarator): Don't error if !have_tls.
27886         * c-parser.c (c_parser_omp_threadprivate): Likewise.
27887         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
27888         emulated tls.
27889         * expr.c (emutls_var_address): New.
27890         (expand_expr_real_1): Expand emulated tls.
27891         (expand_expr_addr_expr_1): Likewise.
27892         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
27893         * output.h (emutls_finish): Declare.
27894         * toplev.c (compile_file): Call it.
27895         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
27896         address before wrapping in CONST.
27897         * varasm.c (emutls_htab, emutls_object_type): New.
27898         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
27899         (get_emutls_object_name, get_emutls_object_type): New.
27900         (get_emutls_init_templ_addr, emutls_decl): New.
27901         (emutls_common_1, emutls_finish): New.
27902         (assemble_variable): When emulating tls, swap decls; generate
27903         constructor for the emutls objects.
27904         (do_assemble_alias): When emulating tls, swap decl and target name.
27905         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
27906         for emulated tls.
27907         * varpool.c (decide_is_variable_needed): Look at force_output.
27908         Recurse for emulated tls.
27909         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
27910         with decide_is_variable_needed.
27911         * emutls.c: New file.
27912         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
27913         tls_object for real tls.
27914
27915 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
27916
27917         PR rtl-optimization/29599
27918         * reload1.c (eliminate_regs_in_insn): Take the destination
27919         mode into account when computing the offset.
27920
27921 2007-02-09  Stuart Hastings  <stuart@apple.com>
27922             Richard Henderson  <rth@redhat.com>
27923
27924         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
27925         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
27926         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
27927         fixuns_truncdfhi2): New.
27928         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
27929         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
27930         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
27931         (floatunssidf2): Allow nonimmediate source.
27932         * config/i386/sse.md (movdi_to_sse): New.
27933         (vec_concatv2di): Drop '*'.
27934         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
27935         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
27936         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
27937         New.
27938         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
27939         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
27940         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
27941         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
27942         (ix86_build_signbit_mask): Fix decl of v, refactor to call
27943         ix86_build_const_vector.
27944         (x86_emit_floatuns): Rewrite.
27945
27946 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27947
27948         * genautomata.c (longest_path_length): Delete unused function.
27949         (struct state): Delete unused longest_path_length.
27950         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
27951         (get_free_state): Delete unused.
27952
27953 2007-02-09  Jan Hubicka  <jh@suse.cz>
27954
27955         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
27956         * doc/invoke.texi (inline-unit-growth): Update default value.
27957
27958         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
27959         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
27960         (rebuild_cgraph_edges): Likewise.
27961         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
27962         (dump_cgraph_node): Dump frequencies.
27963         (cgraph_clone_edge): Add frequency scales.
27964         (cgraph_clone_node): Add freuqnecy.
27965         * cgraph.h (cgraph_edge): Add freuqnecy argument.
27966         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
27967         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
27968         * tree-pass.h (TODO_rebuild_frequencies): New constant.
27969         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
27970         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
27971         (save_inline_function_body): Likewise.
27972         * ipa-inline.c: inluce rtl.h
27973         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
27974         (cgraph_edge_badness): Use frequencies.
27975         (cgraph_decide_recursive_inlining): Update clonning.
27976         (cgraph_decide_inlining_of_small_function): Dump frequency.
27977         * predict.c (estimate_bb_frequencies): Export.
27978         * predict.h (estimate_bb_frequencies): Declare.
27979         * tree-inline.c (copy_bb): Watch overflows.
27980         (expand_call_inline): Update call of cgraph_create_edge.
27981         (optimize_inline_calls): Use TODO flags to update frequnecies.
27982         * passes.h: Include predict.h
27983         (init_optimization_passes): Move profile ahead.
27984         (execute_function_todo): Handle TODO_rebuild_frequencies.
27985
27986 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27987
27988         * config/alpha/alpha.c (emit_insxl): Force the first operand of
27989         the insbl or inswl pattern into a register.
27990
27991 2007-02-09  Roger Sayle  <roger@eyesopen.com>
27992
27993         * config/ia64/ia64.md (bswapdi2): New define_insn.
27994
27995 2007-02-09  Richard Henderson  <rth@redhat.com>
27996
27997         * config/i386/constraints.md (Ym): New constraint.
27998         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
27999         (movdi_1_rex64): Split sse and xmm general register moves from
28000         memory move alternatives.  Use conditional register constraints.
28001         (movsf_1, movdf_integer): Likewise.
28002         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
28003         (movdf_integer_rex64): New.
28004         (pushsf_rex64): Fix output constraints.
28005         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
28006         (sse2_stored): Likewise.
28007         (sse2_storeq_rex64): New.
28008         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
28009         amd and not generic.
28010         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
28011         for optimize_size.  Remove SF/DFmode hack.
28012
28013 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
28014
28015         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
28016         (bit_SSE4a): New.
28017
28018 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
28019             Richard Sandiford  <richard@codesourcery.com>
28020
28021         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
28022         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
28023         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
28024         m68k/t-mlib to tmake_file.
28025         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
28026         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
28027         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
28028         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
28029         variable is not empty, add t-$m68k_arch_family to tmake_file.
28030         Add t-mlibs to tmake_file.
28031         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
28032         * config/m68k/t-cf: New file.
28033         * config/m68k/t-m68k: Likewise.
28034         * config/m68k/t-mlibs: Likewise.
28035         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28036         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28037         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28038         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28039         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
28040         Delete.
28041         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
28042         (INSTALL_LIBGCC): Delete.
28043         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28044         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28045         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28046         (M68K_MLIB_CPU): Define.
28047         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28048         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28049         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
28050
28051 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
28052             Richard Guenther  <rguenther@suse.de>
28053
28054         PR middle-end/23361
28055         * fold-const.c (fold_comparison): Handle obfuscated comparisons
28056         against INT_MIN/INT_MAX.
28057         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
28058         file if a loop is removed.
28059
28060 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
28061
28062         * calls.c (store_one_arg): Pass correct alignment to
28063         emit_push_insn for non-BLKmode values.
28064         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
28065         unaligned stack slot via a suitably aligned slot.
28066
28067 2007-02-08  DJ Delorie  <dj@redhat.com>
28068
28069         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
28070         warnings.
28071         (legal_subregs): Use unsigned char, make const.
28072         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
28073
28074 2007-02-08  Paul Brook  <paul@codesourcery.com>
28075
28076         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
28077         special interworking needed.
28078
28079 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
28080
28081         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
28082         conditional to __SSE2__.
28083         (Entries below should have been added to first ChangeLog
28084         entry for amdfam10 dated 2007-02-05)
28085         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
28086         defined.
28087         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
28088         defined.
28089         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
28090         defined.
28091
28092 2007-02-08  DJ Delorie  <dj@redhat.com>
28093
28094         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
28095         * config/m32c/m32c.c (legal_subregs): New.
28096         (m32c_illegal_subreg_p): New.
28097         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
28098         unsupported subregs of hard regs.
28099
28100 2007-02-08  Jan Hubicka  <jh@suse.cz>
28101
28102         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
28103         the same one; always update histograms.
28104
28105 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28106
28107         * passes.c (init_optimization_passes): Tidy comment.
28108
28109 2007-02-08  Roger Sayle  <roger@eyesopen.com>
28110
28111         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
28112         strip zero_extend, bswap and rotates from POCOUNT's argument.
28113         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
28114         zero_extend and rotates from PARITY's argument.
28115         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
28116         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
28117         of an integer constant at compile-time.
28118
28119 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28120
28121         PR 30562
28122         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
28123         Update all users.
28124         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
28125         users.
28126         (init_alias_info):
28127         * tree-ssa-live.c (remove_unused_locals): Do not remove
28128         TREE_ADDRESSABLE variables.
28129         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
28130         * tree-ssa-operands.c (add_virtual_operand): Remove argument
28131         FOR_CLOBBER.  Update all users.
28132         If VAR has an associated alias set, add a virtual operand for
28133         it if no alias is found to conflict with the memory reference.
28134
28135 2007-02-07  Jan Hubicka  <jh@suse.cz>
28136             Robert Kidd <rkidd@crhc.uiuc.edu>
28137
28138         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
28139
28140 2007-02-07  Ian Lance Taylor  <iant@google.com>
28141
28142         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
28143
28144 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28145
28146         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
28147         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
28148         tablejumpdi, movsi_to_cr_one): Remove constraints from
28149         define_expand's match_operands.
28150
28151 2007-02-07  Roger Sayle  <roger@eyesopen.com>
28152
28153         * global.c (compute_regsets): Move declatation of "i" inside of
28154         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
28155
28156 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
28157
28158         PR c++/30703
28159         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
28160         of INDIRECT_REF <RESULT_DECL>.
28161
28162         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
28163
28164 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
28165             Kaz Kojima  <kkojima@gcc.gnu.org>
28166
28167         PR target/29746
28168         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
28169         properly.
28170         (sh_initialize_trampoline): Add parentheses to avoid a warning.
28171
28172 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
28173
28174         * doc/loop.texi: Document possibility not to perform disambiguation
28175         of loops with multiple latches.
28176         * cfgloopmanip.c (alp_enum_p): Removed.
28177         (add_loop): Handle subloops.  Use get_loop_body_with_size.
28178         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
28179         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
28180         the new forwarder block.
28181         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
28182         Handle the case latch is NULL.
28183         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
28184         modifications when marking loop exits.
28185         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
28186         be modified.
28187         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
28188         disambiguate_loops_with_multiple_latches.
28189         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
28190         before fix_loop_structure.
28191         * cfgloop.c: Include pointer-set.h and output.h.
28192         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
28193         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
28194         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
28195         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
28196         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
28197         disambiguate_multiple_latches, get_loop_body_with_size,
28198         disambiguate_loops_with_multiple_latches): New functions.
28199         (flow_loop_dump): Dump multiple latch edges.
28200         (flow_loop_nodes_find): Handle loops with multiple latches.
28201         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
28202         (glb_enum_p): Modified.
28203         (get_loop_body): Use get_loop_body_with_size.
28204         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
28205         (AVOID_CFG_MODIFICATIONS): New constant.
28206         (disambiguate_loops_with_multiple_latches, add_loop,
28207         get_loop_body_with_size): Declare.
28208         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
28209
28210 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
28211
28212         PR inline-asm/28686
28213         * global.c (compute_regsets): New function.
28214         (global_alloc): Refactored ELIMINABLE_REGSET
28215         and NO_GLOBAL_ALLOC_REGS computation out.
28216         (rest_of_handle_global_alloc): Call compute_regsets()
28217         for non-optimizing case.
28218
28219 2007-02-06  Richard Henderson  <rth@redhat.com>
28220
28221         * config/i386/constraints.md (Y2): Rename from Y.
28222         (Yi): New constraint.
28223         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
28224         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
28225         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
28226         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
28227         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
28228         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
28229         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
28230         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
28231         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
28232         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
28233         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
28234         vec_extractv2si_1): Change Y constraints to Y2.
28235         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
28236         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
28237         Change Y constraints to Y2.
28238         (sse2_loadld): Change Y constraints to x.
28239
28240 2007-02-06  Roger Sayle  <roger@eyesopen.com>
28241
28242         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
28243         (parity<mode>2): New define_expand using rs6000_emit_parity.
28244         * config/rs6000/rs6000.c (rs6000_emit_popcount,
28245         rs6000_emit_parity): New functions.
28246         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
28247         rs6000_emit_parity): Prototype here.
28248
28249 2007-02-06  Ian Lance Taylor  <iant@google.com>
28250
28251         * lower-subreg.c (simple_move_operand): Reject CONST.
28252         (resolve_clobber): Call validate_change rather than directly
28253         assigning to XEXP (pat, 0).
28254
28255 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28256
28257         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
28258         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
28259         (tree-cfg.o): Remove hashtab.h dependency.
28260
28261         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
28262         (struct ivopts_data): Change niters to pointer_map_t.
28263         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
28264         (niter_for_exit): Create pointer_map on demand.  Change for
28265         pointer_map API.
28266         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
28267         (free_loop_data): Destroy data->niters if created and reset field.
28268         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
28269         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
28270
28271         * tree-ssa-reassoc.c: Include pointer-set.h.
28272         (bb_rank): Change to long *.
28273         (operand_rank): Change to pointer_map_t.
28274         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
28275         (insert_operand_rank): Accept long.
28276         (operand_entry_hash, operand_entry_eq): Remove.
28277         (get_rank): Return long.  Adjust for changes above.
28278         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
28279         and operand_rank.
28280         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
28281
28282         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
28283         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
28284         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
28285         is not NULL.
28286         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
28287         directly since it cannot be NULL.
28288         (get_vi_for_tree): Rewrite for pointer_map API.
28289         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
28290         (init_alias_vars): Create vi_for_tree as pointer_map.
28291         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
28292
28293         * tree-cfg.c: Don't include hashtab.h.
28294         (edge_to_cases): Declare as pointer_map.
28295         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
28296         Delete.
28297         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
28298         (start_recording_case_labels): Create edge_to_cases as pointer_map.
28299         (end_recoding_case_labels): Cleanup edge_to_cases manually before
28300         destroying it.
28301         (record_switch_edge): Delete.
28302         (get_cases_for_edge): Adjust for pointer_map API, inline
28303         record_switch_edge (rewritten for new API), remove goto.
28304
28305 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
28306
28307         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
28308         * tree-nested.c: Include pointer-set.h.
28309         (var_map_elt, var_map_eq, var_map_hash): Delete.
28310         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
28311         to pointer_map_t's.
28312         (nesting_info_bitmap_obstack): New.
28313         (lookup_field_for_decl): Adjust for pointer_map API.
28314         (lookup_tramp_for_decl): Adjust for pointer_map API.
28315         (get_nonlocal_debug_decl): Adjust for pointer_map API.
28316         (get_local_debug_decl): Adjust for pointer_map API.
28317         (convert_nl_goto_reference): Adjust for pointer_map API.
28318         (convert_nl_goto_receiver): Adjust for pointer_map API.
28319         (create_nesting_tree): Create outside GGC space.  Create bitmap on
28320         the new obstack.  Create field_map and var_map as pointer_maps.
28321         (free_nesting_tree): Adjust for changes to create_nesting_tree.
28322         (root): Delete.
28323         (lower_nested_functions): Move root here, no need to NULL it.
28324         Initialize and release the obstack.
28325
28326 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
28327
28328         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
28329         Remove prototypes and make them non-static.
28330         (struct tree_int_map): Remove.
28331         * tree.h (struct tree_int_map): Move here, turning TO into an
28332         unsigned int.
28333         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
28334
28335         * tree.h (TREE_COMPLEXITY): Remove.
28336         (struct tree_exp): Remove complexity field.
28337         * tree.c (build1_stat): Don't set it.
28338
28339 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
28340             Victor Kaplansky  <victork@il.ibm.com>
28341
28342         * tree-vectorizer.c (vect_is_simple_use): Support induction.
28343         (vect_is_simple_reduction): Support reduction with induction as
28344         one of the operands.
28345         (vect_is_simple_iv_evolution): Fix formatting.
28346         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
28347         formatting.  Don't mark induction phis for vectorization.
28348         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
28349         * tree-vect-transform.c (get_initial_def_for_induction): New function.
28350         (vect_get_vec_def_for_operand): Support induction.
28351         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
28352         induction case.
28353         (vectorizable_reduction): Support reduction with induction as one of
28354         the operands.
28355         (vectorizable_type_demotion): Use def-type of stmt argument rather
28356         than dummy def-type.
28357
28358         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
28359         flag_tree_scev_cprop.
28360         * common.opt (tree-scev-cprop): New flag.
28361
28362         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
28363         call to vect_get_new_vect_var.
28364
28365 2007-02-06  Ira Rosen  <irar@il.ibm.com>
28366
28367         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
28368         vectype is not NULL.
28369         (vect_pattern_recog_1): Likewise.
28370
28371 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28372
28373         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
28374         (fold_negate_expr): Likewise.
28375
28376 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
28377
28378         PR debug/30189
28379         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
28380         even if cv-qualification is the same.
28381
28382 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
28383
28384         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
28385         __enable_execute_stack on completion.
28386
28387 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28388
28389         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
28390         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
28391         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
28392         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
28393         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
28394         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
28395         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
28396         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
28397
28398 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28399
28400         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
28401         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
28402         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
28403         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
28404         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
28405         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
28406         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
28407         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
28408         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
28409         umuldi3_highpart_rex64, umulsi3_highpart_insn,
28410         umulsi3_highpart_zext, smuldi3_highpart_rex64,
28411         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
28412         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
28413         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
28414         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
28415         sqrtextenddfxf2_i387): Added amdfam10_decode.
28416
28417         * config/i386/athlon.md (athlon_idirect_amdfam10,
28418         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
28419         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
28420         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
28421         athlon_ivector_store_amdfam10): New define_insn_reservation.
28422         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
28423         amdfam10.
28424
28425 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28426
28427         * config/i386/athlon.md (athlon_call_amdfam10,
28428         athlon_pop_amdfam10, athlon_lea_amdfam10): New
28429         define_insn_reservation.
28430         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
28431         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
28432         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
28433
28434 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28435
28436         * config/i386/athlon.md (athlon_sseld_amdfam10,
28437         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
28438         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
28439
28440 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28441
28442         * config/i386/athlon.md (athlon_sseins_amdfam10): New
28443         define_insn_reservation.
28444         * config/i386/i386.md (sseins): Added sseins to define_attr type
28445         and define_attr unit.
28446         * config/i386/sse.md: Set type attribute to sseins for insertq
28447         and insertqi.
28448
28449 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28450
28451         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
28452         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
28453         ssecomi_load_amdfam10, ssecomi_amdfam10,
28454         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
28455         define_insn_reservation.
28456         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
28457
28458 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28459
28460         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
28461         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
28462         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
28463         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
28464         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
28465         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
28466         define_insn_reservation.
28467
28468         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
28469         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
28470         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
28471         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
28472         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
28473
28474 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28475
28476         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
28477         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
28478         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
28479         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
28480         athlon_ssemul_load_k8): Added amdfam10.
28481
28482 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28483
28484         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
28485         (x86_sse_unaligned_move_optimal): New variable.
28486
28487         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
28488         m_AMDFAM10.
28489         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
28490         for unaligned vector SSE double/single precision loads for AMDFAM10.
28491
28492 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28493
28494         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
28495         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
28496         Define TARGET_CPU_DEFAULT_amdfam10.
28497         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
28498         (processor_type): Add PROCESSOR_AMDFAM10.
28499
28500         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
28501         processor_type in config/i386/i386.h.
28502         Enable imul peepholes for TARGET_AMDFAM10.
28503
28504         * config.gcc: Add support for --with-cpu option for amdfam10.
28505
28506         * config/i386/i386.c (amdfam10_cost): New variable.
28507         (m_AMDFAM10): New macro.
28508         (m_ATHLON_K8_AMDFAM10): New macro.
28509         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
28510         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
28511         x86_promote_QImode, x86_integer_DFmode_moves,
28512         x86_partial_reg_dependency, x86_memory_mismatch_stall,
28513         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
28514         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
28515         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
28516         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
28517         Enable/disable for amdfam10.
28518         (override_options): Add amdfam10_cost to processor_target_table.
28519         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
28520         processor_alias_table.
28521         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
28522         (ix86_adjust_cost): Add code for amdfam10.
28523
28524 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28525
28526         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
28527         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
28528         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
28529         * config/i386/i386.h: Add builtin definition for SSE4A.
28530         * config/i386/i386.md: Add support for ABM instructions
28531         (popcnt and lzcnt).
28532         * config/i386/sse.md: Add support for SSE4A instructions
28533         (movntss, movntsd, extrq, insertq).
28534         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
28535         Add -march=amdfam10 flag.
28536         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
28537         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
28538         and amdfam10.
28539         * doc/extend.texi: Add documentation for SSE4A builtins.
28540
28541 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
28542
28543         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
28544
28545 2007-02-05  Richard Guenther  <rguenther@suse.de>
28546
28547         * tree-vectorizer.h (vectorizable_function): Add argument type
28548         argument, change return type.
28549         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
28550         * tree-vect-transform.c (vectorizable_function): Handle extra
28551         argument, return vectorized function decl.
28552         (build_vectorized_function_call): Remove.
28553         (vectorizable_call): Handle calls with result and argument types
28554         differing.  Handle loop vectorization factor correctly.
28555         * targhooks.c (default_builtin_vectorized_function): Adjust for
28556         extra argument.
28557         * targhooks.h (default_builtin_vectorized_function): Likewise.
28558         * target.h (builtin_vectorized_function): Add argument type
28559         argument.
28560         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
28561         extra argument, allow vectorizing of lrintf.
28562         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
28563         documentation of target hook.
28564
28565 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
28566
28567         PR target/30665
28568         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
28569         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
28570         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
28571
28572 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28573
28574         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
28575         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
28576         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
28577         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
28578         before canonicalizing sincos to cexpi.
28579         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
28580
28581 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28582
28583         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
28584         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
28585         (alpha_init_builtins): Use alpha_add_builtins to process tables.
28586
28587 2007-02-05  Roger Sayle  <roger@eyesopen.com>
28588
28589         * mips-tfile.c (initialize_init_file): Correct endianness test.
28590
28591 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
28592
28593         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
28594         the 'y' constraint.
28595
28596 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28597
28598         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
28599         saves in a PARALLEL before the register assignments.
28600
28601 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
28602
28603         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
28604         DWARF_FRAME_RETURN_COLUMN to be a general register.
28605         * dwarf2out.c (init_return_column_size): New function, split from...
28606         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
28607         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
28608         to be nongeneral registers.
28609         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
28610         integer registers.
28611         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
28612         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
28613
28614 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28615
28616         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
28617
28618 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
28619
28620         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
28621         (remove_path): Use can_remove_branch_p and remove_branch instead
28622         of loop_delete_branch_edge.
28623         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
28624         (tree_transform_and_unroll_loop): Remove dead branches immediately.
28625         Update profile using scale_dominated_blocks_in_loop.
28626         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
28627         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
28628         (can_remove_branch_p, remove_branch): Declare.
28629         * tree-cfg.c (tree_can_remove_branch_p): New function.
28630         (tree_cfg_hooks): Add tree_can_remove_branch_p.
28631         * cfgrtl.c (rtl_can_remove_branch_p): New function.
28632         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
28633
28634 2007-02-05  Jan Hubicka  <jh@suse.cz>
28635
28636         PR middle-end/30696
28637         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
28638         nodes in cgraph, don't remove offline copy of the function.
28639
28640 2007-02-04  Jan Hubicka  <jh@suse.cz>
28641
28642         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
28643         vectors might cause maybe_lookup_element_for_expr to be called
28644         on non-sra-candidate.
28645
28646 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28647
28648         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
28649         config/bfin/bfin.md, config/bfin/predicates.md: Follow
28650         spelling conventions.
28651
28652 2007-02-04  Richard Guenther  <rguenther@suse.de>
28653
28654         PR middle-end/30636
28655         * fold-const.c (try_move_mult_to_index): Make sure to not
28656         overflow one dimension of a multi-dimensional array access.
28657
28658 2007-02-04  Jan Hubicka  <jh@suse.cz>
28659
28660         * passes.c (init_optimization_passes): Reindent.
28661
28662 2007-02-04  Jan Hubicka  <jh@suse.cz>
28663             Eric Botcazou  <ebotcazou@adacore.com>
28664
28665         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
28666         (execute_fixup_cfg): Break out the abnormal goto code.
28667         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
28668         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
28669         (optimize_inline_calls): Call make_nonlocal_label_edges.
28670
28671 2007-02-04  Jan Hubicka  <jh@suse.cz>
28672
28673         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
28674         true when something was changed.
28675         (rename_ssa_copies): When something was changed, do
28676         TODO_remove_unused_locals.
28677         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28678         add TODO_remove_unused_locals when instruction was removed.
28679
28680 2007-02-04  Jan Hubicka  <jh@suse.cz>
28681
28682         * ipa-inline.c (try_inline): Improve debug output; work on already
28683         inline edges too.
28684         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
28685         call try_inline for already inlined edges too when flattening;
28686         inline also functions that make callee growth but overall unit size
28687         reduce.
28688
28689 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28690
28691         * config/m32c/bitops.md, config/m32c/jump.md,
28692         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
28693         config/m32r/m32r.h, config/m32r/m32r.md,
28694         config/m32r/predicates.md, config/m68hc11/larith.asm,
28695         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
28696         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
28697         config/mips/mips-protos.h, config/mips/mips.c,
28698         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
28699         config/mn10300/mn10300.h, config/mn10300/predicates.md,
28700         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
28701         spelling conventions.
28702
28703         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
28704         Follow spelling conventions.
28705
28706 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
28707
28708         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
28709         warn about C++0x compatibility.
28710
28711 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
28712
28713         * config/h8300/h8300.c, config/h8300/h8300.h,
28714         config/h8300/h8300.md: Follow spelling conventions.
28715
28716 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
28717
28718         PR middle-end/30667
28719         * combine.c (try_combine): Do not substitute source operand
28720         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
28721
28722 2007-02-03  Jan Hubicka  <jh@suse.cz>
28723
28724         PR gcov-profile/30650
28725         * value-prof.c (stringop_block_profile): Fix handling of size counter;
28726         do not divide by zero for never executed counters.
28727         (tree_find_values_to_profile): Fix counters.
28728         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
28729
28730 2007-02-03  Ian Lance Taylor  <iant@google.com>
28731
28732         * lower-subreg.c (simple_move_operand): New static function,
28733         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
28734         operands.
28735         (simple_move): Call simple_move_operand.
28736         (find_decomposable_subregs): Add special handling of MEMs.
28737         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
28738         meaning of return value.  If we see a hard register, test whether
28739         it can store a word_mode value.  Change all callers.
28740
28741 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28742
28743         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
28744         ftrapv insns and expanders.
28745         (subdi3): Change define_expand operand 1 to arith11_operand, and
28746         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
28747         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
28748         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
28749         respectively.
28750
28751         PR middle-end/30174
28752         * varasm.c (notice_global_symbol): Treat global objects as weak when
28753         flag_shlib is true.
28754
28755 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28756
28757         * emit-rtl.c (dconstpi): Delete.
28758         (dconstsqrt2): New.
28759         (init_emit_once): Delete dconstpi and init dconstsqrt2.
28760         * real.h (dconstpi): Delete.
28761         (dconstsqrt2): New.
28762         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
28763         (fold_builtin_hypot): Likewise.
28764
28765 2007-02-03  Tom Tromey  <tromey@redhat.com>
28766
28767         PR driver/30246
28768         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
28769         -gcoff3, -gxcoff3, -gvms3 implies -dD.
28770
28771 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
28772
28773         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
28774         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
28775         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
28776         config/rs6000/cell.md, config/rs6000/darwin.h,
28777         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
28778         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
28779         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
28780         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
28781         typos.  Follow spelling conventions.
28782         * doc/invoke.texi: Follow spelling conventions.
28783
28784 2007-02-03  Roger Sayle  <roger@eyesopen.com>
28785
28786         * simplify-rtx.c (simplify_relational_operation_1): Implement some
28787         canonicalization transformations that attempt to simplify integer
28788         constant comparisons to become comparisons against zero.
28789
28790 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28791
28792         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
28793         fabs(x)*sqrt(2).
28794         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
28795         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
28796
28797 2007-02-02  Mike Stump  <mrs@apple.com>
28798
28799         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
28800         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
28801         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
28802         generate a branch island.
28803
28804 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
28805
28806         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
28807         (xtensa_legitimate_address_p): New.
28808         (xtensa_legitimize_address): New.
28809         (xtensa_output_addr_const_extra): New.
28810         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
28811         (BASE_REG_P): New.
28812         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
28813         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
28814         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
28815         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
28816         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
28817         (xtensa_legitimize_address): New.
28818         (xtensa_output_addr_const_extra): New.
28819
28820 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
28821
28822         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
28823
28824 2007-02-02  Ian Lance Taylor  <iant@google.com>
28825
28826         * expmed.c (expand_divmod): Add comment.
28827
28828 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
28829
28830         * emit-rtl.c (renumber_insns): Remove.
28831         * flags.h: Remove the extern for flag_renumber_insns.
28832         * rtl.h: Remove the prototype for renumber_insns.
28833         * toplev.c (flag_renumber_insns): Remove.
28834
28835 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
28836
28837         Revert for x86 darwin:
28838         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
28839
28840         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
28841         code before the following patch under TARGET_MACHO.
28842         (ix86_function_value_regno_p): Likewise.
28843
28844 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28845
28846         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
28847         COMPLEX_EXPR.
28848
28849 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28850
28851         PR target/29682
28852         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
28853         loads to general or fp registers.  Add comments.
28854         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
28855
28856 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
28857
28858         * pointer-set.c (insert_aux): Only return insertion slot.
28859         (pointer_set_insert): Adjust.
28860         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
28861         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
28862         pointer_map_traverse): New.
28863         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
28864         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
28865         pointer_map_contains, pointer_map_traverse): Declare.
28866
28867 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
28868
28869         PR middle-end/30473
28870         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
28871         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
28872
28873 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
28874
28875         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
28876
28877         (struct _dep): New type.
28878         (dep_t): New typedef.
28879         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
28880         (DEP_STATUS): New access macro.  The macro with the same name was
28881         renamed to DEP_LINK_STATUS.
28882         (dep_init): Declare function
28883
28884         (struct _dep_link): New type.
28885         (dep_link_t): New typedef.
28886         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
28887         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
28888         (DEP_LINK_STATUS): New macro.
28889         (debug_dep_links): New debug function.
28890
28891         (struct _deps_list): New type.
28892         (deps_list_t): New typedef.
28893         (DEPS_LIST_FIRST): New access macro.
28894         (FOR_EACH_DEP_LINK): New cycle macro.
28895         (create_deps_list, free_deps_list, delete_deps_list): Declare
28896         functions.
28897         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
28898         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
28899         (copy_deps_list_change_con): Ditto.
28900
28901         (move_dep_link): Declare function.
28902
28903         (struct _dep_node): New type.
28904         (dep_node_t): New typedef.
28905         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
28906
28907         (struct haifa_insn_data.back_deps): New field to hold backward
28908         dependencies of the insn.
28909         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
28910         to deps_list_t.
28911         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
28912         Change its type to deps_list_t.
28913         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
28914         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
28915         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
28916
28917         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
28918
28919         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
28920
28921         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
28922         and all callers.
28923         (dep_cost): Declare.
28924
28925         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
28926         (ds_to_dk, dk_to_ds): New functions.
28927
28928         (init_dep_1): New static function.
28929         (init_dep): New function.
28930         (copy_dep): New static function.
28931
28932         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
28933         functions.
28934         (detach_dep_link): New static function.
28935         (move_dep_link): New function.
28936
28937         (dep_links_consistent_p, dump_dep_links): New static functions.
28938         (debug_dep_links): New debugging function.
28939
28940         (deps_obstack, dl_obstack, dn_obstack): New static variables.
28941
28942         (alloc_deps_list, init_deps_list): New static functions.
28943         (create_deps_list): New function.
28944         (clear_deps_list): New static function.
28945         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
28946         (deps_list_consistent_p, dump_deps_list): New static functions.
28947         (debug_deps_list): New function.
28948         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
28949         functions.
28950         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
28951
28952         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
28953         use new scheduler dependencies lists.
28954         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
28955         (sched_analyze): Ditto.  Initialize dependencies lists.
28956         (add_forw_dep, compute_forward_dependences): Update to use new
28957         scheduler dependencies lists.
28958
28959         (init_dependency_caches): Init deps_obstack.
28960         (free_dependency_caches): Free deps_obstack.
28961
28962         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
28963         new scheduler dependencies lists.
28964         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
28965         (add_back_forw_dep, delete_back_forw_dep): Ditto.
28966
28967         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
28968         Update to use new scheduler dependencies lists.
28969         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
28970         (debug_dependencies): Ditto.
28971         (schedule_region): Update comments.
28972
28973         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
28974         scheduler dependencies lists.
28975         (schedule_ebb): Update comments.
28976
28977         * rtl.def (DEPS_LIST): Remove.
28978
28979         * lists.c (unused_deps_list): Remove.
28980         (free_list): Update assertions.
28981
28982         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
28983         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28984
28985         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
28986         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
28987
28988         * haifa-sched.c (comments): Update.
28989         (insn_cost1): Remove.  Inline the code into insn_cost ().
28990         (insn_cost): Update to use new scheduler dependencies lists.  Move
28991         processing of the dependency cost to dep_cost ().
28992         (dep_cost): New function.  Use it instead of insn_cost () when
28993         evaluating cost of the dependency.  Use compatible interface to
28994         interact with the target.
28995         (priority): Update to use new scheduler dependencies lists.
28996         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
28997         with greater number of insns that depend on the insn.
28998         (schedule_insn): Update to use new scheduler dependencies lists.  Add
28999         code to free backward dependencies lists.  Inline and optimize code
29000         from resolve_dep () - see PR28071.
29001         (ok_for_early_queue_removal): Update to use new scheduler dependencies
29002         lists.  Update call to targetm.sched.is_costly_dependence hook.
29003
29004         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
29005         scheduler dependencies lists.
29006
29007         (resolve_dep): Remove.  Move the logic to schedule_insn ().
29008         (init_h_i_d): Initialize dependencies lists.
29009
29010         (process_insn_depend_be_in_spec): Rename to
29011         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
29012         dependencies lists.
29013         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
29014         Update to use new scheduler dependencies lists.
29015         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
29016
29017         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
29018         new scheduler dependencies lists.
29019         (build_intra_loop_deps): Ditto.
29020
29021         * target.h (struct _dep): Declare to use in
29022         gcc_target.sched.is_costly_dependence.
29023         (struct gcc_target.sched.adjust_cost): Fix typo.
29024         (struct gcc_target.sched.is_costly_dependence): Change signature to
29025         use single dep_t parameter instead of an equivalent triad.
29026         (struct gcc_target.sched.adjust_cost_2): Remove.
29027
29028         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
29029
29030         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
29031
29032         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
29033         documentation.
29034         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
29035
29036         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
29037         (REG_DEP_TRUE): Document.
29038
29039         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
29040         Change signature to correspond to the targetm.sched.adjust_cost hook.
29041         Update use in TARGET_SCHED_ADJUST_COST_2.
29042         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
29043         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
29044         new scheduler dependencies lists.
29045         (ia64_gen_check): Ditto.
29046
29047         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
29048         scheduler dependencies lists.
29049
29050         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
29051         signature to correspond to the targetm.sched.is_costly_dependence hook.
29052         (is_costly_group): Update to use new scheduler dependencies lists.
29053
29054         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
29055         instead of INSN_COST () macro.
29056
29057 2007-02-01  Ian Lance Taylor  <iant@google.com>
29058
29059         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
29060
29061 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
29062
29063         * pa.md (tp_load): Correct mfctl instruction syntax.
29064
29065 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
29066
29067         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
29068         altivec_padding_size calculation on AIX.  Improve comment, add
29069         assert to verify that it's right.
29070
29071         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
29072         64-bit.
29073
29074 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
29075
29076         PR inline-asm/28686
29077         * global.c (global_alloc): Add mising initialization of
29078         ELIMINABLE_REGSET.
29079
29080 2007-02-01  Roger Sayle  <roger@eyesopen.com>
29081
29082         * alias.c (init_alias_analysis): Correct whitespace.
29083         * bb-reorder.c (fix_edges_for_rarely_executed_code,
29084         partition_hot_cold_basic_blocks): Likewise.
29085         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
29086         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
29087         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
29088         fold_builtin_snprintf_chk, fold_builtin_printf,
29089         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
29090         do_mpfr_arg3, do_mpfr_sincos): Likewise.
29091         * cfgcleanup.c (cleanup_cfg): Likewise.
29092         * cfgexpand.c (tree_expand_cfg): Likewise.
29093         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
29094         * function.c (get_next_funcdef_no): Likewise.
29095         * gengtype.c (main): Likewise.
29096         * genmodes.c (main): Likewise.
29097         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
29098         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
29099         * ifcvt.c (noce_emit_move_insn): Likewise.
29100         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
29101         Likewise.
29102         * stor-layout.c (get_best_mode): Likewise.
29103         * tree-ssa-loop-niter.c (get_val_for): Likewise.
29104         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
29105         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
29106         perform_var_substitution, solve_graph): Likewise.
29107         * tree-vrp.c (vrp_finalize): Likewise.
29108
29109 2007-02-01  Ian Lance Taylor  <iant@google.com>
29110
29111         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
29112         high part of a paradoxical subreg, return a constant zero.
29113
29114 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
29115
29116         * toplev.c (lang_dependent_init): Call init_set_costs.
29117         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
29118
29119 2007-02-01  Richard Guenther  <rguenther@suse.de>
29120
29121         PR middle-end/30656
29122         * fold-const.c (fold_negate_expr): Allow negating a
29123         constant if overflow does not change.
29124
29125 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29126
29127         * doc/c-tree.texi (Expression trees): Improve markup.
29128         * doc/tm.texi (Register Classes, Addressing Modes)
29129         (Floating Point): Fix spacing after abbreviations.  Fix some
29130         typos.
29131
29132 2007-02-01  Ben Elliston  <bje@au.ibm.com>
29133
29134         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
29135         * doc/contrib.texi: Likewise.
29136         * doc/install.texi: Likewise.
29137
29138 2007-01-31  Richard Henderson  <rth@redhat.com>
29139             Ian Lance Taylor  <iant@google.com>
29140
29141         * lower-subreg.c: New file.
29142         * rtl.def (CONCATN): Define.
29143         * passes.c (init_optimization_passes): Add pass_lower_subreg and
29144         pass_lower_subreg2.
29145         * emit-rtl.c (update_reg_offset): New static function, broken out
29146         of gen_rtx_REG_offset.
29147         (gen_rtx_REG_offset): Call update_reg_offset.
29148         (gen_reg_rtx_offset): New function.
29149         * regclass.c: Revert patch of 2006-03-05, restoring
29150         reg_scan_update.
29151         (clear_reg_info_regno): New function.
29152         * dwarf2out.c (concatn_loc_descriptor): New static function.
29153         (loc_descriptor): Handle CONCATN.
29154         * common.opt (fsplit_wide_types): New option.
29155         * opts.c (decode_options): Set flag_split_wide_types when
29156         optimizing.
29157         * timevar.def (TV_LOWER_SUBREG): Define.
29158         * rtl.h (gen_reg_rtx_offset): Declare.
29159         (reg_scan_update): Declare.
29160         * regs.h (clear_reg_info_regno): Declare.
29161         * tree-pass.h (pass_lower_subreg): Declare.
29162         (pass_lower_subreg2): Declare.
29163         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
29164         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
29165         -fsplit-wide-types.
29166         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
29167         * Makefile.in (OBJS-common): Add lower-subreg.o.
29168         (lower-subreg.o): New target.
29169
29170 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29171
29172         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
29173
29174 2007-01-31  Anatoly Sokolov <aesok@post.ru>
29175
29176         PR target/19087
29177         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
29178
29179 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29180
29181         PR middle-end/29335
29182         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
29183
29184 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
29185
29186         * cfgloop.h: Include vec-prim.h.
29187         (enum li_flags): Remove LI_ONLY_OLD.
29188         (loop_iterator): Changed.
29189         (fel_next, fel_init): Iterate over loop tree.
29190         (FOR_EACH_LOOP_BREAK): New macro.
29191         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
29192         FOR_EACH_LOOP.
29193         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
29194         * modulo-sched.c (sms_schedule): Ditto.
29195         * tree-vectorizer.c (vectorize_loops): Ditto.
29196         * doc/loop.texi: Update information on loop numbering and behavior of
29197         FOR_EACH_LOOP wrto new loops.
29198         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
29199         add_to_evolution_1): Test nestedness of loops instead of comparing
29200         their numbers.
29201         * tree-chrec.c (chrec_fold_plus_poly_poly,
29202         chrec_fold_multiply_poly_poly, chrec_evaluate,
29203         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
29204         reset_evolution_in_loop): Ditto.
29205         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
29206
29207 2007-01-31  Dirk Mueller  <dmueller@suse.de>
29208
29209         * c-common.c (warn_about_parentheses): Separate warning about
29210         un-parenthized sequence of comparison operators from the one
29211         which is supposed to warn about x <= y <= z.
29212
29213 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
29214
29215         * optabs.h (enum optab_index): Add new OTI_isinf.
29216         (isinf_optab): Define corresponding macro.
29217         * optabs.c (init_optabs): Initialize isinf_optab.
29218         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
29219         patterns.
29220         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
29221         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
29222         using isinf_optab.
29223         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
29224         expand_builtin_interclass_mathfn.
29225         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
29226         * config/i386/i386.md (UNSPEC_FXAM): New constant.
29227         (fxam<mode>2_i387): New insn pattern.
29228         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
29229         built-in functions as x87 inline asm.
29230
29231 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29232
29233         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
29234
29235 2007-01-30  Eric Christopher  <echristo@apple.com>
29236
29237         * config.gcc: Add geode.
29238
29239 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
29240
29241         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
29242         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
29243         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
29244         value-prof.c: Fix comment typos.
29245
29246 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29247
29248         PR c++/24745
29249         * doc/invoke.texi (Wpointer-arith): Document warning.
29250
29251 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
29252
29253         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
29254         the list of discrepancies from the draft TR.
29255
29256 2007-01-30  Dirk Mueller  <dmueller@suse.de>
29257
29258         PR c++/30601
29259         * doc/invoke.texi (-Wreturn-type): Update description to
29260         match new behavior.
29261
29262 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
29263
29264         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
29265
29266 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
29267
29268         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
29269         to handle optabs that operate on floating point input argument and
29270         output to integer output.
29271         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
29272         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
29273         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
29274         expand_builtin_interclass_mathfn ().
29275         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
29276         (ilogbsi2): Remove.
29277         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
29278         ilogbl built-in functions as x87 intrinsics.
29279
29280 2007-01-30  Richard Guenther  <rguenther@suse.de>
29281
29282         PR middle-end/27657
29283         * dwarf2out.c (reference_to_unused): Query varpool if the
29284         variable was output.
29285
29286 2007-01-30  Richard Guenther  <rguenther@suse.de>
29287
29288         PR middle-end/30313
29289         * passes.c (execute_one_pass): Reset in_gimple_form to not
29290         confuse non-unit-at-a-time mode.
29291
29292 2007-01-29  Roger Sayle  <roger@eyesopen.com>
29293             Richard Guenther  <rguenther@suse.de>
29294
29295         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
29296         avoid undefined behaviour on overflow.  Use force_fit_type_double
29297         to construct the constant with the specified TREE_OVERFLOW.
29298
29299 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29300
29301         * config/dfp-bit.c: Add parameterized support for fp exceptions.
29302         * config/dfp-bit.h: Ditto.
29303
29304 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29305
29306         * c-decl.c (pop_scope): Replace warnings with call to
29307         warn_for_unused_label.
29308         * c-common.h (warn_for_unused_label): Declare.
29309         * c-common.c (warn_for_unused_label): Define.
29310
29311 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29312
29313         * tree-optimize.c (update_inlined_to_pointers): Delete unused
29314         function.
29315
29316 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
29317
29318         * Makefile.in (USER_H): Remove decfloat.h.
29319         * ginclude/decfloat.h: Delete, moving contents to ...
29320         * ginclude/float.h: Add support for decimal floating point,
29321         guarded by __STDC_WANT_DEC_FP__.
29322
29323 2007-01-29  Mike Stump  <mrs@apple.com>
29324
29325         * doc/gccint.texi (Top): Rename Loop Representation to Loop
29326         Analysis and Representation to resolve case insensitive conflict.
29327         * doc/loop.texi (Loop Analysis and Representation): Likewise.
29328
29329 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
29330
29331         * tree.h (struct tree_memory_tag): Add aliases member.
29332         (MTAG_ALIASES): New macro.
29333         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
29334         (add_may_alias): Remove pointer-set. Update for may_aliases being
29335         a bitmap.
29336         (mark_aliases_call_clobbered): Update for may_aliases being a
29337         bitmap.
29338         (compute_tag_properties): Ditto.
29339         (create_partition_for): Ditto.
29340         (compute_memory_partitions): Ditto.
29341         (dump_may_aliases_for): Ditto.
29342         (is_aliased_with): Ditto.
29343         (add_may_alias_for_new_tag): Ditto.
29344         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
29345         (compute_is_aliased): New function.
29346         (compute_may_aliases): Call compute_is_aliased).
29347         (init_alias_info): Initialize alias_bitmap_obstack.
29348         (union_alias_set_into): New function.
29349         (compute_flow_sensitive_aliasing): Use union_aliases_into.
29350         (have_common_aliases_p): Rewrite to take two bitmaps and use
29351         intersection.
29352         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
29353         Update for bitmaps.
29354         (finalize_ref_all_pointers): Update for add_may_alias changes.
29355         (new_type_alias): Ditto.
29356         * tree-flow-inline.h (may_aliases): Return a bitmap.
29357         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
29358         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
29359         may_aliases being a bitmap.
29360         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
29361         may_aliases now returns a bitmap.
29362         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
29363         being a bitmap.
29364         * tree-ssa-operands.c (add_virtual_operand): Update for
29365         may_aliases being a bitmap.
29366
29367 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
29368
29369         PR tree-optimization/30630
29370         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
29371         variable as changed.
29372
29373 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
29374
29375         PR c++/28266
29376         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
29377         expanded only once even if an error occurs.
29378
29379 2007-01-29  Ben Elliston  <bje@au.ibm.com>
29380
29381         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
29382         (__gcov_average_profiler): Likewise.
29383         (__gcov_ior_profiler): Likewise.
29384         (__gcov_merge_ior): Likewise.
29385
29386 2007-01-28  Jan Hubicka  <jh@suse.cz>
29387
29388         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
29389         * value-prof.c (stringop_block_profile): Likewise.
29390
29391 2007-01-28  Jan Hubicka  <jh@suse.cz>
29392
29393         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
29394         Add variant handling histograms; add wrapper.
29395         (clear_storage_via_libcall): Export.
29396         (emit_block_move_hints): Break out from ...; add histograms.
29397         (emit_block_move): ... this one.
29398         (clear_storage_hints): Break out from ...; add histograms.
29399         (clear_storage): ... this one.
29400         (set_storage_via_memset): Handle histogram.
29401         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
29402         (clear_storage_hints, clear_storage_via_libcall): Declare.
29403         (set_storage_via_setmem): Update prototype.
29404         * doc/md.texi (movmem, setmem): Document new arguments.
29405
29406         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
29407         Add new histograms.
29408         (stringop_block_profile): New global function.
29409         (tree_stringops_values_to_profile): Profile block size and alignment.
29410         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
29411         HIST_TYPE_IOR.
29412         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
29413         (stringop_block_profile): Declare.
29414         * builtins.c: Include value-prof.h.
29415         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
29416         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
29417         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
29418         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
29419         * profile.c (instrument_values): Add new counters.
29420         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
29421         calls.
29422         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
29423         (tree_init_edge_profiler): Build new profilers.
29424         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
29425         (pass_tree_profile): Add dump.
29426         (tree_profile_hooks): Update.
29427         * Makefile.in (LIBGCOV): Add new constants.
29428         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
29429         __gcov_ior_profiler): New.
29430         * i386.md (movmem/setmem expanders): Add new optional arguments.
29431
29432 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
29433
29434         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
29435
29436 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29437
29438         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
29439         (tree_unswitch_single_loop): Pass eni_size_weights to
29440         tree_num_loop_insns.
29441         * tree-ssa-loop-manip.c: Include tree-inline.h.
29442         (can_unroll_loop_p): Pass eni_size_weights to
29443         tree_num_loop_insns.
29444         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
29445         Pass eni_size_weights to estimate_num_insns.
29446         * tree.h (init_inline_once): Export.
29447         * toplev.c (backend_init): Call init_inline_once.
29448         * cgraphunit.c (cgraph_process_new_functions,
29449         cgraph_analyze_function): Pass eni_inlining_weights to
29450         estimate_num_insns.
29451         * ipa-inline.c (compute_inline_parameters): Ditto.
29452         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
29453         to estimate_num_insns.
29454         (try_unroll_loop_completely): Pass eni_size_weights to
29455         tree_num_loop_insns.
29456         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
29457         ot estimate_num_insns.
29458         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
29459         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
29460         * tree-inline.c (eni_inlining_weights, eni_size_weights,
29461         eni_time_weights): New variables.
29462         (init_inline_once): Initialize them.
29463         (struct eni_data): Mew.
29464         (estimate_num_insns_1, estimate_num_insns): Use weights.
29465         * tree-inline.h (struct eni_weights_d): New.
29466         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
29467         (estimate_num_insns): Declaration changed.
29468         * cfgloop.h (tree_num_loop_insns): Declaration changed.
29469         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
29470         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
29471
29472 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
29473
29474         * tree-data-ref.c (conflict_fn): Assert that the number of affine
29475         relations in the conflict function is valid.
29476
29477 2007-01-27  Ian Lance Taylor  <iant@google.com>
29478
29479         * common.opt: Add fstrict-overflow.
29480         * opts.c (decode_options): Set flag_strict_overflow if -O2.
29481         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
29482         (TYPE_OVERFLOW_UNDEFINED): Define.
29483         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
29484         Replace all uses.
29485         * tree.h (TYPE_TRAP_SIGNED): Don't define.
29486         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
29487         (fold_negate_expr): Likewise.
29488         (make_range): Likewise.
29489         (extract_muldiv_1): Likewise.
29490         (maybe_canonicalize_comparison): Likewise.
29491         (fold_comparison): Likewise.
29492         (fold_binary): Likewise.
29493         (tree_expr_nonnegative_p): Likewise.
29494         (tree_expr_nonzero_p): Likewise.
29495         * tree-vrp.c (compare_values): Likewise.
29496         (extract_range_from_binary_expr): Likewise.
29497         (extract_range_from_unary_expr): Likewise.
29498         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
29499         Likewise.
29500         (nowrap_type_p): Likewise.
29501         * tree-scalar-evolution.c (simple_iv): Likewise.
29502         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
29503         (build_range_check): Likewise.
29504         (extract_muldiv_1): Likewise.
29505         (fold_comparison): Likewise.
29506         * tree-vrp.c (vrp_int_const_binop): Likewise.
29507         (extract_range_from_unary_expr): Likewise.
29508         * convert.c (convert_to_integer): Likewise.
29509         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
29510         (fold_comparison): Likewise.
29511         (fold_binary): Likewise.
29512         * optabs.c (optab_for_tree_code): Likewise.
29513         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
29514         * simplify-rtx.c (simplify_const_relational_operation): Check
29515         flag_strict_overflow and flag_trapv.
29516         (simplify_const_relational_operation): Likewise.
29517         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
29518         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
29519         -fstrict-overflow.
29520
29521 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29522
29523         * tree.c (tree_fold_gcd): Delete.
29524         * tree.h (tree_fold_gcd): Remove prototype.
29525         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
29526         test whether one constant integer is a multiple of another.  Instead
29527         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
29528         * fold-const.c (multiple_of_p): We've determined both TOP and
29529         BOTTOM are integer constants so we can call int_const_binop directly
29530         instead of the more generic const_binop.
29531
29532 2007-01-27  Roger Sayle  <roger@eyesopen.com>
29533
29534         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
29535         1*X check that the constant hasn't overflowed, to preserve the
29536         TREE_OVERFLOW bit.
29537         (round_up): Provide an efficient implementation when rouding-up an
29538         INTEGER_CST to a power-of-two.
29539
29540 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29541
29542         * doc/sourcebuild.texi: Add comma for clarity.
29543         * doc/extend.texi: Fix some typos.
29544         * doc/passes.texi: Likewise.
29545         * doc/cppinternals.texi: Likewise.
29546         * doc/c-tree.texi: Likewise.
29547         * doc/tree-ssa.texi: Likewise.
29548         * doc/install.texi: Likewise.
29549
29550 2007-01-27  Jan Hubicka  <jh@suse.cz>
29551
29552         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
29553         (pass_sra): Do not require alias information.
29554         * passes.c (init_optimization_passes): Add SRA
29555
29556 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
29557
29558         * tracer.c (rest_of_handle_tracer): We already cleaned
29559         up the CFG in tracer() so don't do it here again.
29560         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
29561         cleanup_cfg here, either.  And don't call renumber_insns.
29562
29563         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
29564         and BB_HEAD are in the insn stream here.  Instead make sure
29565         that BB_INSN is valid on all insns.  Also, do check here that
29566         there are no pending branch predictions...
29567         (rtl_verify_flow_info): ...instead of doing it here.  Checks
29568         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
29569         here.
29570
29571 2007-01-26  Roger Sayle  <roger@eyesopen.com>
29572
29573         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
29574         function to simplify/factorize operand order canonicalization.
29575         (ix86_fixup_binary_operands): Reorganize using the above function.
29576         (ix86_binary_operator_ok): Likewise.
29577
29578 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
29579
29580         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
29581         file scope from optimize_attrs.
29582         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
29583         up search.
29584         (optimize_attrs): Clear insn_code_values after freeing it.
29585
29586 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29587
29588         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
29589         a parts.base assignment.
29590
29591 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
29592
29593         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
29594         (compute_subscript_distance, initialize_data_dependence_relation,
29595         finalize_ddr_dependent, analyze_ziv_subscript,
29596         analyze_siv_subscript_cst_affine,
29597         compute_overlap_steps_for_affine_univar,
29598         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
29599         analyze_siv_subscript, analyze_miv_subscript,
29600         analyze_overlapping_iterations, subscript_dependence_tester_1,
29601         compute_self_dependence, free_dependence_relation): Work
29602         with affine_fn instead of chrecs.
29603         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
29604         common_affine_function, affine_function_base,
29605         affine_function_constant_p, affine_fn_op, affine_fn_plus,
29606         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
29607         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
29608         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
29609         (all_chrecs_equal_p): Removed.
29610         * tree-data-ref.h (affine_fn, conflict_function): New types.
29611         (struct subscript): Change type of conflicting_iterations_in_a
29612         and conflicting_iterations_in_b.
29613
29614 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
29615
29616         PR other/30182
29617         * config/pa/pa.h (TARGET_HPUX_11): New.
29618         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
29619         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
29620
29621 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
29622         Richard Guenther  <rguenther@suse.de>
29623
29624         * tree-ssa-structalias.c (solve_graph): Handle case
29625         we merged the variable to another.
29626
29627 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29628
29629         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
29630         functions.
29631
29632         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
29633         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
29634
29635 2007-01-25  DJ Delorie  <dj@redhat.com>
29636
29637         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
29638         allow changes to modes which don't fit in those registers.
29639
29640         * reload1.c (choose_reload_regs): Check for invalid subregs before
29641         computing their locations, not after.
29642
29643 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
29644
29645         PR 25127
29646         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
29647         save Altivec registers in an eh_return function.
29648         (compute_vrsave_mask): Likewise.
29649         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
29650         for saving Altivec registers.
29651         (rs6000_emit_prologue): Don't allocate stack twice in
29652         eh_return function.  Correct expected value of altivec_save_offset
29653         when using save_world.  Describe save of R0 to stack when using
29654         save_world.  Describe stack pointer adjustment when using
29655         save_world.  Remove duplicated eh_return parameter register saving.
29656         Update sp_offset variable after save_world.
29657         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
29658         darwin-world.asm.
29659         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
29660         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
29661         implies Altivec.
29662
29663 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29664
29665         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
29666
29667 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
29668
29669         PR other/30182
29670         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
29671         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
29672
29673 2007-01-25  Richard Guenther  <rguenther@suse.de>
29674
29675         * doc/invoke.texi (-Wcoverage-mismatch): Document.
29676         * common.opt (-Wcoverage-mismatch): New warning option.
29677         * coverage.c (get_coverage_counts): Ignore coverage mismatch
29678         if -Wcoverage-mismatch is given.
29679
29680 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
29681
29682         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
29683         (ipcp_driver): Change to static definition.
29684         Add dumping of the ifunctions.
29685         (constant_val_insert): Remove unused parameter. Support for SSA.
29686         (ipcp_propagate_const): Support for SSA.
29687         (ipcp_profile_bb_print): Print only analyzed nodes.
29688         (ipcp_replace_map_create): Remove support for Fortran constant
29689         for now.
29690         * ipa-prop.c (ipa_method_modify_stmt,
29691         ipa_callsite_compute_param): Support for SSA.
29692         * ipa-prop.h (ipcp_driver): Remove declaration.
29693         (IS_VALID_TREE_MAP_INDEX): Add define.
29694
29695 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
29696
29697         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
29698
29699 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29700
29701         PR middle-end/30447
29702         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
29703         constant argument to cabs and do it without checking for
29704         -funsafe-math-optimizations.
29705
29706 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
29707
29708         * c-common.h (RID_FIRST_CXX0X): New.
29709         (RID_LAST_CXX0X): New.
29710         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
29711         by -Wall.
29712         * c.opt (Wc++0x-compat): New.
29713         * doc/invoke.texi (-Wc++0x-compat): Document.
29714
29715 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29716
29717         * builtins.c (fold_builtin_carg): New.
29718         (fold_builtin_1): Use it.
29719
29720 2007-01-24  Jan Hubicka  <jh@suse.cz>
29721
29722         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
29723
29724         * ipa-inline.c (initial_insns, max_insns): Delete.
29725         (compute_max_insns): New function.
29726         (cgraph_decide_inlining_of_small_function): Use it; take minimal
29727         amount of insns as base for code growth.
29728         (cgraph_decide_inlining): Make initial_insns local; do not compute
29729         max_insns.
29730         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
29731         * doc/invoke.texi (inline-unit-growth): Update docs.
29732
29733 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
29734
29735         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
29736         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
29737         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
29738         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
29739         for CPUs that have PTA_CX16 set.
29740
29741         PR middle-end/27416
29742         * gimplify.c (omp_check_private): New function.
29743         (gimplify_scan_omp_clauses): Use it for
29744         firstprivate/lastprivate/reduction.
29745
29746         PR middle-end/30494
29747         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
29748         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
29749
29750         PR middle-end/30421
29751         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
29752         If lower_lastprivate_clauses emits some statements, append them
29753         to dlist rather than body_p and to body_p append an initializer.
29754         (lower_omp_for): Adjust caller.
29755
29756 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
29757
29758         * target.h (globalize_decl_name): New.
29759         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29760         * output.h (default_globalize_decl_name): New.
29761         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
29762         globalize_label.
29763         (globalize_decl): Ditto.
29764         (default_globalize_decl_name): New.
29765         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
29766         (ia64_handle_version_id_attribute): New.
29767         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
29768         (ia64_asm_output_external): Use globalize_decl_name instead
29769         of globalize_label.
29770         * doc/extend.texi (version_id): New pragma.
29771         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
29772
29773 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29774
29775         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
29776         _uleb128_t and _Unwind_SWord with _sleb128_t.
29777         * unwind-dw2.c (extract_cie_info, execute_stack_op,
29778         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
29779         Likewise.
29780         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
29781         * unwind-pe.h (read_uleb128, read_sleb128,
29782         read_encoded_value_with_base): Likewise.
29783         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
29784
29785 2007-01-24  Richard Guenther  <rguenther@suse.de>
29786
29787         * builtins.c (expand_builtin_cexpi): Get the fndecl
29788         for cexp in the correct way.
29789
29790 2007-01-24  Jan Hubicka  <jh@suse.cz>
29791
29792         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
29793         of calls.
29794
29795 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
29796
29797         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
29798         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
29799         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
29800         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
29801         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
29802         __SIZEOF_PTRDIFF_T__.
29803         * doc/cpp.texi: Documentation for the new builtin macros added.
29804
29805 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
29806
29807         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
29808         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
29809         instead of operands[2] to avoid access past the end of array.
29810
29811 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
29812
29813         * reload1.c (emit_reload_insns): Pass the reload register
29814         for a non-spill output reload through forget_old_reloads_1.
29815
29816 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
29817
29818         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
29819         _SOFT_DOUBLE if doubles use software floating-point.
29820         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
29821         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29822         * config/rs6000/darwin-ldouble.c: Also compile functions for
29823         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
29824         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
29825         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
29826         commented-out long double override.
29827         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
29828         * config/rs6000/eabispe.h: Likewise.
29829         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
29830         long double for non-SPE.
29831         (rs6000_handle_option): Likewise.
29832         (invalid_e500_subreg): Disallow more subregs involding DImode,
29833         DFmode, TImode or TFmode.
29834         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
29835         E500 double.
29836         (legitimate_lo_sum_address_p): Also check for TFmode for E500
29837         double.
29838         (rs6000_legitimize_address): Also handle TFmode for E500 double.
29839         (rs6000_legitimize_reload_address): Also handle TFmode for E500
29840         double.
29841         (rs6000_legitimate_address): Also check for TFmode for E500
29842         double.
29843         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
29844         (spe_build_register_parallel): Handle TFmode and TCmode.
29845         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
29846         double.
29847         (function_arg): Handle TFmode and TCmode for E500 double.
29848         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
29849         in general.
29850         (print_operand): Handle TFmode and TImode for %y.
29851         (rs6000_generate_compare): Handle TFmode comparisons for E500
29852         double.
29853         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
29854         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
29855         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
29856         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
29857         TFmode for E500 double.
29858         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
29859         (floatsidf2): Enable for E500 double.
29860         (movtf_softfloat): Use rs6000_nonimmediate_operand.
29861         (extenddftf2): Change to extenddftf2_fprs.
29862         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
29863         depending on TARGET_E500_DOUBLE.
29864         (extendsftf2): Enable for E500 double.
29865         (trunctfdf2): Enable for E500 double.
29866         (trunctfsf2): Change to trunctfsf2_fprs.
29867         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
29868         depending on TARGET_E500_DOUBLE.
29869         (floatsitf2): Enable for E500 double.
29870         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
29871         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
29872         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
29873         (negtf2): Change to negtf2_internal.
29874         (negtf2): New expander.
29875         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
29876         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
29877         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
29878         (movdi_internal32): Use rs6000_nonimmediate_operand.
29879         (unnamed splitter): Likewise.
29880         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
29881         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
29882         (SPE64TF, DITI): New mode macros.
29883         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
29884         modes.
29885         (frob_tf_ti): New.
29886         (frob_<mode>_di_2): New.
29887         (frob_tf_di_8_2): New.
29888         (frob_di_df): Change to frob_di_<mode>; allow more modes.
29889         (frob_ti_tf): New.
29890         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
29891         more modes.
29892         (frob_ti_<mode>_8_2): New.
29893         (frob_ti_tf_2): New.
29894         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
29895         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
29896         TFmode.
29897         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
29898         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
29899         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
29900         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
29901         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
29902         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
29903         tsttflt_gp): New.
29904
29905 2007-01-23  Ian Lance Taylor  <iant@google.com>
29906
29907         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
29908         insn-*.o first.
29909         (OBJS-archive): Reformat, alphabetize.
29910         (OBJS): Change out_object_file to OBJS-md.
29911
29912 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
29913
29914         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
29915         JUMP_P and CALL_P predicates where applicable.
29916         * config/i386/i386.c: Ditto.
29917         * config/i386/i386.md: Ditto.
29918         * config/i386/mmx.md: Ditto.
29919         * config/i386/predicates.md: Ditto.
29920
29921 2007-01-22  Andreas Schwab  <schwab@suse.de>
29922
29923         * config/m68k/m68k.h: Fix comment.
29924
29925 2007-01-22  Jan Hubicka  <jh@suse.cz>
29926
29927         * passes.c (init_optimization_passes): Do not rerun
29928         pass_early_warn_uninitialized.
29929
29930 2007-01-22  Richard Guenther  <rguenther@suse.de>
29931
29932         PR tree-optimization/30038
29933         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
29934         function.
29935         (execute_cse_sincos_1): Likewise.
29936         (execute_cse_sincos): Likewise.
29937         (gate_cse_sincos): Likewise.
29938         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
29939         the cexpi() canonicalization of sincos().
29940         * tree-pass.h (pass_cse_sincos): Declare.
29941         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
29942
29943 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
29944
29945         PR rtl-optimization/29329
29946         * combine.c (replaced_rhs_insn): Rename to i2mod.
29947         (replaced_rhs_value): Rename to i2mod_new_rhs.
29948         (i2mod_old_rhs): New global variable.
29949         (combine_instructions): Adjust for above change.  Save a copy of
29950         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
29951         note are substituted in the second instruction.
29952         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
29953         ditch the note if it pertains to the second eliminated register
29954         and this register is mentioned in i2mod_old_rhs.
29955
29956         Revert:
29957         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
29958
29959         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
29960         the insn to which the note was originally attached.
29961
29962 2007-01-21  Jan Hubicka  <jh@suse.cz>
29963
29964         * ipa-inline.c (inlining_mode): Comment, move up.
29965         (cgraph_decide_inlining_incrementally): Do not perform inlining
29966         itself; fix handling of flattening of self recursive functions.
29967         (cgraph_find_cycles): Remove.
29968         (cgraph_flatten_node): Remove.
29969         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
29970         (try_inline): New function.
29971         (cgraph_early_inlining): Update call of
29972         cgraph_decide_inlining_incrementally.  Apply inlining here.
29973         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
29974
29975 2007-01-21  Dirk Mueller  <dmueller@suse.de>
29976
29977         PR bootstrap/30511
29978         * tree-vrp.c (check_array_bounds): do not warn
29979         about ADDR_EXPR's of ARRAY_REF's which are immediately
29980         used in binary expressions.
29981
29982 2007-01-21  Ira Rosen  <irar@il.ibm.com>
29983
29984         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
29985         read_write_dep and macros for its access.
29986         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
29987         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
29988         argument, call vect_check_interleaving for every independent pair of
29989         data-refs. Mark loads that access the same memory location as a store
29990         in the loop.
29991         (vect_check_dependences): Remove.
29992         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
29993         call, fix the call to vect_analyze_data_ref_dependence.
29994         (vect_analyze_data_ref_access): For statements that access the same
29995         data-ref, check that they are not stores; for loads, check that there
29996         is no store that access the same location.
29997
29998 2007-01-20  Roger Sayle  <roger@eyesopen.com>
29999             Joseph Myers  <joseph@codesourcery.com>
30000
30001         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
30002         (-fdump-rtl-stack): Likewise.
30003         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
30004         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
30005         (-mpt-fixed): Use @minus{} for minus sign.
30006         (Using Precompiled Headers): Fix under/overfull hbox.
30007
30008 2007-01-20  Jan Hubicka  <jh@suse.cz>
30009
30010         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
30011         place within annotation.
30012
30013 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30014
30015         * pa.c (output_move_double): Change array size of xoperands to 4.
30016
30017 2007-01-20  Jan Hubicka  <jh@suse.cz>
30018
30019         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
30020         as temporary.
30021
30022 2007-01-19  Ian Lance Taylor  <iant@google.com>
30023
30024         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
30025         constant to unsigned HOST_WIDE_INT before negating.
30026
30027 2007-01-19  Ian Lance Taylor  <iant@google.com>
30028
30029         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
30030         to unsigned.
30031         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
30032         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30033         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
30034         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
30035         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30036         (realloc_vdef, realloc_vuse): Change second parameter to
30037         unsigned.
30038         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
30039         fields to unsigned.
30040         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
30041         unsigned. Change x and lim locals to unsigned.
30042         (realloc_vdef, realloc_vuse): Change num_elem parameter to
30043         unsigned.
30044         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
30045         (copy_virtual_operands): Change i and n locals to unsigned.
30046
30047 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30048
30049         PR middle-end/29335
30050         * builtins.c (fold_builtin_1): Handle builtin fdim.
30051
30052 2007-01-20  Jan Hubicka  <jh@suse.cz>
30053
30054         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
30055         * tree-ssa-structalias.c (compute_points_to_sets): Do call
30056         init_alias_heapvars.
30057         (init_alias_heapvars): Initialize only when not already initialized.
30058         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
30059
30060 2007-01-19  Roger Sayle  <roger@eyesopen.com>
30061
30062         * common.opt (fsigned-zeros): New command line option.
30063         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
30064         of flag_unsafe_math_optimizations.
30065         * opts.c (set_fast_math_flags): The -ffast-math command line option
30066         implies -fno-signed-zeros.
30067         (fast_math_flags_set_p): Likewise.
30068
30069         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
30070         the documentation of -ffast-math appropriately.  Wrap long lines.
30071
30072 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
30073
30074         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
30075         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
30076
30077 2007-01-19  Tomas Bily  <tbily@suse.cz>
30078
30079         * cgraphunit.c (cgraph_finalize_function): Updating of pid
30080         * tree-profile.c:
30081         (tree_init_ic_make_global_vars): New function
30082         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
30083         (tree_gen_ic_profiler): New function
30084         (tree_gen_ic_func_profiler): New function
30085         (tree_profiling): Added calling of tree_gen_ic_func_profiler
30086         (tree_profile_hooks): Added hook for indirec/virtual calls
30087         * value-prof.c (tree_find_values_to_profile): New case for
30088         indirect calls
30089         (tree_values_to_profile): Call for determining indirect/virtual
30090         counters
30091         (tree_indirect_call_to_profile): New function
30092         (tree_ic_transform): New function
30093         (tree_ic): New function
30094         (find_func_by_pid): New function
30095         (init_pid_map): New function
30096         (tree_value_profile_transformations): Added check for
30097         indirect/virtual call transformation
30098         * value-prof.h (enum hist_type): New counter type for
30099         indirect/virtual calls
30100         (profile_hooks): Added new hook for profiling indirect/virtual
30101         calls
30102         * profile.c (instrument_values): New case for indirect/virtual
30103         call added
30104         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
30105         (GCOV_COUNTER_V_INDIR): New counter type
30106         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
30107         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
30108         call added
30109         * cgraph.c: Definition of cgraph_max_pid
30110         (cgraph_create_node): Default init of pid attribute
30111         * cgraph.h: Declaration of cgraph_max_pid
30112         (struct cgraph_node): Added pid attribute
30113         * libgcov.c (__gcov_indirect_call_profiler): New function
30114         (__gcov_one_value_profiler_body): New function
30115         (__gcov_one_value_profiler): Body was moved to
30116         __gcov_one_value_profiler_body and calls it
30117
30118 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
30119
30120         * doc/gty.texi (Options): Document the mark_hook option to GTY.
30121         * gengtype.c (write_types_data, write_func_for_structure,
30122         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
30123         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
30124         (walk_type, write_func_for_structure): Generate the mark_hook if
30125         needed.
30126
30127 2007-01-19  Jan Hubicka  <jh@suse.cz>
30128
30129         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
30130         'early' argument take inlining mode argument specifying whether to
30131         inline for size/speeed or all functions; add support for flattening;
30132         improve dumpting.
30133         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
30134
30135 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30136
30137         PR c++/17947
30138         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
30139         the name of the declared identifier.
30140
30141 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30142
30143         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
30144         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
30145         duplicate evaluation.
30146
30147 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30148
30149         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
30150         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
30151         to XFMode, use acosxf2 and truncate result to requested mode.
30152         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
30153         (asin<mode>2): Similarly, with asin expanders.
30154         (*fscalexf4_i387): Rename from *fscalexf4.
30155         (expNcorexf3): New expander.
30156         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
30157         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
30158         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
30159         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
30160         patterns for SSE math.
30161         (exp10<mode>2): Similarly, with exp10 expanders.
30162         (exp2<mode>2): Similarly, with exp2 expanders.
30163         (expm1<mode>2): Similarly, with expm1 expanders.
30164         (ldexp<mode>3): Similarly, with ldexp expanders.
30165         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
30166         Use gen_truncxf<mode>2_i387_noop to truncate result.
30167
30168 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30169
30170         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
30171         for ColdFire targets.
30172
30173 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
30174             Richard Sandiford  <richard@codesourcery.com>
30175
30176         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
30177         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
30178         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
30179         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
30180         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30181         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
30182
30183 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30184
30185         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
30186         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
30187         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
30188         (*adddi_dilshr32_cf): New pattern.
30189         (adddi3, subdi3): Remove first alternatives.
30190
30191 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30192
30193         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
30194         implemented using move.l, do not use its cc result for floating-point
30195         comparisons.
30196
30197 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30198
30199         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
30200         from accepting 's' constraints if flag_pic.
30201
30202 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30203
30204         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
30205         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
30206         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
30207         condition from TARGET_68881 to TARGET_HARD_FLOAT.
30208
30209 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
30210
30211         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
30212         ColdFire alternatives.
30213         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
30214         * config/m68k/m68k.md (clzsi2): Define for ColdFire
30215         architectures that support ff1 instruction.
30216
30217 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30218             Julian Brown  <julian@codesourcery.com>
30219
30220         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
30221         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
30222         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
30223         Add commentary.
30224
30225 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
30226
30227         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
30228         and return a bool.
30229         (output_move_const_into_data_reg, output_move_simode_const): Delete.
30230         * config/m68k/m68k.c (const_method, const_int_cost): Take a
30231         HOST_WIDE_INT instead of an rtx.
30232         (m68k_rtx_costs): Update call accordingly.
30233         (output_move_const_into_data_reg): Likewise.  Fix formatting.
30234         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
30235         Return a bool.
30236         (output_move_simode_const): Update calls after above changes.
30237         Rework to use automatic variables and predicates like MEM_P.
30238         * config/m68k/m68k.md (pushexthisi_const): Update call to
30239         valid_mov3q_const.
30240
30241 2007-01-19  Dirk Mueller  <dmueller@suse.de>
30242
30243         * tree-ssa-alias.c (perform_var_substitution): Fix typo
30244         in dump_flags test.
30245
30246 2007-01-19  Richard Guenther  <rguenther@suse.de>
30247
30248         * builtins.c (expand_builtin_cexpi): Fall back to expanding
30249         via cexp in case sincos is not available.
30250
30251 2007-01-19  Richard Guenther  <rguenther@suse.de>
30252
30253         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
30254         * defaults.h (TARGET_HAS_SINCOS): Default to off.
30255         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
30256         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
30257         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
30258         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
30259         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
30260         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
30261
30262 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
30263
30264         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
30265         New insn patterns.
30266         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
30267         (atan2xf3): Directly generate RTL pattern.
30268         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
30269         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30270         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30271         disable patterns for SSE math.
30272         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
30273         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
30274         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30275         disable patterns for SSE math.
30276
30277 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
30278
30279         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
30280
30281 2007-01-18  Roger Sayle  <roger@eyesopen.com>
30282
30283         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
30284         VIEW_CONVERT_EXPR to the same type as it's operand.
30285
30286 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
30287
30288         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
30289         configured for long double 128.
30290
30291 2007-01-18  Mike Stump  <mrs@apple.com>
30292
30293         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
30294         error.
30295
30296 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
30297
30298         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
30299         type correct.
30300
30301 2007-01-18  Jan Hubicka  <jh@suse.cz>
30302
30303         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
30304         greater than NUM_VOP_FREE_BUCKETS.
30305
30306 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
30307
30308         * tree-ssa-structalias.c: Update comments.
30309         (ptabitmap_obstack): Removed.
30310         (pta_obstack): New.
30311         (oldpta_obstack): Ditto.
30312         (stats): Add a few members.
30313         (struct variable_info): Remove node, complex, address_taken, and
30314         indirect_target members. Add oldsolution member.
30315         (new_var_info): Do not initialize removed members.
30316         (constraint_expr_type): Remove INCLUDES.
30317         (constraint_graph): Add size, implicit_preds, rep,
30318         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
30319         (FIRST_REF_NODE): New macro.
30320         (LAST_REF_NODE): Ditto.
30321         (FIRST_ADDR_NODE): Ditto.
30322         (find): New function.
30323         (unite): Ditto.
30324         (dump_constraint): Do not handle INCLUDES.
30325         (insert_into_complex): Do not insert duplicate constraints.
30326         (condense_varmap_nodes): Renamed and rewritten into ...
30327         (merge_node_constraints): This. Also fix bug in handling of
30328         offseted copy constraints.
30329         (clear_edges_for_node): No longer need to deal with preds at all,
30330         or removing associated preds/succs.
30331         (merge_graph_nodes): Deal with indirect_cycles.
30332         Don't deal with predecessors.
30333         (add_implicit_graph_edge): New function.
30334         (add_pred_graph_edge): Ditto.
30335         (add_graph_edge): Don't deal with predecessors.
30336         (build_constraint_graph): Removed.
30337         (build_pred_graph): New function.
30338         (build_succ_graph): Ditto.
30339         (struct scc_info): Removed in_component. Added roots, dfs, and
30340         node_mapping. Remove visited_index, unification_queue.
30341         (scc_visit): Deal with union-find we do now.
30342         Deal with cycles with REF nodes.
30343         (collapse_nodes): Renamed and rewritten to ...
30344         (unify_nodes): This.
30345         (process_unification_queue): Removed.
30346         (topo_visit): Cleanup
30347         (do_da_constraint): Use find.
30348         (do_sd_constraint): Ditto.
30349         (do_ds_constraint): Ditto.
30350         (do_complex_constraint): Ditto.
30351         (init_scc_info): Update for removed and added members.
30352         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
30353         (find_indirect_cycles): This.
30354         (equivalence_class): New variable.
30355         (label_visit): New function.
30356         (perform_variable_substitution): Rewritten.
30357         (free_var_substitution_info): New function.
30358         (find_equivalent_node): Ditto.
30359         (move_complex_constraints): Ditto.
30360         (eliminate_indirect_cycles): Ditto.
30361         (solve_graph): Only propagate changed bits.
30362         Use indirect cycle elimination.
30363         Use find.
30364         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
30365         (tree_id_eq): Renamed to ...
30366         (tree_vi_eq): This. Update for member change
30367         (insert_id_for_tree): Renamed and rewritten to ...
30368         (insert_vi_for_tree): This.
30369         (lookup_id_for_tree): Renamed and rewritten to ...
30370         (lookup_vi_for_tree): This.
30371         (get_id_for_tree): Renamed and rewritten to ...
30372         (get_vi_for_tree): Ditto.
30373         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
30374         (process_constraint): Don't handle INCLUDES.
30375         Remove special ADDRESSOF case.
30376         (find_func_aliases): Rewrite to use vi functions instead of id
30377         ones.
30378         (create_function_info_for): Ditto.
30379         (create_variable_info_for): Ditto.
30380         (intra_create_variable_infos): Ditto.
30381         (merge_smts_into): Ditto.
30382         (find_what_p_points_to): Ditto.
30383         (init_base_vars): Ditto.
30384         (init_alias_vars): Ditto.
30385         (remove_preds_and_fake_succs): New function.
30386         (dump_sa_points_to_info): Dump new stats.
30387         (dump_solution_for_var): Use find.
30388         (set_used_smts): Fix formatting.
30389         (compute_points_to_sets): Updated for new functions.
30390         (ipa_pta_execute): Ditto.
30391
30392 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30393             Richard Sandiford  <richard@codesourcery.com>
30394
30395         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
30396         parallels.
30397         * calls.c (expand_call): If the return value is a PARALLEL,
30398         extract its first member.
30399         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
30400         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30401         use FUNCTION_EXTRA_EPILOGUE.
30402         (m68k_function_value): Return a PARALLEL if the return value
30403         is of a pointer type.
30404         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
30405         (FUNCTION_EXTRA_EPILOGUE): Remove.
30406         * config/m68k/m68k.md (D0_REG): New constant.
30407
30408 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30409
30410         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
30411         output a NOP for empty epilogues.
30412
30413 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30414
30415         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
30416         before function.  Extend register save check to include all
30417         registers, not just integer ones.
30418
30419 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30420
30421         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
30422         (m68k_use_return_insn): ...this.
30423         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
30424         * config/m68k/m68k.c (use_return_insn): Rename to...
30425         (m68k_use_return_insn): ...this.
30426         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
30427         of USE_RETURN_INSN.
30428
30429 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30430
30431         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
30432         nearest even, fix denormal rounding overflow.
30433
30434 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30435
30436         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
30437         f%$smove and f%$move.
30438         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
30439         (extendsfdf2_cf): Use fdmove instead of f%&move.
30440         (truncdfsf2_cf): Use fsmove instead of f%$smove.
30441         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
30442
30443 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30444
30445         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
30446         GPR<-GPR moves.
30447
30448 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30449
30450         * real.h (real_format): Add a canonical_nan_lsbs_set field.
30451         (coldfire_single_format): Declare.
30452         (coldfire_double_format): Likewise.
30453         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
30454         of qnan_msb_set to determine the lower bits of a canonical
30455         NaN significand.
30456         (encode_ieee_double): Likewise.
30457         (encode_ieee_quad): Likewise.
30458         (ieee_single_format): Initialize canonical_nan_lsbs_set.
30459         (mips_single_format): Likewise.
30460         (ieee_double_format): Likewise.
30461         (mips_double_format): Likewise.
30462         (ieee_extended_motorola_format): Likewise.
30463         (ieee_extended_intel_96_format): Likewise.
30464         (ieee_extended_intel_128_format): Likewise.
30465         (ieee_extended_intel_96_round_53_format): Likewise.
30466         (ibm_extended_format): Likewise.
30467         (mips_extended_format): Likewise.
30468         (ieee_quad_format): Likewise.
30469         (mips_quad_format): Likewise.
30470         (vax_f_format): Likewise.
30471         (vax_d_format): Likewise.
30472         (vax_g_format): Likewise.
30473         (i370_single_format): Likewise.
30474         (i370_double_format): Likewise.
30475         (decimal_single_format): Likewise.
30476         (decimal_double_format): Likewise.
30477         (decimal_quad_format): Likewise.
30478         (c4x_single_format): Likewise.
30479         (c4x_extended_format): Likewise.
30480         (real_internal_format): Likewise.
30481         (coldfire_single_format): New real_format.
30482         (coldfire_double_format): Likewise.
30483         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
30484         canonical_nan_lsbs_set.
30485         (pdp11_d_format): Likewise.
30486         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
30487         if TARGET_COLDFIRE_CPU.
30488
30489 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30490
30491         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
30492         (output_call, m68k_legitimize_call_address): Declare.
30493         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
30494         parenthesees.  Add support for a 'W' constraint.
30495         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
30496         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
30497         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
30498         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
30499         variables.
30500         (override_options): Initialize them.  Do not set flag_no_function_cse
30501         for TARGET_ID_SHARED_LIBRARY.
30502         (m68k_output_pic_call): Delete.
30503         (m68k_legitimize_call_address): New function.
30504         (print_operand): Remove the %o prefix.  Handle the %p prefix.
30505         (output_call): New function.
30506         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
30507         target address from the GOT if symbolic jumps are not allowed.
30508         * config/m68k/m68k.md (call, general_operand): Do not set
30509         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
30510         Merge separate flag_pic and !flag_pic define_insns into...
30511         (*call, *call_value): ...these new patterns.  Match the address
30512         rather than the containing MEM and require it to be a call_operand.
30513         Use output_call to generate the asm template.
30514         * config/m68k/predicates.md (const_call_operand): New predicate.
30515         (call_operand): Likewise.
30516
30517 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30518
30519         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
30520         (STACK_GROWS_DOWNWARD): Define to 1.
30521         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
30522         comments, emphasizing that these values are only defaults.
30523         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
30524         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
30525
30526 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30527
30528         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
30529
30530 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
30531             Richard Sandiford  <richard@codesourcery.com>
30532
30533         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
30534         (FP_REGNO_P): New macros.
30535         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
30536         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
30537         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
30538         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
30539
30540 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30541
30542         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30543         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
30544         to $tmake_file.
30545         * config/m68k/t-floatlib: New file, extracting common code from...
30546         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
30547         * config/m68k/t-uclinux: Here.
30548         * config/m68k/fpgnulib.c: Do not compile extendeed precision
30549         routines on ColdFire targets.
30550
30551 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
30552
30553         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
30554         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
30555         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
30556         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
30557         explicitly set MOTOROLA to 1.
30558         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
30559
30560 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30561             Nathan Sidwell  <nathan@codesourcery.com>
30562
30563         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
30564         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
30565         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
30566         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
30567         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
30568         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
30569         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
30570         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
30571         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
30572         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30573         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
30574         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
30575         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
30576         (DBX_REGISTER_NUMBER): Delete.
30577         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
30578         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
30579         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
30580
30581 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30582
30583         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
30584         * config/flat.h: New file.
30585         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
30586         OBJECT_FORMAT_FLAT.
30587         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
30588         indirect references for -msep-data or -mid-shared-library.
30589         Do not use PC-relative code addresses either.
30590         * config/m68k/m68k.c (override_options): Restrict -fPIC error
30591         to -mpcrel.
30592         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
30593         for shared libraries and crt1.o for executables.  Use crti.o and
30594         crtbegin.o.
30595         (ENDFILE_SPEC): Use crtend.o and crtn.o.
30596         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
30597         Do not add -elf2flt or -shared-lib-id options here.
30598         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
30599         Pass -shared-lib-id if -mid-shared-library, taking the library
30600         identifier from -mshared-library-id if given, otherwise
30601         defaulting to 0.
30602         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
30603         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
30604         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
30605         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
30606         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
30607         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
30608         and crtend.o.
30609         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
30610         jump sequence for ISA A and ISA A+.
30611         (PICJUMP): Likewise.
30612
30613 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30614
30615         * config.gcc (m68k-*-uclinux*): Base the port on the common
30616         and m68k GNU/Linux files rather than on the generic ELF ones.
30617         * config/m68k/uclinux.h (TARGET_VERSION): Override.
30618         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
30619
30620 2007-01-18  Julian Brown  <julian@codesourcery.com>
30621             Richard Sandiford  <richard@codesourcery.com>
30622
30623         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
30624         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30625         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
30626         before redefining.
30627         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
30628         80 unconditionally.
30629         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
30630
30631 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
30632
30633         * doc/install.texi: Document m68k-uclinuxoldabi.
30634         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
30635         * config/m68k/uclinux-oldabi.h: New file, copied from
30636         config/m68k/uclinux.h.
30637
30638 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
30639
30640         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
30641         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
30642         (m32r_compute_frame_size): Use unsigned for regno.
30643         (m32r_reload_lr): Use gen_frame_mem.
30644         (pop): New.
30645         (m32r_output_function_epilogue): Don't output the function epilogue
30646         textually here.
30647         (m32r_expand_epilogue): New.
30648         (direct_return): Return false if the function has the interrupt
30649         attribute.
30650         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
30651         * config/m32r/m32r.md (epilogue): New expander.
30652         (return_lr, return_rte): New insns.
30653         (return): Make it expander.
30654         (return_normal): New expander.
30655
30656 2007-01-18  Josh Conner  <jconner@apple.com>
30657
30658         PR target/30485
30659         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
30660         support for UNLE, UNLT, UNGE, and UNGT.
30661
30662 2007-01-18  Jan Hubicka  <jh@suse.cz>
30663
30664         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
30665         * tree-tailcall (add_virtual_phis): Likewise.
30666         (optimize_tail_call): Return TODOs.
30667         (execute_tail_calls): Return TODOs.
30668         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
30669         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
30670         changed.
30671         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
30672         Cleanup cfg using TODO.
30673         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
30674         * passes.c (execute_function_todo): When cleanup did something, remove
30675         unused locals.
30676         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
30677         (make_edges): Don't cleanup_cfg.
30678
30679 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
30680
30681         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
30682         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
30683         operate on the top of stack.
30684         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
30685         register handling of instructions that output to the second
30686         stack slot.
30687         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
30688         (move_for_stack_reg): Special-case check for dead destination
30689         stack slot for constant load of 1.0 inside UNSPEC_TAN.
30690
30691         * config/i386/i386.md (UNSPEC_TAN): New constant.
30692         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
30693         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
30694         to correctly model move of constant 1.0 to top stack slot.
30695         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
30696         (unnamed peephole2 pattern): Remove corresponding peephole2
30697         pattern that optimizes tan insn and loading of constant 1.0.
30698         (tanxf2): Use fptanxf4_i387.
30699         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
30700         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
30701         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
30702         disable patterns for SSE math.
30703         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
30704         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
30705
30706 2007-01-18  Dirk Mueller  <dmueller@suse.de>
30707             Richard Guenther <rguenther@suse.de>
30708
30709         PR diagnostic/8268
30710         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
30711         * common.opt (Warray-bounds): Add new warning option.
30712         * c-opts.c (c_common_handle_option): Define -Warray-bounds
30713         if -Wall is given.
30714         * Makefile.in: make tree-vrp.o depend on toplev.h
30715         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
30716         is enabled.
30717         (check_array_refs, check_array_bounds, check_array_ref): New.
30718
30719 2007-01-18  Jan Hubicka  <jh@suse.cz>
30720
30721         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
30722         (execute_ssa_ccp): Return flags conditionally.
30723         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
30724         changed.
30725         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
30726
30727 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
30728
30729         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
30730         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
30731
30732         * Makefile.c (GTFILES): Add cfglayout.h.
30733         * gengtype.c (open_base_files): Likewise.
30734         * cfglayout.c (cfg_layout_function_footer,
30735         cfg_layout_function_header) Reindent to make gengtype happy.
30736         * cfglayout.h (cfg_layout_function_footer,
30737         cfg_layout_function_header): Add GTY(()) marker.
30738
30739         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
30740
30741 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30742
30743         * genautomata.c (write_automata): Include xstrerror output in the
30744         error message if writing the DFA description file fails.
30745
30746 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
30747
30748         * config/mips/mips-protos.h (mips_output_external): Make it
30749         return void.
30750         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
30751         * config/mips/mips.c (irix_output_external_libcall): Likewise.
30752         (extern_list): Likewise.
30753         (extern_head): Likewise.
30754         (TARGET_ASM_FILE_END): Likewise.
30755         (mips_file_end): Likewise.
30756         (mips_output_external): Rewritten.
30757
30758 2007-01-18  Ben Elliston  <bje@au.ibm.com>
30759
30760         * genpreds.c (write_insn_preds_c): Only write out the function
30761         body for regclass_for_constraint if we have register constraints.
30762
30763 2007-01-17  Tom Tromey  <tromey@redhat.com>
30764
30765         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
30766         * doc/install.texi (Testing): Use sourceware.org.
30767         (Binaries): Likewise.
30768         (Specific): Likewise.
30769         * doc/contrib.texi (Contributors): Use sourceware.org.
30770
30771 2007-01-17  Anatoly Sokolov <aesok@post.ru>
30772
30773         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
30774         (AVR_ENHANCED): Rename to ...
30775         (AVR_HAVE_MUL): ... new.
30776         (avr_enhanced_p): Rename to ...
30777         (avr_have_mul_p): ... new.
30778         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
30779         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
30780         * config/avr/avr.c (avr_enhanced_p): Rename to ...
30781         (avr_have_mul_p): ... new.
30782         (base_arch_s): Rename 'enhanced' to 'have_mul'.
30783         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
30784         'avr_enhanced_p' and 'enhanced'.
30785         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
30786         AVR_HAVE_MUL instead of AVR_ENHANCED.
30787         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30788         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
30789         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
30790         instead of AVR_ENHANCED.
30791         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
30792         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
30793         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
30794
30795 2007-01-17  Ian Lance Taylor  <iant@google.com>
30796
30797         * vec.h (VEC_reserve_exact): Define.
30798         (vec_gc_p_reserve_exact): Declare.
30799         (vec_gc_o_reserve_exact): Declare.
30800         (vec_heap_p_reserve_exact): Declare.
30801         (vec_heap_o_reserve_exact): Declare.
30802         (VEC_OP (T,A,reserve_exact)): New static inline function, three
30803         versions.
30804         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
30805         negative parameter.
30806         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
30807         (VEC_OP (T,A,copy)) [all versions]: Likewise.
30808         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
30809         * vec.c (calculate_allocation): Add exact parameter.  Change all
30810         callers.
30811         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
30812         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
30813         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
30814         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
30815         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
30816         (vec_heap_p_reserve_exact): New function.
30817         (vec_heap_o_reserve_exact): New function.
30818
30819 2007-01-17  Jan Hubicka  <jh@suse.cz>
30820
30821         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
30822
30823 2007-01-17  Eric Christopher  <echristo@apple.com>
30824
30825         * config.gcc: Support core2 processor.
30826
30827 2007-01-16  Jan Hubicka  <jh@suse.cz>
30828
30829         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
30830         the names, just unlink the chain so we don't crash on dangling
30831         pointers
30832         to dead SSA names.
30833
30834 2007-01-16  Jan Hubicka  <jh@suse.cz>
30835
30836         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
30837         * tree-pass.h: Reorder to make IPA passes appear toegher.
30838         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
30839         Declare.
30840         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
30841         parameters, do not call early inliner.
30842         * ipa-inline.c: Update comments.  Include tree-flow.h
30843         (cgraph_decide_inlining): Do not compute inlining parameters.
30844         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
30845         be called with function context set up.
30846         (pass_ipa_inline): Remove unreachable functions before pass.
30847         (cgraph_early_inlining): Simplify assuming to be called from the
30848         PM as local pass.
30849         (pass_early_inline): New pass.
30850         (cgraph_gate_ipa_early_inlining): New gate.
30851         (pass_ipa_early_inline): Turn into simple wrapper.
30852         (compute_inline_parameters): New function.
30853         (gate_inline_passes): New gate.
30854         (pass_inline_parameters): New pass.
30855         (apply_inline): Move here from tree-optimize.c
30856         (pass_apply_inline): New pass.
30857         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
30858         transforming.
30859         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
30860         doing them by hand.
30861         (tree_function_versioning): Do not allocate dummy struct function.
30862         * tree-inline.h (optimize_inline_calls): Update prototype.
30863         * tree-optimize.c (execute_fixup_cfg): Export.
30864         (pass_fixup_cfg): Remove
30865         (tree_rest_of_compilation): Do not apply inlines.
30866         * tree-flow.h (execute_fixup_cfg): Declare.
30867         * Makefile.in (gt-passes.c): New.
30868         * passes.c: Include gt-passes.h
30869         (init_optimization_passes): New passes.
30870         (nnodes, order): New static vars.
30871         (do_per_function_toporder): New function.
30872         (execute_one_pass): Dump current pass here.
30873         (execute_ipa_pass_list): Don't dump current pass here.
30874
30875 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
30876
30877         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
30878         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
30879
30880 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
30881
30882         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
30883         (strong_alias): Define.
30884         (__gcc_qmul): Provide non-FMA for soft-float.
30885         (__gcc_qdiv): Same.
30886         (__gcc_qneg): New.
30887         (__gcc_qeq): New.
30888         (__gcc_qle): New.
30889         (__gcc_qge): New.
30890         (__gcc_qunord): New.
30891         (__gcc_stoq): New.
30892         (__gcc_dtoq): New.
30893         (__gcc_qtos): New.
30894         (__gcc_qtod): New.
30895         (__gcc_qtoi): New.
30896         (__gcc_qtou): New.
30897         (__gcc_itoq): New.
30898         (__gcc_utoq): New.
30899         (fmsub): New.
30900         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
30901         soft-float functions.
30902         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
30903         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
30904         about long double soft float.
30905
30906 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
30907             Tehila Meyzels  <tehila@il.ibm.com>
30908
30909         * tree-vectorizer.h (is_pattern_stmt_p): New.
30910         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
30911         formatting (tabs instead of spaces). Cleanup and clarify setting
30912         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
30913         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
30914         (vectorizable_type_demotion): Check that types are integral.
30915         (vectorizable_type_promotion): Likewise.
30916         (vectorizable_store): Fix typo.  Eliminate new-line at end of
30917         comments.
30918
30919 2007-01-16  Jan Hubicka  <jh@suse.cz>
30920
30921         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
30922         cgraph edges too.
30923
30924 2007-01-15  Eric Christopher  <echristo@apple.com>
30925
30926         * ifcvt.c: Include vec.h, vecprim.h.
30927         (check_cond_move_block): New argument regs.
30928         Reorganize. Add registers used to regs.
30929         (cond_move_process_if_block): Use regs set above as
30930         loop bounds.
30931
30932 2007-01-15  Eric Christopher  <echristo@apple.com>
30933
30934         * config/darwin.h: Update copyright.
30935         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
30936         (LINK_COMMAND_SPEC): Add -u.
30937         (LINK_SPEC): Fix umbrella for above.
30938
30939 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
30940
30941         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
30942         glibc CVS.
30943
30944 2007-01-15  Tom Tromey  <tromey@redhat.com>
30945
30946         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
30947         * doc/install.texi (Testing): Don't mention jacks.
30948         (Configuration): Document --enable-java-maintainer-mode.  Move
30949         --with-java-home to libgcj-specific section.  Document
30950         --with-ecj-jar.
30951         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
30952
30953 2007-01-15  Jan Hubicka  <jh@suse.cz>
30954
30955         * tree-ssa-dce.c (DCE_TODOs): New.
30956         (propagate_necessity): Return if something changed.
30957         (eliminate_unnecessary_stmts): Likewise.
30958         (perform_tree_ssa_dce): Return TODO flags when needed.
30959         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
30960
30961 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
30962
30963         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
30964         (fyl2x_extend<mode>xf3_i387): New insn pattern.
30965         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
30966         patterns using X87MODEF12 mode macro.  Extend operand 1
30967         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
30968         (log10<mode>2): Ditto.
30969         (log2<mode>2): Ditto.
30970         (log1p<mode>2): Ditto.
30971         (logb<mode>2): Ditto.
30972         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
30973         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
30974         (*fxtractxf3_i387): Rename from *fxtractxf3.
30975         (fxtract_extend<mode>xf3_i387): New insn pattern.
30976         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
30977         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
30978         and gen_fyl2xxf3_i387().
30979
30980 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
30981
30982         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
30983         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
30984         get_loop_exit_edges.  Changed return type to bool.
30985         * cfgloop.h (fix_loop_placement): Declaration removed.
30986
30987 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
30988
30989         * param.h (MIN_VECT_LOOP_BOUND): New.
30990         * params.def (MIN_VECT_LOOP_BOUND): New.
30991         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
30992         argument - minimum threshold for number of iterations.
30993         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
30994         argument to declaration.
30995         * tree-vect-analyze.c (vect_analyze_operations): Check value of
30996         MIN_VECT_LOOP_BOUND.
30997         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
30998         slpeel_tree_peel_loop_to_edge with additional argument.
30999         (vect_do_peeling_for_alignment): Likewise.
31000         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
31001
31002 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
31003
31004         PR target/30413
31005         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
31006         operands of size 1.
31007
31008 2007-01-14  Jan Hubicka  <jh@suse.cz>
31009
31010         * tree-dfa.c (remove_referenced_var): New function.
31011         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
31012         prune referenced vars list too.
31013         * tree-flow.h (remove_referenced_var): Declare.
31014
31015 2007-01-14  Jan Hubicka  <jh@suse.cz>
31016
31017         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
31018         separately.
31019         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
31020         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
31021         * except.h (verify_eh_throw_table_statements): Kill prototype.
31022         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
31023         into call exrepssions.
31024         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
31025         eh trhow verifier.
31026         * tree-cfg.c: Include pointer-set.h.
31027         (verify_node_sharing): Work on pointer set.
31028         (verify_eh_throw_stmt_node): New.
31029         (verify_stmts): Use pointers sets, verify throw_stmt.
31030
31031 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
31032
31033         * ipa-reference.c (analyze_function): Consider also addresses taken
31034         in phi nodes.
31035
31036 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31037
31038         * c-typeck.c (null_pointer_constant_p): Replace use of
31039         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31040         (build_c_cast): Likewise.
31041
31042 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31043
31044         * tree.h (force_fit_type_double): Remove unused final argument.
31045         * c-common.c (constant_expression_warning): Replace use of
31046         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31047         (convert_and_check): Likewise.
31048         (shorten_compare): Update call to force_fit_type_double.
31049         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
31050         * convert.c (convert_to_pointer): Update call to
31051         force_fit_type_double.
31052         * fold-const.c (force_fit_type_double): Remove overflowed_const
31053         argument.
31054         (int_const_binop, fold_convert_const_int_from_int,
31055         fold_convert_const_int_from_real, fold_div_compare,
31056         fold_sign_changed_comparison, fold_unary, fold_negate_const,
31057         fold_abs_const, fold_not_const): Remove the final argument from
31058         calls to force_fit_type_double.
31059
31060 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31061
31062         * configure.ac: Set insn to "nop" for spu-*-* also.
31063         * configure: Regenerate.
31064
31065 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
31066
31067         * builtins.def : Add BUILT_IN_FREE.
31068
31069 2007-01-12  Jan Hubicka  <jh@suse.cz>
31070
31071         PR tree-optimization/30443
31072         * tree-inline.c (tree_function_versioning): Do not optimize when
31073         cloning for inlining.
31074
31075 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
31076
31077         * doc/loop.texi: Document recording of loop exits.
31078         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
31079         (update_single_exits_after_duplication,
31080         update_single_exit_for_duplicated_loop,
31081         update_single_exit_for_duplicated_loops): Removed.
31082         (duplicate_loop_to_header_edge): Do not call
31083         update_single_exits_after_duplication and
31084         update_single_exit_for_duplicated_loops.
31085         (loop_version): Do not update single_exit information.
31086         (fix_loop_structure): Use record_loop_exits instead of
31087         mark_single_exit_loops.
31088         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
31089         the lists of loop exits.
31090         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
31091         split_edge, merge_blocks): Update the lists of loop exits.
31092         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
31093         loop_optimizer_init.
31094         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
31095         of mark_single_exit_loops.
31096         (loop_optimizer_finalize): Call release_recorded_exits.
31097         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
31098         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
31099         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
31100         update single exit information.
31101         * lambda-code.c (perfect_nestify): Ditto.
31102         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
31103         (mark_single_exit_loops): Removed.
31104         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
31105         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
31106         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
31107         functions.
31108         (get_loop_exit_edges, single_exit): Use recorded exit lists.
31109         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
31110         (verify_loop_structure): Verify consistency of the exit lists.
31111         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
31112         (set_single_exit): Removed.
31113         * cfgloop.h (struct loop_exit): New function.
31114         (struct loop): single_exit_ field replaced by exits field.
31115         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
31116         LOOPS_HAVE_RECORDED_EXITS.
31117         (struct loops): Added exits hash.
31118         (mark_single_exit_loops, set_single_exit): Declaration removed.
31119         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
31120
31121 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31122
31123         * doc/invoke.texi: Avoid use of @headitem.
31124
31125 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31126
31127         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
31128
31129 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31130
31131         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
31132         list of targets.
31133
31134 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31135             Richard Sandiford  <richard@codesourcery.com>
31136
31137         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
31138         * config/m68k/m68k.opt: Resort options.
31139         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
31140
31141 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31142             Richard Sandiford  <richard@codesourcery.com>
31143
31144         * doc/invoke.texi: Document the macros that are defined by
31145         m68k's -mtune and -mhard-float options.
31146         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
31147         (m68k_cpp_cpu_family): Likewise.
31148         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
31149         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
31150         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
31151         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
31152         (m68k_cpp_cpu_family): Likewise.
31153
31154 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31155
31156         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
31157         macros besides mc68000 as tuning macros.  Use a switch statement
31158         to set them and mcpu32.
31159
31160 2007-01-12  Julian Brown  <julian@codesourcery.com>
31161
31162         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
31163         (TARGET_68040_ONLY): Rename to...
31164         (TARGET_68040): ...this.
31165         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
31166         * config/m68k/m68k.md: Likewise.
31167
31168 2007-01-12  Julian Brown  <julian@codesourcery.com>
31169             Nathan Sidwell  <nathan@codesourcery.com>
31170             Richard Sandiford  <richard@codesourcery.com>
31171
31172         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
31173         the -mcpu= argument associated with the --with-cpu setting.
31174         Define M68K_DEFAULT_TUNE to the default -mtune= option,
31175         if different from the one implied by the -mcpu setting.
31176         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
31177         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
31178         * doc/invoke.texi: Mention ColdFire in the introduction to the
31179         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
31180         -mno-div and -mhard-float options.  Make -m68881 a synonym for
31181         -mhard-float.  Document the previously-undocumented -m5206e,
31182         -m528x, -m5307 and -m5407 options.  Tweak the existing option
31183         documentation for consistency.
31184         * doc/install.texi: Mention new --with-cpu arguments.
31185         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
31186         default CPU if neither -mcpu nor -march are specified.
31187         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
31188         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
31189         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
31190         using m68k_tune to decide between families that implement the
31191         same ISA.  Use m68k_tune to set __mcfv4e__.
31192         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
31193         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
31194         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
31195         (FL_ISA_C, FL_ISA_MMU): New macros.
31196         (MASK_COLDFIRE): Delete.
31197         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
31198         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
31199         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
31200         (TARGET_HARD_FLOAT): Do not define here.
31201         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
31202         (TUNE_68000): New macro.
31203         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
31204         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
31205         (TUNE_CFV2): Redefine in terms of m68k_tune.
31206         (uarch_type, target_device, fpu_type): New enums.
31207         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
31208         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
31209         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
31210         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
31211         (FL_FOR_isa_c): New macros.
31212         (m68k_isa): New enum.
31213         (m68k_target_selection): New structure.
31214         (all_devices, all_isas, all_microarchs): New tables.
31215         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
31216         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
31217         (MASK_ALL_CPU_BITS): Delete.
31218         (m68k_find_selection): New function.
31219         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
31220         Map the legacy target options to a combination of the new ones.
31221         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
31222         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
31223         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
31224         settings.
31225         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
31226         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
31227         properties.
31228         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
31229         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
31230         * config/m68k/m68k-devices.def: New file.
31231
31232 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31233             Nathan Sidwell  <nathan@codesourcery.com>
31234
31235         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
31236         (SUBTARGET_EXTRA_SPECS): New macros.
31237         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
31238         use %(asm_cpu_spec) instead.
31239         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
31240         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
31241         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
31242         (EXTRA_SPECS): Rename to...
31243         (SUBTARGET_EXTRA_SPECS): ...this.
31244
31245 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31246             Richard Sandiford  <richard@codesourcery.com>
31247             Julian Brown  <julian@codesourcery.com>
31248
31249         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
31250         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
31251         to the configuration's default CPU.
31252         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
31253         Remove default masks.
31254         (m680[012]0-*-*): Set the default with_cpu to the first part of
31255         the target name.
31256         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
31257         (m68k*-*-linux): Extend the --with-cpu handling to...
31258         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
31259         and m68010.  Don't set target_cpu_default2.
31260         * doc/install.texi: Document --with-cpu for m68k.
31261         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
31262         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
31263         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
31264         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
31265         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
31266         (ASM_SPEC): Remove use of %(asm_cpu_default).
31267         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
31268         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
31269         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
31270         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
31271         __HAVE_FPU__ if TARGET_HARD_FLOAT.
31272         (TARGET_DEFAULT): Delete.
31273         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
31274         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
31275         (CPP_CPU_SPEC): Delete.
31276         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
31277         the appropriate string.
31278         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
31279         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
31280         (ASM_SPEC): Don't use %(asm_default_spec).
31281         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
31282         TARGET_DEFAULT and add MASK_68881.
31283         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
31284
31285 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31286
31287         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
31288         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
31289         MASK_68010 alongside MASK_68020.
31290         * doc/invoke.texi: Document -m68010.
31291         * config/m68k/m68k.opt (m68010): New.
31292         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
31293         if TUNE_68010.
31294         (TUNE_68010): New macro.
31295         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
31296         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
31297         (M68K_CPU_m68332): Add MASK_68010.
31298         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
31299         fallback definition.
31300         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
31301         defines.
31302         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
31303         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
31304         to all entries that use MASK_68020.
31305         (output_move_simode_const, output_move_himode, output_move_qimode)
31306         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
31307         instead of TARGET_68020 to select clr behavior.  Remove comment
31308         about there being no TARGET_68010.
31309         * config/m68k/m68k.md: Likewise throughout.
31310
31311 2007-01-12  Julian Brown  <julian@codesourcery.com>
31312
31313         * config/m68k/m68k.h (TARGET_ISAB): New macro.
31314         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
31315         * config/m68k/m68k.md: Likewise.
31316
31317 2007-01-12  Julian Brown  <julian@codesourcery.com>
31318
31319         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
31320         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
31321
31322 2007-01-12  Julian Brown  <julian@codesourcery.com>
31323
31324         * config/m68k/m68k.h (TUNE_68040_60): New macro.
31325         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
31326         * config/m68k/m68k.md: Likewise.
31327
31328 2007-01-12  Julian Brown  <julian@codesourcery.com>
31329             Richard Sandiford  <richard@codesourcery.com>
31330
31331         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
31332         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
31333         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
31334         TARGET_CPU32.
31335         (TARGET_CPU32): Rename to...
31336         (TUNE_CPU32): ...this.
31337         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
31338         (TUNE_CFV2): New macros.
31339         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
31340         remove conditions that are implied by TARGET_68020.
31341         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
31342         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
31343         (m68k_output_function_epilogue): Likewise.
31344         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
31345         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
31346         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
31347         non-68000 timings.  Refactor multiplication and division costs.
31348         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
31349         TUNE_CPU32 instead of TARGET_CPU32.
31350         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
31351         and TUNE_68060 instead of TARGET_68060.
31352         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
31353         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
31354         TARGET_CPU32.
31355         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
31356         && !TARGET_COLDFIRE" to choose between moveq and clr.
31357         Likewise in the unnamed movsf pattern.
31358         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
31359         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
31360         ashiftrt pattern.
31361
31362 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31363
31364         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
31365         of tabbing before backslashes.
31366
31367 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31368
31369         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
31370         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
31371         (ASM_OUTPUT_INTERNAL_LABEL): Define.
31372
31373 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31374
31375         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
31376         find_interesting_uses_cond.
31377         (find_interesting_uses_cond): Use extract_cond_operands.
31378         (rewrite_use_compare): Use extract_cond_operands and
31379         force_gimple_operand_bsi.  Do not call update_stmt.
31380         (determine_use_iv_cost_condition): Use extract_cond_operands.
31381         Return cheaper of using original bound and changing the exit bound.
31382
31383 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
31384
31385         PR tree-optimization/29516
31386         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
31387         most_expensive_mult_to_index, addr_to_parts,
31388         create_mem_ref, maybe_fold_tmr): Make the type of
31389         fields of TARGET_MEM_REF sizetype.
31390         (move_fixed_address_to_symbol, move_pointer_to_base):
31391         New functions.
31392         * tree.def (TARGET_MEM_REF): Add comment on types of
31393         the operands.
31394
31395 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
31396
31397         * c-common.c (vector_types_convertible_p): Treat opaque types as
31398         always convertible if they have the same size, but not otherwise.
31399
31400 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
31401
31402         * ifcvt.c (struct noce_if_info): Add comments to the fields.
31403         Remove the b_unconditional field.
31404         (noce_try_sign_mask): Do not look at b_unconditional.
31405         (noce_process_if_block): Do not use merge_if_blocks.  Update
31406         the CFG here.  Do not set b_unconditional.
31407         (cond_move_process_if_block): Likewise.
31408         (find_cond_trap): Likewise.
31409         (check_cond_move_block): Require simple jump insns at the end
31410         of the basic block.
31411
31412 2007-01-11  Jan Hubicka  <jh@suse.cz>
31413
31414         PR tree-optimization/1046
31415         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
31416         when alias info is not ready.
31417         (pass_tail_recursion): Do not require aliasing.
31418         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
31419         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
31420         * tree-ssa-copy.c (pass_copy_prop): Likewise.
31421         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
31422         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
31423         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
31424         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
31425         before inlining.
31426         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
31427         When aliasing is not build, mark statement as volatile.
31428
31429 2007-01-11  Tom Tromey  <tromey@redhat.com>
31430
31431         PR preprocessor/15185, PR preprocessor/20989:
31432         * doc/cppopts.texi <-MT>: Update description of algorithm for
31433         computing default target.
31434         <-M, -MD>: Reword "basename" text.
31435
31436 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31437
31438         * builtins.c (expand_builtin_pow, expand_builtin_powi,
31439         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
31440         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
31441         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
31442         fold_builtin_bswap, real_constp, fold_builtin_pow,
31443         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
31444         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
31445         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31446         * convert.c (convert_to_pointer): Likewise.
31447         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
31448         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
31449         const_binop, fold_convert_const_int_from_int,
31450         fold_convert_const_int_from_real,
31451         fold_convert_const_real_from_real, sign_bit_p,
31452         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
31453         fold_sign_changed_comparison, fold_unary, fold_comparison,
31454         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
31455         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
31456         * print-tree.c (print_node_brief, print_node): Likewise.
31457         * stor-layout.c (place_field, layout_type): Likewise.
31458         * tree-chrec.c (keep_cast): Likewise.
31459         * tree.c (build_vector, build_real, build_real_from_int_cst,
31460         build_complex): Likewise.
31461
31462 2007-01-11  Roger Sayle  <roger@eyesopen.com>
31463
31464         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
31465         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
31466
31467 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
31468
31469         * configure.ac (strict1_warn): Rename to strict_warn.
31470         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
31471         cc_set_by_configure, quoted_cc_set_by_configure,
31472         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
31473         all_boot_languages, all_stagestuff): Remove.
31474         (target_list): Remove bootstrap targets.
31475         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
31476         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
31477         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
31478         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
31479         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
31480         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
31481         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
31482         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
31483         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
31484         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
31485         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
31486         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
31487         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
31488         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
31489         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
31490         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
31491         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
31492         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
31493         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
31494         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
31495         (mostlyclean): Adjust.
31496         (clean, distclean): Don't mention bootstrap stuff.
31497         * configure: Regenerate.
31498         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
31499         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
31500         treelang/config-lang.in (stagestuff): Remove.
31501         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
31502         stageprofile, stagefeedback, stagestuff): Remove mention.
31503
31504 2007-01-11  Nick Clifton  <nickc@redhat.com>
31505
31506         * config/mcore/predicates.md (mcore_general_movesrc_operand):
31507         Accept CONSTs.
31508         (mcore_general_movdst_operand): Do not accept CONST_INTs.
31509         (mcore_arith_K_S_operand): Run the test for the S constraint not
31510         the test for the M constraint.
31511         (mcore_addsub_operand): Do not accept integer values that are
31512         larger than 32 bits.
31513         * config/mcore/mcore.md: Remove unused constraints from split.
31514         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
31515         (addsi3): Likewise.
31516         (allocate_stack): Likewise.
31517         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
31518         operands to 32 bits.
31519         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
31520         INTVAL.
31521         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
31522         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
31523         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
31524         mcore_output_bclri, mcore_output_andn, output_inline_const,
31525         mcore_output_move, mcore_output_movedouble): Likewise.
31526         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
31527         (output_inline_const): Likewise.
31528         (output_inline_const): Fix format strings used in sprintf
31529         statements.
31530         * config/mcore/mcore-protos.h: Update prototypes for changed
31531         functions in mcore.c.
31532         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
31533         HOST_WIDE_INT and not int.
31534         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
31535         CONST_OK_FOR_N): Likewise.
31536         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
31537         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
31538         an INTVAL.
31539
31540 2007-01-10  Jan Hubicka  <jh@suse.cz>
31541
31542         * tree-vrp.c (remove_range_assertions): Release defs.
31543         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
31544         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
31545
31546 2007-01-10  Paul Brook  <paul@codesourcery.com>
31547
31548         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
31549         * config/arm/arm.md (mulsi3subsi): New insn.
31550
31551 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
31552
31553         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
31554         (tree_transform_and_unroll_loop): New.
31555         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
31556         Declare.
31557
31558 2007-01-10  Robert Kennedy <jimbob@google.com>
31559
31560         * fold-const.c (fold_comparison): Fold comparisons like (x *
31561         1000 < 0) to (x < 0).
31562
31563 2007-01-10  Ian Lance Taylor  <iant@google.com>
31564
31565         * tree-pretty-print.c (dump_generic_node): Print parentheses when
31566         operands have the same priority.
31567
31568 2007-01-10  Tom Tromey  <tromey@redhat.com>
31569
31570         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
31571         (fold_binary): Likewise.
31572         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
31573         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
31574         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
31575         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
31576         * langhooks.h (struct lang_hooks): Removed field
31577         'can_use_bit_fields_p'.
31578
31579 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
31580
31581         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
31582
31583 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
31584
31585         * function.c (get_last_funcdef_no): New function.
31586         * function.h (get_last_funcdef_no): Declare.
31587         * tree-inline.c (initialize_cfun): Add initialization.
31588         (tree_function_versioning): Cleanup.
31589
31590 2007-01-10  Jan Hubicka  <jh@suse.cz>
31591
31592         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
31593         PHIs.
31594
31595 2007-01-10  Sa Liu  <saliu@de.ibm.com>
31596             Ben Elliston  <bje@au.ibm.com>
31597
31598         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
31599         for SAVE_NONLOCAL and Pmode for any other save level.
31600         * spu-protos.h (spu_restore_stack_block): Declare.
31601         * spu.md (save_stack_block): Remove.
31602         (restore_stack_block): Call spu_restore_stack_block.
31603         * spu.c (spu_restore_stack_block): New function.
31604         (spu_expand_epilogue): Remove old comment.
31605
31606 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
31607
31608         PR tree-optimization/30322
31609         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
31610         (cand_value_at): Return the value as aff_tree.
31611         (may_eliminate_iv): Convert the bound from aff_tree to tree.
31612         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
31613         aff_combination_mult): New functions.
31614         (aff_combination_add): Use aff_combination_add_cst.
31615         (aff_combination_convert): Allow conversions to a wider type.
31616         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
31617         * tree-affine.h (aff_combination_mult): Declare.
31618
31619 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
31620
31621         * doc/tm.texi: Update documentation to reflect reality of exec
31622         and start file search behaviours. Update copyright year.
31623         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
31624         header file directories.
31625
31626 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
31627
31628         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
31629         (*cosxf2): Rename to cosxf2_i387.
31630         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
31631         using X87MODEF12 mode macro. Rename patterns to
31632         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
31633         for SSE math.
31634         (*cosdf2, *cossf2): Ditto.
31635         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
31636         to match extended input operands.
31637         (sincos<mode>3): New expander.
31638         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
31639         insn patterns and corresponding splitters.
31640
31641 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
31642
31643         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
31644         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
31645
31646 2007-01-09  Nicolas Pitre  <nico@cam.org>
31647
31648         PR target/30173
31649         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
31650
31651 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31652
31653         * target.h (struct gcc_target): New field library_rtti_comdat.
31654         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
31655         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
31656         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
31657         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
31658
31659 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
31660
31661         * doc/invoke.texi (Optimize Options): Correct description of -O0.
31662
31663 2007-01-08  Richard Guenther  <rguenther@suse.de>
31664
31665         * tree.h (force_fit_type_double): Export.
31666         (force_fit_type): Remove.
31667         * fold-const.c (force_fit_type_double): New function.
31668         (force_fit_type): Remove.
31669         (int_const_binop): Use it.
31670         (fold_convert_const_int_from_int): Likewise.
31671         (fold_convert_const_int_from_real): Likewise.
31672         (fold_div_compare): Likewise.
31673         (fold_sign_changed_comparison): Likewise.
31674         (fold_unary): Likewise.
31675         (fold_negate_const): Likewise.
31676         (fold_abs_const): Likewise.
31677         (fold_not_const): Likewise.
31678         * c-common.c (shorten_compare): Use force_fit_type_double.
31679         * convert.c (convert_to_pointer): Likewise.
31680
31681 2007-01-08  Richard Guenther  <rguenther@suse.de>
31682
31683         * tree.h (build_int_cst_wide_type): Export.
31684         * tree.c (build_int_cst_wide_type): New function.
31685         (build_int_cst_wide): Fix comment.
31686         * builtins.c (fold_builtin_object_size): Use build_int_cst
31687         to build -1 or 0 of the correct type.  Use fit_double_type
31688         to check for overflow.
31689         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
31690         to build the mask.
31691         (decode_field_reference): Likewise.
31692         (all_ones_mask_p): Likewise.
31693         (native_interpret_int): Use build_int_cst_wide_type.
31694         (fold_binary): Use build_int_cst_type to build an all-ones
31695         value.
31696         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
31697
31698 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
31699
31700         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
31701
31702 2007-01-09  Ben Elliston  <bje@au.ibm.com>
31703
31704         * genautomata.c (STATS_OPTION): New option.
31705         (stats_flag): New flag.
31706         (gen_automata_option): Handle it.
31707         (initiate_automaton_gen): Ditto.
31708         (write_automata): Output statistics only if stats_flag is
31709         set. Likewise, output time statistics only if time_flag is set.
31710         * doc/md.texi (Processor pipeline description): Document new flag.
31711
31712 2007-01-08  Richard Guenther  <rguenther@suse.de>
31713
31714         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
31715         * tree.c (build_int_cst_type): Likewise.
31716         (size_in_bytes): Don't call force_fit_type on the result.
31717         (int_fits_type_p): Use fit_double_type.
31718         * fold-const.c (fit_double_type): New function.
31719         (force_fit_type): Use it.
31720         * tree.h (fit_double_type): Export.
31721
31722 2007-01-08  Jan Hubicka  <jh@suse.cz>
31723
31724         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
31725         * ipa.c (function_and_variable_visibility): Fix return type.
31726
31727 2007-01-08  Richard Guenther  <rguenther@suse.de>
31728
31729         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
31730         of offset to build the index.
31731         * tree-pretty-print.c (dump_generic_node): Don't build negated
31732         const just for printing.
31733         * c-pretty-print.c (pp_c_integer_constant): Likewise.
31734         * builtins.c (fold_builtin_int_roundingfn): Check if result
31735         fits the type by using force_fit_type and comparing the result.
31736         * predict.c (predict_loops): Use compare_tree_int for comparison.
31737         * tree.c (build_int_cst): Fall back to integer_type_node for
31738         NULL_TREE type.
31739         (build_int_cst_wide): Assert type is non-null.
31740
31741 2007-01-08  Roberto Costa  <roberto.costa@st.com>
31742
31743         * tree-vrp.c (extract_range_from_cond_expr): New.
31744         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
31745         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
31746         as expressions.
31747         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
31748         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
31749         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
31750         used as expressions.
31751         * tree-object-size.c (cond_expr_object_size): New.
31752         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
31753
31754 2007-01-08  Jan Hubicka  <jh@suse.cz>
31755
31756         * tree-ssa-forwprop.c (forward_propagate_into_cond,
31757         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
31758         statement.
31759
31760 2007-01-08  Richard Guenther  <rguenther@suse.de>
31761
31762         PR tree-optimization/23603
31763         * tree-vrp.c (set_value_range_to_truthvalue): New function.
31764         (extract_range_from_binary): Fall back to truthvalue instead of
31765         varying for TRUTH_*_EXPR.
31766         (extract_range_from_comparison): Fall back to truthvalue instead of
31767         varying.
31768         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
31769         if all visited PHI values were constant.
31770
31771 2007-01-08  Jan Hubicka  <jh@suse.cz>
31772
31773         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
31774         (cgraph_analyze_function): break out from ...
31775         (cgraph_finalize_compilation_unit): ... here.
31776         (cgraph_expand_function): Remove forgoten commented out line.
31777         (cgraph_optimize): Analyze functions.
31778
31779 2007-01-08  Jan Hubicka  <jh@suse.cz>
31780
31781         * tree-pas.h (TODO_remove_function): New flag.
31782         (TODO_update*): Renumber.
31783         (pass_ipa_increase_alignment,
31784         pass_ipa_function_and_variable_visibility): New passes.
31785         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
31786         (cgraph_function_and_variable_visibility): Move to ipa.c
31787         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
31788         cgraph_increase_alignment.
31789         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
31790         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
31791         calling tree-inline.
31792         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
31793         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
31794         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
31795         (gate_increase_alignment): New function.
31796         (pass_ipa_increase_alignment): New pass.
31797         * ipa.c: Inline tree-pass.h and timevar.h
31798         (function_and_variable_visibility): Move here from cgraphunit.c
31799         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
31800         * passes.c (init_optimization_passes): Add the two new passes.
31801         (execute_todo): Handle cgraph_remove_functions.
31802
31803 2007-01-08  Nick Clifton  <nickc@redhat.com>
31804
31805         * config/frv/predicates.md (reg_or_0_operand): Accept
31806         CONST_DOUBLEs.
31807
31808 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
31809
31810         * config/bfin/rtems.h, config/bfin/t-rtems: New.
31811         * config.gcc: Add bfin*-rtems*.
31812
31813 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31814
31815         * c.opt: Add -flax-vector-conversions.
31816         * c-typeck.c (convert_for_assignment): Pass flag to
31817         vector_types_convertible_p to allow emission of note.
31818         (digest_init): Likewise.
31819         * c-opts.c: Handle -flax-vector-conversions.
31820         * c-common.c (flag_lax_vector_conversions): New.
31821         (vector_types_convertible_p): Unless -flax-vector conversions
31822         has been passed, disallow conversions between vectors with
31823         differing numbers of subparts and/or element types.  If such
31824         a conversion is disallowed, possibly emit a note on the first
31825         occasion only to inform the user of -flax-vector-conversions.
31826         The new last argument specifies this.
31827         * c-common.h (flag_lax_vector_conversions): New.
31828         (vector_types_convertible_p): Add extra argument.
31829         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
31830         char_type_node for V*QI type vectors.
31831         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
31832         Update to satisfy new typechecking rules.
31833         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
31834         C and C++ variants.
31835         * doc/invoke.texi (C Dialect Options): Document
31836         -flax-vector-conversions.
31837
31838 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31839
31840         PR tree-optimization/29877
31841         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
31842         a register variable on the RHS to not be replaceable.
31843
31844 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
31845         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
31846         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
31847         const_simm15, const_pow2, const_npow2): Added.
31848         * config/score/misc.md (insv, extv, extzv, movmemsi,
31849         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
31850         * config/score/score.c (score_address_cost, score_select_cc_mode):
31851         Added.
31852         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
31853         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
31854         Update score_print_operand.
31855         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
31856         Adjust register allocate order and update some macro define.
31857         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
31858         mdx_block_move_straight, mdx_block_move_loop_head,
31859         mdx_block_move_loop_body, mdx_block_move_loop_foot,
31860         mdx_block_move_loop, mdx_block_move): Added.
31861         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
31862         mdp_limm): Updated and fix some bug and typo.
31863         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
31864         (movsf, movdf, doloop_end): Added.
31865
31866 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
31867
31868         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
31869         config/arm/thumb2.md: Fix comment typos.
31870         * doc/extend.texi: Fix a typo.
31871
31872 2007-01-07  Eric Christopher  <echristo@apple.com>
31873
31874         * configure.ac: Check for __stack_chk_fail for darwin.
31875         * configure: Regenerate.
31876
31877 2007-01-07  Richard Guenther  <rguenther@suse.de>
31878
31879         * tree-vrp.c (extract_range_from_assert): CSE calls to
31880         compare_values where possible.
31881         (extract_range_from_unary_expr): Likewise.
31882
31883 2007-01-07  Anatoly Sokolov <aesok@post.ru>
31884
31885         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
31886         * config/avr/avr.c (call_insn_operand): Delete function.
31887         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
31888         instead of register number. Use predicates.
31889         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
31890         call_insn_operand): Add.
31891
31892 2007-01-06  Jan Hubicka  <jh@suse.cz>
31893
31894         * tree-pass.h (pass_build_cgraph_edges): Declare.
31895         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
31896         (visited_nodes): Remove.
31897         (cgraph_create_edges): Move to cgraphbuild.c; rename to
31898         build_cgrpah_edges; make visited_nodes local.
31899         (cgraph_process_new_functions): DO not call initialize_inline_failed.
31900         (record_references_in_initializer): Move to cgraphbuild.c
31901         (initialize_inline_failed, rebuild_cgraph_edges,
31902         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
31903         (verify_cgraph_node): Make visited_nodes local.
31904         (cgraph_analyze_function): Do not call cgraph_create_edges and
31905         initialize_inline_failed.
31906         (cgraph_expand_function): Do not call cgraph_lower_function;
31907         assert that function is already lowered.
31908         * Makefile.in (cgraphbuild.o): New.
31909         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
31910         at the end of lowering passes.
31911
31912 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
31913
31914         * ifcvt.c (cond_move_convert_if_block): New function, code
31915         factored out from...
31916         (cond_move_process_if_block): ...here.  Call the new function
31917         on the THEN and ELSE blocks.
31918         (merge_if_block): Do not copy global_live_at_end, merge_blocks
31919         already takes care of this.
31920
31921 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31922
31923         PR c/19978
31924         * tree.h (TREE_OVERFLOW_P): New.
31925         * c-typeck.c (parser_build_unary_op): Warn only if result
31926         overflowed and operands did not.
31927         (parser_build_binary_op): Likewise.
31928         (convert_for_assignment): Remove redundant overflow_warning.
31929         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
31930
31931 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31932
31933         * c-typeck.c (store_init_value): Split over two lines to follow
31934         the GNU coding style.
31935
31936 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
31937
31938         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
31939         __GXX_EXPERIMENTAL_CXX0X__.
31940         * doc/cpp.texi: Same.
31941
31942 2007-01-05  Richard Guenther  <rguenther@suse.de>
31943
31944         PR middle-end/27826
31945         * tree.c (get_narrower): Do not construct COMPONENT_REFs
31946         with mismatched types.  Instead explicitly build a
31947         conversion NOP_EXPR.
31948
31949 2007-01-05  Ian Lance Taylor  <iant@google.com>
31950
31951         * c-common.c (decl_with_nonnull_addr_p): New function.
31952         (c_common_truthvalue_conversion): Call it.
31953         * c-typeck.c (build_binary_op): Likewise.
31954         * c-common.h (decl_with_nonnull_addr_p): Declare.
31955
31956 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
31957
31958         PR c/30360
31959         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
31960         denom against 0.0.
31961
31962 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
31963
31964         * doc/install.texi (Final install): Document the fact that
31965         the GNAT runtime should not be stripped.
31966
31967 2007-01-04  Jan Hubicka  <jh@suse.cz>
31968
31969         * tree-inline.c (fold_marked_statements): Update operand caches
31970         and EH after folding
31971
31972 2007-01-04  Ian Lance Taylor  <iant@google.com>
31973
31974         * c-common.c (check_function_nonnull): Whitespace fix.
31975
31976 2007-01-04  Jan Hubicka  <jh@suse.cz>
31977
31978         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
31979         comitted older version of patch.
31980         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
31981         function, celanup cfg and collect garbage.
31982
31983 2007-01-04  Mike Stump  <mrs@apple.com>
31984
31985         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
31986         (clean): Likewise.
31987
31988 2007-01-04  Eric Christopher  <echristo@apple.com>
31989
31990         * libgcc2.c (__bswapsi2): Use SItype.
31991         (__bswapdi2): Use DItype.
31992         * libgcc2.h: Update for above.
31993
31994 2007-01-04  Paul Brook  <paul@codesourcery.com>
31995
31996         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
31997         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
31998         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
31999         umulsidi3, umulsidi3adddi, smulsi3_highpart,
32000         umulsi3_highpart): Make conditional on !arm_arch6.
32001         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
32002         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
32003         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
32004         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
32005         umulsi3_highpart_v6): New insns.
32006
32007 2007-01-04  Roger Sayle  <roger@eyesopen.com>
32008
32009         * fold-const.c (fold_convert): When casting an expression to void,
32010         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
32011         have a type.  Instead of attempting to build a NOP_EXPR, return
32012         these "special" trees directly.
32013
32014 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
32015
32016         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
32017         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
32018         rs6000_cost->fp not 0 as adjustment for outer NEG.
32019
32020 2007-01-04  Jan Hubicka  <jh@suse.cz>
32021
32022         * cgraph.c (cgraph_release_function_body): New function.
32023         (cgraph_remove_node): Use it.
32024         * cgraph.h (cgraph_release_function_body): Declare.
32025         * cgraphunit.c (cgraph_expand_function): Use it.
32026         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
32027         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
32028         is initialized and while compilation of other function is running.
32029         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
32030         statement CFG annotations from here to ...
32031         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
32032
32033 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
32034
32035         * cfgloop.h (enum li_flags): Make the constants powers of two.
32036
32037 2007-01-04  Jan Hubicka  <jh@suse.cz>
32038
32039         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
32040         set.
32041         (fold_marked_statements): New function.
32042         (optimize_inline_calls, tree_function_versioning): Fold new statements.
32043         * tree-inline.h (copy_body_data): Add statements_to_fold.
32044
32045 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
32046
32047         * config.gcc: Mention libgcc/config.host.
32048         * Makefile.in: Update comments mentioning libgcc.
32049         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
32050         (all.cross, start.encap, rest.encap, rest.cross): Update
32051         dependencies for libgcc move.
32052         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
32053         (clean-target, clean-target-libgcc): Delete.
32054         (srcdirify, GCC_EXTRA_PARTS): New macros.
32055         (libgcc-support, libgcc.mvars): New rules.
32056         (distclean): Remove mention of mklibgcc.
32057         (install): Don't reference INSTALL_LIBGCC.
32058         (install-common): Don't reference EXTRA_PARTS.
32059         (install-libgcc, install-multilib): Delete rules.
32060         * mklibgcc.in: Delete file.
32061         * doc/configfiles.texi: Don't mention mklibgcc.
32062
32063         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
32064         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
32065         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
32066         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
32067         (mklibgcc, ldblspecs): Likewise.
32068
32069         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
32070         (posixpre.def): Use $(T).
32071         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
32072         (SHLIB_SRC, SHLIB_INSTALL): Delete.
32073         (SHLIB_LINK): Make dummy.
32074         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
32075
32076         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
32077
32078         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
32079         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
32080         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
32081         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
32082
32083         * configure.ac (all_outputs): Remove mklibgcc.
32084         * configure: Regenerated.
32085
32086 2007-01-03  Josh Conner  <jconner@apple.com>
32087
32088         PR middle-end/29683
32089         * calls.c (compute_argument_addresses): Set stack and stack_slot
32090         for partial args, too.
32091         (store_one_arg): Use locate.size.constant for the size when
32092         generating a save_area.
32093
32094 2007-01-03  Robert Kennedy <jimbob@google.com>
32095
32096         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
32097         whose definitions are deleted due to basic block merging.
32098
32099 2007-01-03  Paul Brook  <paul@codesourcery.com>
32100
32101         PR target/16634
32102         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
32103         functions.
32104         (use_return_insn): Return 0 for Thumb interrupt functions.
32105         (print_multi_reg): Add rfe argument for IRQ returns.
32106         (arm_output_epilogue): Pop interrupt return address directly into PC.
32107         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
32108
32109 2007-01-03  Paul Brook  <paul@codesourcery.com>
32110
32111         Merge from sourcerygxx-4_1.
32112         * config/arm/thumb2.md: New file.
32113         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
32114         Thumb-2.
32115         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
32116         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32117         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
32118         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
32119         tables.
32120         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32121         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
32122         comptibility.
32123         * config/arm/ieee754-sf.S: Ditto.
32124         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
32125         (thumb1_base_register_rtx_p): ... to this.
32126         (thumb_index_register_rtx_p): Rename...
32127         (thumb1_index_register_rtx_p): ... to this.
32128         (thumb_output_function_prologue): Rename...
32129         (thumb1_output_function_prologue): ... to this.
32130         (thumb_legitimate_address_p): Rename...
32131         (thumb1_legitimate_address_p): ... to this.
32132         (thumb_rtx_costs): Rename...
32133         (thumb1_rtx_costs): ... to this.
32134         (thumb_compute_save_reg_mask): Rename...
32135         (thumb1_compute_save_reg_mask): ... to this.
32136         (thumb_final_prescan_insn): Rename...
32137         (thumb1_final_prescan_insn): ... to this.
32138         (thumb_expand_epilogue): Rename...
32139         (thumb1_expand_epilogue): ... to this.
32140         (arm_unwind_emit_stm): Rename...
32141         (arm_unwind_emit_sequence): ... to this.
32142         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
32143         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
32144         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
32145         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
32146         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
32147         thumb2_output_casesi): New functions.
32148         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
32149         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
32150         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
32151         THUMB2_WORK_REGS): Define.
32152         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
32153         arm_condexec_mask, arm_condexec_masklen)): New variables.
32154         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
32155         (arm_override_options): Check new CPU capabilities.
32156         Set new architecture flag variables.
32157         (arm_isr_value): Handle v7m interrupt functions.
32158         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
32159         Thumb-2.
32160         (const_ok_for_arm): Handle Thumb-2 constants.
32161         (arm_gen_constant): Ditto.  Use movw when available.
32162         (arm_function_ok_for_sibcall): Return false for v7m interrupt
32163         functions.
32164         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
32165         (thumb_find_work_register, arm_load_pic_register,
32166         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
32167         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
32168         print_multi_reg, output_mov_long_double_fpa_from_arm,
32169         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
32170         output_mov_double_fpa_from_arm, output_move_double,
32171         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
32172         output_return_instruction, arm_output_function_prologue,
32173         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
32174         arm_output_mi_thunk, thumb_set_return_address): Ditto.
32175         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
32176         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
32177         (arithmetic_instr, shift_op): Use arm_shift_nmem.
32178         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
32179         '!' and 'L'.
32180         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
32181         (thumb_expand_prologue): Use thumb_set_frame_pointer.
32182         (arm_file_start): Output directive for unified syntax.
32183         (arm_unwind_emit_set): Handle stack alignment instruction.
32184         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
32185         Add v6t2, v7, v7a, v7r and v7m.
32186         (RETLDM): Add Thumb-2 code.
32187         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
32188         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
32189         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
32190         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
32191         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
32192         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
32193         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
32194         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
32195         ADJUST_INSN_LENGTH): Define.
32196         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
32197         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
32198         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
32199         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
32200         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
32201         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
32202         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
32203         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
32204         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
32205         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
32206         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
32207         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
32208         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
32209         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
32210         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
32211         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
32212         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
32213         cortex-m3.
32214         * config/arm/arm-tune.md: Regenerate.
32215         * config/arm/arm-protos.h: Update prototypes.
32216         * config/arm/vfp.md: Enable patterns for Thumb-2.
32217         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
32218         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
32219         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
32220         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
32221         * config/arm/libunwind.S: Add Thumb-2 code.
32222         * config/arm/constraints.md: Update include Thumb-2.
32223         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
32224         * config/arm/ieee754-df.S: Ditto.
32225         * config/arm/bpabi.S: Ditto.
32226         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
32227         * config/arm/predicates.md (low_register_operand,
32228         low_reg_or_int_operand, thumb_16bit_operator): New.
32229         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
32230         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
32231         * config/arm/t-arm-elf: Add armv7 multilib.
32232         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
32233         Include thumb2.md.
32234         (UNSPEC_STACK_ALIGN, ce_count): New.
32235         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
32236         arm_zero_extendsidi2, arm_zero_extendqidi2): New
32237         insns/expanders.
32238         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
32239         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
32240         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
32241         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
32242         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
32243         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
32244         insns.
32245         * doc/extend.texi: Document ARMv7-M interrupt functions.
32246         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
32247
32248 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
32249
32250         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
32251         (struct _Unwind_Context): Rename args_size to flags, remove
32252         signal_frame field, add a new args_size field and version field.
32253         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
32254         _Unwind_IsExtendedContext): New inline functions.
32255         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
32256         Assume by_value array is only present if _Unwind_IsExtendedContext.
32257         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
32258         _Unwind_IsSignalFrame.
32259         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
32260         (uw_update_context_1): Use _Unwind_SetSignalFrame.
32261         (uw_init_context_1): Initialize context->flags to
32262         EXTENDED_CONTEXT_BIT.
32263         * config/rs6000/linux-unwind.h (frob_update_context): Use
32264         _Unwind_SetSignalFrame.
32265
32266 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32267
32268         PR middle-end/30353
32269         * gimplify.c (gimplify_modify_expr_complex_part): Move below
32270         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
32271         the value.
32272
32273 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
32274
32275         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
32276         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
32277         RET, AT_SP): Remove.
32278         * config/i386/i386.md (*sse_prologue_save_insn): Use return
32279         instead of RET.
32280
32281         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32282         * cfgbuild.c (find_basic_blocks): Likewise.
32283         * cfgrtl.c (rtl_create_basic_block): Likewise.
32284         * function.c (temp_slots_at_level): Likewise.
32285         * reg-stack.c (stack_regs_mentioned): Likewise.
32286         * regclass.c (allocate_reg_info): Likewise.
32287         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32288         set_bb_for_stmt, move_block_to_fn): Likewise.
32289         * tree-complex.c (tree_lower_complex): Likewise.
32290         * vec.h (VEC_safe_grow_cleared): New.
32291
32292         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
32293
32294 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
32295
32296         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
32297         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
32298         to loop_version.
32299         * cfgloopmanip.c (scale_loop_frequencies): Export.
32300         (loopify): Scale the frequencies by prescribed coefficients.
32301         (set_zero_probability): New function.
32302         (duplicate_loop_to_header_edge): Improve updating of frequencies.
32303         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
32304         and frequencies according to arguments.
32305         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
32306         correctly.
32307         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
32308         * modulo-sched.c (sms_schedule): Set probabilities for entering
32309         versioned loop correctly.
32310         * tree-vect-transform.c (vect_transform_loop): Ditto.
32311         * cfgloop.h (loopify, loop_version): Declaration changed.
32312         (scale_loop_frequencies): Declared.
32313
32314 2007-01-02  Jan Hubicka  <jh@suse.cz>
32315
32316         * cgraph.c: Include tree-flow.h
32317         (cgraph_add_new-function): Handle IPA_SSA mode; execute
32318         early_local_passes.
32319         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
32320         * tree-pass.h (pass_all_early_optimizations): Declare.
32321         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
32322         early_local_passes.
32323         (cgraph_analyze_function): Do early_local_passes.
32324         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32325         Do not add referenced vars.
32326         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
32327         SSA form.
32328         (gate_all_early_local_passes): New gate.
32329         (pass_early_local_passes): Use new gate.
32330         (execute_early_local_optimizations): New functions.
32331         (gate_all_early_optimizations): New gate.
32332         (pass_all_early_optimizations): New pass.
32333         (execute_free_datastructures): Free SSA only when initialized.
32334         (gate_init_datastructures): Init only when optimizing.
32335         (tree_lowering_passes): Do early local passes when called late.
32336         * tree-profile.c (do_tree_profiling): Don't profile functions added
32337         late.
32338         (do_early_tree_profiling, pass_early_tree_profile): Kill.
32339         * tree-cfg.c (update_modified_stmts): Do not update when operands are
32340         not active.
32341         * passes.c (init_optimizations_passes): Reorder so we go into SSA
32342         during early_local_passes.
32343         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
32344
32345
32346 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32347
32348         * Makefile.in: Update copyright year.
32349
32350 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
32351
32352         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
32353         in $(lang_checks) and check-consistency targets.
32354
32355 2007-01-02  Jan Hubicka  <jh@suse.cz>
32356
32357         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
32358         Do not add referenced vars.
32359         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
32360         are not active.
32361         * passes.c (init_optimization_passes): Put mudflap_2 after
32362         free_datastructures.
32363
32364 2007-01-02  Jan Hubicka  <jh@suse.cz>
32365
32366         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
32367         Set NOTHROW flag on call statements proved to be nothrow.
32368         Update statement of local calls so new pure/const functions are
32369         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
32370         goto receivers.
32371         (tree_rest_of_compilation): Register hooks and initialize bitmap
32372         early. Do not set after_inlining flag.
32373
32374 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
32375
32376         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
32377         HOST_BITS_PER_LONGLONG
32378
32379 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
32380
32381         PR c/19977
32382         * c-typeck.c (store_init_value): Don't emit pedantic overflow
32383         warning for non-static initializers.
32384
32385 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
32386
32387         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
32388         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
32389         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
32390         Always use set_unique_reg_note to add REG_EQUAL notes.
32391
32392 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32393
32394         Revert:
32395         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32396
32397         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32398         * cfgbuild.c (find_basic_blocks): Likewise.
32399         * cfgrtl.c (rtl_create_basic_block): Likewise.
32400         * function.c (temp_slots_at_level): Likewise.
32401         * reg-stack.c (stack_regs_mentioned): Likewise.
32402         * regclass.c (allocate_reg_info): Likewise.
32403         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32404         set_bb_for_stmt, move_block_to_fn): Likewise.
32405         * tree-complex.c (tree_lower_complex): Likewise.
32406         * vec.h (VEC_safe_grow_cleared): New.
32407
32408 2007-01-02  Ian Lance Taylor  <iant@google.com>
32409
32410         * c-common.c (c_common_truthvalue_conversion): When warning about
32411         using an assignment as a truth value, set TREE_NO_WARNING.
32412
32413 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32414
32415         PR middle-end/7651
32416         * c.opt (Wold-style-declaration): New.
32417         * doc/invoke.texi (C-only Warning Options): New.
32418         (Wold-style-declaration): Document it.
32419         (Wextra): Enabled by -Wextra.
32420         * c-opts.c (c_common_post_options): Enabled by -Wextra.
32421         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
32422         -Wold-style-declaration.
32423
32424 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
32425
32426         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
32427         * cfgbuild.c (find_basic_blocks): Likewise.
32428         * cfgrtl.c (rtl_create_basic_block): Likewise.
32429         * function.c (temp_slots_at_level): Likewise.
32430         * reg-stack.c (stack_regs_mentioned): Likewise.
32431         * regclass.c (allocate_reg_info): Likewise.
32432         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
32433         set_bb_for_stmt, move_block_to_fn): Likewise.
32434         * tree-complex.c (tree_lower_complex): Likewise.
32435         * vec.h (VEC_safe_grow_cleared): New.
32436
32437 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
32438
32439         * c-common.c (c_common_nodes_and_builtins): Since variants of
32440         void_type_node get built before it is given a name, we need to
32441         give those variants the name, too.
32442         (complete_array_type): We need to work with the canonical main
32443         type of the array, from which we will build the qualified version.
32444         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
32445         * print-tree.c (print_node): Display canonical type information
32446         for each type.
32447         * stor-layout.c (layout_type): When we don't know the
32448         alignment of a type for which we're building an array, we end up
32449         guessing wrong, so make the type require structural equality.
32450         * tree.c (make_node_stat): When we build a new type, it is its
32451         own canonical type.
32452         (build_type_attribute_qual_variant): When building an attribute
32453         variant, its canonical type is the non-attribute variant. However,
32454         if the attributes are target-dependent and they differ, we need to
32455         use structural equality checks for this type.
32456         (build_qualified_type): A qualified type is not equivalent to its
32457         unqualified variant; set the canonical type appropriately.
32458         (build_distinct_type_copy): When building a distinct type from
32459         another type, the new type is its own canonical type.
32460         (build_variant_type_copy): When building a new type variant, we
32461         assume that it is equivalent to the original type.
32462         (build_pointer_type_for_mode): When building a pointer type, also
32463         build a canonical type pointer.
32464         (build_reference_type_for_mode): When building a reference type,
32465         also build a canonical type reference.
32466         (build_index_type): When we can't hash an index type (e.g.,
32467         because its maximum value is negative), the index type requires
32468         structural equality tests.
32469         (build_array_type): Build the canonical form of an array type.
32470         (build_function_type): Function types require structural equality,
32471         because they contain default arguments, attributes, etc.
32472         (build_method_type_directly): Ditto for method types.
32473         (build_offset_type): Build the canonical offset type.
32474         (build_complex_type): Build the canonical vector type.
32475         (make_vector_type): Build the canonical vector type.
32476         * tree.h (TYPE_CANONICAL): New.
32477         (TYPE_STRUCTURAL_EQUALITY_P): New.
32478         (SET_TYPE_STRUCTURAL_EQUALITY): New.
32479         (struct tree_type): Added "canonical" field.
32480         * params.h (VERIFY_CANONICAL_TYPES): New.
32481         * doc/c-tree.texi (TYPE_CANONICAL): Document.
32482         (TYPE_STRUCTURAL_EQUALITY_P): Document.
32483         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
32484         * doc/invoke.texi (verify-canonical-types): Document --param
32485         parameter for verifying canonical types.
32486
32487 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32488
32489         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
32490         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
32491         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
32492         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
32493         tm_file.
32494         * config/rs6000/e500.h: New.
32495         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
32496         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
32497         Remove.
32498         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
32499         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
32500         TARGET_E500_DOUBLE): Remove.
32501         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
32502         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
32503         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
32504         * config/rs6000/rs6000.c (rs6000_override_options): Use
32505         CHECK_E500_OPTIONS.
32506
32507 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32508
32509         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
32510         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
32511         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
32512         rs6000_emit_cmove): Don't check TARGET_E500.
32513         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
32514         sordered): Don't check TARGET_E500.
32515
32516 2007-01-01  Eric Christopher  <echristo@apple.com>
32517
32518         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
32519         HARD_REGISTER_NUM_P.
32520
32521 2007-01-01  Roger Sayle  <roger@eyesopen.com>
32522
32523         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
32524         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
32525         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
32526         eq/ne Y".
32527
32528 2007-01-01  Mike Stump  <mrs@apple.com>
32529
32530         * configure.ac: Remove support for building with Apple's gcc-3.1.
32531
32532 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
32533
32534         PR middle-end/30311
32535         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
32536         REG is a hard register.  Do not modify REG before calling
32537         subreg_nregs.
32538         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
32539         multiple of the size of YMODE for certain lowpart cases.
32540
32541 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32542
32543         PR middle-end/30253
32544         * gimplify (voidify_wrapper_expr): Update for
32545         GIMPLE_MODIFY_STMT.
32546
32547 2007-01-01  Andreas Schwab  <schwab@suse.de>
32548
32549         PR target/29166
32550         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
32551         save of BR0 in extra_spill_size instead of spill_size.
32552         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
32553         area.
32554         (ia64_expand_epilogue): Restore BR0 from its new location.
32555
32556 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32557
32558         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
32559         Use a temporary variable if the left hand side is not a gimple
32560         register.
32561
32562 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
32563
32564         * gimplify.c (gimplify_return_expr): Make the temporary variable
32565         for the return expression, a gimple register variable.
32566
32567 2007-01-01  Jan Hubicka  <jh@suse.cz>
32568
32569         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
32570         INSN_LIST.
32571
32572 2007-01-01  Mike Stump  <mrs@apple.com>
32573
32574         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
32575         .literal16.
32576         * config/darwin.c (machopic_select_rtx_section): Use
32577         HAVE_GAS_LITERAL16.
32578         (darwin_mergeable_constant_section): Likewise.
32579         * configure: Regenerate.
32580         * config.in: Regenerate.
32581
32582 2007-01-01  Jan Hubicka  <jh@suse.cz>
32583             Andrew Pinski  <pinskia@gmail.com>
32584
32585         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
32586         before starting IPA passes.