OSDN Git Service

2006-12-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2006-12-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2
3         PR middle-end/7651
4         * c.opt (Wempty-body): New.
5         * doc/invoke.texi (Wempty-body): Document it.
6         (Wextra): Enabled by -Wextra.
7         * c-opts.c (c_common_post_options): Enabled by -Wextra.
8         * c-common.c (empty_body_warning): Replace Wextra with Wempty-body.
9         * c-parser.c (c_parser_c99_block_statement): Likewise.
10         
11 2006-12-15  Jakub Jelinek  <jakub@redhat.com>
12
13         PR target/30185
14         * config/rs6000/rs6000.md (div<mode>3): Use correct mode in
15         force_reg call.
16
17 2006-12-15  Andrew Pinski  <pinski@gmail.com>
18
19         PR tree-opt/30140
20         * tree-inline.c (setup_one_parameter): Gimplify the statement if
21         the variable is not a gimple register variable.
22
23 2006-12-15  Uros Bizjak  <ubizjak@gmail.com>
24
25         * invoke.texi (mstringop-strategy): Add missing "byte_loop" value.
26
27 2006-12-14  Jan Hubicka  <jh@suse.cz>
28
29         * tree-flow.h (struct stmt_ann_d): Move bitfield references_memory
30         to proper place.
31
32 2006-12-14  Richard Guenther  <rguenther@suse.de>
33
34         PR tree-optimization/30197
35         * builtins.c (fold_builtin_cexp): New function to fold cexp
36         to cexpi and exp parts.
37         * tree-ssa-pre.c (try_combine_conversion): Also handle
38         REALPART_EXPR and IMAGPART_EXPR.
39
40 2006-12-14  Richard Guenther  <rguenther@suse.de>
41
42         PR middle-end/30172
43         * fold-const.c (fold_binary): Fold __complex__ ( x, 0 )
44         + __complex__ ( 0, y ) to __complex__ ( x, y ).
45         Fold __complex__ (x, y) * +-I to __complex__ (-+y, +-x).
46
47 2006-12-14  Richard Guenther  <rguenther@suse.de>
48
49         PR tree-optimization/30198
50         * fold-const.c (fold_unary): Fold REALPART_EXPR of cexpi to cos.
51         Fold IMAGPART_EXPR of cexpi to sin.
52
53 2006-12-14  Dorit Nuzman  <dorit@il.ibm.com>
54             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
55
56         * spu.c (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Defined.
57         (spu_init_builtins): Mark the SPU_MASK_FOR_LOAD builtin decl as read 
58         only.   
59         (spu_expand_builtin_1): Handle the SPU_MASK_FOR_LOAD builtin.
60         (spu_builtin_mask_for_load): New.
61         * spu-builtins.def (SPU_MASK_FOR_LOAD): Define new builtin.
62         * spu.md (UNSPEC_SPU_REALIGN_LOAD, UNSPEC_SPU_MASK_FOR_LOAD):New.
63         (vec_realign_load_<mode>, spu_lvsr): New.
64
65 2006-12-13  Ian Lance Taylor  <iant@google.com>
66
67         PR c++/19564
68         PR c++/19756
69         * c-typeck.c (parser_build_binary_op): Move parentheses warnings
70         to warn_about_parentheses in c-common.c.
71         * c-common.c (warn_about_parentheses): New function.
72         * c-common.h (warn_about_parentheses): Declare.
73         * doc/invoke.texi (Warning Options): Update -Wparentheses
74         description.
75
76 2006-12-13  Zdenek Dvorak <dvorakz@suse.cz>
77
78         * tree-ssa-loop-ivopts.c: Include tree-affine.h.
79         (divide): Removed.
80         (constant_multiple_of): Fix order of operators for division.
81         (aff_combination_const, aff_combination_elt, aff_combination_scale,
82         aff_combination_add_elt, aff_combination_add, aff_combination_convert,
83         tree_to_aff_combination, add_elt_to_tree, unshare_aff_combination,
84         aff_combination_to_tree): Moved to tree-affine.c and made to work with
85         double_int coefficients.
86         (get_computation_aff, get_computation_at): Work with double_int
87         coefficients.
88         (get_computation_cost_at): Do not use divide.
89         (rewrite_use_nonlinear_expr, rewrite_use_address, rewrite_use_compare):
90         Assert that expressing the computation did not fail.
91         * tree-ssa-address.c: Include tree-affine.h.
92         (add_to_parts, most_expensive_mult_to_index, addr_to_parts,
93         create_mem_ref): Work with double_int coefficients.
94         * tree-affine.c: New file.
95         * tree-affine.h: New file.
96         * tree-flow.h (struct affine_tree_combination): Removed.
97         * Makefile.in (tree-affine.o): Add.
98         (tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
99         dependency.
100
101 2006-12-13  Peter Bergner  <bergner@vnet.ibm.com>
102
103         PR middle-end/30191
104         Revert:
105         * reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
106         the offset == 0 "then" clauses.
107         * config/rs6000/predicates.md (gpc_reg_operand): Check for
108         reload_in_progress.
109
110 2006-12-13  Uros Bizjak  <ubizjak@gmail.com>
111
112         * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 53.
113         (FIXED_REGISTERS, CALL_USED_REGISTERS): Remove dir register.
114         (REG_ALLOC_ORDER): Remove one element due to removal of dir register.
115         (FRAME_POINTER_REGNUM): Update register number to 20.
116         (REG_CLASS_CONTENTS): Update contents due to removed dir register.
117         (HI_REGISTER_NAMES): Remove "dirflag".
118
119         * config/i386/i386.c (regclass_map): Remove dirflag entry.
120         (dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
121         Remove "dir" entry.
122         (ix86_md_asm_clobbers): Remove "dirflag" default asm clobber.
123
124         * config/i386/i386.md (R10_REG, R11_REG): Renumber.
125         (sse_prologue_save, *sse_prologue_save_insn): Renumber
126         hardcoded SSE register numbers.
127
128         * config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
129         hardcoded MMX register numbers.
130
131
132 2006-12-13  Mark Shinwell  <shinwell@codesourcery.com>
133
134         * config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
135         FLDMX.  Rename function to...
136         (vfp_output_fldmd): ...this.
137         (vfp_output_fstmx): Output FSTMD instead of FSTMX.  Rename
138         function to...
139         (vfp_output_fstmd): ...this.
140         (vfp_emit_fstmx): Don't leave space in the frame layout for the
141         FSTMX format word.  Rename function to...
142         (vfp_emit_fstmd): ...this.
143         (arm_get_vfp_saved_size): Don't add in space for the FSTMX format
144         word.
145         (arm_output_epilogue): Adjust comment to reflect use of FSTMD.
146         (arm_unwind_emit_sequence): Don't compensate for the FSTMX format
147         word.  Also emit "vsave" assembler directives in such cases rather
148         than "save".
149         * config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
150         gnu_Unwind_Save_VFP): Adjust comments.
151         (gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
152         for saving and restoring using FSTMD and FLDMD rather than
153         FSTMX and FLDMX.
154         (gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
155         New functions for saving and restoring the VFPv3 registers 16 .. 31.
156         * config/arm/pr-support.c (gnu_unwind_execute): Add conditional
157         compilation case to correctly handle unwind opcode 0xc8 when using
158         VFP.
159         * config/arm/unwind-arm.c (struct vfpv3_regs): New.
160         (DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
161         (__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
162         __gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
163         Declare.
164         (restore_non_core_regs): Restore registers using FLDMD rather than
165         FLDMX if required.  Also handle restoration of VFPv3 registers.
166         (_Unwind_VRS_Pop): Handle saving and restoring of registers using
167         FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
168         including cases where the caller specifies a range of registers
169         that overlaps the d15/d16 boundary.
170
171 2006-12-13  Diego Novillo  <dnovillo@redhat.com>
172
173         PR 30089
174         * tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
175         accomodate 511 operands.
176
177 2006-12-13  Richard Guenther  <rguenther@suse.de>
178
179         * builtins.c (expand_builtin_cexpi): Fix typo.
180
181 2006-12-13  Jan Hubicka  <jh@suse.cz>
182
183         * Makefile.in: Add dependencies.
184         * tree-pretty-print.c: Include value-prof.h
185         (dump_generic_bb_buff): Dump histograms
186         * value-prof.c: Include pointer-set.h
187         (gimple_alloc_histogram_value, histogram_hash, histogram_eq,
188         set_histogram_value, gimple_histogram_value,
189         gimple_add_histogram_value, gimple_remove_histogram_value,
190         gimple_histogram_value_of_type, dump_histogram_value,
191         dump_histograms_for_stmt, gimple_remove_stmt_histograms,
192         gimple_duplicate_stmt_histograms, visit_hist,
193         verify_histograms): New functions.
194         (tree_value_profile_transformations): Update for new histogram API.
195         (tree_divmod_fixed_value): Update for new histogram API.
196         (tree_divmod_fixed_value_transform): Update for new histogram API.
197         (tree_mod_pow2): Update for new histogram API.
198         (tree_mod_pow2_value_transform): Update for new histogram API.
199         (tree_mod_subtract): Update for new histogram API.
200         (tree_mod_subtract_transform): Update for new histogram API.
201         (tree_stringops_transform): Update for new histogram API.
202         (tree_divmod_values_to_profile): Update for new histogram API.
203         (tree_stringops_values_to_profile): Update for new histogram API.
204         (tree_find_values_to_profile): Update for new histogram API.
205         * value-prof.h (gimple_histogram_value): Declare.
206         (gimple_histogram_value_of_type): Declare.
207         (gimple_add_histogram_value): Declare.
208         (gimple_remove_histogram_value): Declare.
209         (dump_histograms_for_stmt): Declare.
210         (gimple_remove_histogram_value): Declare.
211         (gimple_remove_stmt_histograms): Declare.
212         (gimple_duplicate_stmt_histograms): Declare.
213         (verify_histograms): Declare.
214         * function.h
215         (struct funrction): Add value_histograms hash.
216         (VALUE_HISTOGRAMS): New macro.
217         * profile.c (compute_value_histograms): update for new API.
218         * tree-inline.c: Include value-prof.h
219         (copy_bb): Update histograms.
220         * tree-flow.h (struct stmt_ann_d): Do not contain pointer to histograms;
221         reorder to get smaller memory layout.
222         * tree-cfg.c: Include value-prof.h
223         (bsi_remove): Update histograms.
224         (bsi_replace): Update histograms.
225         (verify_stmts): Call histogram verifier.
226         (tree_duplicate_bb): Update histograms.
227         (move_block_to_fn): Update histograms.
228
229 2006-12-13  Richard Guenther  <rguenther@suse.de>
230
231         * ipa-inline.c (cgraph_flatten_node): Replace leafify with
232         flatten.
233         (cgraph_decide_inlining): Likewise.
234
235 2006-12-13  Richard Guenther  <rguenther@suse.de>
236
237         PR tree-optimization/17687
238         * builtins.def (BUILT_IN_CEXPI, BUILT_IN_CEXPIF, BUILT_IN_CEXPIL):
239         New builtins for imaginary argument cexp.
240         * builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
241         BT_FN_COMPLEX_DOUBLE_DOUBLE, BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE):
242         New required builtin types.
243         * builtins.c (expand_builtin_cexpi): Declare.
244         (mathfn_built_in): Handle BUILT_IN_CEXPI.
245         (expand_builtin_cexpi): New static helper.
246         (expand_builtin): Call it.
247         (do_mpfr_sincos): Adjust for CEXPI evaluation.
248         (fold_builtin_sincos): New function to fold sincos to cepxi.
249
250 2006-12-13  Richard Guenther  <rguenther@suse.de>
251
252         * ipa-reference.c (scan_for_static_refs): Also scan
253         tcc_comparison class trees.
254
255 2006-12-12 David Daney  <ddaney@avtrex.com>
256
257         * config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
258         define.
259
260 2006-12-12  Andrew Pinski  <pinskia@gmail.com>
261
262         * tree-vect-transform.c (vect_permute_load_chain):
263         Set DECL_GIMPLE_REG_P to true for the vect_perm_*
264         temp variables.
265
266 2006-12-13  Sa Liu  <saliu@de.ibm.com>
267             Ben Elliston  <bje@au.ibm.com>
268
269         * config/spu/spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
270         (REGISTER_TARGET_PRAGMAS): Don't zero warn_main flag.
271         * config/spu/spu-protos.h (spu_c_common_override_options):
272         Declare.
273         * config/spu/spu-c.c (spu_c_common_override_options): New.
274         * config/spu/spu.c (spu_override_options): Whitespace fix.
275
276 2006-12-12  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
277
278         * config/spu/spu.c (cpat_info): Fix an incorrectly identified case.
279
280 2006-12-12  Geoffrey Keating  <geoffk@apple.com>
281
282         * mips-tdump.c: Replace CROSS_COMPILE with
283         CROSS_DIRECTORY_STRUCTURE.
284         * mips-tfile.c: Likewise.
285         * gcc.c: Likewise.
286         * configure.ac: Likewise.
287         * cppdefault.c: Likewise.
288         * Makefile.in: Likewise.
289         * config/alpha/osf.h: Likewise.
290         * config/i386/cygwin.h: Likewise.
291         * config/i386/beos-elf.h: Likewise.
292         * config/i386/nto.h: Likewise.
293         * config/fr30/fr30.h: Likewise.
294         * config/svr4.h: Likewise.
295         * config/rs6000/aix.h: Likewise.
296         * config/rs6000/sysv4.h: Likewise.
297         * config/pa/pa64-hpux.h: Likewise.
298         * config/pa/pa-hpux10.h: Likewise.
299         * config/pa/pa-hpux11.h: Likewise.
300         * collect2.c: Likewise.
301         * configure: Regenerate.
302
303         * doc/tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP
304         actually takes an unsigned HOST_WIDE_INT for its second parameter.
305
306 2006-12-13  Ulrich Weigand  <uweigand@de.ibm.com>
307
308         * config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
309         (spu_encode_section_info): New.
310         * config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
311         (SYMBOL_FLAG_ALIGN1): New.
312
313 2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
314
315         PR tree-opt/28624
316         * tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary 
317         bitmap for EXECUTE_IF_SET_IN_BITMAP.
318
319 2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
320
321         PR tree-opt/28436
322         * tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
323         (DECL_GIMPLE_REG_P): This.
324         * fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
325         using BIT_FIELD_REF.
326         * omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
327         * tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
328         and check for VECTOR_TYPE.
329         * expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
330         vector types.
331         * tree-flow-inline.h (var_can_have_subvars): Use the renamed
332         DECL_GIMPLE_REG_P.
333         * gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
334         and check for VECTOR_TYPE.
335         (gimplify_bind_expr): Likewise.
336         (gimplify_function_tree): Likewise.
337         * expmed.c: Include target.h.
338         (extract_bit_field): For vector mode, try find a better mode first.
339         If that fails use gen_lowpart (for vectors only).
340         * tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
341         and check for VECTOR_TYPE.
342         * tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
343         (insert_into_preds_of_block): Likewise.
344         (insert_fake_stores): Create gimple register store_tmps for
345         vector types.
346         * tree-sra.c (sra_elt): New field, is_vector_lhs.
347         (sra_walk_expr <case BIT_FIELD_REF>): For vector types that
348         are the left hand side, set the element's is_vector_lhs to true.
349         (instantiate_element): For vector types which were on the left
350         hand size, set DECL_GIMPLE_REG_P to false.
351         * tree-nested.c (create_tmp_var_for): Use the renamed DECL_GIMPLE_REG_P.        * tree-inline.c (declare_return_variable):  Use the renamed
352         DECL_GIMPLE_REG_P
353         and check for VECTOR_TYPE.
354         (copy_decl_to_var):  Use the renamed DECL_GIMPLE_REG_P.
355         (copy_result_decl_to_var): Likewise.
356         * tree-vect-transform.c (vect_get_new_vect_var): For vector types,
357         create a gimple register variable.
358         (vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
359         vect_inter_* temp variables.
360         * Makefile.in (expmed.o): Update dependencies.
361
362 2006-12-12  Peter Bergner  <bergner@vnet.ibm.com>
363
364         * reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
365         the offset == 0 "then" clauses.
366         * config/rs6000/predicates.md (gpc_reg_operand): Check for
367         reload_in_progress.
368
369 2006-12-12  Marcin Dalecki  <martin@dalecki.de>
370
371         * doc/passes.texi: remove docs about "redundant PHI removal".
372         * tree-pass.h: remove orphaned declaration of pass_redundant_phi,
373         remove redundant pass_partition_blocks declaration.
374
375 2006-12-12  Andrew Macleod  <amacleod@redhat.com>
376         
377         PR tree-optimization/30159
378         * tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name 
379         functions in case a default_def coalesce is required.
380
381 2006-12-12  Jakub Jelinek  <jakub@redhat.com>
382
383         PR libstdc++/11953
384         * gthr-posix.h (_REENTRANT): Only define if __osf__ is defined.
385
386         * config/ia64/linux.h (CPP_SPEC): Define.
387         * config/s390/linux.h (CPP_SPEC): Define.
388
389 2006-12-12  Jim Wilson  <wilson@specifix.com>
390             Jakub Jelinek  <jakub@redhat.com>
391
392         PR rtl-optimization/27761
393         * combine.c (try_combine): Don't create a useless garbage SET
394         if PATTERN (i2) is a PARALLEL.  If added_sets_1, save
395         PATTERN (i1) resp. SET from i1src to i1dest in i1pat
396         and use it to prevent accidental modification of i1src.
397
398 2006-12-12  Ira Rosen  <irar@il.ibm.com>
399
400         * tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check
401         for stores with gaps.
402         * tree-vect-transform.c (vect_permute_store_chain): Create
403         interleave_high or interleave_low according to the endianess.
404
405 2006-12-12  Richard Guenther  <rguenther@suse.de>
406
407         PR middle-end/30147
408         * fold-const.c (fold_read_from_constant_string): Only fold read
409         from constant string if the result type is integer.
410
411 2006-12-12  Olivier Hainque  <hainque@adacore.com>
412
413         * config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.
414
415 2006-12-12  Olivier Hainque  <hainque@adacore.com>
416
417         * config/vxlib.c: Extract tls related routines into ...
418         * config/vxlib-tls.c: New file. 
419         * config/t-vxworks: Add vxlib-tls.c to LIB2FUNCS_EXTRA.
420         
421 2006-12-12  Sa Liu  <saliu@de.ibm.com>
422             Ben Elliston  <bje@au.ibm.com>
423
424         * config/spu/spu.opt (mfixed-range): New option.
425         * config/spu/spu.h (spu_fixed_range_string): Declare.
426         * config/spu/spu.c (spu_override_options): Handle -mfixed-range.
427         (fix_range): New function.
428         * doc/invoke.texi (SPU Options): Document -mfixed-range.
429         * testsuite/gcc.target/spu/fixed-range.c: New.
430         * testsuite/gcc.target/spu/fixed-range-bad.c: Ditto.
431
432 2006-12-11  H.J. Lu  <hongjiu.lu@intel.com>
433
434         PR middle-end/17982
435         PR middle-end/20218
436         * cgraphunit.c (cgraph_optimize): Remove call to
437         process_pending_assemble_externals.
438
439         * config/elfos.h (ASM_OUTPUT_EXTERNAL): New.
440
441         * config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed.
442
443         * config/ia64/ia64.c (ia64_asm_output_external): Rewritten.
444         (ia64_hpux_add_extern_decl): Removed.
445         (ia64_hpux_file_end): Likewise.
446         (extern_func_list): Likewise.
447         (extern_func_head): Likewise.
448
449         * output.h (assemble_external): Update comments.
450         (default_elf_asm_output_external): New.
451         (maybe_assemble_visibility): New.
452
453         * toplev.c (compile_file): Update comment.
454
455         * varasm.c (assemble_external): Always put it on
456         pending_assemble_externals.
457         (maybe_assemble_visibility): Make it extern and return int.
458         (default_elf_asm_output_external): New.
459
460 2006-12-11  Daniel Berlin  <dberlin@dberlin.org>
461
462         * tree-ssa-structalias.c (handle_ptr_arith): Return false when we
463         can't handle the pointer arithmetic.
464
465 2006-12-11  Diego Novillo  <dnovillo@redhat.com>
466
467         * doc/tree-ssa.texi: Update documentation for virtual operands
468         and the use of push_stmt_changes/pop_stmt_changes.
469         * doc/invoke.texi: Remove documentation for params
470         global-var-threshold.
471         Update documentation on max-aliased-vops.
472
473         * tree-into-ssa.c: Cleanup comments, variables and
474         spacing in various functions.
475         (regs_to_rename): Declare.
476         (mem_syms_to_rename): Declare.
477         (dump_update_ssa): Declare.
478         (debug_update_ssa): Declare.
479         (dump_names_replaced_by): Declare.
480         (debug_names_replaced_by): Declare.
481         (dump_def_blocks): Declare.
482         (debug_def_blocks): Declare.
483         (dump_defs_stack): Declare.
484         (debug_defs_stack): Declare.
485         (dump_currdefs): Declare.
486         (debug_currdefs): Declare.
487         (mark_def_sites): Do not handle virtual operands.
488         (compute_idf): Rename from find_idf.  Update users.
489         (register_new_def): Make local.  Convert second argument
490         to 'tree'.
491         Use BLOCK_DEFS_STACK directly.
492         If pushing a non-register, also push the underlying
493         symbol.
494         (rewrite_stmt): Do not handle virtual operands.
495         (dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
496         dump_currdefs and dump_tree_ssa_stats.
497         (dump_tree_ssa_stats): Also dump REPL_TBL.
498         (replace_use): Remove.  Update all users to call SET_USE
499         instead.
500         (rewrite_blocks): Move code to free memory to
501         fini_ssa_renamer.
502         (mark_def_site_blocks): Move initialization code to
503         init_ssa_renamer.
504         (init_ssa_renamer): New.
505         (fini_ssa_renamer): New.
506         (rewrite_into_ssa): Call them.
507         (prepare_block_for_update): Process SSA_OP_ALL_USES first
508         and SSA_OP_ALL_DEFS later.  Do not process virtual
509         operands separately.
510         (dump_update_ssa): Call dump_decl_set.
511         (init_update_ssa): Initialize regs_to_rename and
512         mem_syms_to_rename.
513         Call init_ssa_renamer.
514         (delete_update_ssa): Call fini_ssa_renamer.
515         Free blocks_with_phis_to_rewrite.
516         (mark_sym_for_renaming): If the variable has
517         sub-variables, also mark them.
518         If the variable belongs to a partition, also mark it.
519         (mark_set_for_renaming): Call mark_sym_for_renaming on
520         every symbol in the set.
521         (switch_virtuals_to_full_rewrite): Call
522         mark_set_for_renaming.
523         (update_ssa): Separate syms_to_rename into regs_to_rename
524         and mem_syms_to_rename.
525
526         * tree-dump.c (dump_options): Add TDF_MEMSYMS.
527         * tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
528         (debug_generic_stmt): Likewise.
529         (debug_tree_chain): Likewise.
530         (dump_symbols): New.
531         (dump_generic_node): Check for TDF_MEMSYMS.
532         Handle MEMORY_PARTITION_TAG.
533         If the statement references memory and TDF_MEMSYMS is
534         given, call dump_symbols.
535         Indicate default names with (D).
536         (dump_vops): Update for new virtual operator format.
537
538         * tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
539         tree_contains_struct.
540         (tree_code_size): Handle MEMORY_PARTITION_TAG.
541         (tree_node_structure): Likewise.
542         (needs_to_live_in_memory): Handle SSA names.
543         * tree.h (MTAG_P): Likewise.
544         (struct tree_memory_partition_tag): Declare.
545         (MPT_SYMBOLS): Define.
546         (union tree_node): Add field 'mpt'.
547         * treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
548         * tree.def (MEMORY_PARTITION_TAG): Define.
549
550         * tree-pass.h (TDF_MEMSYMS): Define.
551
552         * params.h (GLOBAL_VAR_THRESHOLD): Remove.
553
554         * tree-ssa-alias.c: Include pointer-set.h
555         (struct alias_map_d): Remove fields total_alias_vops,
556         grouped_p and may_aliases.  Update all users.
557         (struct mp_info_def): Declare.
558         (mp_info_t): New type.
559         (get_smt_for): Rename from get_tmt_for.  Update all
560         users.
561         (add_may_alias): Add argument ALREADY_ADDED.  If given,
562         use it to avoid adding duplicate entries to alias sets.
563         (replace_may_alias): Remove.  Update all users.
564         (total_alias_vops_cmp): Remove.  Update all users.
565         (group_aliases_into): Remove.  Update all users.
566         (tree_pointer_compare): Remove.  Update all users.
567         (compact_name_tags): Remove.  Update all users.
568         (group_aliases): Remove.  Update all users.
569         (mark_non_addressable): Move from tree-flow-inline.h.
570         Remove the symbol from the partition holding it, if
571         needed.
572         (dump_mp_info): New.
573         (debug_mp_info): New.
574         (sort_mp_info): New.
575         (create_partition_for): New.
576         (rewrite_alias_set_for): New.
577         (compute_memory_partitions): New.
578         (compute_may_aliases): Call it.
579         (init_alias_info): If computing aliases for the first
580         time, mark every memory symbol for renaming.
581         (have_common_aliases_p): New.
582         (compute_flow_insensitive_aliasing): Call it.
583         (setup_pointers_and_addressables): Do not cache
584         num_referenced_vars.
585         For register promoted symbols, mark their former
586         partition for renaming.
587         (maybe_create_global_var): Only create .GLOBAL_VAR if
588         there are no call-clobbered variables and a mix of pure
589         and non-pure functions were found.
590         (may_alias_p): Tidy comments.
591         (create_tag_raw): Remove unused variable new_type.
592         (dump_alias_info): call dump_memory_partitions.
593         (dump_points_to_info_for): Call dump_decl_set.
594         (may_be_aliased): Tidy comments and formatting.
595
596         * timevar.def (TV_MEMORY_PARTITIONING): Define.
597         * tree-vectorizer.c (vect_memsyms_to_rename): Rename from
598         vect_vnames_to_rename.  Set DECL_UIDs instead of SSA name
599         versions in it.
600         (slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
601         * tree-vect-transform.c (vect_transform_loop): Call
602         mark_set_for_renaming with vect_memsyms_to_rename.
603         * tree-flow-inline.h (zero_imm_uses_p): New.
604         (memory_partition): New.
605         (set_memory_partition): New.
606         (factoring_name_p): New.
607         (symbol_mem_tag): New.  Update every function that used
608         to access the annotation directly.
609         (set_symbol_mem_tag): Likewise.
610
611         * tree-ssa-copy.c (may_propagate_copy): Allow copies
612         between a partition and a symbol as long as the symbol
613         belongs to the partition.
614         (merge_alias_info): Ignore merge requests when memory
615         partitions are involved.
616
617         * tree-ssa.c (verify_ssa_name): Check that default
618         definitions have empty defining statements.
619         (verify_use): Remove argument IS_VIRTUAL.
620         Don't call verify_ssa_name.
621         (verify_phi_args): Call verify_ssa_name.
622         (verify_flow_insensitive_alias_info): Handle MPTs.
623         (verify_flow_sensitive_alias_info): Likewise.
624         (verify_name_tags): Likewise.
625         (verify_call_clobbering): Likewise.
626         (verify_ssa): Check for VOPs only after aliasing
627         information is available.
628         Check virtuals and real operands separately.
629         Call verify_ssa_name on every operand.
630         (stmt_references_memory_p): Move to tree-ssa-operands.c.
631         (walk_use_def_chains_1): Guard against NULL PHI
632         arguments.
633
634         * tree-ssa-operands.c (stmt_references_memory_p): Move from
635         tree-ssa.c.
636         (get_mpt_for): New.
637         (dump_memory_partitions): New.
638         (debug_memory_partitions): New.
639
640         * tree-flow.h (struct var_ann_d): Add field mpt.
641         (struct stmt_ann_d): Add bitfield references_memory.
642         * Makefile.in (tree-ssa-structalias.o): Include
643         pointer-set.h
644         (tree-ssa-alias.o): Likewise.
645         * tree-ssa-structalias.c: (update_alias_info): Use
646         STORED_SYMS to determine which variables are being
647         written to by the store operation.
648         * tree-ssa-structalias.h (struct alias_info)
649         <total_alias_vops>: Remove.  Update all users.
650         <written_vars>: Change to a pointer set.  Update all
651         users.
652         <dereferenced_ptrs_store>: Likewise.
653         <dereferenced_ptrs_load>: Likewise.
654         (NUM_REFERENCES): Remove.  Update all users.
655         (NUM_REFERENCES_CLEAR): Remove.  Update all users.
656         (NUM_REFERENCES_INC): Remove.  Update all users.
657         (NUM_REFERENCES_SET): Remove.  Update all users.
658
659         * params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
660         Update all users.
661         (PARAM_MAX_ALIASED_VOPS): Set to 10.
662         * tree-ssanames.c (make_ssa_name): Initialize
663         SSA_NAME_IS_DEFAULT_DEF to 0.
664
665 2006-12-11  Aldy Hernandez  <aldyh@redhat.com>
666
667         * tree-ssa-dse.c (aggregate_vardecl_d): New.
668         (dse_global_data): Add aggregate_vardecl field.
669         (dse_possible_dead_store_p): New.
670         Add prev_defvar variable.
671         Allow immediate uses and previous immediate uses to differ
672         if they are setting different parts of the whole.
673         (get_aggregate_vardecl): New.
674         (dse_record_partial_aggregate_store): New.
675         (dse_whole_aggregate_clobbered_p): New.
676         (dse_partial_kill_p): New.
677         (dse_optimize_stmt): Abstract code checking a possible dead store
678         into new function dse_possible_dead_store_p().
679         Call dse_maybe_record_aggregate_store().
680         When checking whether a STMT and its USE_STMT refer to the
681         same memory address, check also for partial kills that clobber
682         the whole.
683         Move some variable definitions to the block where they are used.
684         (aggregate_vardecl_hash): New.
685         (aggregate_vardecl_eq): New.
686         (aggregate_vardecl_free): New.
687         (aggregate_whole_store_p): New.
688         (tree_ssa_dse): Initialize and free aggregate_vardecl.
689         Mark which aggregate stores we care about.
690
691 2006-12-11  Andrew Macleod  <amacleod@redhat.com>
692
693         * tree-ssa-operands.h (struct vuse_element_d): Declare.
694         (vuse_element_t): Declare.
695         (struct vuse_vec_d): Declare.
696         (vuse_vec_p): Declare.
697         (VUSE_VECT_NUM_ELEM): Define.
698         (VUSE_VECT_ELEMENT_NC): Define.
699         (VUSE_ELEMENT_PTR_NC): Define.
700         (VUSE_ELEMENT_VAR_NC): Define.
701         (VUSE_VECT_ELEMENT): Define.
702         (VUSE_ELEMENT_PTR): Define.
703         (VUSE_ELEMENT_VAR): Define.
704         (struct maydef_optype_d) <use_var>: Remove.
705         <use_ptr>: Remove.
706         <usev>: Add.
707         (struct vuse_optype_d) <kill_var>: Remove.
708         <use_ptr>: Remove.
709         <usev>: Add.
710         (struct mustdef_optype_d) <kill_var>: Remove.
711         <use_ptr>: Remove.
712         <usev>: Add.
713         (VUSE_OP_PTR): Add argument.  Use VUSE_ELEMENT_PTR.
714         (VUSE_OP): Add argument.  Use VUSE_ELEMENT_PTR.
715         (VUSE_NUM): Define.
716         (VUSE_VECT): Define.
717         (MAYDEF_OP_PTR): Add argument.  Use VUSE_OP_PTR.
718         (MAYDEF_OP): Add argument.  Use VUSE_OP.
719         (MAYDEF_NUM): Define.
720         (MAYDEF_VECT): Define.
721         (MUSTDEF_KILL_PTR): Use VUSE_OP_PTR.
722         (MUSTDEF_KILL): Use VUSE_OP.
723         (MUSTDEF_NUM): Define.
724         (MUSTDEF_VECT): Define.
725         (realloc_maydef): Declare.
726         (realloc_vuse): Declare.
727         (struct ssa_operand_iterator_d) <vuse_index>: Add.
728         <mayuse_index>: Add.
729         (LOADED_SYMS): Define.
730         (STORED_SYMS): Define.
731         (FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
732         * tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
733         operators.
734         * tree-pretty-print.c: Likewise.
735         * tree-ssa-dse.c: Likewise.
736         * tree-flow-inline.h: Likewise.
737         (op_iter_next_mustdef): New.
738         * tree-ssa-operands.c: Likewise.
739         (ALLOC_OPTYPE): Remove.
740         Update all users.
741         (alloc_def): New.
742         (alloc_use): New.
743         (alloc_maydef): New.
744         (alloc_vuse): New.
745         (alloc_mustdef): New.
746         (realloc_maydef): New.
747         (realloc_vuse): New.
748
749 2006-12-11  Aldy Hernandez  <aldyh@redhat.com>
750
751         * tree-ssa-operands.c: Remove build_v_must_defs.
752         (init_ssa_operands): Delete build_v_must_defs.
753         (finalize_ssa_v_must_def_ops): Remove.
754         (finalize_ssa_v_must_defs): Remove.
755         (finalize_ssa_stmt_operands): Do not call
756         finalize_ssa_v_must_defs.
757         (start_ssa_stmt_operands): Do not check build_v_must_defs.
758         (append_v_must_def): Delete.
759         (copy_virtual_operands): Do not copy V_MUST_DEFs.
760         (get_modify_expr_operands): Remove reference to V_MUST_DEF from
761         comment.  Remove opf_kill_def.
762         (build_ssa_operands): Remove references to v_must_defs.
763         (copy_virtual_operands): Same.
764         (copy_virtual_operands): Same.
765         (fini_ssa_operands): Same.
766         (free_ssa_operands): Same.
767         (add_mustdef_op): Remove.
768         Remove mustdef_optype_p.
769         (alloc_mustdef): Remove.
770         Remove references to V_MUST_DEFs in comment at top of file.
771         (get_expr_operands): Remove opf_kill_def.
772         (opf_kill_def): Remove.
773         (add_virtual_operand): Remove opf_kill_def.
774         (get_indirect_ref_operands): Same.
775         (get_tmr_operands): Same.
776
777         * tree-vectorizer.c (rename_variables_in_bb): Remove
778         SSA_OP_ALL_KILLS.
779
780         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
781         SSA_OP_ALL_KILLS.
782         (check_loop_closed_ssa_stmt): Same.
783
784         * tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
785         (verify_use): Same.
786         (verify_ssa): Remove V_MUST_DEFs traces.
787         (verify_ssa): Remove SSA_OP_ALL_KILLS.
788
789         * tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
790         SSA_OP_VMAYDEF.
791         (rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
792         (rewrite_stmt): Remove SSA_OP_ALL_KILLS.
793
794         * tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
795         references.
796         (MUSTDEF_OPS): Remove.
797         (SSA_OP_VMUSTDEF): Remove.
798         (FOR_EACH_SSA_MUSTDEF_OPERAND): Remove.
799         (struct mustdef_optype_d): Remove.
800         Remove mustdef_optype_p.
801         (struct stmt_operands_d): Remove mustdef_ops.
802         (ssa_operand_iterator_d): Remove mustdefs and mustkills.
803         (SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
804         (MUSTDEF_RESULT_PTR): Remove.
805         (MUSTDEF_RESULT): Remove.
806         (MUSTDEF_KILL_PTR): Remove.
807         (MUSTDEF_KILL): Remove.
808         (MUSTDEF_NUM): Remove.
809         (MUSTDEF_VECT): Remove.
810         (SSA_OP_VIRTUAL_KILLS): Remove.
811         (SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
812         (SSA_OP_VMUSTKILL): Remove.
813         (SSA_OP_ALL_KILLS): Remove.
814         (SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.
815
816         * tree-flow-inline.h (op_iter_init_def): Remove
817         SSA_OP_VIRTUAL_KILLS.
818         (delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.
819
820         * tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
821         SSA_OP_VIRTUAL_KILLS.
822
823         * tree-ssa-loop-im.c (determine_max_movement): Remove
824         SSA_OP_VIRTUAL_KILLS.
825         (gather_mem_refs_stmt): Same.
826         (gather_mem_refs_stmt): Same.
827
828         * tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
829         (perform_tree_ssa_dce): Remove call to
830         mark_really_necessary_kill_operand_phis.
831
832         * tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
833         and mustkills.
834         (op_iter_next_use): Do not check mustkills.
835         (op_iter_next_def): Do not check mustdefs.
836         (op_iter_next_tree): Do not check mustkills or mustdefs.
837         (clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
838         (op_iter_next_maymustdef): Do not check mustkills.
839         (op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
840         (op_iter_init_mustdef): Remove.
841
842         * tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
843         SSA_OP_VMAYDEF.
844
845         * tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.
846
847         * tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
848         (visit_assignment): Same.
849
850         * tree-ssa-copy.c (copy_prop_visit_assignment): Same.
851
852         * tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.
853
854         * tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.
855
856         * tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
857         Remove kill_p variable.
858
859         * tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
860         (dump_dfa_stats): Remove code related to V_MUST_DEFs.
861         (collect_dfa_stats_r): Do not set num_v_must_defs.
862         (mark_new_vars_to_rename): Remove v_must_defs_{before,after}
863         code.
864
865         * tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
866         SSA_OP_VMAYUSE.
867
868         * tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
869         SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.
870
871         * tree-ssa-propagate.c (stmt_makes_single_store): Remove
872         SSA_OP_VMUSTDEF.
873
874 2006-12-11  Zdenek Dvorak <dvorakz@suse.cz>
875
876         PR rtl-optimization/30113
877         * loop-iv.c (implies_p): Require the mode of the operands to be
878         scalar.
879
880 2006-12-11  Diego Novillo  <dnovillo@redhat.com>
881
882         * tree-ssa-operands.h (create_ssa_artificial_load_stmt):
883         Rename from create_ssa_artficial_load_stmt.  Update all users.
884         * tree-into-ssa.c (register_new_def): Make static.
885         * tree.c (is_global_var): Handle SSA_NAMEs.
886         * tree.h (SSA_NAME_IS_DEFAULT_DEF): Define.  Update all users
887         that used to call gimple_default_def.
888         * tree-ssa-operands.c (push_stmt_changes): New.
889         (pop_stmt_changes): New.  Update every pass that modifies
890         statements to bracket modifications with
891         push_stmt_changes/pop_stmt_changes.
892         (discard_stmt_changes): New.
893         * tree-ssa-dom.c (stmts_to_rescan): Change to stack of
894         'tree *' instead of 'tree'.  Update all users.
895         * tree-flow-inline.h (zero_imm_uses_p): New.
896         (symbol_mem_tag): New.  Update every function that used
897         to access the annotation directly.
898         (set_symbol_mem_tag): Likewise.
899         * tree-dfa.c (dump_variable): Always show the escape mask.
900         (mark_symbols_for_renaming): Rename from
901         mark_new_vars_to_rename.  Update all users.
902         Only mark to rename naked symbols in real and virtual
903         operands.
904
905 2006-12-11  Andreas Schwab  <schwab@suse.de>
906
907         * varasm.c (elf_record_gcc_switches): Cast second argument of
908         ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.
909
910 2006-12-11  Diego Novillo  <dnovillo@redhat.com>
911
912         * tree-scalar-evolution.c (scev_const_prop):
913         * tree-phinodes.c (remove_phi_node): Add argument
914         RELEASE_LHS_P.  If given, release the SSA name on the LHS of
915         the PHI node.
916         Update all users.
917         * tree-ssa-dce.c: Remove forward declarations for static
918         functions.  Re-arrange functions bodies as needed.
919         (find_obviously_necessary_stmts): Never mark PHI nodes as
920         obviously necessary.
921
922 2006-12-11  Carlos O'Donell  <carlos@codesourcery.com>
923
924         * config/arm/elf.h (MAX_OFILE_ALIGNMENT): Remove definition.
925
926 2006-12-11  Jan Hubicka  <jh@suse.cz>
927
928         * value-prof.c (tree_stringops_transform): New.
929         (tree_value_profile_transformations): Require count to be non-zero;
930         call stringop transform; reset stmt BSI after BB changed.
931         (tree_divmod_fixed_value, tree_mod_pow2): Don't emit unnecesary label.
932         (interesting_stringop_to_profile_p, tree_stringop_fixed_value): New.
933         (tree_stringops_values_to_profile): New.
934         (tree_values_to_profile): Call tree_stringops_values_to_profile.
935         * tree.h (build_string_literal): Tidy prototype.
936         (validate_arglist, builtin_memset_read_str, get_pointer_alignment):
937         Declare.
938         * builtins.c (validate_arglist, builtin_memset_read_str,
939         get_pointer_alignment): Export.
940
941 2006-12-11  Uros Bizjak  <ubizjak@gmail.com>
942
943         PR target/30120
944         Revert:
945         2006-11-15  Uros Bizjak  <ubizjak@gmail.com>
946
947         * config/i386/i386.opt: New target option -mx87regparm.
948
949         * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
950         float_in_x87: Add new variables. mmx_words, sse_words: Remove.
951         (X87_REGPARM_MAX): Define.
952
953         * config/i386/i386.c (override_options): Error out for
954         -mx87regparm but no 80387 support.
955         (ix86_attribute_table): Add x87regparm.
956         (ix86_handle_cconv_attribute): Update comments for x87regparm.
957         (ix86_comp_type_attributes): Check for mismatched x87regparm types.
958         (ix86_function_x87regparm): New function.
959         (ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
960         point registers.
961         (init_cumulative_args): Initialize x87_nregs and float_in_x87
962         variables.
963         (function_arg_advance): Process x87_nregs and x87_regno when
964         floating point argument is to be passed in 80387 register.
965         (function_arg): Pass XFmode arguments in 80387 registers for local
966         functions.  Pass SFmode and DFmode arguments to local functions
967         in 80387 registers when flag_unsafe_math_optimizations is set.
968
969         * reg-stack.c (convert_regs_entry): Disable NaN load for
970         stack registers that are used for argument passing.
971
972         * doc/extend.texi: Document x87regparm function attribute.
973         * doc/invoke.texi: Document -mx87regparm.
974
975 2006-12-11  Jan Hubicka  <jh@suse.cz>
976
977         Move all varpool routines out of cgraph/cgraphunit to varpool.c
978         * cgraph.c: Update comments.
979         (cgraph_varpool_hash,
980         cgraph_varpool_nodes, cgraph_varpool_last_needed_node
981         cgraph_varpool_node_name, cgraph_varpool_node,
982         cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
983         cgraph_variable_initializer_availability): Move to
984         varpool.c and drop cgraph_ prefixes.
985         (cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
986         cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
987         move to varpool.c; drop cgraph_ prefix; make static.
988         (dump_cgraph_varpool_node): Move to varpool.c under name
989         dump_varpool_node.
990         (dump_varpool, hash_varpool_node, eq_varpool_node,
991         decide_is_variable_needed): Move to varpool.c
992         (decl_assembler_name_equal): Move to tree.c.
993         (availability_names): Rename to ...
994         (cgraph_availability_names): ... this one.
995         (dump_cgraph_node): Update.
996         * cgraph.h: Reorder declarations now in varpool.c
997         (cgraph_vailablity_names): Declare.
998         (struct cgraph_varpool_node): Rename to ...
999         (struct varpool_node): ... this one.
1000         (cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
1001         cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
1002         cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
1003         cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
1004         cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
1005         cgraph_variable_initializer_availability): Rename to ...
1006         (varpool_first_unanalyzed_node, varpool_nodes_queue,
1007         varpool_first_unanalyzed_node, varpool_node,
1008         varpool_node_for_asm, varpool_mark_needed_node,
1009         varpool_finalize_decl, varpool_enqueue_needed_node,
1010         varpool_assemble_pending_decls, variable_initializer_availability):
1011         Rename to ...
1012         * tree.c (decl_assembler_name_equal): Move here from cgraph.c.
1013         * tree.h (decl_assembler_name_equal): Declare.
1014         * omp-low.c (lower_omp_critical): Update.
1015         * ipa-reference (analyze_variable, static_execute): Likewise.
1016         * toplev.c (wrapup_global_declaration_2, compile_file): Update.
1017         * cgraphunit.c: Update comments.
1018         (cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
1019         varpool_assembled_nodes_queue.
1020         (cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
1021         varpool_analyze_pending_decls.
1022         (cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
1023         varpool_remove_unreferenced_decls.
1024         (record_reference): Update.
1025         (cgraph_create_edges): Update.
1026         (record_referneces_in_initializer): New function.
1027         (cgraph_varpool_assemble_decl): Move to varpool.c under name
1028         varpool_assemble_decl; make global.
1029         (cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
1030         varpool_assemble_pending_decls.
1031         (process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
1032         struct cgraph_order_sort, cgraph_output_in_order,
1033         cgraph_function_and_variable_invisibility, cgraph_optimize,
1034         cgraph_increase_alignment): Update.
1035         * dwarf2out.c (decls_for_scope): Likewise.
1036         * ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
1037         * except.c (output_ttype): Likewise.
1038         * varasm.c (mark_decl_referenced): Likewise.
1039         (find_decl_and_mark_referenced, assemble_alias): update.
1040         * Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
1041         * passes.c (rest_of_decl_compilation): Update.
1042
1043 2006-12-11  Ira Rosen  <irar@il.ibm.com>
1044
1045         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Use 
1046         GIMPLE_STMT_OPERAND.
1047         * tree-vect-transform.c (vect_permute_store_chain): Likewise.
1048         (vect_setup_realignment): Likewise.
1049
1050 2006-12-11  Sa Liu  <saliu@de.ibm.com>
1051             Ben Elliston  <bje@au.ibm.com>
1052
1053         * config/spu/spu-elf.h (STARTFILE_SPEC): Update.
1054         (ENDFILE_SPEC): Likewise.
1055         * config/spu/spu.opt (mstdmain): New option.
1056         * config/spu/crti.asm: Remove.
1057         * config/spu/crtn.asm: Likewise.
1058         * config/spu/crt0.c: Likewise.
1059         * config/spu/crtend.c: Likewise.
1060         * config/spu/t-spu-elf (EXTRA_MULTILIB_PARTS): Remove crt0 files
1061         listed above.
1062         ($(T)crti.o, $(T)crtn.o, $(T)crt1.o, $(T)crtend1.o): Remove.
1063         * doc/invoke.texi (SPU Options): Document -mstdmain.
1064
1065 2006-12-10  Zdenek Dvorak <dvorakz@suse.cz>
1066
1067         * doc/loop.texi: Document number_of_latch_executions and
1068         number_of_cond_exit_executions.
1069         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
1070         chrec_is_positive, number_of_iterations_for_all_loops,
1071         scev_const_prop): Use number_of_latch_executions.
1072         (set_nb_iterations_in_loop): Do not increase the value of the
1073         number of iterations.
1074         (number_of_iterations_in_loop): Renamed to ...
1075         (number_of_latch_executions): ... this.
1076         (number_of_exit_cond_executions): New function.
1077         * tree-scalar-evolution.h (number_of_iterations_in_loop): Declaration
1078         removed.
1079         (number_of_latch_executions, number_of_exit_cond_executions): Declare.
1080         * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Use
1081         number_of_latch_executions.
1082         * tree-data-ref.c (get_number_of_iters_for_loop): Use
1083         number_of_exit_cond_executions.
1084         * tree-vect-analyze.c (vect_get_loop_niters): Ditto.
1085         * cfgloop.h (struct loop): Improve description of the nb_iterations
1086         field.
1087
1088 2006-12-10  Daniel Berlin  <dberlin@dberlin.org>
1089
1090         * tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
1091         (tree_pointer_compare): Remove.
1092
1093 2006-12-10  Zdenek Dvorak <dvorakz@suse.cz>
1094
1095         * tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
1096         * loop-unswitch.c (unswitch_loops): Use FOR_EACH_LOOP.
1097         * tree-loop-linear.c (linear_transform_loops): Ditto.
1098         * tree-ssa-loop-im.c (determine_lsm): Ditto.
1099         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
1100         free_numbers_of_iterations_estimates): Ditto.
1101         * tree_ssa_unswitch_loops (tree_ssa_unswitch_loops): Ditto.
1102         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
1103         * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
1104         * modulo-sched.c (sms_schedule): Ditto.
1105         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables,
1106         tree_unroll_loops_completely): Ditto.
1107         * predict.c (predict_loops): Ditto.
1108         * tree-if-conv.c (main_tree_if_conversion): Ditto.
1109         * loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
1110         decide_unrolling_and_peeling): Ditto.
1111         * cfgloopmanip.c (unloop): Use delete_loop.
1112         (place_new_loop): Access larray vector instead of parray.
1113         (create_preheaders, force_single_succ_latches,
1114         fix_loop_structure): Use FOR_EACH_LOOP and delete_loop..
1115         * loop-doloop.c (doloop_optimize_loops): Ditto.
1116         * loop-invariant.c (move_loop_invariants): Ditto.
1117         * tree-cfg.c (replace_uses_by): Ditto.
1118         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Ditto.
1119         * tree-chrec.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
1120         Moved to ...
1121         * tree.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
1122         ... here.
1123         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
1124         compute_overall_effect_of_inner_loop, chrec_is_positive): Use
1125         get_loop and get_chrec_loop.
1126         (number_of_iterations_for_all_loops): Use number_of_loops.
1127         (scev_initialize, scev_reset, scev_const_prop): Use FOR_EACH_LOOP.
1128         * tree-scalar-evolution.h (get_chrec_loop): New inline function.
1129         * cfgloopanal.c (mark_irreducible_loops): Use number_of_loops,
1130         and FOR_EACH_LOOP.
1131         * tree-chrec.c (evolution_function_is_invariant_rec_p,
1132         chrec_convert_1): Use get_loop and get_chrec_loop.
1133         * loop-init.c (loop_optimizer_init): Use number_of_loops.
1134         (loop_optimizer_init): Use FOR_EACH_LOOP.
1135         * tree-vectorizer.c (vect_loops_num): Removed.
1136         (vectorize_loops): Store number of loops locally.  Use
1137         FOR_EACH_LOOP and get_loop.
1138         * tree-vectorizer.h (vect_loops_num): Removed.
1139         * tree-data-ref.c (get_number_of_iters_for_loop): Use get_loop.
1140         (find_data_references_in_loop): Do not set parallel_p.
1141         * tree-data-ref.h: Do not declare VEC(loop_p).
1142         * cfgloop.c (flow_loops_dump, mark_single_exit_loops,
1143         verify_loop_structure): Use FOR_EACH_LOOP.
1144         (flow_loops_free): Use FOR_EACH_LOOP, free larray vector.
1145         (initialize_loops_parallel_p): Removed.
1146         (flow_loops_find): Push the loops into a vector.
1147         (delete_loop): New function.
1148         (cancel_loop): Use delete_loop.
1149         * cfgloop.h: Declare VEC(loop_p).
1150         (struct loop): Remove parallel_p field.
1151         (struct loops): Replace num and parray field by larray vector.
1152         Remove shared_headers field.
1153         (delete_loop): Declare.
1154         (get_loop, get_loops, number_of_loops, fel_next, fel_init,
1155         FOR_EACH_LOOP): New.
1156         * doc/loop.tex: Document new accessor functions.
1157
1158 2006-12-10  Andrew MacLeod  <amacleod@redhat.com>
1159
1160         * common.opt (-ftree-lrs): Remove live range splitting option.
1161         * makefile.in: Add tree-ssa-coalesce.o and reduce header dependancies.
1162         * opts.c (decode_options): Remove flag_tree_live_range_split.
1163         * tree-flow.h (struct var_ann_d): Rename fields from root_ to base_.
1164         * tree-flow-inline.h (single_imm_use_p): New.  Check for single use.
1165         * tree-outof-ssa.c: Remove header files which aren't needed.
1166         (SSANORM_*): Remove flags.
1167         (print_exprs_edge, coalesce_abnormal_edges, coalesce_phi_operands, 
1168         coalesce_result_decls_and_copies, coalesce_asm_operands): Remove.
1169         (coalesce_ssa_name): Move to tree-ssa-coalesce.c.
1170         (assign_vars): Use Basevar instead of root_var structure.
1171         (replace_def_variable): Dont do anything if def is replaceable.
1172         (remove_ssa_form): Integrate functional changes.
1173         (rewrite_out_of_ssa): Remove live-range_split option.
1174         * tree-ssa-coalesce.c: New File for ssa-name coalescing.
1175         (coalesce_cost): Calculate the cost of a coalesce.
1176         (coalesce_cost_bb): Calculate the coalesce cost within a BB.
1177         (coalesce_cost_edge): Calculate the coalesce cost on an edge.
1178         (pop_cost_one_pair): Remove the best coalesce with cost 1 from the list.
1179         (pop_best_coalesce): Remove the best coalesce from the list.
1180         (coalesce_pair_map_hash): Calculate coalesce pair hash.
1181         (coalesce_pair_map_eq): Compare 2 coalesce pairs for hash function.
1182         (create_coalesce_list): Create a coalesce list object.
1183         (delete_coalesce_list): Free a coalesce list object.
1184         (find_coalesce_pair): Find matching pair in the coalesce list.
1185         (add_cost_one_coalesce): Add a coalesce to the "cost one" list.
1186         (add_coalesce): Add a coalesce to the coalesce list.
1187         (compare_pairs): Comparision function to determine pair sorted order.
1188         (num_coalesce_pairs): Number of coalesced pairs.
1189         (first_coalesce_pair, end_coalesce_pair_p, next_coalesce_pair):
1190         Coalesce pair iterator functions.
1191         (sort_coalesce_list): Sort coalesce pairs in order of expense.
1192         (dump_coalesce_list): Show coalesce list.
1193         (ssa_conflicts_new): Create an SSA conflict graph.
1194         (ssa_conflicts_delete): Delete an SSA conflict graph.
1195         (ssa_conflicts_test_p): Test for conflicts.
1196         (ssa_conflicts_add_one): Add a single conflict.
1197         (ssa_conflicts_add): Add a conflict pair.
1198         (ssa_conflicts_merge): Merge conflicts.
1199         (struct live_track_d): Struct for tracking live partitions.
1200         (new_live_track): Create new live_track object.
1201         (delete_live_track): Delete a live_track object.
1202         (live_track_remove_partition): Remove a partition from the live list.
1203         (live_track_add_partition): Add a partition from the live list.
1204         (live_track_clear_var): Take VAR from the live list.
1205         (live_track_live_p): Is var live?
1206         (live_track_process_use): Make var come alive.
1207         (live_track_process_def): Make var go dead, add conflicts.
1208         (live_track_init): Initialize to a live on exit set.
1209         (live_track_clear_base_vars): Clear live partitions.
1210         (build_ssa_conflict_graph): Build a conflict graph.
1211         (print_exprs): Common debug output routine.
1212         (abnormal_corrupt): Output info about a failed coalesce across an
1213         abnormal edge.
1214         (fail_abnormal_edge_coalesce): Output info about a failed MUST_COALESCE.
1215         (create_outofssa_var_map): Create a var map and coalesce list.
1216         (attempt_coalesce): Coalesce a pair.
1217         (coalesce_partitions): Coalesce all pairs in a coalesce list.
1218         (coalesce_ssa_name): Entry point.  Determine what ssa_names to coalesce.
1219         * tree-ssa-live.c: Remove header files which aren't needed.
1220         (var_map_base_init): New.  Initialize a basevar list.
1221         (var_map_base_fini): New.  Finish a basevar list.
1222         (init_var_map): Initialize new fields.
1223         (delete_var_map): Free new fields.
1224         (var_union): Use renamed fields.
1225         (compact_var_map): Remove.
1226         (partition_to_view_init): Use renamed fields, change order of an if.
1227         (partition_view_fini): Use renamed fields.
1228         (partition_view_normal): Create basevar list if requested.
1229         (partition_view_bitmap): Create a view based on a bitmap of partitions.
1230         (change_partition_var): Use renamed fields.
1231         (create_ssa_var_map): Remove.
1232         (tpa_init, tpa_remove_partition, tpa_delete, tpa_compact,
1233         root_var_init): Remove.
1234         (partition_pair_map_hash, partition_pair_map_eq, create_coalesce_list,
1235         delete_coalesce_list, find_partition_pair, coalesce_cost, add_coalesce,
1236         compare_pairs, num_coalesce_pairs, first_partition_pair,
1237         end_partition_pair_p, next_partition_pair, sort_coalesce_list,
1238         pop_best_coalesce, add_conflicts_if_valid, set_if_valid,
1239         build_tree_conflict_graph, coalesce_tpa_members, dump_coalesce_list,
1240         tpa_dump): Moved to tree-ssa-coalesce.c and/or renamed there.
1241         (dump_var_map): Use renamed fields.
1242         * tree-ssa-live.h (struct  _var_map): Modify fields.
1243         (partition_to_var, version_to_var, var_to_partition): Use renamed 
1244         fields.
1245         (basevar_index): New.  Index of the base variable of a partition.
1246         (num_basevars): New.  Number of unique base variables in partition map.
1247         (register_ssa_partition): Use renamed fields.
1248         (struct tree_partition_associator_d): Remove.
1249         (tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
1250         tpa_find_tree, tpa_decompact, root_var_init, root_var_num,
1251         root_var, root_var_first_partition, root_var_next_partition,
1252         root_var_dump, root_var_delete, root_var_remove_partition, 
1253         root_var_find, root_var_compact, root_var_decompact): Remove.
1254         (struct partition_pair, struct coalesce_list_d): Moved to 
1255         tree-ssa-coalesce.c
1256         * tree-ssa-ter.c: Remove header files which aren't needed.
1257
1258 2006-12-10  Steven Bosscher  <steven@gcc.gnu.org>
1259
1260         * cse.c: (struct cse_basic_block_data): Remove LAST field.
1261         (struct branch_path): Remove BRANCH and TAKEN fields. Add new
1262         BB field.
1263         (cse_visited_basic_blocks): New static bitmap.
1264         (cse_end_of_basic_block, cse_basic_block): Remove.
1265         (cse_find_path, cse_dump_path, cse_prescan_path,
1266         cse_extended_basic_block): New static functions.
1267         (cse_insn): Don't CSE over setjmp calls.  Use the CFG to find
1268         basic block boundaries.  Don't record jump equivalences here.
1269         Update the CFG after doing in-place replacement of the SET_SRC.
1270         (cse_main): Rewrite.  Look for extended basic block headers
1271         and call cse_extended_basic_block on them until all paths that
1272         start at this header are exhausted.
1273         (rest_of_handle_cse): Verify that the CFG is incrementally updated
1274         and correct after cse_main.
1275         Don't call delete_trivially_dead_insns, let cfgcleanup do that.
1276         (rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
1277         (pass_cse): Add TODO_verify_flow.
1278         (pass_cse2): Likewise.
1279
1280 2006-12-10  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1281
1282         * reload1.c (choose_reload_regs): Don't set byte offset when
1283         resolving subregs of hard regs.
1284
1285 2006-12-09  Zack Weinberg  <zackw@panix.com>
1286
1287         * c-opts.c (c_common_parse_file): Unconditionally give a warning,
1288         suitable for the language, if set_yydebug is true.
1289         * c-pragma.h: Define enum pragma_omp_clause here.  Don't define
1290         YYDEBUG or declare yydebug.
1291         * c-parser.c (yydebug, enum pragma_omp_clause): Delete.
1292
1293 2006-12-09  Jan Hubicka  <jh@suse.cz>
1294
1295         * cgraph.c: Update copyright.
1296         * cgraph.h: Likewise
1297         (cgraph_update_pending_function): Remove prototype.
1298         * cgraphunit.c: Update copyright; update overall comment.
1299         (cgraph_assemble_pending_functions): Make local.
1300
1301 2006-12-09  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1302
1303         * haifa-sched.c (schedule_block): Remove excessive sanity check.
1304
1305 2006-12-08  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1306
1307         * config/spu/spu-protos.h (spu_split_immediate): Renamed from
1308         spu_split_address.
1309         (cpat_const_p, gen_cpat_const): Add.
1310         * config/spu/spu.c (immediate_class): New enum.
1311         (cpat_info, classify_immediate): New.
1312         (print_operand): Use S, D, T instead of F, G, H.  Use
1313         classify_immediate.  Handle cpat cases.
1314         (spu_split_immediate):  Renamed from spu_split_address.  Split all
1315         immediates that can be split.
1316         (immediate_load_p): Use classify_immediate.
1317         (spu_legitimate_constant_p): Accept everything except some cases of
1318         CONST_VECTOR.
1319         (spu_expand_move): Use spu_split_immedate.
1320         (fsmbi_const_p): Use classify_immediate.
1321         (cpat_const_p): New.
1322         (gen_cpat_const: New.
1323         * config/spu/constraints.md (j,k,l): New constraints for cpat
1324         instructions.
1325         * config/spu/spu.md (unnamed splitter): Change address splitter to
1326         handle all immediates.
1327         (_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
1328         instructions.
1329         (cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
1330         when possible.
1331
1332 2006-12-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1333
1334         PR target/30039
1335         * pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
1336         patterns.  Correct length of high:DI instruction sequence.
1337
1338 2006-12-08  Mike Stump  <mrs@apple.com>
1339
1340         * config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
1341         libgcc with -mmacosx-version-min=10.4.
1342         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
1343         G4 for 10.5+ unless doing kernel builds.
1344
1345 2006-12-08  Uros Bizjak  <ubizjak@gmail.com>
1346
1347         PR target/30120
1348         * reg-stack.c (convert_regs_entry): Mark current argument passing
1349         registers as live.
1350
1351         * config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
1352         of float arguments in x87 registers.
1353
1354 2006-12-08  John David Anglin  <dave.anglin.@nrc-cnrc.gc.ca>
1355
1356         * pa.h (LEGITIMATE_CONSTANT_P): Simplify.
1357
1358 2006-12-08  Mark Shinwell  <shinwell@codesourcery.com>
1359
1360         * recog.c (mode_dependent_address_p): Identify pre-increment,
1361         pre-decrement, post-increment and post-decrement addressing as always
1362         being mode-dependent.
1363         * config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
1364         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1365         * config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
1366         * config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
1367         PRE_INC and POST_INC checks.
1368         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1369         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1370         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1371         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1372         * config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
1373         PRE_INC, POST_DEC and POST_INC cases.
1374         * config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
1375         Delete POST_INC and PRE_DEC cases.
1376         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
1377         no-op.
1378         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1379         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
1380         no-op.
1381         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1382         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1383         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
1384         PRE_INC and PRE_DEC cases.
1385         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1386         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1387         * config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
1388         (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1389         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1390         * config/vax/vax.c (vax_mode_dependent_address_p): Delete
1391         auto-increment cases.
1392         * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
1393         auto-increment cases.
1394         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
1395
1396 2006-12-08  Andrew MacLeod  <amacleod@redhat.com>
1397
1398         * Makefile.in: Add new file tree-ssa-ter.c.
1399         * tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table,
1400         free_temp_expr_table, add_value_to_version_list,
1401         add_value_to_partition_list, remove_value_from_partition_list,
1402         add_dependence, check_replaceable, finish_expr, mark_replaceable,
1403         kill_expr, kill_virtual_exprs, find_replaceable_in_bb,
1404         find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
1405         * tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
1406         prototypes.
1407         * tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
1408         (struct value_expr_d): Remove.
1409         (struct temp_expr_table_d): Rename fields, add explicit vector of
1410         replaceable expressions instead of sharing.  Change value_expr_p's to
1411         bitmap.  Delete free_list.
1412         (new_temp_expr_table): Rename fields, count number of ssa_names in
1413         each partition.
1414         (free_temp_expr_table): Rename field, free new fields.
1415         (new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
1416         add_info_to_list, remove_value_from_list): Delete.
1417         (version_to_be_replaced_p): New.  Is an ssa-name replaceable?
1418         (make_dependent_on_partition): New.  Set bit in version list, allocating
1419         a bitmap if need be.
1420         (add_to_partition_kill_list): New.  Set bit in the partition list,
1421         allocating a bitmap if need be.
1422         (remove_from_partition_kill_list): New.  Remove a bit from the
1423         partition list, free the bitmap if it is empty.
1424         (add_dependence): Use renamed field, cleanup.  Don't add a dependence
1425         on partitions with only one member.
1426         (is_replaceable_p): New.  Split out replaceability check from
1427         check_replaceable.
1428         (process_replaceable): New.  Code split from check_replaceable.
1429         (check_replaceable): Removed.
1430         (finished_with_expr): Renamed from finish_expr.
1431         (kill_expr): Use renamed fields and less parameters.
1432         (kill_virtual_exprs): Less parameters.
1433         (mark_replaceable): Use renamed fields.
1434         (find_replaceable_in_bb): Use renamed fields, cleanup.
1435         (find_replaceable_exprs): Use renamed routines, cleanup.
1436         (dump_replaceable_exprs): Don't go past end of ssa_names list.
1437         (debug_ter): New.  Debug routine to dump state.
1438
1439 2006-12-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1440
1441         * config/bfin/bfin.c (effective_address_32bit_p): Return true for
1442         anything involving the GOT.
1443         (bfin_adjust_cost): Don't take the REGNO of a MEM.
1444         (trapping_loads_p): Look inside the pattern of an insn to find the
1445         SET.
1446         * config/bfin/bfin.md (attr "type"): Add movcc.
1447         (insn_reservation "alu"): Likewise.
1448         (movsicc_insn1, movsicc_insn2): Change type to movcc.
1449
1450 2006-12-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1451
1452         * config/spu/spu-c.c (spu_build_overload_builtin): Delete.
1453         (spu_resolve_overloaded_builtin): Check for non scalar instead
1454         of vector type and check the function call argument type also for
1455         non scalar.
1456         Call build_function_call instead of spu_build_overload_builtin.
1457
1458 2006-12-07  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1459
1460         * config/spu/spu.c (array_to_constant): Correct the order of arguments
1461         to the calls of hwint_to_const_double.
1462
1463 2006-12-07  Nick Clifton  <nickc@redhat.com>
1464
1465         * config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to
1466         elf_record_gcc_switches.
1467
1468 2006-12-07  Andrew Macleod  <amacleod@redhat.com>
1469
1470         * expr.c (string_constant): Account for non-zero lower bound arrays.
1471
1472 2006-12-07  Richard Guenther  <rguenther@suse.de>
1473
1474         * builtins.c (expand_builtin_pow): Adjust predicates for
1475         pow to cbrt expansion to unsafe math and !HONOR_NANS for
1476         negative base.
1477
1478 2006-12-07  Jan Hubicka  <jh@suse.cz>
1479
1480         * i386.c (nocona_cost, pentium4_cost): Update preffered memcpy/memset
1481         codegen.
1482
1483 2006-12-07  Jan Hubicka  <jh@suse.cz>
1484
1485         * tree-vrp.c (compare_values): Short circuit INTEGER_CST;
1486         use fold_constant_to_binary; tolerate wrong type constants.
1487         (value_intersect_p): Do just two tests.
1488
1489 2006-12-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1490
1491         * config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
1492         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
1493         lshifthi3): Use it, and fix the order of alternatives.
1494
1495 2006-12-07  Nick Clifton  <nickc@redhat.com>
1496
1497         * common.opt (record-gcc-switches): New command line switch.
1498         * target.h (print_switch_type): New enum.
1499         (print_switch_fn_type): New typedef for a function pointer.
1500         (struct gcc_target): Add record_gcc_switches and
1501         record_gcc_switches_section fields.
1502         * target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a
1503         default definition.
1504         (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default
1505         definition.
1506         * toplev.c (print_single_switch): Simplify by providing a
1507         pointer to function that will format and output the switch
1508         appropriately.
1509         (print_switch_values): Likewise.
1510         (print_to_asm_out_file): New function.
1511         (print_to_stderr): New function.
1512         (init_asm_output): If flag_record_gcc_switches is set then if
1513         the target supports recording the switches then emit them into
1514         the assembler output file, otherwise tell the user that the
1515         switch is not supported.
1516         * varasm.c (eld_record_gcc_switches): New function.  Example
1517         handler for the record_gcc_switches target hook.
1518         * doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new
1519         target hook.
1520         (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
1521         * doc/invoke.texi (-frecord-gcc-switches): Document.
1522
1523 2006-12-07  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1524
1525         PR target/29794
1526         * sched-rgn.c (add_block1): Use correct initializer.
1527
1528 2006-12-07  Richard Guenther  <rguenther@suse.de>
1529
1530         * tree-vect-transform.c (vectorizable_call): Fix leftover of
1531         TREE_OPERAND to GIMPLE_STMT_OPERAND conversion.
1532
1533 2006-12-06  Aldy Hernandez  <aldyh@redhat.com>
1534
1535         PR/30079
1536         * config/pa/pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR
1537         not GIMPLE_MODIFY_STMT.
1538
1539 2006-12-06  Jan Hubicka  <jh@suse.cz>
1540
1541         * tree-vrp.c (operand_less_p): New.
1542         (compare_values, value_inside_range): Rewrite in terms of
1543         operand_less_p.
1544
1545 2006-12-06 Uros Bizjak <ubizjak@gmail.com>
1546
1547         * config/i386/i386.md (DIRFLAG_REG): Remove constant.
1548         (type): Remove cld.
1549         (length_immediate): Do not depend on cld type attribute.
1550         (length_address): Ditto.
1551         (modrm): Ditto.
1552         (memory): Ditto.
1553         (cld): Remove insn pattern.
1554         (strmov_singleop): Do not use DIRFLAG_REG.
1555         (*strmovdi_rex_1): Ditto.
1556         (*strmovsi_1): Ditto.
1557         (*strmovsi_rex_1): Ditto.
1558         (*strmovhi_1): Ditto.
1559         (*strmovhi_rex_1): Ditto.
1560         (*strmovqi_1): Ditto.
1561         (*strmovqi_rex_1): Ditto.
1562         (rep_mov): Ditto.
1563         (*rep_movdi_rex64): Ditto.
1564         (*rep_movsi): Ditto.
1565         (*rep_movsi_rex64): Ditto.
1566         (*rep_movqi): Ditto.
1567         (*rep_movqi_rex64): Ditto.
1568         (strset_singleop): Ditto.
1569         (*strsetdi_rex_1): Ditto.
1570         (*strsetsi_1): Ditto.
1571         (*strsetsi_rex_1): Ditto.
1572         (*strsethi_1): Ditto.
1573         (*strsethi_rex_1): Ditto.
1574         (*strsetqi_1): Ditto.
1575         (*strsetqi_rex_1): Ditto.
1576         (rep_stos): Ditto.
1577         (*rep_stosdi_rex64): Ditto.
1578         (*rep_stossi): Ditto.
1579         (*rep_stossi_rex64): Ditto.
1580         (*rep_stosqi): Ditto.
1581         (*rep_stosqi_rex64): Ditto.
1582         (cmpstrnsi): Do not generate cld insn.
1583         (cmpstrnqi_nz_1): Do not use DIRFLAG_REG.
1584         (*cmpstrnqi_nz_1): Ditto.
1585         (*cmpstrnqi_nz_rex_1): Ditto.
1586         (cmpstrnqi_1): Ditto.
1587         (*cmpstrnqi_1): Ditto.
1588         (*cmpstrnqi_rex_1): Ditto.
1589         (strlenqi_1): Ditto.
1590         (*strlenqi_1): Ditto.
1591         (*strlenqi_rex_1): Ditto.
1592
1593         * config/i386/geode.md (shift): Do not depend on cld type attribute.
1594         * config/i386/pentium.md (pent_cld): Remove insn reservation.
1595         * config/i386/athlon.md (athlon_decode): Do not depend on cld
1596         type attribute.
1597         * config/i386/ppro.md (ppro_cld): Remove insn reservation.
1598         * config/i386/k6.md (k6_alux_only): Do not depend on cld type
1599         attribute.
1600         (k6_alux_only_load): Ditto.
1601         (k6_alux_only_store): Ditto.
1602
1603         * config/i386/i386.c (ix86_expand_movmem): Remove cld_done boolean.
1604         Do not emit cld instruction.
1605         (ix86_expand_setmem): Ditto.
1606         (ix86_expand_strlen): Do not emit cld instruction.
1607
1608 2006-12-06  Bernd Schmidt  <bernd.schmidt@analog.com>
1609
1610         * config/bfin/bfin.c (bfin_rtx_costs): Add a number of new cases, tweak
1611         old ones.
1612
1613 2006-12-06  Diego Novillo  <dnovillo@redhat.com>
1614
1615         * gdbinit.in: Set complaints to 0.
1616
1617 2006-12-06  Jan Hubicka  <jh@suse.cz>
1618
1619         * statistics.h (ALONE_PASS_MEM_STAT, ALONE_MEM_STAT_INFO,
1620         ALONE_MEM_STAT_DECL): New macros.
1621         * bitmap.h: Include statistics.h
1622         (struct bitmap_head_def): Add variant with pointer to bitmap descriptor.
1623         (bitmap_initialize_stat): Rename from bitmap_initialize; add statistics.
1624         (bitmap_obstack_alloc_stat, bitmap_gc_alloc_stat): Declare.
1625         * bitmap.c: Include hashtab.h
1626         (bitmap_descriptor): New.
1627         (bitmap_hash): New static variable
1628         (hash_descriptor, eq_descriptor, bitmap_descriptor, register_overhead):
1629         New static functions.
1630         (bitmap_register): New.
1631         (bitmap_element_free, bitmap_element_allocate, bitmap_elt_clear_from,
1632         bitmap_obstack_release): Do accounting.
1633         (bitmap_obstack_alloc_stat): Rename from bitmap_obstack_alloc ; do
1634         accounting.
1635         (bitmap_gc_alloc_stat): Likewise.
1636         (bitmap_obstack_free, bitmap_find_bit): Do statictics.
1637         (print_statistics, dump_bitmap_statistics): New functions.
1638         * toplev.c (finalize): Dump bitmap statistics.
1639
1640 2006-12-06  Bernd Schmidt  <bernd.schmidt@analog.com>
1641
1642         * reload1.c (delete_output_reload): Count occurrences in
1643         CALL_INSN_FUNCTION_USAGE.
1644         * rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
1645         crashing at the end of the list.
1646
1647 2006-12-05  Daniel Berlin  <dberlin@dberlin.org>
1648
1649         * tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
1650         Optimize to avoid marking more SMT's as used when they aren't.
1651
1652 2006-12-05  Eric Christopher  <echristo@apple.com>
1653
1654         * config/i386/i386.c (x86_output_aligned_bss): Move out
1655         of COMMON_ASM_OP ifdef.
1656
1657 2006-12-05  Eric Christopher  <echristo@apple.com>
1658
1659         * config/darwin.h (DARWIN_EXTRA_SPECS): New.
1660         (STARTFILE_SPEC): Use.
1661         (DARWIN_DYLIB1_SPEC): New.
1662         (DARWIN_CRT1_SPEC): New.
1663         * config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
1664         DARWIN_EXTRA_SPECS.
1665         * config/i386/darwin.h: Ditto.
1666         * config/rs6000/darwin.h: Ditto.
1667
1668 2006-12-05  Daniel Berlin  <dberlin@dberlin.org>
1669
1670         * tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
1671         * tree-complex.c (pass_lower_complex): Ditto.
1672         * tree-ssa-ccp.c (pass_ccp): Ditto.
1673         (pass_store_ccp): Ditto.
1674         * tree-ssa-dom.c (pass_dominator): Ditto.
1675         (pass_phi_only_cprop): Ditto.
1676         * tree-sra.c (pass_sra): Ditto.
1677         * tree-ssa-forwprop.c (pass_forwprop): Ditto.
1678         * tree-flow.h (updating_used_alone): Remove.
1679         (updating_used_alone): Ditto.
1680         * tree-ssa-alias.c (updating_used_alone): Remove variable.
1681         (lhs_may_store_to): Remove function.
1682         (recalculate_used_alone): Ditto.
1683         (compute_may_aliases): Remove used_alone calculation.
1684         * tree.h (struct tree_memory_tag): Remove is_used_alone and
1685         old_used_alone. Remove SMT_USED_ALONE and SMT_OLD_USED_ALONE.
1686         * tree-pass.h (PROP_smt_usage): Remove.
1687         * passes.c (execute_todo): Remove used alone recalculation.
1688         (execute_one_pass): Ditto.
1689         * tree-ssa-operands.c (add_virtual_operand): Remove used_alone
1690         stuff.
1691
1692 2006-12-05  Brooks Moses  <brooks.moses@codesourcery.com>
1693
1694         * doc/include/texinfo.tex: Update to version 2006-11-08.17.
1695
1696 2006-12-05  Zdenek Dvorak <dvorakz@suse.cz>
1697
1698         PR tree-optimization/14784
1699         * tree-ssa-operands.c (access_can_touch_variable): Unrevert the fix.
1700
1701 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
1702
1703         Merge from gimple-tuples-branch.
1704
1705         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1706
1707         * config/s390/s390.c (s390_va_start): Replace MODIFY_EXPR with
1708         GIMPLE_MODIFY_STMT.
1709         (s390_gimplify_va_arg): Same.
1710         * config/sparc/sparc.c (sparc_gimplify_va_arg): Same.
1711         * config/sh/sh.c (sh_va_start): Same.
1712         (sh_gimplify_va_arg_expr): Same.
1713         * config/xtensa/xtensa.c (xtensa_va_start): Same.
1714         (xtensa_gimplify_va_arg_expr): Same.
1715         * config/ia64/ia64.c (ia64_gimplify_va_arg): Same.
1716         * config/pa/pa.c (hppa_gimplify_va_arg_expr): Same.
1717         * config/mips/mips.c (mips_va_start): Same.
1718         (mips_gimplify_va_arg_expr): Same.
1719
1720         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1721
1722         * Merge from mainline at revision 119445.
1723
1724         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1725
1726         * config/spu/spu.c (spu_va_start): Change MODIFY_EXPR to
1727         GIMPLE_MODIFY_STMT.
1728         (spu_gimplify_va_arg_expr): Same.
1729
1730         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1731
1732         * config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
1733         Change uses of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
1734         (xstormy16_expand_builtin_va_arg): Same.
1735
1736         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1737
1738         * config/frv/frv.c (frv_expand_builtin_va_start): Change MODIFY_EXPR
1739         to GIMPLE_MODIFY_STMT.
1740
1741         2006-12-04  Aldy Hernandez  <aldyh@redhat.com>
1742
1743         * config/alpha/alpha.c (va_list_skip_additions): Change all
1744         occurrences of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
1745         (alpha_va_start): Same.
1746         (alpha_gimplify_va_arg_1): Same.
1747         (alpha_gimplify_va_arg): Same.
1748
1749         2006-12-01  Aldy Hernandez  <aldyh@redhat.com>
1750
1751         * gimplify.c (gimplify_modify_expr): Remove FIXME comment.
1752
1753         2006-12-01  Aldy Hernandez  <aldyh@redhat.com>
1754
1755         * tree-ssa-loop-im.c: Rename all PROTECTED_TREE_OPERAND to
1756         GENERIC_TREE_OPERAND, and all PROTECTED_TREE_TYPE to
1757         GENERIC_TREE_TYPE.
1758         * tree-complex.c: Same.
1759         * tree-pretty-print.c: Same.
1760         * tree.c: Same.
1761         * tree.h: Same.
1762         * builtins.c: Same.
1763         * fold-const.c: Same.
1764         * tree-ssa-dom.c: Same.
1765         * tree-ssa-propagate.c: Same.
1766         * tree-ssa-alias.c: Same.
1767         * gimple-low.c: Same.
1768         * dwarf2out.c: Same.
1769         * c-pretty-print.c: Same.
1770         * gimplify.c: Same.
1771         * tree-inline.c: Same.
1772         * tree-outof-ssa.c: Same.
1773         * tree-ssa-structalias.c: Same.
1774         * tree-ssa-reassoc.c: Same.
1775         * stmt.c: Same.
1776
1777         2006-11-16  Aldy Hernandez  <aldyh@redhat.com>
1778
1779         * tree.c (build2_stat): Fix comment.
1780
1781         2006-11-13  Aldy Hernandez  <aldyh@redhat.com>
1782
1783         * tree-ssa-propagate.c (get_rhs): Use GIMPLE_MODIFY_STMT and
1784         TREE_OPERAND when appropriate.
1785
1786         2006-11-04  Aldy Hernandez  <aldyh@redhat.com>
1787
1788         * java/java-tree.h (lang_tree_node): Handle gimple tuples.
1789         (EXPR_WFL_EMIT_LINE_NOTE): Look inside base.
1790         (EXPR_WFL_LINECOL): Use EXPR_LOCUS macro instead of exp.locus.
1791         * java/java-gimplify.c (java_gimplify_expr): Comment on why we do
1792         not handle GIMPLE_MODIFY_STMT in the switch statement.
1793         (java_gimplify_modify_expr): Call build2 with GIMPLE_MODIFY_STMT.
1794         (java_gimplify_new_array_init): Same.
1795
1796         2006-11-03  Aldy Hernandez  <aldyh@redhat.com>
1797
1798         * gimplify.c (gimplify_omp_for): Allow gimple statements.
1799         * tree-outof-ssa.c (check_replaceable): Use PROTECTED_TREE_OPERAND.
1800         * fold-const.c (fold_binary): Allow gimple statements.
1801         (fold): Same.
1802         * fortran/trans-array.c (gfc_conv_descriptor_data_set_internal):
1803         Rename from gfc_conv_descriptor_data_set.
1804         Call gfc_add_modify instead of gfc_add_modify_expr.
1805         * fortran/trans-array.h (gfc_conv_descriptor_data_set_internal):
1806         Rename from gfc_conv_descriptor_data_set.
1807         (gfc_conv_descriptor_data_set): New macro.
1808         (gfc_conv_descriptor_data_set_tuples): New macros.
1809         * fortran/trans-openmp.c (gfc_omp_clause_default_ctor): Call
1810         gfc_conv_descriptor_data_set_tuples.
1811         * fortran/trans.c (gfc_add_modify): Rename from gfc_add_modify_expr.
1812         Generate GIMPLE_MODIFY_STMT when appropriate.
1813         * fortran/trans.h (gfc_add_modify): Rename from gfc_add_modify_expr.
1814         (gfc_add_modify_expr): New macro.
1815         (gfc_add_modify_stmt): New macro.
1816         * fortran/f95-lang.c (lang_tree_node): Handle gimple statements.
1817
1818         2006-11-01  Aldy Hernandez  <aldyh@redhat.com>
1819
1820         * Merge from mainline at revision 118200.
1821
1822         2006-10-09  Aldy Hernandez  <aldyh@redhat.com>
1823
1824         * tree-inline.c (copy_bb): Check for GIMPLE_MODIFY_STMT, and adjust
1825         accordingly.
1826
1827         2006-10-09  Aldy Hernandez  <aldyh@redhat.com>
1828
1829         * tree.h (TREE_CHAIN, TREE_TYPE): Add versions for non GCC or not
1830         enable checking.
1831         Also, add __extension__ to GCC versions.
1832         * tree-mudflap.c (mf_xform_derefs_1): Add parentheses around TREE_TYPE.
1833         * tree-inline.c (copy_tree_r): Initialize chain to assuage the warning
1834         patrol.
1835
1836         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
1837
1838         * tree-complex.c (expand_complex_libcall): Adjust for
1839         GIMPLE_MODIFY_STMT.
1840         (expand_complex_comparison): Same.
1841         * tree-pretty-print.c (dump_generic_node): Is_expr should include
1842         GIMPLE_STMT_P statements.
1843         * value-prof.c (tree_divmod_fixed_value_transform): Adjust for
1844         GIMPLE_MODIFY_STMT.
1845         (tree_mod_pow2_value_transform): Same.
1846         (tree_mod_subtract_transform): Same.
1847         * tree.c (build2_stat): Check for gimplified function in cfun.
1848         * tree.h (DECL_GIMPLIFIED): Delete.
1849         (struct tree_function_decl): Remove gimplified_flag.
1850         * omp-low.c (lower_omp_for): Adjust for GIMPLE_MODIFY_STMT.
1851         * cp/cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
1852         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
1853         (cxx_omp_clause_copy_ctor): Same.
1854         (cxx_omp_clause_assign_op): Same.
1855         * c-pretty-print.c (pp_c_conditional_expression): Same.
1856         (pp_c_expression): Same.
1857         * langhooks.c (lhd_omp_predetermined_sharing): Same.
1858         * function.h (struct function): Add gimplified field.
1859         * tree-if-conv.c (add_to_dst_predicate_list): Adjust for
1860         GIMPLE_MODIFY_STMT.
1861         (find_phi_replacement_condition): Same.
1862         * gimplify.c (gimplify_modify_expr_to_memcpy): Same.
1863         (gimplify_modify_expr_to_memset): Same.
1864         (gimplify_init_ctor_eval_range): Same.
1865         (gimplify_modify_expr_complex_part): Same.
1866         (tree_to_gimple_tuple): Same.
1867         (gimplify_modify_expr): Same.
1868         (gimple_push_cleanup): Same.
1869         (gimplify_omp_for): Same.
1870         (gimplify_omp_atomic_pipeline): Same.
1871         (gimplify_omp_atomic_mutex): Same.
1872         (gimplify_expr): Same.
1873         (gimplify_one_sizepos): Same.
1874         (gimplify_function_tree): Same.
1875         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Same.
1876         (vect_recog_widen_sum_pattern): Same.
1877         * tree-vect-transform.c (get_initial_def_for_reduction): Same.
1878         (vect_create_epilog_for_reduction): Same.
1879         (vectorizable_reduction): Same.
1880
1881         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
1882
1883         * tree-ssa-math-opts.c (replace_reciprocal): Use GIMPLE_STMT_OPERAND.
1884         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p): Same.
1885         (ifc_temp_var): Same.
1886         * tree-vect-analyze.c (vect_determine_vectorization_factor): Check
1887         for gimple statements.
1888         (vect_analyze_operations): Same.
1889         (exist_non_indexing_operands_for_use_p): Use GIMPLE_STMT_OPERAND.
1890         * gimplify.c (gimplify_return_expr): Handle gimple statements.
1891         * lambda-code.c (can_put_in_inner_loop): Same.
1892         (can_put_after_inner_loop): Same.
1893         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
1894         (vect_create_data_ref_ptr): Same.
1895         (vect_init_vector): Same.
1896         (vect_get_vec_def_for_operand): Same.
1897         (vect_create_epilog_for_reduction): Same.
1898         (vectorizable_reduction): Same.
1899         (vectorizable_assignment): Same.
1900         (vectorizable_operation): Same.
1901         (vectorizable_load): Same.
1902         (vectorizable_condition): Same.
1903         * config/rs6000/rs6000.c (rs6000_va_start): Do not create MODIFY_EXPRs.
1904         (rs6000_gimplify_va_arg): Same.
1905
1906         2006-09-25  Aldy Hernandez  <aldyh@redhat.com>
1907
1908         * tree-vrp.c (simplify_div_or_mod_using_ranges): Use
1909         GIMPLE_STMT_OPERAND.
1910         (simplify_abs_using_ranges): Same.
1911         * tree-complex.c (expand_complex_operations_1): Use
1912         PROTECTED_TREE_OPERAND.
1913         * tree-ssa-loop-niter.c (simplify_replace_tree): Check for gimple
1914         stmt.
1915         (get_val_for): Use GIMPLE_STMT_OPERAND.
1916         * tree-tailcall.c (adjust_accumulator_values): Same.
1917         (adjust_return_value): Same.
1918         * tree.c (walk_tree): Use IS_GIMPLE_STMT_CODE_CLASS on default
1919         case.  Remove special case for tcc_gimple_stmt.
1920         * tree.h (CAN_HAVE_LOCATION_P): New.
1921         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Check for
1922         GIMPLE_STMT_P.
1923         * tree-stdarg.c (va_list_counter_bump): Use GIMPLE_STMT_OPERAND.
1924         * tree-ssa-dom.c (propagate_rhs_into_lhs): Same.
1925         * tree-nrv.c (execute_return_slot_opt): Same.
1926         * tree-ssa-alias.c (count_uses_and_derefs): Check for GIMPLE_STMT_P.
1927         * tree-vn.c (set_value_handle): Same.
1928         (get_value_handle): Same.
1929         * c-decl.c (add_stmt): Use CAN_HAVE_LOCATION_P.
1930         * tree-vectorizer.c (find_loop_location): Same.
1931         * c-typeck.c (c_process_expr_stmt): Same.
1932         (c_finish_stmt_expr): Same.
1933         * gimplify.c (should_carry_locus_p): Same.
1934         (tree_to_gimple_tuple): Delete definition and use of unecessary
1935         variable save_tree_block.
1936         * tree-ssa-pre.c (phi_translate): Check for GIMPLE_STMT_P.
1937         (create_expression_by_pieces): Use GIMPLE_STMT_OPERAND.
1938         (realify_fake_stores): Same.
1939         * tree-ssa-forwprop.c (forward_propagate_addr_into_variable_arr):
1940         Use TREE_OPERAND.
1941         * tree-inline.c (copy_body_r): Check for EXPR_P and GIMPLE_STMT_P.
1942         (copy_tree_r): Check for IS_GIMPLE_STMT_CODE_CLASS.
1943         * tree-cfg.c (move_stmt_r): Use EXPR_P.  Check for GIMPLE_STMT_P.
1944         * c-parser.c (c_parser_typeof_specifier): Use CAN_HAVE_LOCATION_P.
1945         (c_parser_statement_after_labels): Same.
1946         (c_parser_paren_condition): Same.
1947         (c_parser_for_statement): Same.
1948         (c_parser_omp_for_loop): Same.
1949         * tree-ssa-reassoc.c (linearize_expr): Use GIMPLE_STMT_OPERAND.
1950         (linearize_expr_tree): Same.
1951         * dwarf2out.c (reference_to_unused): Check for GIMPLE_STMT_P.
1952         * function.c (instantiate_expr): Same.
1953
1954         2006-09-22  Aldy Hernandez  <aldyh@redhat.com>
1955
1956         * tree.c (expr_location): Use GIMPLE_STMT_LOCUS.
1957         (set_expr_location): Same.
1958         (expr_locus): Same.
1959         (set_expr_locus): Same.
1960         (expr_filename): Same.
1961         (expr_lineno): Same.
1962         (tree_block): Use GIMPLE_STMT_BLOCK.
1963         (protected_tree_operand): Use GIMPLE_STMT_OPERAND.
1964         * tree.h (struct gimple_stmt): Remove prev and next.
1965         (GIMPLE_STMT_OPERAND_CHECK): New.
1966         (TREE_TO_GIMPLE_STMT): Delete.
1967         (GIMPLE_STMT_TO_TREE): Delete.
1968         (GIMPLE_STMT_OPERAND): Use union, not cast.
1969         (GIMPLE_STMT_LOCUS): New.
1970         (GIMPLE_STMT_BLOCK): New.
1971         * gimplify.c (tree_to_gimple_tuple): Use union.  Do not cast
1972         to tree_base.
1973         * tree-cfg.c (verify_gimple_tuples_1): Call gcc_unreachable.
1974
1975         2006-09-21  Aldy Hernandez  <aldyh@redhat.com>
1976
1977         * tree-into-ssa.c (REGISTER_DEFS_IN_STMT): Change common.base
1978         to base.
1979         * tree-tailcall.c (adjust_return_value): Same.
1980         * tree.c (tree_code_size): Remove GIMPLE_STATEMENT_LIST case.
1981         (copy_node_stat): Change common.base to base.
1982         (tree_node_structure): Return TS_GIMPLE_STATEMENT for tcc_gimple_stmt.
1983         Remove GIMPLE_STATEMENT_LIST case.
1984         * tree.h (struct gimple_stmt): Make operands of type tree.
1985         (TREE_CODE, TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
1986         CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
1987         TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
1988         TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
1989         TYPE_CACHED_VALUES_P, TREE_SIDE_EFFECTS, FORCED_LABEL,
1990         TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
1991         TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
1992         BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN, TREE_USED,
1993         TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT, DECL_BY_REFERENCE,
1994         CALL_FROM_THUNK_P, TYPE_ALIGN_OK, TREE_PRIVATE, TREE_PROTECTED,
1995         TREE_DEPRECATED, IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
1996         TREE_LANG_FLAG_*, SSA_NAME_OCCURS_IN_ABNORMAL_PHI,
1997         SSA_NAME_IN_FREE_LIST, TYPE_VOLATILE, TYPE_READONLY, BINFO_VIRTUAL_P):
1998         Change common.base to base.
1999         (GIMPLE_STATEMENT_LIST*): Remove.
2000         (union tree_node): Add base.  Remove gimple_statement_list.
2001         Remove pointer from gstmt.
2002         * tree-ssa-propagate.c (set_rhs): Change common.base to base.
2003         * treestruct.def: Add TS_BASE.  Remove TS_GIMPLE_STATEMENT_LIST.
2004         * tree-vn.c (vn_compute): Change common.base to base.
2005         * tree-eh.c (verify_eh_throw_stmt_node): Same.
2006         * tree-flow-inline.h (var_ann): Same.
2007         (function_ann): Same.
2008         (stmt_ann): Same.
2009         (mark_non_addressable): Same.
2010         * gimplify.c (tree_to_gimple_tuple): Same.
2011         * tree.def (DEFTREECODE): Remove GIMPLE_STATEMENT_LIST.
2012         * tree-dfa.c (create_var_ann): Change common.base to base.
2013         (create_function_ann): Same.
2014         (create_stmt_ann): Same.
2015         (create_tree_ann): Same.
2016         (collect_dfa_stats_r): Same.
2017         * tree-ssa-pre.c (NECESSARY): Change common.base to base.
2018         * tree-ssa-dce.c (NECESSARY): Same.
2019         * tree-ssa.c (delete_tree_ssa): Same.
2020         * tree-optimize.c (execute_free_cfg_annotations): Same.
2021         * tree-flow.h: Same.
2022
2023         2006-09-19  Aldy Hernandez  <aldyh@redhat.com>
2024
2025         * tree.c (tree_code_size): Handle GIMPLE_STATEMENT_LIST.
2026         (tree_node_structure): Handle GIMPLE_STATEMENT_LIST and
2027         GIMPLE_MODIFY_STMT.
2028         * tree.h (struct gimple_stmt): Add prev and next fields.
2029         (GIMPLE_STMT_TO_TREE): Cast, do not call GIMPLE_STMT_CHECK.
2030         (GIMPLE_STATEMENT_LIST_HEAD): New.
2031         (GIMPLE_STATEMENT_LIST_TAIL): New.
2032         (struct gimple_statement_list): New.
2033         (union tree_node): Add gimple_stmt_list and gstmt.
2034         * treestruct.def: Add TS_GIMPLE_STATEMENT_LIST, TS_GIMPLE_STATEMENT.
2035         * tree.def: Add GIMPLE_STATEMENT_LIST.
2036
2037         2006-09-06  Aldy Hernandez  <aldyh@redhat.com>
2038
2039         * tree-dump.c (dequeue_and_dump): Handle GIMPLE_MODIFY_STMT.
2040         * tree-vrp.c (build_assert_expr_for): Change uses of
2041         MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
2042         (find_assert_locations): Same.
2043         (remove_range_assertions): Same.
2044         (stmt_interesting_for_vrp): Same.
2045         (vrp_visit_assignment): Same.
2046         (vrp_visit_stmt): Same.
2047         (simplify_cond_using_ranges): Same.
2048         * tree-into-ssa.c (REGISTER_DEFS_IN_THIS_STMT): Adjust for new
2049         tree structure.
2050         * tree-ssa-loop-im.c (movement_possibility): Change uses of
2051         MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
2052         (stmt_cost): Same.
2053         (determine_invariantness_stmt): Same.
2054         (schedule_sm): Same.
2055         (gather_mem_refs_stmt): Same.
2056         * tree-complex.c (init_dont_simulate_again): Same.
2057         (complex_visit_stmt): Same.
2058         (set_component_ssa_name): Same.
2059         (expand_complex_move): Same.
2060         (expand_complex_div_wide): Same.
2061         (expand_complex_comparison): Same.
2062         (expand_complex_operations_1): Same.
2063         * tree-ssa-loop-niter.c (expand_simple_operations): Same.
2064         (chain_of_csts_start): Same.
2065         (infer_loop_bounds_from_undefined): Same.
2066         * tree-pretty-print.c (dump_generic_node): Same.
2067         (op_prio): Same.
2068         (op_symbol_1): Same.
2069         * tree-ssa-loop-manip.c (create_iv): Same.
2070         * value-prof.c (tree_divmod_fixed_value): Same.
2071         (tree_divmod_fixed_value_transform): Same.
2072         (tree_mod_pow2): Same.
2073         (tree_mod_pow2_value_transform): Same.
2074         (tree_mod_subtract): Same.
2075         (tree_mod_subtract_transform): Same.
2076         (tree_divmod_values_to_profile): Same.
2077         * tree-tailcall.c (process_assignment): Same.
2078         (find_tail_calls): Same.
2079         (adjust_accumulator_values): Same.
2080         (adjust_return_value): Same.
2081         (eliminate_tail_call): Same.
2082         * tree.c (tree_code_size): Handle tcc_gimple_stmt.
2083         (make_node_stat): Same.
2084         (copy_node_stat): Handle gimple tuples.
2085         (expr_align): Handle GIMPLE_MODIFY_STMT.  Abort on MODIFY_EXPR.
2086         (tree_node_structure): Handle tcc_gimple_stmt.
2087         (build2_stat): Abort on MODIFY_EXPR after gimplification.  Handle
2088         tcc_gimple_stmt.
2089         (build2_gimple_stat): New.
2090         (expr_location): New.
2091         (set_expr_location): New.
2092         (expr_has_location): New.
2093         (expr_locus): New.
2094         (set_expr_locus): New.
2095         (expr_filename): New.
2096         (expr_lineno): New.
2097         (walk_tree): Handle tcc_gimple_stmt.
2098         (tree_block): New.
2099         (protected_tree_operand): New.
2100         (protected_tree_type): New.
2101         (tree_code_kind): Add gimple statements.
2102         * tree.h (tree_code_class): Add tcc_gimple_stmt.
2103         (IS_GIMPLE_STMT_CODE_CLASS): New.
2104         (struct tree_base): New.
2105         (struct tree_common): Shrink.
2106         (struct gimple_stmt): New.
2107         (struct gimple_expr): New.
2108         (TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
2109         CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
2110         TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
2111         TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
2112         TYPE_CACHED_VALUES_P, SAVE_EXPR_RESOLVED_P, TREE_SIDE_EFFECTS,
2113         FORCED_LABEL, TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
2114         TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
2115         BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN,
2116         TREE_USED, TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT,
2117         DECL_BY_REFERENCE, CALL_FROM_THUNK_P, TYPE_ALIGN_OK,
2118         TREE_PRIVATE, TREE_PROTECTED, TREE_DEPRECATED,
2119         IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
2120         TREE_LANG_FLAG_[0-6], SSA_NAME_CHECK, SSA_NAME_IN_FREE_LIST,
2121         TYPE_VOLATILE, TYPE_READONLY, TREE_VISITED, BINFO_VIRTUAL_P):
2122         Adjust for new `common' layout.
2123         (struct tree_function_decl): Add gimplified_flag.
2124         (DECL_GIMPLIFIED): NEW.
2125         (EXPR_LOCATION, SET_EXPR_LOCUS, EXPR_FILENAME, EXPR_LOCUS,
2126         SET_EXPR_LOCUS, SET_EXPR_LOCATION, EXPR_LINENO,
2127         EXPR_HAS_LOCATION): Call corresponding function.
2128         (GIMPLE_STMT_CHECK): New.
2129         (TREE_OPERAND_CHECK, TREE_TYPE, TREE_CHAIN): Abort on gimple tuples.
2130         (TREE_BLOCK): Call tree_block.
2131         (GIMPLE_STMT_P): New.
2132         (GIMPLE_TUPLE_P): New.
2133         (TREE_TO_GIMPLE_STMT): New.
2134         (GIMPLE_STMT_TO_TREE): New.
2135         (GIMPLE_STMT_OPERAND): New.
2136         (GIMPLE_TUPLE_HAS_LOCUS_P): New.
2137         (PROTECTED_TREE_OPERAND): New.
2138         (PROTECTED_TREE_TYPE): New.
2139         (build2_gimple_stat): Protoize.
2140         (build2_gimple): New.
2141         (expr_location): Protoize.
2142         (set_expr_location): Protoize.
2143         (expr_has_location): Protoize.
2144         (expr_locus): Protoize.
2145         (set_expr_locus): Protoize.
2146         (expr_filename): Protoize.
2147         (expr_lineno): Protoize.
2148         (tree_block): Protoize.
2149         (protected_tree_operand): Protoize.
2150         (protected_tree_type): Protoize.
2151         (enum tree_node_kind): Add gimple_stmt_kind.
2152         * c-decl.c (union lang_tree_node): Tuples do not have a
2153         TREE_CHAIN.
2154         * ipa-cp.c (constant_val_insert): Change uses of MODIFY_EXPR to
2155         GIMPLE_MODIFY_STMT and adjust accordingly.
2156         * tree-scalar-evolution.c (follow_ssa_edge): Same.
2157         (interpret_condition_phi): Same.
2158         (pointer_used_p): Same.
2159         (analyze_scalar_evolution_1): Same.
2160         (scev_const_prop): Same.
2161         (interpret_rhs_modify_stmt): Rename from
2162         interpret_rhs_modify_expr.
2163         * builtins.c (std_expand_builtin_va_start): Change uses of
2164         MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
2165         (std_gimplify_va_arg_expr): Same.
2166         (expand_builtin_va_copy): Same.
2167         (integer_valued_real_p): Same.
2168         * fold-const.c (maybe_lvalue_p): Same.
2169         (fold_unary): Same.
2170         (tree_expr_nonnegative_p): Same.
2171         (tree_expr_nonzero_p): Same.
2172         * omp-low.c (extract_omp_for_data): Same.
2173         (lower_rec_input_clauses): Same.
2174         (lower_reduction_clauses): Same.
2175         (lower_copyprivate_clauses): Same.
2176         (lower_send_clauses): Same.
2177         (lower_send_shared_vars): Same.
2178         (expand_parallel_call): Same.
2179         (expand_omp_parallel): Same.
2180         (expand_omp_for_generic): Same.
2181         (expand_omp_for_static_nochunk): Same.
2182         (expand_omp_for_static_chunk): Same.
2183         (expand_omp_sections): Same.
2184         (lower_omp_single_copy): Same.
2185         (lower_omp_parallel): Same.
2186         * tree-ssa-dse.c (memory_address_same): Same.
2187         (dse_optimize_stmt): Same.
2188         * ipa-reference.c (scan_for_static_refs): Same.
2189         * tree-gimple.c (is_gimple_reg_rhs): Same.
2190         (get_call_expr_in): Same.
2191         (recalculate_side_effects): Same.
2192         * cgraphunit.c (cgraph_create_edges): Same.
2193         * tree-ssa-copyrename.c (rename_ssa_copies): Same.
2194         * tree-ssa-ccp.c (get_default_value): Same.
2195         (likely_value): Same.
2196         (visit_assignment): Same.
2197         (ccp_visit_stmt): Same.
2198         (get_maxval_strlen): Same.
2199         (ccp_fold_builtin): Same.
2200         * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Same.
2201         (find_givs_in_stmt): Same.
2202         (find_interesting_uses_op): Same.
2203         (find_interesting_uses_stmt): Same.
2204         (rewrite_use_nonlinear_expr): Same.
2205         * ipa-pure-const.c (scan_function): Same.
2206         * tree-stdarg.c (va_list_counter_bump): Same.
2207         (check_all_va_list_escapes): Same.
2208         (execute_optimize_stdarg): Same.
2209         * tree-ssa-math-opts.c (compute_merit): Same.
2210         (insert_reciprocals): Same.
2211         (execute_cse_reciprocals): Same.
2212         * tree-ssa-dom.c (initialize_hash_element): Same.
2213         (simple_iv_increment_p): Same.
2214         (record_equivalences_from_stmt): Same.
2215         (optimize_stmt): Same.
2216         (remove_stmt_or_phi): Same.
2217         (get_rhs_or_phi_arg): Same.
2218         (get_lhs_or_phi_result): Same.
2219         (propagate_rhs_into_lhs): Same.
2220         * tree-nrv.c (tree_nrv): Same.
2221         (execute_return_slot_opt): Same.
2222         * tree-ssa-propagate.c (get_rhs): Same.
2223         (set_rhs): Same.
2224         (stmt_makes_single_load): Same.
2225         (stmt_makes_single_store): Same.
2226         (replace_vuses_in): Same.
2227         (fold_predicate_in): Same.
2228         (substitute_and_fold): Same.
2229         * tree-ssa-alias.c (compute_call_clobbered): Same.
2230         (recalculate_used_alone): Same.
2231         (count_uses_and_derefs): Same.
2232         (is_escape_site): Same.
2233         (find_used_portions): Same.
2234         * gimple-low.c (lower_stmt): Same.
2235         (block_may_fallthru): Same.
2236         (lower_return_expr): Same.
2237         * tree-ssa-sink.c (is_hidden_global_store): Same.
2238         (statement_sink_location): Same.
2239         * dwarf2out.c (loc_descriptor_from_tree_1): Same.
2240         * expr.c (safe_from_p): Same.
2241         (expand_expr_real): Same.
2242         (expand_expr_real_1): Same.
2243         * tree-ssa-loop-ivcanon.c (empty_loop_p): Same.
2244         * predict.c (expr_expected_value): Same.
2245         (strip_builtin_expect): Same.
2246         (apply_return_prediction): Same.
2247         (tree_bb_level_predictions): Same.
2248         (tree_estimate_probability): Same.
2249         * tree-vn.c (vn_compute): Same.
2250         * tree-eh.c (add_stmt_to_eh_region_fn): Same.
2251         (remove_stmt_from_eh_region_fn): Same.
2252         (do_return_redirection): Same.
2253         (honor_protect_cleanup_actions): Same.
2254         (lower_try_finally_switch): Same.
2255         (lower_eh_constructs_1): Same.
2256         (tree_could_throw_p): Same.
2257         (verify_eh_throw_stmt_node): Same.
2258         * function.c (gimplify_parameters): Same.
2259         * tree-vectorizer.c (vect_is_simple_use): Same.
2260         (vect_is_simple_reduction): Same.
2261         * ipa-type-escape.c (scan_for_refs): Same.
2262         * tree-if-conv.c (tree_if_conversion): Same.
2263         (tree_if_convert_stmt): Same.
2264         (if_convertible_gimplify_modify_stmt_p): Rename from
2265         if_convertible_modify_expr_p.
2266         (if_convertible_stmt_p): Adjust for GIMPLE_MODIFY_STMT.
2267         (ifc_temp_var): Same.
2268         (replace_phi_with_cond_modify_stmt): Rename from
2269         replace_phi_with_cond_modify_expr.
2270         (process_phi_nodes): Call replace_phi_with_cond_modify_stmt.
2271         * tree.def (DEFTREECODE): Add GIMPLE_MODIFY_STMT.
2272         * tree-data-ref.c (find_data_references_in_loop): Adjust for
2273         GIMPLE_MODIFY_STMT.
2274         * tree-flow-inline.h (var_ann): Same.
2275         (function_ann): Same.
2276         (stmt_ann): Same.
2277         (mark_non_addressable): Same.
2278         * tree-vect-analyze.c (vect_determine_vectorization_factor): Same.
2279         * gimplify.c (tree_to_gimple_tuple): New.
2280         (build_stack_save_restore): Adjust for GIMPLE_MODIFY_STMT.
2281         (gimplify_return_expr): Same.
2282         (gimplify_decl_expr): Same.
2283         (gimplify_self_mod_expr): Same.
2284         (gimplify_cond_expr): Same.
2285         (gimplify_init_constructor): Same.
2286         (gimplify_modify_expr): Same.
2287         (gimplify_expr): Same.
2288         (gimplify_function_tree): Same.
2289         (force_gimple_operand): Same.
2290         * tree-ssa-phiopt.c (conditional_replacement): Same.
2291         (minmax_replacement): Same.
2292         (abs_replacement): Same.
2293         * tree-dfa.c (create_var_ann): Same.
2294         (create_function_ann): Same.
2295         (create_stmt_ann): Same.
2296         (create_tree_ann): Same.
2297         (collect_dfa_stats_r): Same.
2298         * tree-ssa-pre.c (find_or_generate_expression): Same.
2299         (create_expression_by_pieces): Same.
2300         (try_look_through_load): Same.
2301         (insert_fake_stores): Same.
2302         (realify_fake_stores): Same.
2303         (compute_avail): Same.
2304         (eliminate): Same.
2305         (init_pre): Same.
2306         (poolify_modify_stmt): Rename from poolify_modify_stmt.
2307         Adjust for GIMPLE_MODIFY_STMT.
2308         (NECESSARY): Adjust for new `common' layout.
2309         * tree-ssa-live.c (build_tree_conflict_graph): Adjust for
2310         GIMPLE_MODIFY_STMT.
2311         * tree-sra.c (sra_walk_modify_stmt): Rename from
2312         sra_walk_modify_expr.
2313         (sra_walk_function): Adjust for GIMPLE_MODIFY_STMT.
2314         (generate_copy_inout): Same.
2315         (generate_element_copy): Same.
2316         (generate_element_zero): Same.
2317         (scalarize_copy): Same.
2318         * tree-mudflap.c (mf_decl_cache_locals): Same.
2319         (mf_build_check_statement_for): Same.
2320         (mf_xform_derefs): Same.
2321         * ipa-prop.c (ipa_method_modify_stmt): Same.
2322         * print-tree.c (print_node): Handle gimple tuples.
2323         Add case for tcc_gimple_stmt.
2324         * tree-ssa-copy.c (stmt_may_generate_copy): Adjust for
2325         GIMPLE_MODIFY_STMT.
2326         (copy_prop_visit_assignment): Same.
2327         (copy_prop_visit_stmt): Same.
2328         (init_copy_prop): Same.
2329         * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): Same.
2330         (forward_propagate_into_cond_1): Same.
2331         (find_equivalent_equality_comparison): Same.
2332         (tidy_after_forward_propagate_addr): Same.
2333         (forward_propagate_addr_expr_1): Same.
2334         (simplify_not_neg_expr): Same.
2335         (simplify_switch_expr): Same.
2336         * tree-ssa-dce.c (find_pdom): Same.
2337         (mark_stmt_if_obviously_necessary): Same.
2338         (NECESSARY): Adjust for new `common' layout.
2339         * tree-flow.h: Same.
2340         * tree-vect-patterns.c (widened_name_p): Adjust for
2341         GIMPLE_MODIFY_STMT.
2342         (vect_recog_dot_prod_pattern): Same.
2343         (vect_recog_widen_sum_pattern): Same.
2344         (vect_pattern_recog_1): Same.
2345         * tree-nested.c (init_tmp_var): Same.
2346         (save_tmp_var): Same.
2347         (walk_stmts): Same.
2348         (convert_call_expr): Same.
2349         (finalize_nesting_tree_1): Same.
2350         * tree-ssa.c (verify_ssa): Same.
2351         (delete_tree_ssa): Same.
2352         * lambda-code.c (lbv_to_gcc_expression): Same.
2353         (lle_to_gcc_expression): Same.
2354         (lambda_loopnest_to_gcc_loopnest): Same.
2355         (can_put_in_inner_loop): Same.
2356         (can_convert_to_perfect_nest): Same.
2357         (perfect_nestify): Same.
2358         * tree-ssa-loop-prefetch.c (gather_memory_references): Same.
2359         * tree-inline.c (copy_body_r): Same.
2360         (setup_one_parameter): Same.
2361         (initialize_inlined_parameters): Same.
2362         (estimate_num_insns_1): Same.
2363         (expand_call_inline): Same.
2364         (gimple_expand_calls_inline): Same.
2365         (copy_tree_r): Same.
2366         * tree-optimize.c (execute_free_cfg_annotations): Same.
2367         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
2368         (vect_align_data_ref): Same.
2369         (vect_create_data_ref_ptr): Same.
2370         (vect_init_vector): Same.
2371         (vect_create_epilog_for_reduction): Same.
2372         (vectorizable_reduction): Same.
2373         (vectorizable_assignment): Same.
2374         (vectorizable_operation): Same.
2375         (vectorizable_store): Same.
2376         (vectorizable_load): Same.
2377         (vectorizable_live_operation): Same.
2378         (vectorizable_condition): Same.
2379         (vect_generate_tmps_on_preheader): Same.
2380         (vect_create_cond_for_align_checks): Same.
2381         * tree-object-size.c (collect_object_sizes_for): Same.
2382         (check_for_plus_in_loops_1): Same.
2383         (check_for_plus_in_loops): Same.
2384         * tree-outof-ssa.c (insert_copy_on_edge): Same.
2385         (replace_use_variable): Same.
2386         (check_replaceable): Same.
2387         (rewrite_trees): Same.
2388         (identical_copies_p): Same.
2389         (insert_backedge_copies): Same.
2390         * tree-profile.c (tree_gen_edge_profiler): Same.
2391         * tree-vect-generic.c (expand_vector_operations_1): Same.
2392         * tree-ssa-structalias.c (update_alias_info): Same.
2393         (find_func_aliases): Same.
2394         * tree-cfg.c (factor_computed_gotos): Same.
2395         (make_edges): Same.
2396         (make_goto_expr_edges): Same.
2397         (tree_merge_blocks): Same.
2398         (remove_useless_stmts_cond): Same.
2399         (remove_useless_stmts_1): Same.
2400         (tree_find_edge_insert_loc): Same.
2401         (verify_expr): Same.
2402         (gimplify_val): Same.
2403         (verify_gimple_tuples_1): New.
2404         (verify_gimple_tuples): New.
2405         (verify_stmts): Call verify_gimple_tuples.
2406         * tree-ssa-reassoc.c (get_rank): Adjust for GIMPLE_MODIFY_STMT.
2407         (get_unary_op): Same.
2408         (linearize_expr): Same.
2409         (get_single_immediate_use): Same.
2410         (negate_value): Same.
2411         (should_break_up_subtract): Same.
2412         (break_up_subtract): Same.
2413         (repropagate_negates): Same.
2414         (break_up_subtract_bb): Same.
2415         (reassociate_bb): Same.
2416         * config/i386/i386.c (ix86_va_start): Same.
2417         (ix86_gimplify_va_arg): Same.
2418         * stmt.c (expand_expr_stmt): Same.
2419         (warn_if_unused_value): Same.
2420         (expand_return): Same.
2421         * tree-ssanames.c (make_ssa_name): Same.
2422         * tree-ssa-threadedge.c (lhs_of_dominating_assert): Same.
2423         * tree-ssa-operands.c (finalize_ssa_defs): Same.
2424         (add_virtual_operand): Same.
2425         (get_expr_operands): Same.
2426         (parse_ssa_operands): Same.
2427         (get_modify_stmt_operands): Rename from get_modify_expr_operands.
2428
2429 2006-12-05  H.J. Lu  <hongjiu.lu@intel.com>
2430
2431         * config.host: Remove extra blank line.
2432
2433 2006-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
2434
2435         * config.host (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if
2436         target is also an x86 variant.
2437
2438 2006-12-05  Richard Guenther  <rguenther@suse.de>
2439
2440         * config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
2441         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
2442         (ix86_builtin_vectorized_function): New function to vectorize
2443         sqrt.
2444
2445 2006-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
2446
2447         * config/bfin/bfin.c (output_file_start): Fix comment which referred to
2448         ia64_override_options.
2449
2450 2006-12-04  Jan Hubicka  <jh@suse.cz>
2451
2452         * cfgexpand.c (expand_one_var): Guard expand_one_stack_var by
2453         really_expand.
2454
2455 2006-12-04  Bernd Schmidt  <bernd.schmidt@analog.com>
2456
2457         * rtlanal.c (note_uses): Deal with SEQUENCEs.
2458         * config/bfin/bfin.c: Include "timevar.h".
2459         (bfin_flag_schedule_insns2, splitting_for_sched,
2460         bfin_flag_var_tracking): New variables.
2461         (print_operand): Handle '%!'.
2462         (override_options): Disable normal sched2 pass, instead set
2463         bfin_flag_schedule_insns2 for reorg to handle it.
2464         (output_file_start): Likewise for var-tracking.
2465         (bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
2466         (gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
2467         New functions.
2468         (bfin_reorg): Do second scheduling pass here, and call
2469         bfin_gen_bundles.  Use type_for_anomaly and trapping_loads_p instead
2470         of examining insns directly.  If bfin_flag_var_tracking, call
2471         var-tracking pass when done with everything else.
2472         * config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
2473         * config/bfin/bfin.md (UNSPEC_32BIT): New constant.
2474         (movsi_insn32): New pattern, with two new splits to create it
2475         before the final scheduling pass.
2476         (neghi2): Not a dsp32 insn, rather alu0.
2477         (movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
2478         movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
2479         extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
2480         mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
2481         ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
2482         movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
2483         movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2484         ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
2485         addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
2486         subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
2487         addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
2488         flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
2489         flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
2490         flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
2491         flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
2492         flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
2493         mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
2494         lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
2495         variants instead of ';'.
2496         (ror_one, rol_one): Likewise.  Make them dsp32 insns.
2497         (ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
2498         (align8, align16, align24): Now named patterns; also using '%!'.
2499         (mnop): New insn.
2500
2501 2006-12-05  Kazu Hirata  <kazu@codesourcery.com>
2502
2503         * config/i386/darwin.h, config/spu/spu.c, tree-ssa-live.c,
2504         tree-vect-generic.c, tree-vect-transform.c: Fix comment typos.
2505
2506 2006-12-04  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2507
2508         * config/spu/spu-protos.c (spu_split_address): Add.
2509         * config/spu/spu.c (spu_split_address): Add.
2510         (print_operand): Handle HIGH.
2511         (spu_legitimate_address):  Don't test for aligned CONST.
2512         (spu_expand_mov):  Don't split addresses here.
2513         * config/spu/constraints.md (A): Don't test legitimate_const.
2514         * config/spu/spu.md: Add split of movsi patterns for PIC mode.
2515         (ceq_di): Use correct predicates.
2516
2517 2006-12-04  Eric Christopher  <echristo@apple.com>
2518
2519         * config/darwin.h: Update copyright notice.
2520         * config/i386/darwin.h: Ditto.
2521
2522 2006-12-04  Jan Hubicka  <jh@suse.cz>
2523
2524         * builtins.c (fold_builtin_memory_op): Check that expr_size match.
2525         * explow.c (expr_size, int_expr_size): Assert that size is non_NULL.
2526
2527 2006-12-04  Daniel Berlin  <dberlin@dberlin.org>
2528
2529         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
2530         set_used_smts.
2531         * tree-ssa-structalias.c (set_used_smts): Export.
2532         (find_what_p_points_to): Don't call set_used_smts here.
2533         * tree-ssa-structalias.h (set_used_smts): Add prototype.
2534
2535 2006-12-04  Daniel Berlin  <dberlin@dberlin.org>
2536
2537         * tree-ssa-alias.c (compute_may_aliases):
2538         Compute flow sensitive before flow insensitive.
2539         (compute_flow_sensitive_aliasing): Don't try to add
2540         a symbol memory tag to itself.
2541
2542         * alias.h (alias_set_subset_of): New prototype.
2543
2544         * alias.c (alias_set_subset_of): New function.
2545
2546         * tree-ssa-structalias.c: Update comments.
2547         (struct variable_info): Add finished_solution.
2548         (new_varinfo): Set finished solution to NULL.
2549         (var_escaped_vars): Remove.
2550         (escaped_vars_tree): Remove.
2551         (escaped_vars_id): Remove.
2552         (nonlocal_vars_id): Remove.
2553         (constraint_expr_type): Add INCLUDES.
2554         (graph_size): Removed.
2555         (dump_constraint): Support INCLUDES.
2556         (build_constraint_graph): Ditto.
2557         (collapse_nodes): Add merge_solutions argument.
2558         Don't merge attributes.
2559         (process_unification_queue): Just use collapse_nodes.
2560         (perform_var_substitution): Update call to collapse_nodes.
2561         (get_constraint_exp_from_ssa_var): Use INCLUDES.
2562         (process_constraint): Fix non-field sensitive handling
2563         Handle includes.
2564         (get_constraint_for): Use INCLUDES.
2565         (make_constraint_from_anything): Renamed from
2566         make_constraint_from_escaped.
2567         (make_constraint_to_escaped): Removed.
2568         (find_global_initializers): Removed.
2569         (create_variable_info_for): Do not make constraints to escaped
2570         vars anymore.
2571         (dump_solution_for_var): Don't print out the equivalent points-to
2572         sets, just use the name of the variable it shares it with.
2573         (intra_create_variable_infos): Use INCLUDES.
2574         Change nonlocal variable sets to anything sets.
2575         (init_base_vars): Remove escaped_vars and nonlocal_var
2576         initialization.
2577         (find_escape_constraints): Removed.
2578         (delete_points_to_sets): Remove dead code.
2579         (used_smt_calculated): New variable.
2580         (set_used_smts): New function.
2581         (merge_smts_into): New function.
2582         (find_what_p_points_to): Modify to use SMTs.
2583         (create_nonlocal_var): Remove.
2584
2585         * tree-ssa-operands.c (access_can_touch_variable): Remove
2586         reference to nonlocal_all.
2587
2588         * tree-ssa.c (verify_name_tags): Remove.
2589
2590 2006-12-04  Carlos O'Donell  <carlos@codesourcery.com>
2591
2592         * config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
2593         (__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.
2594
2595 2006-12-04  Andrew MacLeod  <amacleod@redhat.com>
2596
2597         * tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
2598         * tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
2599         (add_livein_if_notdef): Delete.
2600         (loe_visit_block): New.  Propogate live on entry info for a block into
2601         each predecessor.  If it changes, make sure it is visited again.
2602         (live_worklist): Visit every block and update the live on entry info
2603         for preds.  Iterate over any that changed.
2604         (set_var_live_on_entry): Populate the live on entry blocks with bits
2605         based on the immediate uses of a var.
2606         (calculate_live_on_entry): Remove.
2607         (calculate_live_on_exit): Calculate live on exit based on the newly
2608         oriented live on entry bits.
2609         (calculate_live_ranges): Build live on entry and exit vectors.
2610         (dump_live_info): Use new orientation of live on entry bitmaps.
2611         (verify_live_on_entry): New.  Split out verification code from old
2612         calculate_live_on_entry routine.
2613         * tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
2614         (live_entry_blocks): Rename to live_on_entry and return bitmap for a
2615         basic_block instead of for a partition.
2616         (live_merge_and_clear): Add asserts.
2617         (make_live_on_entry): Set partition bit in basic block vector.
2618
2619 2006-12-04  Jakub Jelinek  <jakub@redhat.com>
2620
2621         PR libgomp/29947
2622         * omp-low.c (expand_omp_for_static_nochunk,
2623         expand_omp_for_static_chunk): Do all arithmetics in signed rather than
2624         unsigned type.
2625
2626         PR middle-end/29965
2627         * omp-low.c (determine_parallel_type): Don't try to optimize combined
2628         parallels if region->exit or region->inner->exit is NULL.
2629         (expand_omp_parallel): Handle NULL region->exit even if cfg is already
2630         built.
2631         (expand_omp_for_generic): Handle NULL region->cond and region->exit.
2632         (expand_omp_for): Use expand_omp_for_generic if either region->cond
2633         or region->exit is NULL.
2634         (expand_omp_sections): Handle NULL region->cond or region->exit.
2635         (expand_omp_synch):
2636
2637 2006-12-04  Eric Botcazou  <ebotcazou@libertysurf.fr>
2638
2639         * config/sparc/sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
2640         * config/sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
2641
2642 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
2643
2644         * tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
2645         TYPE_MAX_VALUE for scalar types here but...
2646         (walk_tree): ...there instead.  Return NULL_TREE if the TYPE_DECL
2647         is attached an error mark, and the return value of the callback
2648         if it is not NULL_TREE.
2649
2650 2006-12-04  Ben Elliston  <bje@au.ibm.com>
2651
2652         * config/spu/spu.md (_mulv4si3): Remove unused local variables.
2653
2654 2006-12-03  Eric Christopher  <echristo@apple.com>
2655
2656         PR target/24598
2657         * config/t-slibgcc-darwin: Pass -install_name.
2658         * config/darwin.h (LINK_COMMAND_SPEC): Remove use of
2659         libtool. Only pass through options that the linker recognizes.
2660         (LINK_SPEC): Update comment. Translate options.
2661         (STARTFILE_SPEC): Add dylib1.o for shared libraries.
2662         * config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.
2663
2664 2006-12-03  Dorit Nuzman  <dorit@il.ibm.com>
2665
2666         * config/spu/spu.md (smaxv4sf3, sminv4sf3): New.
2667
2668 2006-12-03  Uros Bizjak  <ubizjak@gmail.com>
2669
2670         PR target/30041
2671         * config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
2672         operands[1] in insn constraint.  Correct type attribute to sselog1.
2673
2674 2006-12-02  H.J. Lu  <hongjiu.lu@intel.com>
2675
2676         PR target/30040
2677         * config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
2678         (bit_SSSE3): New.
2679         (host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
2680         processor detection.
2681
2682         * config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
2683         -march=native if there is no -mtune=*.
2684
2685         * config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
2686         coretypes.h.
2687
2688 2006-12-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2689
2690         * doc/install.texi: Update recommended MPFR version.  Remove
2691         obsolete reference to cumulative patch.
2692
2693 2006-12-02  Lee Millward  <lee.millward@codesourcery.com>
2694
2695         PR c/27953
2696         * c-decl.c (store_parm_decls_oldstyle): Robustify.
2697
2698 2006-11-30  Jan Hubicka  <jh@suse.cz>
2699             Uros Bizjak  <ubizjak@gmail.com>
2700
2701         * config/i386/i386.c (pentium4_cost, nocona_cost): Update
2702         32bit memcpy/memset decriptors.
2703         (decide_alg): With -minline-all-stringops and sizes that are best
2704         to be copied via libcall still work hard enough to pick non-libcall
2705         strategy.
2706
2707 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
2708
2709         * doc/extend.texi, doc/invoke.texi, doc/md.texi: Fix typos.
2710
2711         * builtins.c, cfgloop.h, cgraph.h, config/arm/arm.c,
2712         config/i386/i386.c, config/i386/i386.h, config/mips/mips.h,
2713         config/rs6000/cell.md, config/rs6000/rs6000.c, config/sh/sh.c,
2714         config/sh/sh4-300.md, config/spu/spu-builtins.def,
2715         config/spu/spu-c.c, config/spu/spu-modes.def,
2716         config/spu/spu.c, config/spu/spu.md,
2717         config/spu/spu_internals.h, config/spu/vmx2spu.h,
2718         fold-const.c, fwprop.c, predict.c, tree-data-ref.h,
2719         tree-flow.h, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
2720         tree-ssa-pre.c, tree-vect-analyze.c, tree-vect-transform.c,
2721         tree-vectorizer.c, tree-vrp.c: Fix comment typos.  Follow
2722         spelling conventions.
2723
2724         * config/i386/i386.c: Fix a comment typo.
2725
2726 2006-12-01  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2727
2728         * config/spu/spu.c (spu_immediate): Remove trailing comma.
2729         (reloc_diagnostic): Call warning when -mwarn-reloc is specified.
2730         * config/spu/spu.md: (zero_extendhisi2): Expand instead of split for
2731         better optimization.
2732         (floatv4siv4sf2): New.
2733         (fix_truncv4sfv4si2): New.
2734         (floatunsv4siv4sf2): New.
2735         (fixuns_truncv4sfv4si2): New.
2736         (addv16qi3): New.
2737         (subv16qi3): New.
2738         (negv16qi2): New.
2739         (mulv8hi3): New.
2740         (mulsi3): Remove.
2741         (mul<mode>3): New.
2742         (_mulv4si3): New.
2743         (cmp<mode>): Don't accept constant arguments for DI, TI and SF.
2744         * config/spu/spu_internals.h: Handle overloaded intrinsics in C++ with
2745         spu_resolve_overloaded_builtin instead of static inline functions.
2746
2747 2006-12-01  Eric Botcazou  <ebotcazou@adacore.com>
2748
2749         * fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
2750         type instead of the size of its mode to compute the highest and
2751         lowest possible values.  Still check the size of the mode before
2752         flipping the signedness of the comparison.
2753
2754 2006-12-01  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2755
2756         * config/spu/predicates.md (spu_mov_operand): Add.
2757         * config/spu/spu.c (spu_expand_extv): Remove unused code.
2758         (print_operand_address, print_operand): Handle addresses containing AND.
2759         (spu_split_load, spu_split_store): Use updated movti pattern.
2760         * config/spu/spu.md: (_mov<mode>, _movdi, _movti): Handle loads and
2761         stores in mov patterns for correct operation of reload.
2762         (lq, lq_<mode>, stq, stq_<mode>): Remove.
2763
2764 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2765
2766         PR c++/30021
2767         * c-common.c (check_main_parameter_types): Check for error_mark_node.
2768
2769 2006-12-01  Andrew MacLeod  <amacleod@redhat.com>
2770
2771         * common.opt (ftree-combine-temps): Remove.
2772         * tree-outof-ssa.c (SSANORM_COMBINE_TEMPS): Remove.
2773         (coalesce_ssa_name): Don't check for combine-temps.
2774         (coalesce_vars): Remove.
2775         (check_replaceable): Use num_imm_uses.
2776         (remove_ssa_form, insert_backedge_copies, rewrite_out_of_ssa): Don't
2777         check for combine-temps.
2778         (rewrite_out_of_ssa): Never create a ref_count in the var_map.
2779         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Change parms
2780         to register_ssa_partition calls.
2781         * tree-ssa-live.c (register_ssa_partition): Remove prototype.
2782         (init_var_map, delete_var_map): remove refernces to ref_count.
2783         (create_ssa_var_map): Never calculate a ref count.
2784         (type_var_init): Remove.
2785         * tree-ssa-live.h (typedef struct _var_map): Remove ref_count.
2786         (SSA_VAR_MAP_REF_COUNT): Delete.
2787         (create_ssa_var_map): Change Prototype to have no parameters.
2788         (version_ref_count): Delete.
2789         (register_ssa_partition): Remove 'is_use' paramater and don't set the
2790         ref_count vector.
2791         (type_var_num, type_var, type_var_first_partition,
2792         type_var_next_partition, type_var_dump, type_var_delete,
2793         type_var_remove_partition, type_var_find, type_var_compact,
2794         type_var_decompact): Remove.
2795
2796 2006-12-01  Bernd Schmidt  <bernd.schmidt@analog.com>
2797
2798         * config/bfin/bfin.md (pushsi_insn, popsi_insn): Set correct addrtype
2799         attribute.
2800
2801 2006-12-01  Richard Guenther  <rguenther@suse.de>
2802
2803         PR c++/29433
2804         * dwarf2out.c (struct pubname_struct): Make name const.
2805         (add_pubtype): Do not xstrdup identifiers.
2806
2807 2006-12-01  Bernd Schmidt  <bernd.schmidt@analog.com>
2808
2809         * config/bfin/bfin.c (bfin_valid_add): Fix the logic that ensures
2810         multiword accesses are in range.
2811
2812 2006-12-01  Zdenek Dvorak <dvorakz@suse.cz>
2813
2814         PR tree-optimization/29921
2815         * tree-ssa-ccp.c (canonicalize_float_value): New function.
2816         (set_lattice_value): Use canonicalize_float_value.
2817
2818 2006-11-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2819
2820         * config/spu/spu.c (spu_builtin_range): Move from spu-c.c
2821         (TARGET_RESOLVE_OVERLOADED_BUILTIN): Delete.
2822         (spu_cpu_cpp_builtins): Remove.
2823         (spu_override_options): Don't set warn_main.
2824         (spu_force_reg): Move from spu-c.c.
2825         (spu_check_builtin_parm): Likewise.
2826         (expand_builtin_args): Likewise.
2827         (spu_expand_builtin_1): Likewise.
2828         (spu_expand_builtin): Likewise.
2829         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Define, set
2830         warn_main and targetm.resolve_overloaded_builtin.
2831         * config/spu/spu-c.c (spu_builtin_range): Remove.
2832         (spu_check_builtin_parm): Remove.
2833         (expand_builtin_args): Remove.
2834         (spu_expand_builtin_1): Remove.
2835         (spu_expand_builtin): Remove.
2836         (spu_cpu_cpp_builtins): Moved from spu.c
2837         (spu_force_reg): Remove.
2838
2839 2006-12-01  Joseph Myers  <joseph@codesourcery.com>
2840             David Edelsohn  <edelsohn@gnu.org>
2841
2842         PR target/24036
2843         * doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
2844         HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
2845         * defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
2846         HARD_REGNO_NREGS_WITH_PADDING): Define.
2847         * config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
2848         HARD_REGNO_NREGS_WITH_PADDING): Define.
2849         * rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
2850         Use new macros to detect modes with holes; do not look at integer
2851         units.
2852         (subreg_offset_representable_p): Check for and disallow cases
2853         where the modes use different numbers of bits from registers.
2854         * config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
2855         constant for soft-float.
2856         (rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
2857         containing doubles.
2858         (rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
2859         in E500 double case.
2860         * config/rs6000/rs6000.md (movtf): Allow soft-float.
2861         (movtf_softfloat): New.
2862
2863 2006-11-30  Richard Sandiford  <richard@codesourcery.com>
2864
2865         * simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than
2866         simplify_gen_subreg.
2867
2868 2006-11-30  Andrew Macleod  <amacleod@redhat.com>
2869
2870         * tree-ssa-live.c (create_coalesce_list): Create a hash table.
2871         (COALESCE_HASH_FN): New.  Define hash function.
2872         (partition_pair_map_hash): New.  Hash value for a partition pair.
2873         (partition_pair_map_eq): New.  Equality for hash pairs.
2874         (create_coalesce_list): Create hash table.
2875         (delete_coalesce_list): Free hash table.
2876         (find_partition_pair): Find/create pairs in hash table.
2877         (compare_pairs):  Sort pairs in ascending order now.
2878         (num_coalesce_pairs): New.  Number of pairs in hash table.
2879         (struct partition_pair_iterator): Iterator struct for pair table.
2880         (first_partition_pair): Iterator function for first pair.
2881         (end_partition_pair_p): Iterator function for end of iteration.
2882         (next_partition_pair): Iterator function for next pair.
2883         (FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
2884         (sort_coalesce_list): Sort pairs from hash table into an array.
2885         (pop_best_coalesce): Take pairs from the array.
2886         (dump_coalesce_list): Update to use hash table or sorted array.
2887         * tree-ssa-live.h (struct partition_pair_d): Remove next field.
2888         (struct coalesce_list_d): Add hash table related fields.
2889
2890 2006-11-30  Jan Hubicka  <jh@suse.cz>
2891
2892         PR middle-end/30028
2893         * builtins.c (fold_builtin_memory_op): Fix typo in the check for
2894         memmove/bcopy->memcpy conversion.
2895
2896 2006-11-30  Carlos O'Donell  <carlos@codesourcery.com>
2897
2898         * doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
2899         * config/elfos.h [!MAX_OFILE_ALIGNMENT] (MAX_OFILE_ALIGNMENT):
2900         Default is the largest alignment supported for 32-bit ELF and
2901         representable on a 32-bit host.
2902
2903 2006-11-30  Janis Johnson  <janis187@us.ibm.com>
2904
2905         * config/dfp-bit.c (DFP_TO_INT): Use wider precision.
2906
2907 2006-11-30  Jan Hubicka  <jh@suse.cz>
2908
2909         * tree-ssa-operands.h (struct ssa_operands): New.
2910         * tree-flow-inline.h (gimple_ssa_operands): New function.
2911         * tree-flow.h: (struct gimple_df): Add ssa_operands.
2912         * Makefile.in: Remove gt-tree-ssa-operands.h
2913         * tree-ssa-operands.c: Do not include gt-tree-ssa-operands.h
2914         (free_defs, free_uses, free_vuses, free_maydefs, free_mustdefs,
2915         operand_memory, operand_memory_index, ops_active): Remove statics.
2916         (ALLOC_OPTYPE): Update.
2917         (operand_build_sort_virtual): Update.
2918         (ssa_operands_active): Update.
2919         (init_ssa_operands): Update.
2920         (fini_ssa_operands): Update.
2921         (ssa_operand_alloc): Update.
2922         (INITIALIZE_USE): Update.
2923         (finalize_ssa_use_ops): Update.
2924         (finalize_ssa_v_may_def_ops): Update.
2925         (finalize_ssa_vuse_ops): Update.
2926         (finalize_ssa_v_must_def_ops): Update.
2927
2928 2006-11-30  Richard Guenther  <rguenther@suse.de>
2929
2930         * tree-vectorizer.h (vectorizable_function): Export.
2931         * tree-vect-transform.c (vectorizable_function): Likewise.
2932         * tree-vect-patterns.c (vect_recog_pow_pattern): Set
2933         type_in to scalar type in recognition of squaring.
2934         Make sure the target can vectorize sqrt in recognition
2935         of sqrt, set type_in to vector type in this case.
2936
2937 2006-11-30  Uros Bizjak  <ubizjak@gmail.com>
2938
2939         * config/i386/i386.md (R10_REG): New constant.
2940         * config/i386/i386.c (pro_epilogue_adjust_stack): Use R11_REG.
2941         (ix86_emit_restore_regs_using_mov): Ditto.
2942         (ix86_expand_call): Ditto.
2943         (x86_output_mi_thunk): Ditto. Also use R10_REG.
2944
2945 2006-11-30  Steven Bosscher  <steven@gcc.gnu.org>
2946
2947         * cselib.c (cselib_init): Use special MEM rtx form for callmem.
2948         * alias.c (canon_true_dependence): Update comment.
2949
2950 2006-11-30  Steven Bosscher  <steven@gcc.gnu.org>
2951
2952         * cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
2953         at the end of a diagnostics message.
2954
2955         * alloc-pool.c (pool_free): Postpone clearing the pool entry
2956         until after asserting that it was allocated in the right pool.
2957
2958         * cfgrtl.c (print_rtl_with_bb): Print predecessor and
2959         successor edge information as well.  Make output of live regs
2960         on exit consistent with live regs on entry.
2961
2962 2006-11-30  Uros Bizjak  <ubizjak@gmail.com>
2963
2964         PR target/29852
2965         * config/i386/i386.md (*truncxfsf2_mixed, *truncxfdf2_mixed): Enable
2966         insn patterns for TARGET_80387.
2967         (*truncxfsf2_i387, *truncxfdf2_i387): Remove.
2968         (*truncxfsf2_i387_1): Rename to *truncxfsf2_i387.
2969         (*truncxfdf2_i387_1): Rename to *truncxfdf2_i387.
2970         (fmod<mode>3, remainder<mode>3): Enable expaders for SSE math.
2971         Generate truncxf<mode>2 insn patterns for strict SSE math.
2972
2973 2006-11-30  Uros Bizjak  <ubizjak@gmail.com>
2974
2975         * config/i386/i386.md (movsf_1): Enable pattern for standard
2976         80387 constants before reload when optimizing for size.
2977         (*movdf_nointeger, *movdf_integer): Ditto.
2978         (*movxf_nointeger, *movxf_integer): Disable patterns for standard
2979         80387 constants before reload when not optimizing for size.
2980
2981         (*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
2982         extension of XFmode input operands.
2983
2984 2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2985
2986         * config/spu/crt0.c (__dso_handle): Define.
2987
2988 2006-11-30  Kaz Kojima  <kkojima@gcc.gnu.org>
2989
2990         * emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially
2991         when clearing the used flags.
2992
2993 2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2994
2995         * config/spu/spu.md (extend_compare): Fix whitespace formatting.
2996
2997 2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2998
2999         PR target/29945
3000         * config/spu/spu.md  (extend_compare<mode>): New pattern.
3001         (extend_compare): Change to expand and use the above pattern.
3002
3003 2006-11-29  Janis Johnson  <janis187@us.ibm.com>
3004
3005         * config/dfp-bit.c (DFP_TO_INT): Fix rounding mode.
3006
3007         * config/dfp-bit.h (CONTEXT_ROUND): Delete.
3008         (DFP_INIT_ROUNDMODE): Define.
3009         * config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.
3010         * mklibgcc.in: Fix dependencies for dfp-bit.c.
3011
3012 2006-11-29  Tehila Meyzels  <tehila@il.ibm.com>
3013
3014         * haifa-sched.c: Remove define LINE_NOTE(INSN).  Remove line_note_head.
3015         Update documentation.
3016         (associate_line_notes_with_blocks): Kill.
3017         (extend_bb): Remove basic block argument, put void instead.
3018         Remove line number handling for each bb.
3019         (save_line_notes): Kill.
3020         (restore_line_notes): Kill.
3021         (sched_init): Remove line_note_head initialization.
3022         Change extend_bb call.
3023         (sched_finish): Remove free of line_note_head.
3024         (add_block): Change extend_bb call.
3025         * sched-ebb.c (schedule_ebb): Remove save_line_notes,
3026         rm_line_notes and restore_line_notes calls.
3027         (schedule_ebbs): Remove rm_redundant_line_notes.
3028         * sched-int.h (struct haifa_insn_data): Remove line_note.
3029         (save_line_notes): Remove declaration.
3030         (restore_line_notes): Remove declaration.
3031         * modulo-sched.c (loop_canon_p): Update debug info printing
3032         by using insn locators instead of line note.
3033         (sms_schedule): Update debug info printing, by using insn
3034         locators instead of line note.
3035         * sched-rgn.c (debug_dependencies): Remove handling of case
3036         n>0 (line number), since it's a dead code.
3037         (schedule_region): Remove save_line_notes and
3038         restore_line_notes calls.
3039
3040 2006-11-29  Joseph Myers  <joseph@codesourcery.com>
3041
3042         * config/rs6000/predicates.md (gpc_reg_operand): Check
3043         invalid_e500_subreg.
3044         * config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
3045         SImode subregs of SPE vectors.
3046         * config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
3047         * jump.c (true_regnum): Require subregs to satisfy
3048         subreg_offset_representable_p.
3049
3050 2006-11-29  Daniel Berlin  <dberlin@dberlin.org>
3051             Steven Bosscher <stevenb.gcc@gmail.com>
3052
3053         * Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
3054         since it no longer exists.
3055
3056 2006-11-29  Duncan Sands  <baldrick@free.fr>
3057
3058         PR tree-optimization/23744
3059         * tree-vrp.c (vrp_meet): do not require ranges to intersect.
3060
3061 2006-11-29  Duncan Sands  <baldrick@free.fr>
3062
3063         PR tree-optimization/23744
3064         * testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
3065
3066 2006-11-29  Duncan Sands  <baldrick@free.fr>
3067
3068         PR tree-optimization/23744
3069         * testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.
3070
3071 2006-11-29  Jie Zhang  <jie.zhang@analog.com>
3072
3073         * doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.
3074
3075 2006-11-29  J"orn Rennecke  <joern.rennecke@st.com>
3076
3077         * sh.opt (minline-ic_invalidate): New option.
3078         (musermode): Adjust comment.
3079         * sh.c (sh_initialize_trampoline): Emit library call unless
3080         is set; if it is set, don't emit library call if we can use icbi
3081         instead.
3082         * sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
3083         icbi for TARGET_SH4_300.
3084         * t-sh (LIB1ASMFUNCS_CACHE): Set.
3085         * doc/invoke.texi: Document -minline-ic_invalidate; Update
3086         -musermode documentation.
3087
3088 2006-11-29  Jim Tison  <jtison@us.ibm.com>
3089
3090         * gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
3091         __gthread_recursive_mutex_init): Define.
3092
3093 2006-11-29  Joseph Myers  <joseph@codesourcery.com>
3094
3095         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
3096         STRICT_ALIGNMENT and the type is more aligned than the saved
3097         registers, copy via a temporary.
3098
3099 2006-11-28  Andrew Pinski  <pinskia@gmail.com>
3100
3101         PR tree-opt/29984
3102         * tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
3103         and MIN_EXRP.
3104
3105 2006-11-28  Bob Wilson  <bob.wilson@acm.org>
3106
3107         * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.
3108
3109 2006-11-28  Jan Hubicka  <jh@suse.cz>
3110
3111         Privatize SSA variables into gimple_df.
3112         * tree-flow-inline.h
3113         (gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
3114         gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
3115         gimple_nonlocal_all): New accessors.
3116         (first_referenced_var): Update.
3117         (mark_stmt_modified): Update.
3118         (is_call_clobbered): Update.
3119         (mark_call_clobbered): Update.
3120         (clear_call_clobbered): Update.
3121         (mark_non_addressable): Update.
3122         * tree-vrp.c (get_value_range): Update.
3123         * tree-into-ssa.c (in_ssa_p): Kill.
3124         (get_default_def_for): Update.
3125         (rewrite_into_ssa): Update.
3126         * tree-complex.c (init_parameter_lattice_values): Update.
3127         (update_complex_assignment): Update.
3128         (update_parameter_components): Update.
3129         (expand_complex_libcall): Update.
3130         (expand_complex_operations_1): Update.
3131         * tree-tailcall.c (arg_needs_copy_p): Update.
3132         (add_virtual_phis): Update.
3133         (tree_optimize_tail_calls_1): Update.
3134         * tree-ssa-dse.c (memory_ssa_name_same): Update.
3135         * tree-ssa-copyrename.c
3136         (copy_rename_partition_coalesce): Update.
3137         * tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
3138         * tree-ssa-propagate.c (set_rhs): Update.
3139         * tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
3140         addressable_vars, global_var):Kill.
3141         (set_initial_properties): Update.
3142         (init_alias_info): Update.
3143         (finalize_ref_all_pointers): Update.
3144         (setup_pointers_and_addressables): Update.
3145         (maybe_create_global_var): Update.
3146         (create_global_var): Update.
3147         (dump_points_to_info): Update.
3148         * function.h (struct gimple_df): Forward declare.
3149         (struct function): Add GIMPLE_DF field.
3150         * gimplify.c (force_gimple_operand): Update.
3151         * tree-dfa.c (referenced_vars, default_defs): KIll.
3152         (make_rename_temp): Update.
3153         (dump_variable): Update.
3154         (referenced_var_lookup): Update.
3155         (referenced_var_check_and_insert): Update.
3156         (default_def): Rename to ...
3157         (gimple_default_def): ... this one; accept cfun argument.
3158         (set_default_def): Update.
3159         * tree-cfgcleanup.c (modified_noreturn_calls): Kill.
3160         (cleanup_control_flow): Update.
3161         * tree-ssa-pre.c (compute_avail): Update
3162         * tree-ssa-live.c (calculate_live_on_entry): Update.
3163         * tree-ssa.c (verify_use): Update.
3164         (verify_call_clobbering): Update.
3165         (verify_call_clobbering): Update.
3166         (init_tree_ssa): Update.
3167         (delete_tree_ssa): Update.
3168         * tree-outof-ssa.c (coalesce_ssa_name): Update.
3169         (rewrite_out_of_ssa): Update.
3170         * tree-flow.h (gimple_df): New structure collecting dataflow variables.
3171         (FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
3172         private accessors.
3173         (in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
3174         ssa_names, global_var, nonlocal_all, call_clobbered_vars,
3175         addressable_vars, aliases_computed_p): Kill.
3176         (default_def): Rename to...
3177         (gimple_default_def): ... this one.
3178         (defaule_def_fn): Kill.
3179         (num_referenced_vars, ssa_names, num_ssa_names): Update.
3180         * tree-ssa-structalias.c (nonlocal_all): Kill.
3181         (get_constraint_exp_from_ssa_var): Update.
3182         (create_nonlocal_var): Update.
3183         (get_constraint_for): Update.
3184         (update_alias_info): Update.
3185         (find_global_initializers): Update.
3186         (intra_create_variable_infos): Update.
3187         (intra_create_variable_infos):
3188         (find_what_p_points_to): Update.
3189         (init_alias_heapvars): Update.
3190         * tree-cfg.c (remove_bb): Update.
3191         (gimplify_val): Update.
3192         * tree-ssa-reassoc.c (get_rank): Update.
3193         (init_reassoc): Update.
3194         * tree-ssanames.c: Do not include gt-tree-ssanames.h
3195         (ssa_names, free_ssanames): Kill.
3196         (init_ssanames): Update.
3197         (make_ssa_name): Update.
3198         (release_ssa_name): Update.
3199         (release_defs): Update.
3200         (replace_ssa_name_symbol): Update.
3201         * tree-ssa-operands.c (access_can_touch_variable): Update.
3202         (add_virtual_operand): Update.
3203         (add_call_clobber_ops): Update.
3204         (add_call_read_ops): Update.
3205         (get_call_expr_operands): Update.
3206         (get_asm_expr_operands): Update.
3207
3208 2006-11-28  Jan Hubicka  <jh@suse.cz>
3209
3210         * builtins.c: Include tree-flow.h.
3211         (fold_builtin_memory_op): Be more aggressive on converting memcpy to
3212         assignment; convert memmove to memcpy for sizes greater than 1 where
3213         alignment of operands prohibit the partial overlap.
3214
3215 2006-11-28  Jan Hubicka  <jh@suse.cz>
3216
3217         * invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
3218         * cgraph.c (dump_cgraph_node): Dump stack usage.
3219         * cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
3220         (cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
3221         * cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
3222         * ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
3223         (cgraph_check_inline_limits): Limit stack growth.
3224         * cfgexpand.c: Include tree-inline.h.
3225         (account_stack_vars): New function.
3226         (expand_one_var): New param to just account the stack; return estimated
3227         size.
3228         (expand_used_vars_for_block): Update call of expand_one_var.
3229         (account_used_vars_for_block): New function.
3230         (estimated_stack_frame_size): Likewise.
3231         (init_vars_expansion, fini_vars_expansion): Break out from..
3232         (expand_used_vars): ... here.
3233         * tree-inline.h (estimated_stack_frame_size): Declare.
3234         * params.def (PARAM_LARGE_STACK_FRAME, PARAM_STACK_FRAME_GROWTH): New.
3235
3236 2006-11-28  Richard Guenther  <rguenther@suse.de>
3237
3238         * ggc-page.c (ggc_print_statistics): Use %ul and a cast to
3239         unsigned long for printing OBJECT_SIZE.
3240
3241 2006-11-27  Steven Bosscher  <steven@gcc.gnu.org>
3242
3243         * alias.c (init_alias_analysis): Remove simplification loop
3244         after propagating pointers.
3245
3246 2006-11-27  Uros Bizjak  <ubizjak@gmail.com>
3247
3248         * config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
3249         and m_GENERIC64.
3250
3251 2006-11-27  Bob Wilson  <bob.wilson@acm.org>
3252
3253         * config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.
3254
3255 2006-11-27  Roger Sayle  <roger@eyesopen.com>
3256             Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3257
3258         * c-common.c (constant_fits_type_p): Delete.
3259         (unsigned_conversion_warning): Delete.
3260         (conversion_warning): Integrate Wconversion warning from
3261         unsigned_conversion_warning.
3262         (convert_and_check): Integrate Woverflow warning from
3263         unsigned_conversion_warning.  Reorganize and simplify to avoid
3264         dependence upon the middle-end setting TREE_OVERFLOW on integral
3265         conversions, by using int_fits_type_p directly.
3266
3267 2006-11-27  Tobias Burnus  <burnus@net-b.de>
3268
3269         * doc/invoke.texi: Fixed typo.
3270
3271 2006-11-27  Michael Matz  <matz@suse.de>
3272             Andreas Krebbel  <krebbel1@de.ibm.com>
3273
3274         PR target/29319
3275         * config/s390/predicates.md (larl_operand): Check addend of larl
3276         operand to be in range of -/+2GB.
3277         * config/s390/s390.c (legitimize_pic_address): Likewise.
3278         Changed type of variable even to HOST_WIDE_INT.
3279
3280 2006-11-27  Jan Hubicka  <jh@suse.cz>
3281
3282         * expr.c (emit_block_move_via_libcall): Export.
3283         (clear_storage_via_libcall): Rename to ...
3284         (set_storage_via_libcall): ... this one; handle arbitrary value to set.
3285         (clear_storage): Update to set_storage_via_libcall.
3286         * expr.h (emit_block_move_via_libcall): Declare
3287         * config/i386/i386.h (stringop_alg): New enum.
3288         (MAX_STRINGOP_ALGS): New constant.
3289         (stringop_algs): New struct.
3290         (processor_costs): Add memcpy/memset descriptors.
3291         (TARGET_REP_MOVEL_OPTIMAL): Remove.
3292         * config/i386/i386.md (movsi_insv_1_rex64): New pattern.
3293         (strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
3294         for memset.
3295         * config/i386/i386.opt (minline-stringops-dynamically,
3296         mstringop-strategy): New
3297         parameters.
3298         * config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
3299         (ix86_expand-clrmem): Rename to ...
3300         (ix86_expand_setmem): ... this one; update prototype.
3301         * config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
3302         (size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
3303         geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
3304         nocona_cost, core2_cost, generic_cost, generic64_cost,
3305         generic32_cost): Add memcpy/memset descriptors.
3306         (x86_rep_movl_optimal): Remove.
3307         (stringop_alg): New static variable.
3308         (ix86_expand_aligntest): Handle predictions.
3309         (override_options): Add strgop_alg handling.
3310         (predict_jump): New function.
3311         (scale_counter): New function.
3312         (expand_set_or_movmem_via_loop): New function.
3313         (expand_movmem_via_rep_mov): New function.
3314         (expand_setmem_via_rep_stots): New function.
3315         (emit_strmov): New function.
3316         (expand_movmem_epilogue): New function.
3317         (expand_setmem_epilogue_via_loop): New function.
3318         (expand_setmem_epilogue): New function.
3319         (expand_movmem_prologue): New function.
3320         (expand_setmem_prologue): New function.
3321         (decide_alg): New function.
3322         (decide_alignment): New function.
3323         (ix86_exand_movmem): Rewrite.
3324         (promote_duplicated_reg): New function.
3325         (ix86_expand_clrmem): Rename to ...
3326         (ix86_expand_setmem): ... this one. Rewrite.
3327
3328         * invoke.texi (minline-stringops-dynamically): New command line option.
3329         (mstringop-strategy): Likewise.
3330
3331 2006-11-27  Jan Hubicka  <jh@suse.cz>
3332
3333         * cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
3334         * rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
3335         * final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
3336         * insn-notes.def (FUNCTION_END): Remove.
3337         * jump.c (delete_related_insns): Don't worry about FUNCTION_END.
3338         (redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
3339         note.
3340         * ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
3341         * function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
3342         * cfglayout.c (duplicate_insn_chain): Don't worry about
3343         NOTE_FUNCTION_END.
3344
3345 2006-11-27  Richard Guenther  <rguenther@suse.de>
3346             Zdenek Dvorak <dvorakz@suse.cz>
3347
3348         * target.h (struct gcc_target): Add builtin_vectorized_function
3349         target hook.
3350         * target-def.h (TARGET_VECTORIZE): Likewise.
3351         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
3352         Document new target hook.
3353         * targhooks.h (default_builtin_vectorized_function): Declare.
3354         * targhooks.c (default_builtin_vectorized_function): Define.
3355         * tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
3356         (vectorizable_call): Declare.
3357         * tree-vect-analyze.c (vect_analyze_operations): Call
3358         vectorizable_call.
3359         * tree-vect-transform.c (vectorizable_function): New static function.
3360         (build_vectorized_function_call): Likewise.
3361         (vectorizable_call): New function.
3362         (vect_transform_stmt): Handle vectorizable calls.
3363
3364 2006-11-27  Richard Guenther  <rguenther@suse.de>
3365
3366         PR middle-end/25620
3367         * builtins.c (expand_builtin_pow): Optimize non integer valued
3368         constant exponents using sqrt or cbrt if possible.  Always fall back
3369         to expanding via optabs.
3370
3371 2006-11-27  Ira Rosen  <irar@il.ibm.com>
3372
3373         PR tree-optimization/22372
3374         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
3375         the type of the base address.
3376         (vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
3377         it in the data-ref pointer creation.
3378         (vect_init_vector): Add an argument, type of the init vector. Use it in
3379         the stmt creation.
3380         (vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
3381         (get_initial_def_for_reduction): Likewise.
3382