OSDN Git Service

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