1 2006-12-08 Mike Stump <mrs@apple.com>
3 * config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
4 libgcc with -mmacosx-version-min=10.4.
5 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
6 G4 for 10.5+ unless doing kernel builds.
8 2006-12-08 Uros Bizjak <ubizjak@gmail.com>
11 * reg-stack.c (convert_regs_entry): Mark current argument passing
14 * config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
15 of float arguments in x87 registers.
17 2006-12-08 John David Anglin <dave.anglin.@nrc-cnrc.gc.ca>
19 * pa.h (LEGITIMATE_CONSTANT_P): Simplify.
21 2006-12-08 Mark Shinwell <shinwell@codesourcery.com>
23 * recog.c (mode_dependent_address_p): Identify pre-increment,
24 pre-decrement, post-increment and post-decrement addressing as always
26 * config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
27 * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
28 * config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
29 * config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
30 PRE_INC and POST_INC checks.
31 * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
32 * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
33 * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
34 * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
35 * config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
36 PRE_INC, POST_DEC and POST_INC cases.
37 * config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
38 Delete POST_INC and PRE_DEC cases.
39 * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
41 * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
42 * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
44 * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
45 * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
46 * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
47 PRE_INC and PRE_DEC cases.
48 * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
49 * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
50 * config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
51 (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
52 * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
53 * config/vax/vax.c (vax_mode_dependent_address_p): Delete
55 * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
57 * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
59 2006-12-08 Andrew MacLeod <amacleod@redhat.com>
61 * Makefile.in: Add new file tree-ssa-ter.c.
62 * tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table,
63 free_temp_expr_table, add_value_to_version_list,
64 add_value_to_partition_list, remove_value_from_partition_list,
65 add_dependence, check_replaceable, finish_expr, mark_replaceable,
66 kill_expr, kill_virtual_exprs, find_replaceable_in_bb,
67 find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
68 * tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
70 * tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
71 (struct value_expr_d): Remove.
72 (struct temp_expr_table_d): Rename fields, add explicit vector of
73 replaceable expressions instead of sharing. Change value_expr_p's to
74 bitmap. Delete free_list.
75 (new_temp_expr_table): Rename fields, count number of ssa_names in
77 (free_temp_expr_table): Rename field, free new fields.
78 (new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
79 add_info_to_list, remove_value_from_list): Delete.
80 (version_to_be_replaced_p): New. Is an ssa-name replaceable?
81 (make_dependent_on_partition): New. Set bit in version list, allocating
83 (add_to_partition_kill_list): New. Set bit in the partition list,
84 allocating a bitmap if need be.
85 (remove_from_partition_kill_list): New. Remove a bit from the
86 partition list, free the bitmap if it is empty.
87 (add_dependence): Use renamed field, cleanup. Don't add a dependence
88 on partitions with only one member.
89 (is_replaceable_p): New. Split out replaceability check from
91 (process_replaceable): New. Code split from check_replaceable.
92 (check_replaceable): Removed.
93 (finished_with_expr): Renamed from finish_expr.
94 (kill_expr): Use renamed fields and less parameters.
95 (kill_virtual_exprs): Less parameters.
96 (mark_replaceable): Use renamed fields.
97 (find_replaceable_in_bb): Use renamed fields, cleanup.
98 (find_replaceable_exprs): Use renamed routines, cleanup.
99 (dump_replaceable_exprs): Don't go past end of ssa_names list.
100 (debug_ter): New. Debug routine to dump state.
102 2006-12-08 Bernd Schmidt <bernd.schmidt@analog.com>
104 * config/bfin/bfin.c (effective_address_32bit_p): Return true for
105 anything involving the GOT.
106 (bfin_adjust_cost): Don't take the REGNO of a MEM.
107 (trapping_loads_p): Look inside the pattern of an insn to find the
109 * config/bfin/bfin.md (attr "type"): Add movcc.
110 (insn_reservation "alu"): Likewise.
111 (movsicc_insn1, movsicc_insn2): Change type to movcc.
113 2006-12-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
115 * config/spu/spu-c.c (spu_build_overload_builtin): Delete.
116 (spu_resolve_overloaded_builtin): Check for non scalar instead
117 of vector type and check the function call argument type also for
119 Call build_function_call instead of spu_build_overload_builtin.
121 2006-12-07 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
123 * config/spu/spu.c (array_to_constant): Correct the order of arguments
124 to the calls of hwint_to_const_double.
126 2006-12-07 Nick Clifton <nickc@redhat.com>
128 * config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to
129 elf_record_gcc_switches.
131 2006-12-07 Andrew Macleod <amacleod@redhat.com>
133 * expr.c (string_constant): Account for non-zero lower bound arrays.
135 2006-12-07 Richard Guenther <rguenther@suse.de>
137 * builtins.c (expand_builtin_pow): Adjust predicates for
138 pow to cbrt expansion to unsafe math and !HONOR_NANS for
141 2006-12-07 Jan Hubicka <jh@suse.cz>
143 * i386.c (nocona_cost, pentium4_cost): Update preffered memcpy/memset
146 2006-12-07 Jan Hubicka <jh@suse.cz>
148 * tree-vrp.c (compare_values): Short circuit INTEGER_CST;
149 use fold_constant_to_binary; tolerate wrong type constants.
150 (value_intersect_p): Do just two tests.
152 2006-12-07 Bernd Schmidt <bernd.schmidt@analog.com>
154 * config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
155 * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
156 lshifthi3): Use it, and fix the order of alternatives.
158 2006-12-07 Nick Clifton <nickc@redhat.com>
160 * common.opt (record-gcc-switches): New command line switch.
161 * target.h (print_switch_type): New enum.
162 (print_switch_fn_type): New typedef for a function pointer.
163 (struct gcc_target): Add record_gcc_switches and
164 record_gcc_switches_section fields.
165 * target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a
167 (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default
169 * toplev.c (print_single_switch): Simplify by providing a
170 pointer to function that will format and output the switch
172 (print_switch_values): Likewise.
173 (print_to_asm_out_file): New function.
174 (print_to_stderr): New function.
175 (init_asm_output): If flag_record_gcc_switches is set then if
176 the target supports recording the switches then emit them into
177 the assembler output file, otherwise tell the user that the
178 switch is not supported.
179 * varasm.c (eld_record_gcc_switches): New function. Example
180 handler for the record_gcc_switches target hook.
181 * doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new
183 (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
184 * doc/invoke.texi (-frecord-gcc-switches): Document.
186 2006-12-07 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
189 * sched-rgn.c (add_block1): Use correct initializer.
191 2006-12-07 Richard Guenther <rguenther@suse.de>
193 * tree-vect-transform.c (vectorizable_call): Fix leftover of
194 TREE_OPERAND to GIMPLE_STMT_OPERAND conversion.
196 2006-12-06 Aldy Hernandez <aldyh@redhat.com>
199 * config/pa/pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR
200 not GIMPLE_MODIFY_STMT.
202 2006-12-06 Jan Hubicka <jh@suse.cz>
204 * tree-vrp.c (operand_less_p): New.
205 (compare_values, value_inside_range): Rewrite in terms of
208 2006-12-06 Uros Bizjak <ubizjak@gmail.com>
210 * config/i386/i386.md (DIRFLAG_REG): Remove constant.
212 (length_immediate): Do not depend on cld type attribute.
213 (length_address): Ditto.
216 (cld): Remove insn pattern.
217 (strmov_singleop): Do not use DIRFLAG_REG.
218 (*strmovdi_rex_1): Ditto.
219 (*strmovsi_1): Ditto.
220 (*strmovsi_rex_1): Ditto.
221 (*strmovhi_1): Ditto.
222 (*strmovhi_rex_1): Ditto.
223 (*strmovqi_1): Ditto.
224 (*strmovqi_rex_1): Ditto.
226 (*rep_movdi_rex64): Ditto.
228 (*rep_movsi_rex64): Ditto.
230 (*rep_movqi_rex64): Ditto.
231 (strset_singleop): Ditto.
232 (*strsetdi_rex_1): Ditto.
233 (*strsetsi_1): Ditto.
234 (*strsetsi_rex_1): Ditto.
235 (*strsethi_1): Ditto.
236 (*strsethi_rex_1): Ditto.
237 (*strsetqi_1): Ditto.
238 (*strsetqi_rex_1): Ditto.
240 (*rep_stosdi_rex64): Ditto.
241 (*rep_stossi): Ditto.
242 (*rep_stossi_rex64): Ditto.
243 (*rep_stosqi): Ditto.
244 (*rep_stosqi_rex64): Ditto.
245 (cmpstrnsi): Do not generate cld insn.
246 (cmpstrnqi_nz_1): Do not use DIRFLAG_REG.
247 (*cmpstrnqi_nz_1): Ditto.
248 (*cmpstrnqi_nz_rex_1): Ditto.
249 (cmpstrnqi_1): Ditto.
250 (*cmpstrnqi_1): Ditto.
251 (*cmpstrnqi_rex_1): Ditto.
253 (*strlenqi_1): Ditto.
254 (*strlenqi_rex_1): Ditto.
256 * config/i386/geode.md (shift): Do not depend on cld type attribute.
257 * config/i386/pentium.md (pent_cld): Remove insn reservation.
258 * config/i386/athlon.md (athlon_decode): Do not depend on cld
260 * config/i386/ppro.md (ppro_cld): Remove insn reservation.
261 * config/i386/k6.md (k6_alux_only): Do not depend on cld type
263 (k6_alux_only_load): Ditto.
264 (k6_alux_only_store): Ditto.
266 * config/i386/i386.c (ix86_expand_movmem): Remove cld_done boolean.
267 Do not emit cld instruction.
268 (ix86_expand_setmem): Ditto.
269 (ix86_expand_strlen): Do not emit cld instruction.
271 2006-12-06 Bernd Schmidt <bernd.schmidt@analog.com>
273 * config/bfin/bfin.c (bfin_rtx_costs): Add a number of new cases, tweak
276 2006-12-06 Diego Novillo <dnovillo@redhat.com>
278 * gdbinit.in: Set complaints to 0.
280 2006-12-06 Jan Hubicka <jh@suse.cz>
282 * statistics.h (ALONE_PASS_MEM_STAT, ALONE_MEM_STAT_INFO,
283 ALONE_MEM_STAT_DECL): New macros.
284 * bitmap.h: Include statistics.h
285 (struct bitmap_head_def): Add variant with pointer to bitmap descriptor.
286 (bitmap_initialize_stat): Rename from bitmap_initialize; add statistics.
287 (bitmap_obstack_alloc_stat, bitmap_gc_alloc_stat): Declare.
288 * bitmap.c: Include hashtab.h
289 (bitmap_descriptor): New.
290 (bitmap_hash): New static variable
291 (hash_descriptor, eq_descriptor, bitmap_descriptor, register_overhead):
292 New static functions.
293 (bitmap_register): New.
294 (bitmap_element_free, bitmap_element_allocate, bitmap_elt_clear_from,
295 bitmap_obstack_release): Do accounting.
296 (bitmap_obstack_alloc_stat): Rename from bitmap_obstack_alloc ; do
298 (bitmap_gc_alloc_stat): Likewise.
299 (bitmap_obstack_free, bitmap_find_bit): Do statictics.
300 (print_statistics, dump_bitmap_statistics): New functions.
301 * toplev.c (finalize): Dump bitmap statistics.
303 2006-12-06 Bernd Schmidt <bernd.schmidt@analog.com>
305 * reload1.c (delete_output_reload): Count occurrences in
306 CALL_INSN_FUNCTION_USAGE.
307 * rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
308 crashing at the end of the list.
310 2006-12-05 Daniel Berlin <dberlin@dberlin.org>
312 * tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
313 Optimize to avoid marking more SMT's as used when they aren't.
315 2006-12-05 Eric Christopher <echristo@apple.com>
317 * config/i386/i386.c (x86_output_aligned_bss): Move out
318 of COMMON_ASM_OP ifdef.
320 2006-12-05 Eric Christopher <echristo@apple.com>
322 * config/darwin.h (DARWIN_EXTRA_SPECS): New.
323 (STARTFILE_SPEC): Use.
324 (DARWIN_DYLIB1_SPEC): New.
325 (DARWIN_CRT1_SPEC): New.
326 * config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
328 * config/i386/darwin.h: Ditto.
329 * config/rs6000/darwin.h: Ditto.
331 2006-12-05 Daniel Berlin <dberlin@dberlin.org>
333 * tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
334 * tree-complex.c (pass_lower_complex): Ditto.
335 * tree-ssa-ccp.c (pass_ccp): Ditto.
336 (pass_store_ccp): Ditto.
337 * tree-ssa-dom.c (pass_dominator): Ditto.
338 (pass_phi_only_cprop): Ditto.
339 * tree-sra.c (pass_sra): Ditto.
340 * tree-ssa-forwprop.c (pass_forwprop): Ditto.
341 * tree-flow.h (updating_used_alone): Remove.
342 (updating_used_alone): Ditto.
343 * tree-ssa-alias.c (updating_used_alone): Remove variable.
344 (lhs_may_store_to): Remove function.
345 (recalculate_used_alone): Ditto.
346 (compute_may_aliases): Remove used_alone calculation.
347 * tree.h (struct tree_memory_tag): Remove is_used_alone and
348 old_used_alone. Remove SMT_USED_ALONE and SMT_OLD_USED_ALONE.
349 * tree-pass.h (PROP_smt_usage): Remove.
350 * passes.c (execute_todo): Remove used alone recalculation.
351 (execute_one_pass): Ditto.
352 * tree-ssa-operands.c (add_virtual_operand): Remove used_alone
355 2006-12-05 Brooks Moses <brooks.moses@codesourcery.com>
357 * doc/include/texinfo.tex: Update to version 2006-11-08.17.
359 2006-12-05 Zdenek Dvorak <dvorakz@suse.cz>
361 PR tree-optimization/14784
362 * tree-ssa-operands.c (access_can_touch_variable): Unrevert the fix.
364 2006-12-05 Aldy Hernandez <aldyh@redhat.com>
366 Merge from gimple-tuples-branch.
368 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
370 * config/s390/s390.c (s390_va_start): Replace MODIFY_EXPR with
372 (s390_gimplify_va_arg): Same.
373 * config/sparc/sparc.c (sparc_gimplify_va_arg): Same.
374 * config/sh/sh.c (sh_va_start): Same.
375 (sh_gimplify_va_arg_expr): Same.
376 * config/xtensa/xtensa.c (xtensa_va_start): Same.
377 (xtensa_gimplify_va_arg_expr): Same.
378 * config/ia64/ia64.c (ia64_gimplify_va_arg): Same.
379 * config/pa/pa.c (hppa_gimplify_va_arg_expr): Same.
380 * config/mips/mips.c (mips_va_start): Same.
381 (mips_gimplify_va_arg_expr): Same.
383 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
385 * Merge from mainline at revision 119445.
387 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
389 * config/spu/spu.c (spu_va_start): Change MODIFY_EXPR to
391 (spu_gimplify_va_arg_expr): Same.
393 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
395 * config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
396 Change uses of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
397 (xstormy16_expand_builtin_va_arg): Same.
399 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
401 * config/frv/frv.c (frv_expand_builtin_va_start): Change MODIFY_EXPR
402 to GIMPLE_MODIFY_STMT.
404 2006-12-04 Aldy Hernandez <aldyh@redhat.com>
406 * config/alpha/alpha.c (va_list_skip_additions): Change all
407 occurrences of MODIFY_EXPR to GIMPLE_MODIFY_STMT.
408 (alpha_va_start): Same.
409 (alpha_gimplify_va_arg_1): Same.
410 (alpha_gimplify_va_arg): Same.
412 2006-12-01 Aldy Hernandez <aldyh@redhat.com>
414 * gimplify.c (gimplify_modify_expr): Remove FIXME comment.
416 2006-12-01 Aldy Hernandez <aldyh@redhat.com>
418 * tree-ssa-loop-im.c: Rename all PROTECTED_TREE_OPERAND to
419 GENERIC_TREE_OPERAND, and all PROTECTED_TREE_TYPE to
421 * tree-complex.c: Same.
422 * tree-pretty-print.c: Same.
426 * fold-const.c: Same.
427 * tree-ssa-dom.c: Same.
428 * tree-ssa-propagate.c: Same.
429 * tree-ssa-alias.c: Same.
430 * gimple-low.c: Same.
432 * c-pretty-print.c: Same.
434 * tree-inline.c: Same.
435 * tree-outof-ssa.c: Same.
436 * tree-ssa-structalias.c: Same.
437 * tree-ssa-reassoc.c: Same.
440 2006-11-16 Aldy Hernandez <aldyh@redhat.com>
442 * tree.c (build2_stat): Fix comment.
444 2006-11-13 Aldy Hernandez <aldyh@redhat.com>
446 * tree-ssa-propagate.c (get_rhs): Use GIMPLE_MODIFY_STMT and
447 TREE_OPERAND when appropriate.
449 2006-11-04 Aldy Hernandez <aldyh@redhat.com>
451 * java/java-tree.h (lang_tree_node): Handle gimple tuples.
452 (EXPR_WFL_EMIT_LINE_NOTE): Look inside base.
453 (EXPR_WFL_LINECOL): Use EXPR_LOCUS macro instead of exp.locus.
454 * java/java-gimplify.c (java_gimplify_expr): Comment on why we do
455 not handle GIMPLE_MODIFY_STMT in the switch statement.
456 (java_gimplify_modify_expr): Call build2 with GIMPLE_MODIFY_STMT.
457 (java_gimplify_new_array_init): Same.
459 2006-11-03 Aldy Hernandez <aldyh@redhat.com>
461 * gimplify.c (gimplify_omp_for): Allow gimple statements.
462 * tree-outof-ssa.c (check_replaceable): Use PROTECTED_TREE_OPERAND.
463 * fold-const.c (fold_binary): Allow gimple statements.
465 * fortran/trans-array.c (gfc_conv_descriptor_data_set_internal):
466 Rename from gfc_conv_descriptor_data_set.
467 Call gfc_add_modify instead of gfc_add_modify_expr.
468 * fortran/trans-array.h (gfc_conv_descriptor_data_set_internal):
469 Rename from gfc_conv_descriptor_data_set.
470 (gfc_conv_descriptor_data_set): New macro.
471 (gfc_conv_descriptor_data_set_tuples): New macros.
472 * fortran/trans-openmp.c (gfc_omp_clause_default_ctor): Call
473 gfc_conv_descriptor_data_set_tuples.
474 * fortran/trans.c (gfc_add_modify): Rename from gfc_add_modify_expr.
475 Generate GIMPLE_MODIFY_STMT when appropriate.
476 * fortran/trans.h (gfc_add_modify): Rename from gfc_add_modify_expr.
477 (gfc_add_modify_expr): New macro.
478 (gfc_add_modify_stmt): New macro.
479 * fortran/f95-lang.c (lang_tree_node): Handle gimple statements.
481 2006-11-01 Aldy Hernandez <aldyh@redhat.com>
483 * Merge from mainline at revision 118200.
485 2006-10-09 Aldy Hernandez <aldyh@redhat.com>
487 * tree-inline.c (copy_bb): Check for GIMPLE_MODIFY_STMT, and adjust
490 2006-10-09 Aldy Hernandez <aldyh@redhat.com>
492 * tree.h (TREE_CHAIN, TREE_TYPE): Add versions for non GCC or not
494 Also, add __extension__ to GCC versions.
495 * tree-mudflap.c (mf_xform_derefs_1): Add parentheses around TREE_TYPE.
496 * tree-inline.c (copy_tree_r): Initialize chain to assuage the warning
499 2006-10-05 Aldy Hernandez <aldyh@redhat.com>
501 * tree-complex.c (expand_complex_libcall): Adjust for
503 (expand_complex_comparison): Same.
504 * tree-pretty-print.c (dump_generic_node): Is_expr should include
505 GIMPLE_STMT_P statements.
506 * value-prof.c (tree_divmod_fixed_value_transform): Adjust for
508 (tree_mod_pow2_value_transform): Same.
509 (tree_mod_subtract_transform): Same.
510 * tree.c (build2_stat): Check for gimplified function in cfun.
511 * tree.h (DECL_GIMPLIFIED): Delete.
512 (struct tree_function_decl): Remove gimplified_flag.
513 * omp-low.c (lower_omp_for): Adjust for GIMPLE_MODIFY_STMT.
514 * cp/cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
515 (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
516 (cxx_omp_clause_copy_ctor): Same.
517 (cxx_omp_clause_assign_op): Same.
518 * c-pretty-print.c (pp_c_conditional_expression): Same.
519 (pp_c_expression): Same.
520 * langhooks.c (lhd_omp_predetermined_sharing): Same.
521 * function.h (struct function): Add gimplified field.
522 * tree-if-conv.c (add_to_dst_predicate_list): Adjust for
524 (find_phi_replacement_condition): Same.
525 * gimplify.c (gimplify_modify_expr_to_memcpy): Same.
526 (gimplify_modify_expr_to_memset): Same.
527 (gimplify_init_ctor_eval_range): Same.
528 (gimplify_modify_expr_complex_part): Same.
529 (tree_to_gimple_tuple): Same.
530 (gimplify_modify_expr): Same.
531 (gimple_push_cleanup): Same.
532 (gimplify_omp_for): Same.
533 (gimplify_omp_atomic_pipeline): Same.
534 (gimplify_omp_atomic_mutex): Same.
535 (gimplify_expr): Same.
536 (gimplify_one_sizepos): Same.
537 (gimplify_function_tree): Same.
538 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Same.
539 (vect_recog_widen_sum_pattern): Same.
540 * tree-vect-transform.c (get_initial_def_for_reduction): Same.
541 (vect_create_epilog_for_reduction): Same.
542 (vectorizable_reduction): Same.
544 2006-09-28 Aldy Hernandez <aldyh@redhat.com>
546 * tree-ssa-math-opts.c (replace_reciprocal): Use GIMPLE_STMT_OPERAND.
547 * tree-if-conv.c (if_convertible_gimple_modify_stmt_p): Same.
548 (ifc_temp_var): Same.
549 * tree-vect-analyze.c (vect_determine_vectorization_factor): Check
550 for gimple statements.
551 (vect_analyze_operations): Same.
552 (exist_non_indexing_operands_for_use_p): Use GIMPLE_STMT_OPERAND.
553 * gimplify.c (gimplify_return_expr): Handle gimple statements.
554 * lambda-code.c (can_put_in_inner_loop): Same.
555 (can_put_after_inner_loop): Same.
556 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
557 (vect_create_data_ref_ptr): Same.
558 (vect_init_vector): Same.
559 (vect_get_vec_def_for_operand): Same.
560 (vect_create_epilog_for_reduction): Same.
561 (vectorizable_reduction): Same.
562 (vectorizable_assignment): Same.
563 (vectorizable_operation): Same.
564 (vectorizable_load): Same.
565 (vectorizable_condition): Same.
566 * config/rs6000/rs6000.c (rs6000_va_start): Do not create MODIFY_EXPRs.
567 (rs6000_gimplify_va_arg): Same.
569 2006-09-25 Aldy Hernandez <aldyh@redhat.com>
571 * tree-vrp.c (simplify_div_or_mod_using_ranges): Use
573 (simplify_abs_using_ranges): Same.
574 * tree-complex.c (expand_complex_operations_1): Use
575 PROTECTED_TREE_OPERAND.
576 * tree-ssa-loop-niter.c (simplify_replace_tree): Check for gimple
578 (get_val_for): Use GIMPLE_STMT_OPERAND.
579 * tree-tailcall.c (adjust_accumulator_values): Same.
580 (adjust_return_value): Same.
581 * tree.c (walk_tree): Use IS_GIMPLE_STMT_CODE_CLASS on default
582 case. Remove special case for tcc_gimple_stmt.
583 * tree.h (CAN_HAVE_LOCATION_P): New.
584 * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Check for
586 * tree-stdarg.c (va_list_counter_bump): Use GIMPLE_STMT_OPERAND.
587 * tree-ssa-dom.c (propagate_rhs_into_lhs): Same.
588 * tree-nrv.c (execute_return_slot_opt): Same.
589 * tree-ssa-alias.c (count_uses_and_derefs): Check for GIMPLE_STMT_P.
590 * tree-vn.c (set_value_handle): Same.
591 (get_value_handle): Same.
592 * c-decl.c (add_stmt): Use CAN_HAVE_LOCATION_P.
593 * tree-vectorizer.c (find_loop_location): Same.
594 * c-typeck.c (c_process_expr_stmt): Same.
595 (c_finish_stmt_expr): Same.
596 * gimplify.c (should_carry_locus_p): Same.
597 (tree_to_gimple_tuple): Delete definition and use of unecessary
598 variable save_tree_block.
599 * tree-ssa-pre.c (phi_translate): Check for GIMPLE_STMT_P.
600 (create_expression_by_pieces): Use GIMPLE_STMT_OPERAND.
601 (realify_fake_stores): Same.
602 * tree-ssa-forwprop.c (forward_propagate_addr_into_variable_arr):
604 * tree-inline.c (copy_body_r): Check for EXPR_P and GIMPLE_STMT_P.
605 (copy_tree_r): Check for IS_GIMPLE_STMT_CODE_CLASS.
606 * tree-cfg.c (move_stmt_r): Use EXPR_P. Check for GIMPLE_STMT_P.
607 * c-parser.c (c_parser_typeof_specifier): Use CAN_HAVE_LOCATION_P.
608 (c_parser_statement_after_labels): Same.
609 (c_parser_paren_condition): Same.
610 (c_parser_for_statement): Same.
611 (c_parser_omp_for_loop): Same.
612 * tree-ssa-reassoc.c (linearize_expr): Use GIMPLE_STMT_OPERAND.
613 (linearize_expr_tree): Same.
614 * dwarf2out.c (reference_to_unused): Check for GIMPLE_STMT_P.
615 * function.c (instantiate_expr): Same.
617 2006-09-22 Aldy Hernandez <aldyh@redhat.com>
619 * tree.c (expr_location): Use GIMPLE_STMT_LOCUS.
620 (set_expr_location): Same.
622 (set_expr_locus): Same.
623 (expr_filename): Same.
625 (tree_block): Use GIMPLE_STMT_BLOCK.
626 (protected_tree_operand): Use GIMPLE_STMT_OPERAND.
627 * tree.h (struct gimple_stmt): Remove prev and next.
628 (GIMPLE_STMT_OPERAND_CHECK): New.
629 (TREE_TO_GIMPLE_STMT): Delete.
630 (GIMPLE_STMT_TO_TREE): Delete.
631 (GIMPLE_STMT_OPERAND): Use union, not cast.
632 (GIMPLE_STMT_LOCUS): New.
633 (GIMPLE_STMT_BLOCK): New.
634 * gimplify.c (tree_to_gimple_tuple): Use union. Do not cast
636 * tree-cfg.c (verify_gimple_tuples_1): Call gcc_unreachable.
638 2006-09-21 Aldy Hernandez <aldyh@redhat.com>
640 * tree-into-ssa.c (REGISTER_DEFS_IN_STMT): Change common.base
642 * tree-tailcall.c (adjust_return_value): Same.
643 * tree.c (tree_code_size): Remove GIMPLE_STATEMENT_LIST case.
644 (copy_node_stat): Change common.base to base.
645 (tree_node_structure): Return TS_GIMPLE_STATEMENT for tcc_gimple_stmt.
646 Remove GIMPLE_STATEMENT_LIST case.
647 * tree.h (struct gimple_stmt): Make operands of type tree.
648 (TREE_CODE, TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
649 CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
650 TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
651 TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
652 TYPE_CACHED_VALUES_P, TREE_SIDE_EFFECTS, FORCED_LABEL,
653 TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
654 TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
655 BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN, TREE_USED,
656 TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT, DECL_BY_REFERENCE,
657 CALL_FROM_THUNK_P, TYPE_ALIGN_OK, TREE_PRIVATE, TREE_PROTECTED,
658 TREE_DEPRECATED, IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
659 TREE_LANG_FLAG_*, SSA_NAME_OCCURS_IN_ABNORMAL_PHI,
660 SSA_NAME_IN_FREE_LIST, TYPE_VOLATILE, TYPE_READONLY, BINFO_VIRTUAL_P):
661 Change common.base to base.
662 (GIMPLE_STATEMENT_LIST*): Remove.
663 (union tree_node): Add base. Remove gimple_statement_list.
664 Remove pointer from gstmt.
665 * tree-ssa-propagate.c (set_rhs): Change common.base to base.
666 * treestruct.def: Add TS_BASE. Remove TS_GIMPLE_STATEMENT_LIST.
667 * tree-vn.c (vn_compute): Change common.base to base.
668 * tree-eh.c (verify_eh_throw_stmt_node): Same.
669 * tree-flow-inline.h (var_ann): Same.
670 (function_ann): Same.
672 (mark_non_addressable): Same.
673 * gimplify.c (tree_to_gimple_tuple): Same.
674 * tree.def (DEFTREECODE): Remove GIMPLE_STATEMENT_LIST.
675 * tree-dfa.c (create_var_ann): Change common.base to base.
676 (create_function_ann): Same.
677 (create_stmt_ann): Same.
678 (create_tree_ann): Same.
679 (collect_dfa_stats_r): Same.
680 * tree-ssa-pre.c (NECESSARY): Change common.base to base.
681 * tree-ssa-dce.c (NECESSARY): Same.
682 * tree-ssa.c (delete_tree_ssa): Same.
683 * tree-optimize.c (execute_free_cfg_annotations): Same.
686 2006-09-19 Aldy Hernandez <aldyh@redhat.com>
688 * tree.c (tree_code_size): Handle GIMPLE_STATEMENT_LIST.
689 (tree_node_structure): Handle GIMPLE_STATEMENT_LIST and
691 * tree.h (struct gimple_stmt): Add prev and next fields.
692 (GIMPLE_STMT_TO_TREE): Cast, do not call GIMPLE_STMT_CHECK.
693 (GIMPLE_STATEMENT_LIST_HEAD): New.
694 (GIMPLE_STATEMENT_LIST_TAIL): New.
695 (struct gimple_statement_list): New.
696 (union tree_node): Add gimple_stmt_list and gstmt.
697 * treestruct.def: Add TS_GIMPLE_STATEMENT_LIST, TS_GIMPLE_STATEMENT.
698 * tree.def: Add GIMPLE_STATEMENT_LIST.
700 2006-09-06 Aldy Hernandez <aldyh@redhat.com>
702 * tree-dump.c (dequeue_and_dump): Handle GIMPLE_MODIFY_STMT.
703 * tree-vrp.c (build_assert_expr_for): Change uses of
704 MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
705 (find_assert_locations): Same.
706 (remove_range_assertions): Same.
707 (stmt_interesting_for_vrp): Same.
708 (vrp_visit_assignment): Same.
709 (vrp_visit_stmt): Same.
710 (simplify_cond_using_ranges): Same.
711 * tree-into-ssa.c (REGISTER_DEFS_IN_THIS_STMT): Adjust for new
713 * tree-ssa-loop-im.c (movement_possibility): Change uses of
714 MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
716 (determine_invariantness_stmt): Same.
718 (gather_mem_refs_stmt): Same.
719 * tree-complex.c (init_dont_simulate_again): Same.
720 (complex_visit_stmt): Same.
721 (set_component_ssa_name): Same.
722 (expand_complex_move): Same.
723 (expand_complex_div_wide): Same.
724 (expand_complex_comparison): Same.
725 (expand_complex_operations_1): Same.
726 * tree-ssa-loop-niter.c (expand_simple_operations): Same.
727 (chain_of_csts_start): Same.
728 (infer_loop_bounds_from_undefined): Same.
729 * tree-pretty-print.c (dump_generic_node): Same.
732 * tree-ssa-loop-manip.c (create_iv): Same.
733 * value-prof.c (tree_divmod_fixed_value): Same.
734 (tree_divmod_fixed_value_transform): Same.
735 (tree_mod_pow2): Same.
736 (tree_mod_pow2_value_transform): Same.
737 (tree_mod_subtract): Same.
738 (tree_mod_subtract_transform): Same.
739 (tree_divmod_values_to_profile): Same.
740 * tree-tailcall.c (process_assignment): Same.
741 (find_tail_calls): Same.
742 (adjust_accumulator_values): Same.
743 (adjust_return_value): Same.
744 (eliminate_tail_call): Same.
745 * tree.c (tree_code_size): Handle tcc_gimple_stmt.
746 (make_node_stat): Same.
747 (copy_node_stat): Handle gimple tuples.
748 (expr_align): Handle GIMPLE_MODIFY_STMT. Abort on MODIFY_EXPR.
749 (tree_node_structure): Handle tcc_gimple_stmt.
750 (build2_stat): Abort on MODIFY_EXPR after gimplification. Handle
752 (build2_gimple_stat): New.
753 (expr_location): New.
754 (set_expr_location): New.
755 (expr_has_location): New.
757 (set_expr_locus): New.
758 (expr_filename): New.
760 (walk_tree): Handle tcc_gimple_stmt.
762 (protected_tree_operand): New.
763 (protected_tree_type): New.
764 (tree_code_kind): Add gimple statements.
765 * tree.h (tree_code_class): Add tcc_gimple_stmt.
766 (IS_GIMPLE_STMT_CODE_CLASS): New.
767 (struct tree_base): New.
768 (struct tree_common): Shrink.
769 (struct gimple_stmt): New.
770 (struct gimple_expr): New.
771 (TREE_SET_CODE, TREE_ADDRESSABLE, CALL_EXPR_TAILCALL,
772 CASE_LOW_SEEN, TREE_STATIC, CLEANUP_EH_ONLY, CASE_HIGH_SEEN,
773 TREE_NO_WARNING, TREE_CONSTANT_OVERFLOW, TREE_SYMBOL_REFERENCED,
774 TYPE_REF_CAN_ALIAS_ALL, TREE_OVERFLOW, TREE_PUBLIC,
775 TYPE_CACHED_VALUES_P, SAVE_EXPR_RESOLVED_P, TREE_SIDE_EFFECTS,
776 FORCED_LABEL, TREE_THIS_VOLATILE, TREE_THIS_NOTRAP, TREE_READONLY,
777 TREE_CONSTANT, TYPE_SIZES_GIMPLIFIED, DECL_UNSIGNED,
778 BIT_FIELD_REF_UNSIGNED, TYPE_UNSIGNED, TREE_ASM_WRITTEN,
779 TREE_USED, TREE_NOTHROW, CALL_EXPR_RETURN_SLOT_OPT,
780 DECL_BY_REFERENCE, CALL_FROM_THUNK_P, TYPE_ALIGN_OK,
781 TREE_PRIVATE, TREE_PROTECTED, TREE_DEPRECATED,
782 IDENTIFIER_TRANSPARENT_ALIAS, TREE_INVARIANT,
783 TREE_LANG_FLAG_[0-6], SSA_NAME_CHECK, SSA_NAME_IN_FREE_LIST,
784 TYPE_VOLATILE, TYPE_READONLY, TREE_VISITED, BINFO_VIRTUAL_P):
785 Adjust for new `common' layout.
786 (struct tree_function_decl): Add gimplified_flag.
787 (DECL_GIMPLIFIED): NEW.
788 (EXPR_LOCATION, SET_EXPR_LOCUS, EXPR_FILENAME, EXPR_LOCUS,
789 SET_EXPR_LOCUS, SET_EXPR_LOCATION, EXPR_LINENO,
790 EXPR_HAS_LOCATION): Call corresponding function.
791 (GIMPLE_STMT_CHECK): New.
792 (TREE_OPERAND_CHECK, TREE_TYPE, TREE_CHAIN): Abort on gimple tuples.
793 (TREE_BLOCK): Call tree_block.
794 (GIMPLE_STMT_P): New.
795 (GIMPLE_TUPLE_P): New.
796 (TREE_TO_GIMPLE_STMT): New.
797 (GIMPLE_STMT_TO_TREE): New.
798 (GIMPLE_STMT_OPERAND): New.
799 (GIMPLE_TUPLE_HAS_LOCUS_P): New.
800 (PROTECTED_TREE_OPERAND): New.
801 (PROTECTED_TREE_TYPE): New.
802 (build2_gimple_stat): Protoize.
803 (build2_gimple): New.
804 (expr_location): Protoize.
805 (set_expr_location): Protoize.
806 (expr_has_location): Protoize.
807 (expr_locus): Protoize.
808 (set_expr_locus): Protoize.
809 (expr_filename): Protoize.
810 (expr_lineno): Protoize.
811 (tree_block): Protoize.
812 (protected_tree_operand): Protoize.
813 (protected_tree_type): Protoize.
814 (enum tree_node_kind): Add gimple_stmt_kind.
815 * c-decl.c (union lang_tree_node): Tuples do not have a
817 * ipa-cp.c (constant_val_insert): Change uses of MODIFY_EXPR to
818 GIMPLE_MODIFY_STMT and adjust accordingly.
819 * tree-scalar-evolution.c (follow_ssa_edge): Same.
820 (interpret_condition_phi): Same.
821 (pointer_used_p): Same.
822 (analyze_scalar_evolution_1): Same.
823 (scev_const_prop): Same.
824 (interpret_rhs_modify_stmt): Rename from
825 interpret_rhs_modify_expr.
826 * builtins.c (std_expand_builtin_va_start): Change uses of
827 MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
828 (std_gimplify_va_arg_expr): Same.
829 (expand_builtin_va_copy): Same.
830 (integer_valued_real_p): Same.
831 * fold-const.c (maybe_lvalue_p): Same.
833 (tree_expr_nonnegative_p): Same.
834 (tree_expr_nonzero_p): Same.
835 * omp-low.c (extract_omp_for_data): Same.
836 (lower_rec_input_clauses): Same.
837 (lower_reduction_clauses): Same.
838 (lower_copyprivate_clauses): Same.
839 (lower_send_clauses): Same.
840 (lower_send_shared_vars): Same.
841 (expand_parallel_call): Same.
842 (expand_omp_parallel): Same.
843 (expand_omp_for_generic): Same.
844 (expand_omp_for_static_nochunk): Same.
845 (expand_omp_for_static_chunk): Same.
846 (expand_omp_sections): Same.
847 (lower_omp_single_copy): Same.
848 (lower_omp_parallel): Same.
849 * tree-ssa-dse.c (memory_address_same): Same.
850 (dse_optimize_stmt): Same.
851 * ipa-reference.c (scan_for_static_refs): Same.
852 * tree-gimple.c (is_gimple_reg_rhs): Same.
853 (get_call_expr_in): Same.
854 (recalculate_side_effects): Same.
855 * cgraphunit.c (cgraph_create_edges): Same.
856 * tree-ssa-copyrename.c (rename_ssa_copies): Same.
857 * tree-ssa-ccp.c (get_default_value): Same.
858 (likely_value): Same.
859 (visit_assignment): Same.
860 (ccp_visit_stmt): Same.
861 (get_maxval_strlen): Same.
862 (ccp_fold_builtin): Same.
863 * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Same.
864 (find_givs_in_stmt): Same.
865 (find_interesting_uses_op): Same.
866 (find_interesting_uses_stmt): Same.
867 (rewrite_use_nonlinear_expr): Same.
868 * ipa-pure-const.c (scan_function): Same.
869 * tree-stdarg.c (va_list_counter_bump): Same.
870 (check_all_va_list_escapes): Same.
871 (execute_optimize_stdarg): Same.
872 * tree-ssa-math-opts.c (compute_merit): Same.
873 (insert_reciprocals): Same.
874 (execute_cse_reciprocals): Same.
875 * tree-ssa-dom.c (initialize_hash_element): Same.
876 (simple_iv_increment_p): Same.
877 (record_equivalences_from_stmt): Same.
878 (optimize_stmt): Same.
879 (remove_stmt_or_phi): Same.
880 (get_rhs_or_phi_arg): Same.
881 (get_lhs_or_phi_result): Same.
882 (propagate_rhs_into_lhs): Same.
883 * tree-nrv.c (tree_nrv): Same.
884 (execute_return_slot_opt): Same.
885 * tree-ssa-propagate.c (get_rhs): Same.
887 (stmt_makes_single_load): Same.
888 (stmt_makes_single_store): Same.
889 (replace_vuses_in): Same.
890 (fold_predicate_in): Same.
891 (substitute_and_fold): Same.
892 * tree-ssa-alias.c (compute_call_clobbered): Same.
893 (recalculate_used_alone): Same.
894 (count_uses_and_derefs): Same.
895 (is_escape_site): Same.
896 (find_used_portions): Same.
897 * gimple-low.c (lower_stmt): Same.
898 (block_may_fallthru): Same.
899 (lower_return_expr): Same.
900 * tree-ssa-sink.c (is_hidden_global_store): Same.
901 (statement_sink_location): Same.
902 * dwarf2out.c (loc_descriptor_from_tree_1): Same.
903 * expr.c (safe_from_p): Same.
904 (expand_expr_real): Same.
905 (expand_expr_real_1): Same.
906 * tree-ssa-loop-ivcanon.c (empty_loop_p): Same.
907 * predict.c (expr_expected_value): Same.
908 (strip_builtin_expect): Same.
909 (apply_return_prediction): Same.
910 (tree_bb_level_predictions): Same.
911 (tree_estimate_probability): Same.
912 * tree-vn.c (vn_compute): Same.
913 * tree-eh.c (add_stmt_to_eh_region_fn): Same.
914 (remove_stmt_from_eh_region_fn): Same.
915 (do_return_redirection): Same.
916 (honor_protect_cleanup_actions): Same.
917 (lower_try_finally_switch): Same.
918 (lower_eh_constructs_1): Same.
919 (tree_could_throw_p): Same.
920 (verify_eh_throw_stmt_node): Same.
921 * function.c (gimplify_parameters): Same.
922 * tree-vectorizer.c (vect_is_simple_use): Same.
923 (vect_is_simple_reduction): Same.
924 * ipa-type-escape.c (scan_for_refs): Same.
925 * tree-if-conv.c (tree_if_conversion): Same.
926 (tree_if_convert_stmt): Same.
927 (if_convertible_gimplify_modify_stmt_p): Rename from
928 if_convertible_modify_expr_p.
929 (if_convertible_stmt_p): Adjust for GIMPLE_MODIFY_STMT.
930 (ifc_temp_var): Same.
931 (replace_phi_with_cond_modify_stmt): Rename from
932 replace_phi_with_cond_modify_expr.
933 (process_phi_nodes): Call replace_phi_with_cond_modify_stmt.
934 * tree.def (DEFTREECODE): Add GIMPLE_MODIFY_STMT.
935 * tree-data-ref.c (find_data_references_in_loop): Adjust for
937 * tree-flow-inline.h (var_ann): Same.
938 (function_ann): Same.
940 (mark_non_addressable): Same.
941 * tree-vect-analyze.c (vect_determine_vectorization_factor): Same.
942 * gimplify.c (tree_to_gimple_tuple): New.
943 (build_stack_save_restore): Adjust for GIMPLE_MODIFY_STMT.
944 (gimplify_return_expr): Same.
945 (gimplify_decl_expr): Same.
946 (gimplify_self_mod_expr): Same.
947 (gimplify_cond_expr): Same.
948 (gimplify_init_constructor): Same.
949 (gimplify_modify_expr): Same.
950 (gimplify_expr): Same.
951 (gimplify_function_tree): Same.
952 (force_gimple_operand): Same.
953 * tree-ssa-phiopt.c (conditional_replacement): Same.
954 (minmax_replacement): Same.
955 (abs_replacement): Same.
956 * tree-dfa.c (create_var_ann): Same.
957 (create_function_ann): Same.
958 (create_stmt_ann): Same.
959 (create_tree_ann): Same.
960 (collect_dfa_stats_r): Same.
961 * tree-ssa-pre.c (find_or_generate_expression): Same.
962 (create_expression_by_pieces): Same.
963 (try_look_through_load): Same.
964 (insert_fake_stores): Same.
965 (realify_fake_stores): Same.
966 (compute_avail): Same.
969 (poolify_modify_stmt): Rename from poolify_modify_stmt.
970 Adjust for GIMPLE_MODIFY_STMT.
971 (NECESSARY): Adjust for new `common' layout.
972 * tree-ssa-live.c (build_tree_conflict_graph): Adjust for
974 * tree-sra.c (sra_walk_modify_stmt): Rename from
975 sra_walk_modify_expr.
976 (sra_walk_function): Adjust for GIMPLE_MODIFY_STMT.
977 (generate_copy_inout): Same.
978 (generate_element_copy): Same.
979 (generate_element_zero): Same.
980 (scalarize_copy): Same.
981 * tree-mudflap.c (mf_decl_cache_locals): Same.
982 (mf_build_check_statement_for): Same.
983 (mf_xform_derefs): Same.
984 * ipa-prop.c (ipa_method_modify_stmt): Same.
985 * print-tree.c (print_node): Handle gimple tuples.
986 Add case for tcc_gimple_stmt.
987 * tree-ssa-copy.c (stmt_may_generate_copy): Adjust for
989 (copy_prop_visit_assignment): Same.
990 (copy_prop_visit_stmt): Same.
991 (init_copy_prop): Same.
992 * tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): Same.
993 (forward_propagate_into_cond_1): Same.
994 (find_equivalent_equality_comparison): Same.
995 (tidy_after_forward_propagate_addr): Same.
996 (forward_propagate_addr_expr_1): Same.
997 (simplify_not_neg_expr): Same.
998 (simplify_switch_expr): Same.
999 * tree-ssa-dce.c (find_pdom): Same.
1000 (mark_stmt_if_obviously_necessary): Same.
1001 (NECESSARY): Adjust for new `common' layout.
1002 * tree-flow.h: Same.
1003 * tree-vect-patterns.c (widened_name_p): Adjust for
1005 (vect_recog_dot_prod_pattern): Same.
1006 (vect_recog_widen_sum_pattern): Same.
1007 (vect_pattern_recog_1): Same.
1008 * tree-nested.c (init_tmp_var): Same.
1009 (save_tmp_var): Same.
1011 (convert_call_expr): Same.
1012 (finalize_nesting_tree_1): Same.
1013 * tree-ssa.c (verify_ssa): Same.
1014 (delete_tree_ssa): Same.
1015 * lambda-code.c (lbv_to_gcc_expression): Same.
1016 (lle_to_gcc_expression): Same.
1017 (lambda_loopnest_to_gcc_loopnest): Same.
1018 (can_put_in_inner_loop): Same.
1019 (can_convert_to_perfect_nest): Same.
1020 (perfect_nestify): Same.
1021 * tree-ssa-loop-prefetch.c (gather_memory_references): Same.
1022 * tree-inline.c (copy_body_r): Same.
1023 (setup_one_parameter): Same.
1024 (initialize_inlined_parameters): Same.
1025 (estimate_num_insns_1): Same.
1026 (expand_call_inline): Same.
1027 (gimple_expand_calls_inline): Same.
1028 (copy_tree_r): Same.
1029 * tree-optimize.c (execute_free_cfg_annotations): Same.
1030 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
1031 (vect_align_data_ref): Same.
1032 (vect_create_data_ref_ptr): Same.
1033 (vect_init_vector): Same.
1034 (vect_create_epilog_for_reduction): Same.
1035 (vectorizable_reduction): Same.
1036 (vectorizable_assignment): Same.
1037 (vectorizable_operation): Same.
1038 (vectorizable_store): Same.
1039 (vectorizable_load): Same.
1040 (vectorizable_live_operation): Same.
1041 (vectorizable_condition): Same.
1042 (vect_generate_tmps_on_preheader): Same.
1043 (vect_create_cond_for_align_checks): Same.
1044 * tree-object-size.c (collect_object_sizes_for): Same.
1045 (check_for_plus_in_loops_1): Same.
1046 (check_for_plus_in_loops): Same.
1047 * tree-outof-ssa.c (insert_copy_on_edge): Same.
1048 (replace_use_variable): Same.
1049 (check_replaceable): Same.
1050 (rewrite_trees): Same.
1051 (identical_copies_p): Same.
1052 (insert_backedge_copies): Same.
1053 * tree-profile.c (tree_gen_edge_profiler): Same.
1054 * tree-vect-generic.c (expand_vector_operations_1): Same.
1055 * tree-ssa-structalias.c (update_alias_info): Same.
1056 (find_func_aliases): Same.
1057 * tree-cfg.c (factor_computed_gotos): Same.
1059 (make_goto_expr_edges): Same.
1060 (tree_merge_blocks): Same.
1061 (remove_useless_stmts_cond): Same.
1062 (remove_useless_stmts_1): Same.
1063 (tree_find_edge_insert_loc): Same.
1064 (verify_expr): Same.
1065 (gimplify_val): Same.
1066 (verify_gimple_tuples_1): New.
1067 (verify_gimple_tuples): New.
1068 (verify_stmts): Call verify_gimple_tuples.
1069 * tree-ssa-reassoc.c (get_rank): Adjust for GIMPLE_MODIFY_STMT.
1070 (get_unary_op): Same.
1071 (linearize_expr): Same.
1072 (get_single_immediate_use): Same.
1073 (negate_value): Same.
1074 (should_break_up_subtract): Same.
1075 (break_up_subtract): Same.
1076 (repropagate_negates): Same.
1077 (break_up_subtract_bb): Same.
1078 (reassociate_bb): Same.
1079 * config/i386/i386.c (ix86_va_start): Same.
1080 (ix86_gimplify_va_arg): Same.
1081 * stmt.c (expand_expr_stmt): Same.
1082 (warn_if_unused_value): Same.
1083 (expand_return): Same.
1084 * tree-ssanames.c (make_ssa_name): Same.
1085 * tree-ssa-threadedge.c (lhs_of_dominating_assert): Same.
1086 * tree-ssa-operands.c (finalize_ssa_defs): Same.
1087 (add_virtual_operand): Same.
1088 (get_expr_operands): Same.
1089 (parse_ssa_operands): Same.
1090 (get_modify_stmt_operands): Rename from get_modify_expr_operands.
1092 2006-12-05 H.J. Lu <hongjiu.lu@intel.com>
1094 * config.host: Remove extra blank line.
1096 2006-12-05 Bernd Schmidt <bernd.schmidt@analog.com>
1098 * config.host (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if
1099 target is also an x86 variant.
1101 2006-12-05 Richard Guenther <rguenther@suse.de>
1103 * config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
1104 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
1105 (ix86_builtin_vectorized_function): New function to vectorize
1108 2006-12-05 Bernd Schmidt <bernd.schmidt@analog.com>
1110 * config/bfin/bfin.c (output_file_start): Fix comment which referred to
1111 ia64_override_options.
1113 2006-12-04 Jan Hubicka <jh@suse.cz>
1115 * cfgexpand.c (expand_one_var): Guard expand_one_stack_var by
1118 2006-12-04 Bernd Schmidt <bernd.schmidt@analog.com>
1120 * rtlanal.c (note_uses): Deal with SEQUENCEs.
1121 * config/bfin/bfin.c: Include "timevar.h".
1122 (bfin_flag_schedule_insns2, splitting_for_sched,
1123 bfin_flag_var_tracking): New variables.
1124 (print_operand): Handle '%!'.
1125 (override_options): Disable normal sched2 pass, instead set
1126 bfin_flag_schedule_insns2 for reorg to handle it.
1127 (output_file_start): Likewise for var-tracking.
1128 (bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
1129 (gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
1131 (bfin_reorg): Do second scheduling pass here, and call
1132 bfin_gen_bundles. Use type_for_anomaly and trapping_loads_p instead
1133 of examining insns directly. If bfin_flag_var_tracking, call
1134 var-tracking pass when done with everything else.
1135 * config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
1136 * config/bfin/bfin.md (UNSPEC_32BIT): New constant.
1137 (movsi_insn32): New pattern, with two new splits to create it
1138 before the final scheduling pass.
1139 (neghi2): Not a dsp32 insn, rather alu0.
1140 (movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
1141 movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
1142 extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
1143 mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
1144 ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
1145 movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
1146 movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
1147 ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
1148 addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
1149 subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
1150 addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
1151 flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
1152 flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
1153 flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
1154 flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
1155 flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
1156 mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
1157 lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
1158 variants instead of ';'.
1159 (ror_one, rol_one): Likewise. Make them dsp32 insns.
1160 (ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
1161 (align8, align16, align24): Now named patterns; also using '%!'.
1164 2006-12-05 Kazu Hirata <kazu@codesourcery.com>
1166 * config/i386/darwin.h, config/spu/spu.c, tree-ssa-live.c,
1167 tree-vect-generic.c, tree-vect-transform.c: Fix comment typos.
1169 2006-12-04 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
1171 * config/spu/spu-protos.c (spu_split_address): Add.
1172 * config/spu/spu.c (spu_split_address): Add.
1173 (print_operand): Handle HIGH.
1174 (spu_legitimate_address): Don't test for aligned CONST.
1175 (spu_expand_mov): Don't split addresses here.
1176 * config/spu/constraints.md (A): Don't test legitimate_const.
1177 * config/spu/spu.md: Add split of movsi patterns for PIC mode.
1178 (ceq_di): Use correct predicates.
1180 2006-12-04 Eric Christopher <echristo@apple.com>
1182 * config/darwin.h: Update copyright notice.
1183 * config/i386/darwin.h: Ditto.
1185 2006-12-04 Jan Hubicka <jh@suse.cz>
1187 * builtins.c (fold_builtin_memory_op): Check that expr_size match.
1188 * explow.c (expr_size, int_expr_size): Assert that size is non_NULL.
1190 2006-12-04 Daniel Berlin <dberlin@dberlin.org>
1192 * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
1194 * tree-ssa-structalias.c (set_used_smts): Export.
1195 (find_what_p_points_to): Don't call set_used_smts here.
1196 * tree-ssa-structalias.h (set_used_smts): Add prototype.
1198 2006-12-04 Daniel Berlin <dberlin@dberlin.org>
1200 * tree-ssa-alias.c (compute_may_aliases):
1201 Compute flow sensitive before flow insensitive.
1202 (compute_flow_sensitive_aliasing): Don't try to add
1203 a symbol memory tag to itself.
1205 * alias.h (alias_set_subset_of): New prototype.
1207 * alias.c (alias_set_subset_of): New function.
1209 * tree-ssa-structalias.c: Update comments.
1210 (struct variable_info): Add finished_solution.
1211 (new_varinfo): Set finished solution to NULL.
1212 (var_escaped_vars): Remove.
1213 (escaped_vars_tree): Remove.
1214 (escaped_vars_id): Remove.
1215 (nonlocal_vars_id): Remove.
1216 (constraint_expr_type): Add INCLUDES.
1217 (graph_size): Removed.
1218 (dump_constraint): Support INCLUDES.
1219 (build_constraint_graph): Ditto.
1220 (collapse_nodes): Add merge_solutions argument.
1221 Don't merge attributes.
1222 (process_unification_queue): Just use collapse_nodes.
1223 (perform_var_substitution): Update call to collapse_nodes.
1224 (get_constraint_exp_from_ssa_var): Use INCLUDES.
1225 (process_constraint): Fix non-field sensitive handling
1227 (get_constraint_for): Use INCLUDES.
1228 (make_constraint_from_anything): Renamed from
1229 make_constraint_from_escaped.
1230 (make_constraint_to_escaped): Removed.
1231 (find_global_initializers): Removed.
1232 (create_variable_info_for): Do not make constraints to escaped
1234 (dump_solution_for_var): Don't print out the equivalent points-to
1235 sets, just use the name of the variable it shares it with.
1236 (intra_create_variable_infos): Use INCLUDES.
1237 Change nonlocal variable sets to anything sets.
1238 (init_base_vars): Remove escaped_vars and nonlocal_var
1240 (find_escape_constraints): Removed.
1241 (delete_points_to_sets): Remove dead code.
1242 (used_smt_calculated): New variable.
1243 (set_used_smts): New function.
1244 (merge_smts_into): New function.
1245 (find_what_p_points_to): Modify to use SMTs.
1246 (create_nonlocal_var): Remove.
1248 * tree-ssa-operands.c (access_can_touch_variable): Remove
1249 reference to nonlocal_all.
1251 * tree-ssa.c (verify_name_tags): Remove.
1253 2006-12-04 Carlos O'Donell <carlos@codesourcery.com>
1255 * config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
1256 (__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.
1258 2006-12-04 Andrew MacLeod <amacleod@redhat.com>
1260 * tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
1261 * tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
1262 (add_livein_if_notdef): Delete.
1263 (loe_visit_block): New. Propogate live on entry info for a block into
1264 each predecessor. If it changes, make sure it is visited again.
1265 (live_worklist): Visit every block and update the live on entry info
1266 for preds. Iterate over any that changed.
1267 (set_var_live_on_entry): Populate the live on entry blocks with bits
1268 based on the immediate uses of a var.
1269 (calculate_live_on_entry): Remove.
1270 (calculate_live_on_exit): Calculate live on exit based on the newly
1271 oriented live on entry bits.
1272 (calculate_live_ranges): Build live on entry and exit vectors.
1273 (dump_live_info): Use new orientation of live on entry bitmaps.
1274 (verify_live_on_entry): New. Split out verification code from old
1275 calculate_live_on_entry routine.
1276 * tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
1277 (live_entry_blocks): Rename to live_on_entry and return bitmap for a
1278 basic_block instead of for a partition.
1279 (live_merge_and_clear): Add asserts.
1280 (make_live_on_entry): Set partition bit in basic block vector.
1282 2006-12-04 Jakub Jelinek <jakub@redhat.com>
1285 * omp-low.c (expand_omp_for_static_nochunk,
1286 expand_omp_for_static_chunk): Do all arithmetics in signed rather than
1290 * omp-low.c (determine_parallel_type): Don't try to optimize combined
1291 parallels if region->exit or region->inner->exit is NULL.
1292 (expand_omp_parallel): Handle NULL region->exit even if cfg is already
1294 (expand_omp_for_generic): Handle NULL region->cond and region->exit.
1295 (expand_omp_for): Use expand_omp_for_generic if either region->cond
1296 or region->exit is NULL.
1297 (expand_omp_sections): Handle NULL region->cond or region->exit.
1300 2006-12-04 Eric Botcazou <ebotcazou@libertysurf.fr>
1302 * config/sparc/sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
1303 * config/sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
1305 2006-12-04 Eric Botcazou <ebotcazou@adacore.com>
1307 * tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
1308 TYPE_MAX_VALUE for scalar types here but...
1309 (walk_tree): ...there instead. Return NULL_TREE if the TYPE_DECL
1310 is attached an error mark, and the return value of the callback
1311 if it is not NULL_TREE.
1313 2006-12-04 Ben Elliston <bje@au.ibm.com>
1315 * config/spu/spu.md (_mulv4si3): Remove unused local variables.
1317 2006-12-03 Eric Christopher <echristo@apple.com>
1320 * config/t-slibgcc-darwin: Pass -install_name.
1321 * config/darwin.h (LINK_COMMAND_SPEC): Remove use of
1322 libtool. Only pass through options that the linker recognizes.
1323 (LINK_SPEC): Update comment. Translate options.
1324 (STARTFILE_SPEC): Add dylib1.o for shared libraries.
1325 * config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.
1327 2006-12-03 Dorit Nuzman <dorit@il.ibm.com>
1329 * config/spu/spu.md (smaxv4sf3, sminv4sf3): New.
1331 2006-12-03 Uros Bizjak <ubizjak@gmail.com>
1334 * config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
1335 operands[1] in insn constraint. Correct type attribute to sselog1.
1337 2006-12-02 H.J. Lu <hongjiu.lu@intel.com>
1340 * config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
1342 (host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
1343 processor detection.
1345 * config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
1346 -march=native if there is no -mtune=*.
1348 * config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
1351 2006-12-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1353 * doc/install.texi: Update recommended MPFR version. Remove
1354 obsolete reference to cumulative patch.
1356 2006-12-02 Lee Millward <lee.millward@codesourcery.com>
1359 * c-decl.c (store_parm_decls_oldstyle): Robustify.
1361 2006-11-30 Jan Hubicka <jh@suse.cz>
1362 Uros Bizjak <ubizjak@gmail.com>
1364 * config/i386/i386.c (pentium4_cost, nocona_cost): Update
1365 32bit memcpy/memset decriptors.
1366 (decide_alg): With -minline-all-stringops and sizes that are best
1367 to be copied via libcall still work hard enough to pick non-libcall
1370 2006-12-02 Kazu Hirata <kazu@codesourcery.com>
1372 * doc/extend.texi, doc/invoke.texi, doc/md.texi: Fix typos.
1374 * builtins.c, cfgloop.h, cgraph.h, config/arm/arm.c,
1375 config/i386/i386.c, config/i386/i386.h, config/mips/mips.h,
1376 config/rs6000/cell.md, config/rs6000/rs6000.c, config/sh/sh.c,
1377 config/sh/sh4-300.md, config/spu/spu-builtins.def,
1378 config/spu/spu-c.c, config/spu/spu-modes.def,
1379 config/spu/spu.c, config/spu/spu.md,
1380 config/spu/spu_internals.h, config/spu/vmx2spu.h,
1381 fold-const.c, fwprop.c, predict.c, tree-data-ref.h,
1382 tree-flow.h, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
1383 tree-ssa-pre.c, tree-vect-analyze.c, tree-vect-transform.c,
1384 tree-vectorizer.c, tree-vrp.c: Fix comment typos. Follow
1385 spelling conventions.
1387 * config/i386/i386.c: Fix a comment typo.
1389 2006-12-01 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
1391 * config/spu/spu.c (spu_immediate): Remove trailing comma.
1392 (reloc_diagnostic): Call warning when -mwarn-reloc is specified.
1393 * config/spu/spu.md: (zero_extendhisi2): Expand instead of split for
1394 better optimization.
1395 (floatv4siv4sf2): New.
1396 (fix_truncv4sfv4si2): New.
1397 (floatunsv4siv4sf2): New.
1398 (fixuns_truncv4sfv4si2): New.
1406 (cmp<mode>): Don't accept constant arguments for DI, TI and SF.
1407 * config/spu/spu_internals.h: Handle overloaded intrinsics in C++ with
1408 spu_resolve_overloaded_builtin instead of static inline functions.
1410 2006-12-01 Eric Botcazou <ebotcazou@adacore.com>
1412 * fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
1413 type instead of the size of its mode to compute the highest and
1414 lowest possible values. Still check the size of the mode before
1415 flipping the signedness of the comparison.
1417 2006-12-01 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
1419 * config/spu/predicates.md (spu_mov_operand): Add.
1420 * config/spu/spu.c (spu_expand_extv): Remove unused code.
1421 (print_operand_address, print_operand): Handle addresses containing AND.
1422 (spu_split_load, spu_split_store): Use updated movti pattern.
1423 * config/spu/spu.md: (_mov<mode>, _movdi, _movti): Handle loads and
1424 stores in mov patterns for correct operation of reload.
1425 (lq, lq_<mode>, stq, stq_<mode>): Remove.
1427 2006-12-01 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1430 * c-common.c (check_main_parameter_types): Check for error_mark_node.
1432 2006-12-01 Andrew MacLeod <amacleod@redhat.com>
1434 * common.opt (ftree-combine-temps): Remove.
1435 * tree-outof-ssa.c (SSANORM_COMBINE_TEMPS): Remove.
1436 (coalesce_ssa_name): Don't check for combine-temps.
1437 (coalesce_vars): Remove.
1438 (check_replaceable): Use num_imm_uses.
1439 (remove_ssa_form, insert_backedge_copies, rewrite_out_of_ssa): Don't
1440 check for combine-temps.
1441 (rewrite_out_of_ssa): Never create a ref_count in the var_map.
1442 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Change parms
1443 to register_ssa_partition calls.
1444 * tree-ssa-live.c (register_ssa_partition): Remove prototype.
1445 (init_var_map, delete_var_map): remove refernces to ref_count.
1446 (create_ssa_var_map): Never calculate a ref count.
1447 (type_var_init): Remove.
1448 * tree-ssa-live.h (typedef struct _var_map): Remove ref_count.
1449 (SSA_VAR_MAP_REF_COUNT): Delete.
1450 (create_ssa_var_map): Change Prototype to have no parameters.
1451 (version_ref_count): Delete.
1452 (register_ssa_partition): Remove 'is_use' paramater and don't set the
1454 (type_var_num, type_var, type_var_first_partition,
1455 type_var_next_partition, type_var_dump, type_var_delete,
1456 type_var_remove_partition, type_var_find, type_var_compact,
1457 type_var_decompact): Remove.
1459 2006-12-01 Bernd Schmidt <bernd.schmidt@analog.com>
1461 * config/bfin/bfin.md (pushsi_insn, popsi_insn): Set correct addrtype
1464 2006-12-01 Richard Guenther <rguenther@suse.de>
1467 * dwarf2out.c (struct pubname_struct): Make name const.
1468 (add_pubtype): Do not xstrdup identifiers.
1470 2006-12-01 Bernd Schmidt <bernd.schmidt@analog.com>
1472 * config/bfin/bfin.c (bfin_valid_add): Fix the logic that ensures
1473 multiword accesses are in range.
1475 2006-12-01 Zdenek Dvorak <dvorakz@suse.cz>
1477 PR tree-optimization/29921
1478 * tree-ssa-ccp.c (canonicalize_float_value): New function.
1479 (set_lattice_value): Use canonicalize_float_value.
1481 2006-11-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
1483 * config/spu/spu.c (spu_builtin_range): Move from spu-c.c
1484 (TARGET_RESOLVE_OVERLOADED_BUILTIN): Delete.
1485 (spu_cpu_cpp_builtins): Remove.
1486 (spu_override_options): Don't set warn_main.
1487 (spu_force_reg): Move from spu-c.c.
1488 (spu_check_builtin_parm): Likewise.
1489 (expand_builtin_args): Likewise.
1490 (spu_expand_builtin_1): Likewise.
1491 (spu_expand_builtin): Likewise.
1492 * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Define, set
1493 warn_main and targetm.resolve_overloaded_builtin.
1494 * config/spu/spu-c.c (spu_builtin_range): Remove.
1495 (spu_check_builtin_parm): Remove.
1496 (expand_builtin_args): Remove.
1497 (spu_expand_builtin_1): Remove.
1498 (spu_expand_builtin): Remove.
1499 (spu_cpu_cpp_builtins): Moved from spu.c
1500 (spu_force_reg): Remove.
1502 2006-12-01 Joseph Myers <joseph@codesourcery.com>
1503 David Edelsohn <edelsohn@gnu.org>
1506 * doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
1507 HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
1508 * defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
1509 HARD_REGNO_NREGS_WITH_PADDING): Define.
1510 * config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
1511 HARD_REGNO_NREGS_WITH_PADDING): Define.
1512 * rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
1513 Use new macros to detect modes with holes; do not look at integer
1515 (subreg_offset_representable_p): Check for and disallow cases
1516 where the modes use different numbers of bits from registers.
1517 * config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
1518 constant for soft-float.
1519 (rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
1521 (rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
1522 in E500 double case.
1523 * config/rs6000/rs6000.md (movtf): Allow soft-float.
1524 (movtf_softfloat): New.
1526 2006-11-30 Richard Sandiford <richard@codesourcery.com>
1528 * simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than
1529 simplify_gen_subreg.
1531 2006-11-30 Andrew Macleod <amacleod@redhat.com>
1533 * tree-ssa-live.c (create_coalesce_list): Create a hash table.
1534 (COALESCE_HASH_FN): New. Define hash function.
1535 (partition_pair_map_hash): New. Hash value for a partition pair.
1536 (partition_pair_map_eq): New. Equality for hash pairs.
1537 (create_coalesce_list): Create hash table.
1538 (delete_coalesce_list): Free hash table.
1539 (find_partition_pair): Find/create pairs in hash table.
1540 (compare_pairs): Sort pairs in ascending order now.
1541 (num_coalesce_pairs): New. Number of pairs in hash table.
1542 (struct partition_pair_iterator): Iterator struct for pair table.
1543 (first_partition_pair): Iterator function for first pair.
1544 (end_partition_pair_p): Iterator function for end of iteration.
1545 (next_partition_pair): Iterator function for next pair.
1546 (FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
1547 (sort_coalesce_list): Sort pairs from hash table into an array.
1548 (pop_best_coalesce): Take pairs from the array.
1549 (dump_coalesce_list): Update to use hash table or sorted array.
1550 * tree-ssa-live.h (struct partition_pair_d): Remove next field.
1551 (struct coalesce_list_d): Add hash table related fields.
1553 2006-11-30 Jan Hubicka <jh@suse.cz>
1556 * builtins.c (fold_builtin_memory_op): Fix typo in the check for
1557 memmove/bcopy->memcpy conversion.
1559 2006-11-30 Carlos O'Donell <carlos@codesourcery.com>
1561 * doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
1562 * config/elfos.h [!MAX_OFILE_ALIGNMENT] (MAX_OFILE_ALIGNMENT):
1563 Default is the largest alignment supported for 32-bit ELF and
1564 representable on a 32-bit host.
1566 2006-11-30 Janis Johnson <janis187@us.ibm.com>
1568 * config/dfp-bit.c (DFP_TO_INT): Use wider precision.
1570 2006-11-30 Jan Hubicka <jh@suse.cz>
1572 * tree-ssa-operands.h (struct ssa_operands): New.
1573 * tree-flow-inline.h (gimple_ssa_operands): New function.
1574 * tree-flow.h: (struct gimple_df): Add ssa_operands.
1575 * Makefile.in: Remove gt-tree-ssa-operands.h
1576 * tree-ssa-operands.c: Do not include gt-tree-ssa-operands.h
1577 (free_defs, free_uses, free_vuses, free_maydefs, free_mustdefs,
1578 operand_memory, operand_memory_index, ops_active): Remove statics.
1579 (ALLOC_OPTYPE): Update.
1580 (operand_build_sort_virtual): Update.
1581 (ssa_operands_active): Update.
1582 (init_ssa_operands): Update.
1583 (fini_ssa_operands): Update.
1584 (ssa_operand_alloc): Update.
1585 (INITIALIZE_USE): Update.
1586 (finalize_ssa_use_ops): Update.
1587 (finalize_ssa_v_may_def_ops): Update.
1588 (finalize_ssa_vuse_ops): Update.
1589 (finalize_ssa_v_must_def_ops): Update.
1591 2006-11-30 Richard Guenther <rguenther@suse.de>
1593 * tree-vectorizer.h (vectorizable_function): Export.
1594 * tree-vect-transform.c (vectorizable_function): Likewise.
1595 * tree-vect-patterns.c (vect_recog_pow_pattern): Set
1596 type_in to scalar type in recognition of squaring.
1597 Make sure the target can vectorize sqrt in recognition
1598 of sqrt, set type_in to vector type in this case.
1600 2006-11-30 Uros Bizjak <ubizjak@gmail.com>
1602 * config/i386/i386.md (R10_REG): New constant.
1603 * config/i386/i386.c (pro_epilogue_adjust_stack): Use R11_REG.
1604 (ix86_emit_restore_regs_using_mov): Ditto.
1605 (ix86_expand_call): Ditto.
1606 (x86_output_mi_thunk): Ditto. Also use R10_REG.
1608 2006-11-30 Steven Bosscher <steven@gcc.gnu.org>
1610 * cselib.c (cselib_init): Use special MEM rtx form for callmem.
1611 * alias.c (canon_true_dependence): Update comment.
1613 2006-11-30 Steven Bosscher <steven@gcc.gnu.org>
1615 * cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
1616 at the end of a diagnostics message.
1618 * alloc-pool.c (pool_free): Postpone clearing the pool entry
1619 until after asserting that it was allocated in the right pool.
1621 * cfgrtl.c (print_rtl_with_bb): Print predecessor and
1622 successor edge information as well. Make output of live regs
1623 on exit consistent with live regs on entry.
1625 2006-11-30 Uros Bizjak <ubizjak@gmail.com>
1628 * config/i386/i386.md (*truncxfsf2_mixed, *truncxfdf2_mixed): Enable
1629 insn patterns for TARGET_80387.
1630 (*truncxfsf2_i387, *truncxfdf2_i387): Remove.
1631 (*truncxfsf2_i387_1): Rename to *truncxfsf2_i387.
1632 (*truncxfdf2_i387_1): Rename to *truncxfdf2_i387.
1633 (fmod<mode>3, remainder<mode>3): Enable expaders for SSE math.
1634 Generate truncxf<mode>2 insn patterns for strict SSE math.
1636 2006-11-30 Uros Bizjak <ubizjak@gmail.com>
1638 * config/i386/i386.md (movsf_1): Enable pattern for standard
1639 80387 constants before reload when optimizing for size.
1640 (*movdf_nointeger, *movdf_integer): Ditto.
1641 (*movxf_nointeger, *movxf_integer): Disable patterns for standard
1642 80387 constants before reload when not optimizing for size.
1644 (*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
1645 extension of XFmode input operands.
1647 2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
1649 * config/spu/crt0.c (__dso_handle): Define.
1651 2006-11-30 Kaz Kojima <kkojima@gcc.gnu.org>
1653 * emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially
1654 when clearing the used flags.
1656 2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
1658 * config/spu/spu.md (extend_compare): Fix whitespace formatting.
1660 2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
1663 * config/spu/spu.md (extend_compare<mode>): New pattern.
1664 (extend_compare): Change to expand and use the above pattern.
1666 2006-11-29 Janis Johnson <janis187@us.ibm.com>
1668 * config/dfp-bit.c (DFP_TO_INT): Fix rounding mode.
1670 * config/dfp-bit.h (CONTEXT_ROUND): Delete.
1671 (DFP_INIT_ROUNDMODE): Define.
1672 * config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.
1673 * mklibgcc.in: Fix dependencies for dfp-bit.c.
1675 2006-11-29 Tehila Meyzels <tehila@il.ibm.com>
1677 * haifa-sched.c: Remove define LINE_NOTE(INSN). Remove line_note_head.
1678 Update documentation.
1679 (associate_line_notes_with_blocks): Kill.
1680 (extend_bb): Remove basic block argument, put void instead.
1681 Remove line number handling for each bb.
1682 (save_line_notes): Kill.
1683 (restore_line_notes): Kill.
1684 (sched_init): Remove line_note_head initialization.
1685 Change extend_bb call.
1686 (sched_finish): Remove free of line_note_head.
1687 (add_block): Change extend_bb call.
1688 * sched-ebb.c (schedule_ebb): Remove save_line_notes,
1689 rm_line_notes and restore_line_notes calls.
1690 (schedule_ebbs): Remove rm_redundant_line_notes.
1691 * sched-int.h (struct haifa_insn_data): Remove line_note.
1692 (save_line_notes): Remove declaration.
1693 (restore_line_notes): Remove declaration.
1694 * modulo-sched.c (loop_canon_p): Update debug info printing
1695 by using insn locators instead of line note.
1696 (sms_schedule): Update debug info printing, by using insn
1697 locators instead of line note.
1698 * sched-rgn.c (debug_dependencies): Remove handling of case
1699 n>0 (line number), since it's a dead code.
1700 (schedule_region): Remove save_line_notes and
1701 restore_line_notes calls.
1703 2006-11-29 Joseph Myers <joseph@codesourcery.com>
1705 * config/rs6000/predicates.md (gpc_reg_operand): Check
1706 invalid_e500_subreg.
1707 * config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
1708 SImode subregs of SPE vectors.
1709 * config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
1710 * jump.c (true_regnum): Require subregs to satisfy
1711 subreg_offset_representable_p.
1713 2006-11-29 Daniel Berlin <dberlin@dberlin.org>
1714 Steven Bosscher <stevenb.gcc@gmail.com>
1716 * Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
1717 since it no longer exists.
1719 2006-11-29 Duncan Sands <baldrick@free.fr>
1721 PR tree-optimization/23744
1722 * tree-vrp.c (vrp_meet): do not require ranges to intersect.
1724 2006-11-29 Duncan Sands <baldrick@free.fr>
1726 PR tree-optimization/23744
1727 * testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
1729 2006-11-29 Duncan Sands <baldrick@free.fr>
1731 PR tree-optimization/23744
1732 * testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.
1734 2006-11-29 Jie Zhang <jie.zhang@analog.com>
1736 * doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.
1738 2006-11-29 J"orn Rennecke <joern.rennecke@st.com>
1740 * sh.opt (minline-ic_invalidate): New option.
1741 (musermode): Adjust comment.
1742 * sh.c (sh_initialize_trampoline): Emit library call unless
1743 is set; if it is set, don't emit library call if we can use icbi
1745 * sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
1746 icbi for TARGET_SH4_300.
1747 * t-sh (LIB1ASMFUNCS_CACHE): Set.
1748 * doc/invoke.texi: Document -minline-ic_invalidate; Update
1749 -musermode documentation.
1751 2006-11-29 Jim Tison <jtison@us.ibm.com>
1753 * gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
1754 __gthread_recursive_mutex_init): Define.
1756 2006-11-29 Joseph Myers <joseph@codesourcery.com>
1758 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
1759 STRICT_ALIGNMENT and the type is more aligned than the saved
1760 registers, copy via a temporary.
1762 2006-11-28 Andrew Pinski <pinskia@gmail.com>
1765 * tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
1768 2006-11-28 Bob Wilson <bob.wilson@acm.org>
1770 * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.
1772 2006-11-28 Jan Hubicka <jh@suse.cz>
1774 Privatize SSA variables into gimple_df.
1775 * tree-flow-inline.h
1776 (gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
1777 gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
1778 gimple_nonlocal_all): New accessors.
1779 (first_referenced_var): Update.
1780 (mark_stmt_modified): Update.
1781 (is_call_clobbered): Update.
1782 (mark_call_clobbered): Update.
1783 (clear_call_clobbered): Update.
1784 (mark_non_addressable): Update.
1785 * tree-vrp.c (get_value_range): Update.
1786 * tree-into-ssa.c (in_ssa_p): Kill.
1787 (get_default_def_for): Update.
1788 (rewrite_into_ssa): Update.
1789 * tree-complex.c (init_parameter_lattice_values): Update.
1790 (update_complex_assignment): Update.
1791 (update_parameter_components): Update.
1792 (expand_complex_libcall): Update.
1793 (expand_complex_operations_1): Update.
1794 * tree-tailcall.c (arg_needs_copy_p): Update.
1795 (add_virtual_phis): Update.
1796 (tree_optimize_tail_calls_1): Update.
1797 * tree-ssa-dse.c (memory_ssa_name_same): Update.
1798 * tree-ssa-copyrename.c
1799 (copy_rename_partition_coalesce): Update.
1800 * tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
1801 * tree-ssa-propagate.c (set_rhs): Update.
1802 * tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
1803 addressable_vars, global_var):Kill.
1804 (set_initial_properties): Update.
1805 (init_alias_info): Update.
1806 (finalize_ref_all_pointers): Update.
1807 (setup_pointers_and_addressables): Update.
1808 (maybe_create_global_var): Update.
1809 (create_global_var): Update.
1810 (dump_points_to_info): Update.
1811 * function.h (struct gimple_df): Forward declare.
1812 (struct function): Add GIMPLE_DF field.
1813 * gimplify.c (force_gimple_operand): Update.
1814 * tree-dfa.c (referenced_vars, default_defs): KIll.
1815 (make_rename_temp): Update.
1816 (dump_variable): Update.
1817 (referenced_var_lookup): Update.
1818 (referenced_var_check_and_insert): Update.
1819 (default_def): Rename to ...
1820 (gimple_default_def): ... this one; accept cfun argument.
1821 (set_default_def): Update.
1822 * tree-cfgcleanup.c (modified_noreturn_calls): Kill.
1823 (cleanup_control_flow): Update.
1824 * tree-ssa-pre.c (compute_avail): Update
1825 * tree-ssa-live.c (calculate_live_on_entry): Update.
1826 * tree-ssa.c (verify_use): Update.
1827 (verify_call_clobbering): Update.
1828 (verify_call_clobbering): Update.
1829 (init_tree_ssa): Update.
1830 (delete_tree_ssa): Update.
1831 * tree-outof-ssa.c (coalesce_ssa_name): Update.
1832 (rewrite_out_of_ssa): Update.
1833 * tree-flow.h (gimple_df): New structure collecting dataflow variables.
1834 (FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
1836 (in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
1837 ssa_names, global_var, nonlocal_all, call_clobbered_vars,
1838 addressable_vars, aliases_computed_p): Kill.
1839 (default_def): Rename to...
1840 (gimple_default_def): ... this one.
1841 (defaule_def_fn): Kill.
1842 (num_referenced_vars, ssa_names, num_ssa_names): Update.
1843 * tree-ssa-structalias.c (nonlocal_all): Kill.
1844 (get_constraint_exp_from_ssa_var): Update.
1845 (create_nonlocal_var): Update.
1846 (get_constraint_for): Update.
1847 (update_alias_info): Update.
1848 (find_global_initializers): Update.
1849 (intra_create_variable_infos): Update.
1850 (intra_create_variable_infos):
1851 (find_what_p_points_to): Update.
1852 (init_alias_heapvars): Update.
1853 * tree-cfg.c (remove_bb): Update.
1854 (gimplify_val): Update.
1855 * tree-ssa-reassoc.c (get_rank): Update.
1856 (init_reassoc): Update.
1857 * tree-ssanames.c: Do not include gt-tree-ssanames.h
1858 (ssa_names, free_ssanames): Kill.
1859 (init_ssanames): Update.
1860 (make_ssa_name): Update.
1861 (release_ssa_name): Update.
1862 (release_defs): Update.
1863 (replace_ssa_name_symbol): Update.
1864 * tree-ssa-operands.c (access_can_touch_variable): Update.
1865 (add_virtual_operand): Update.
1866 (add_call_clobber_ops): Update.
1867 (add_call_read_ops): Update.
1868 (get_call_expr_operands): Update.
1869 (get_asm_expr_operands): Update.
1871 2006-11-28 Jan Hubicka <jh@suse.cz>
1873 * builtins.c: Include tree-flow.h.
1874 (fold_builtin_memory_op): Be more aggressive on converting memcpy to
1875 assignment; convert memmove to memcpy for sizes greater than 1 where
1876 alignment of operands prohibit the partial overlap.
1878 2006-11-28 Jan Hubicka <jh@suse.cz>
1880 * invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
1881 * cgraph.c (dump_cgraph_node): Dump stack usage.
1882 * cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
1883 (cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
1884 * cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
1885 * ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
1886 (cgraph_check_inline_limits): Limit stack growth.
1887 * cfgexpand.c: Include tree-inline.h.
1888 (account_stack_vars): New function.
1889 (expand_one_var): New param to just account the stack; return estimated
1891 (expand_used_vars_for_block): Update call of expand_one_var.
1892 (account_used_vars_for_block): New function.
1893 (estimated_stack_frame_size): Likewise.
1894 (init_vars_expansion, fini_vars_expansion): Break out from..
1895 (expand_used_vars): ... here.
1896 * tree-inline.h (estimated_stack_frame_size): Declare.
1897 * params.def (PARAM_LARGE_STACK_FRAME, PARAM_STACK_FRAME_GROWTH): New.
1899 2006-11-28 Richard Guenther <rguenther@suse.de>
1901 * ggc-page.c (ggc_print_statistics): Use %ul and a cast to
1902 unsigned long for printing OBJECT_SIZE.
1904 2006-11-27 Steven Bosscher <steven@gcc.gnu.org>
1906 * alias.c (init_alias_analysis): Remove simplification loop
1907 after propagating pointers.
1909 2006-11-27 Uros Bizjak <ubizjak@gmail.com>
1911 * config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
1914 2006-11-27 Bob Wilson <bob.wilson@acm.org>
1916 * config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.
1918 2006-11-27 Roger Sayle <roger@eyesopen.com>
1919 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1921 * c-common.c (constant_fits_type_p): Delete.
1922 (unsigned_conversion_warning): Delete.
1923 (conversion_warning): Integrate Wconversion warning from
1924 unsigned_conversion_warning.
1925 (convert_and_check): Integrate Woverflow warning from
1926 unsigned_conversion_warning. Reorganize and simplify to avoid
1927 dependence upon the middle-end setting TREE_OVERFLOW on integral
1928 conversions, by using int_fits_type_p directly.
1930 2006-11-27 Tobias Burnus <burnus@net-b.de>
1932 * doc/invoke.texi: Fixed typo.
1934 2006-11-27 Michael Matz <matz@suse.de>
1935 Andreas Krebbel <krebbel1@de.ibm.com>
1938 * config/s390/predicates.md (larl_operand): Check addend of larl
1939 operand to be in range of -/+2GB.
1940 * config/s390/s390.c (legitimize_pic_address): Likewise.
1941 Changed type of variable even to HOST_WIDE_INT.
1943 2006-11-27 Jan Hubicka <jh@suse.cz>
1945 * expr.c (emit_block_move_via_libcall): Export.
1946 (clear_storage_via_libcall): Rename to ...
1947 (set_storage_via_libcall): ... this one; handle arbitrary value to set.
1948 (clear_storage): Update to set_storage_via_libcall.
1949 * expr.h (emit_block_move_via_libcall): Declare
1950 * config/i386/i386.h (stringop_alg): New enum.
1951 (MAX_STRINGOP_ALGS): New constant.
1952 (stringop_algs): New struct.
1953 (processor_costs): Add memcpy/memset descriptors.
1954 (TARGET_REP_MOVEL_OPTIMAL): Remove.
1955 * config/i386/i386.md (movsi_insv_1_rex64): New pattern.
1956 (strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
1958 * config/i386/i386.opt (minline-stringops-dynamically,
1959 mstringop-strategy): New
1961 * config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
1962 (ix86_expand-clrmem): Rename to ...
1963 (ix86_expand_setmem): ... this one; update prototype.
1964 * config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
1965 (size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
1966 geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
1967 nocona_cost, core2_cost, generic_cost, generic64_cost,
1968 generic32_cost): Add memcpy/memset descriptors.
1969 (x86_rep_movl_optimal): Remove.
1970 (stringop_alg): New static variable.
1971 (ix86_expand_aligntest): Handle predictions.
1972 (override_options): Add strgop_alg handling.
1973 (predict_jump): New function.
1974 (scale_counter): New function.
1975 (expand_set_or_movmem_via_loop): New function.
1976 (expand_movmem_via_rep_mov): New function.
1977 (expand_setmem_via_rep_stots): New function.
1978 (emit_strmov): New function.
1979 (expand_movmem_epilogue): New function.
1980 (expand_setmem_epilogue_via_loop): New function.
1981 (expand_setmem_epilogue): New function.
1982 (expand_movmem_prologue): New function.
1983 (expand_setmem_prologue): New function.
1984 (decide_alg): New function.
1985 (decide_alignment): New function.
1986 (ix86_exand_movmem): Rewrite.
1987 (promote_duplicated_reg): New function.
1988 (ix86_expand_clrmem): Rename to ...
1989 (ix86_expand_setmem): ... this one. Rewrite.
1991 * invoke.texi (minline-stringops-dynamically): New command line option.
1992 (mstringop-strategy): Likewise.
1994 2006-11-27 Jan Hubicka <jh@suse.cz>
1996 * cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
1997 * rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
1998 * final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
1999 * insn-notes.def (FUNCTION_END): Remove.
2000 * jump.c (delete_related_insns): Don't worry about FUNCTION_END.
2001 (redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
2003 * ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
2004 * function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
2005 * cfglayout.c (duplicate_insn_chain): Don't worry about
2008 2006-11-27 Richard Guenther <rguenther@suse.de>
2009 Zdenek Dvorak <dvorakz@suse.cz>
2011 * target.h (struct gcc_target): Add builtin_vectorized_function
2013 * target-def.h (TARGET_VECTORIZE): Likewise.
2014 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
2015 Document new target hook.
2016 * targhooks.h (default_builtin_vectorized_function): Declare.
2017 * targhooks.c (default_builtin_vectorized_function): Define.
2018 * tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
2019 (vectorizable_call): Declare.
2020 * tree-vect-analyze.c (vect_analyze_operations): Call
2022 * tree-vect-transform.c (vectorizable_function): New static function.
2023 (build_vectorized_function_call): Likewise.
2024 (vectorizable_call): New function.
2025 (vect_transform_stmt): Handle vectorizable calls.
2027 2006-11-27 Richard Guenther <rguenther@suse.de>
2030 * builtins.c (expand_builtin_pow): Optimize non integer valued
2031 constant exponents using sqrt or cbrt if possible. Always fall back
2032 to expanding via optabs.
2034 2006-11-27 Ira Rosen <irar@il.ibm.com>
2036 PR tree-optimization/22372
2037 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
2038 the type of the base address.
2039 (vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
2040 it in the data-ref pointer creation.
2041 (vect_init_vector): Add an argument, type of the init vector. Use it in
2043 (vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
2044 (get_initial_def_for_reduction): Likewise.
2045 (vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
2047 (vectorizable_assignment, vect_permute_store_chain): Likewise.
2048 (vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
2049 correct type in stmt creation.
2050 (vect_setup_realignment): Use the correct type in stmt creation.
2051 (vect_permute_load_chain): Change type of MODIFY_EXPR to
2053 (vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
2054 of MODIFY_EXPR to void_type_node.
2055 (vectorizable_condition): Change type of MODIFY_EXPR to
2057 (vect_update_ivs_after_vectorizer): Use the correct type in stmt
2060 2006-11-27 Uros Bizjak <ubizjak@gmail.com>
2063 2006-05-08 Uros Bizjak <uros@kss-loka.si>
2064 * config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
2065 standard 80387 constants, raise the cost to prevent
2066 compress_float_constant() to generate load from memory.
2068 * config/i386/i386.md: Add new splitter pattern to split
2069 float_extended load of constant from constant pool into
2072 2006-11-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2074 * doc/install.texi: Move GMP/MPFR configure options from Fortran
2075 section to general section. Remove documentation for
2076 --with-mpfr-dir and --with-gmp-dir, add documentation for
2077 --with-mpfr-include, --with-mpfr-lib, --with-gmp-include and
2080 * builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
2082 2006-11-26 Razya Ladklesky <razya@il.ibm.com>
2084 * testsuite/gcc.dg/ipa/ipa-6.c: New.
2086 2006-11-26 Razya Ladklesky <razya@il.ibm.com>
2088 PR tree-optimization/29122
2089 * tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME
2090 for the new version. Assign NULL to DECL_RTL of the new version.
2092 2006-11-25 Uros Bizjak <ubizjak@gmail.com>
2094 * reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.
2096 2006-11-25 Steven Bosscher <steven@gcc.gnu.org>
2098 * cse.c (cse_altered): Remove.
2099 (record_jump_equiv): Make true/false argument a bool instead
2101 (cse_insn): Don't set cse_altered. Use delete_insn_and_edges
2102 where appropriate. Emit a new jump before the existing one
2103 instead of after so that delete_insn_and_edges removes the
2104 dead edges properly. Check any_condjump_p before calling
2106 (cse_basic_block): Check any_condjump_p before calling
2108 (cse_main): Don't set/check cse_altered. Remove USE_C_ALLOCA.
2110 2006-11-25 Brooks Moses <brooks.moses@codesourcery.com>
2112 * c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
2113 -ffixed-line-length-* options.
2115 2006-11-25 Uros Bizjak <ubizjak@gmail.com>
2117 * config/i386/i386.md (fpremxf4): Rename to fpremxf4_i387.
2118 (fprem1xf4): Rename to fprem1xf4_i387.
2120 (fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
2121 Rename patterns to fmod<mode>3. Use general_operand operand
2122 constraint for operands 1 and 2. Use SSE_FLOAT_MODE_P to disable
2123 patterns for SSE math.
2124 (remaindersf3, remainderdf3): Ditto.
2126 2006-11-25 Joseph Myers <joseph@codesourcery.com>
2128 * function.c (instantiate_virtual_regs_in_insn): Call force_reg
2129 inside start_sequence / end_sequence pair.
2131 2006-11-25 Steven Bosscher <steven@gcc.gnu.org>
2133 * jump.c (mark_all_labels): Work in cfglayout mode.
2134 * cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
2135 when in cfglayout mode, because there are no dead jumptables
2137 * cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
2139 (commit_edge_insertions): Do not allow insertion of instructions
2140 with control flow insns when in cfglayout mode.
2142 2006-11-25 Zdenek Dvorak <dvorakz@suse.cz>
2144 * tree-vrp.c (execute_vrp): Do not pass loops structure through
2146 * loop-unswitch.c (unswitch_loops, unswitch_single_loop,
2147 unswitch_loop): Ditto.
2148 * tree-loop-linear.c (linear_transform_loops): Ditto.
2149 * tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
2150 tree_ssa_lim): Ditto.
2151 * tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
2152 free_numbers_of_iterations_estimates): Ditto.
2153 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
2154 tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
2155 * cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
2156 remove_path, add_loop, loopify, unloop, fix_loop_placements,
2157 place_new_loop, duplicate_loop, duplicate_subloops,
2158 update_single_exit_for_duplicated_loops, copy_loops_to,
2159 duplicate_loop_to_header_edge, create_preheaders,
2160 force_single_succ_latches, loop_version, fix_loop_structure):
2162 * tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
2163 tree_unroll_loop): Ditto.
2164 * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2165 * tree-scalar-evolution.c (select_loops_exit_conditions,
2166 scev_initialize, scev_analysis): Ditto.
2167 * tree-scalar-evolution.h (scev_initialize): Ditto.
2168 * cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
2169 * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
2170 * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
2171 * modulo-sched.c (sms_schedule): Ditto.
2172 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
2173 * loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
2174 rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
2175 * ifcvt.c (if_convert): Ditto.
2176 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
2177 canonicalize_loop_induction_variables,
2178 canonicalize_induction_variables,
2179 tree_unroll_loops_completely, remove_empty_loops): Ditto.
2180 * tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
2181 tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
2182 tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2183 tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
2184 tree_ssa_loop_done): Ditto.
2185 * predict.c (predict_loops, tree_estimate_probability, estimate_loops,
2186 estimate_bb_frequencies): Ditto.
2187 * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
2188 slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
2189 * loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
2190 decide_unrolling_and_peeling, peel_loop_completely,
2191 unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
2192 peel_loop_simple, unroll_loop_stupid): Ditto.
2193 * loop-doloop.c (doloop_optimize_loops): Ditto.
2194 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
2195 * loop-invariant.c (move_loop_invariants): Ditto.
2196 * tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
2197 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
2198 tree_ssa_prefetch_arrays): Ditto.
2199 * lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
2201 * tree-vect-transform.c (vect_do_peeling_for_loop_bound,
2202 vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
2203 * cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
2204 mark_single_exit_loops, cancel_loop, cancel_loop_tree,
2205 verify_loop_structure): Ditto.
2206 * tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
2207 canonicalize_induction_variables, tree_unroll_loops_completely,
2208 tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
2209 estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
2210 tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
2211 tree_unroll_loop, linear_transform_loops): Declaration changed.
2212 * basic-block.h: Remove declaration of struct loops.
2213 * cfghooks.h (struct cfg_hooks): Change type of
2214 cfg_hook_duplicate_loop_to_header_edge.
2215 (cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
2216 * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
2217 vect_transform_loop): Declaration changed.
2218 * lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
2219 * cfgloop.h (flow_loops_dump, fix_loop_structure,
2220 mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
2221 cancel_loop_tree, create_preheaders, force_single_succ_latches,
2222 verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
2223 loopify, loop_version, remove_path, unswitch_loops,
2224 unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
2225 Declaration changed.
2227 2006-11-24 Uros Bizjak <ubizjak@gmail.com>
2229 * config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition.
2230 (X87MODEF): New mode macro.
2231 (ssemodefsuffix): New mode attribute.
2232 (truncxf<mode>2_i387_noop_unspec): New insn pattern.
2233 (sqrt_extend<mode>xf2_i387): New insn pattern.
2234 (sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
2235 insn and truncate result back to original mode using
2236 UNSPEC_TRUNC_NOOP truncation.
2237 (*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and
2238 ssemodefsuffix mode attribute.
2239 (*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387)
2240 (*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387)
2241 (*sqrtextenddfxf2_i387): Remove insn patterns.
2243 (fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
2244 truncation patterns.
2246 * reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.
2248 2006-11-24 Jakub Jelinek <jakub@redhat.com>
2251 * c-tree.h (c_maybe_initialize_eh): New prototype.
2252 * c-decl.c (finish_decl): Move EH initialization...
2253 (c_maybe_initialize_eh): ... here. New function.
2254 * c-parser.c (c_parser_omp_construct): Call c_maybe_initialize_eh
2255 if not #pragma omp atomic.
2258 * c-common.c (handle_vector_size_attribute): Disallow VECTOR_TYPE
2259 or UNION_TYPE inner types.
2261 2006-11-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
2264 * ipa-pure-const.c (check_tree): If the original tree
2265 is volatile return early and say the function is not pure
2266 nor const. Remove the volatile check for writes.
2267 (analyze_function): Print out the result of the local
2270 2006-11-24 Joseph Myers <joseph@codesourcery.com>
2272 * config/rs6000/eabispe.h (TARGET_DEFAULT): Include
2274 * config/rs6000/linuxspe.h (TARGET_DEFAULT): Likewise.
2275 * config/rs6000/rs6000.c (rs6000_override_options): Use
2276 MASK_STRICT_ALIGN for 8540 and 8548. Add MASK_STRICT_ALIGN to
2279 2006-11-24 Andreas Krebbel <krebbel1@de.ibm.com>
2281 * config/s390.c (s390_emit_compare_and_swap): New function.
2282 (s390_expand_cs_hqi, s390_expand_atomic): Call
2283 s390_emit_compare_and_swap.
2285 2006-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2287 * pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.
2289 2006-11-24 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2293 * c-common.c (conversion_warning): New.
2294 (convert_and_check): Call conversion_warning unless there is an
2296 * doc/invoke.texi (-Wconversion): Update description.
2298 2006-11-23 Daniel Berlin <dberlin@dberlin.org>
2300 * tree-ssa-alias.c (tree_pointer_compare): New function.
2301 (compact_name_tags): New function.
2302 (group_aliases): Call compact_name_tags.
2304 2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2306 * real.h (real_isinteger): Declare.
2307 * real.c (real_isinteger): Define.
2308 * builtins.c (integer_valued_real_p): Use it.
2310 2006-11-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2313 * c.opt (Wtraditional-conversion): New.
2314 (Wconversion): Update description.
2315 * c-typeck.c (convert_arguments): Warnings for prototypes causing
2316 type conversions different from what would happen in the absence
2317 of prototype are now handled by Wtraditional-conversion.
2318 * doc/invoke.texi (Wtraditional-conversion): New.
2319 (Wconversion): Update description.
2320 * doc/trouble.texi (Wconversion): Replace Wconversion by
2321 Wtraditional-conversion.
2323 2006-11-23 Andrew Pinski <pinskia@gmail.com>
2325 * predict.c (tree_estimate_probability): Check to make
2326 sure current_loops is non null before calling flow_loops_dump.
2328 2006-11-23 Bernd Schmidt <bernd.schmidt@analog.com>
2330 * var-tracking.c (emit_note_insn_var_location): Revert previous patch.
2332 2006-11-23 David Ung <davidu@mips.com>
2334 * config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
2336 (ISA_HAS_MXHC1): True if ISA supports mfhc1 and mthc1 opcodes.
2337 (ASM_SPEC): Pass along -mfp32 and -mfp64.
2338 * config/mips/mips.c (mips_split_64bit_move): Use gen_mthc1 to set
2339 high part of FP register when in 64-bit FP register mode. Similarly
2340 use gen_mfhc1 to load high part of FP register.
2341 (override_options): Allow -mgp32 and -mfp64 combination if
2342 ISA_HAS_MXHC1 (currently for O32 only).
2343 (mips_cannot_change_mode_class): If floating-point registers are
2344 bigger than word size. disallow conversion of float register from a
2345 large integer mode to a float mode smaller than the float register
2347 (mips_class_max_nregs): Handle float registers case seperately.
2348 * config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
2350 (movdi_32bit): Use !TARGET_FLOAT64 in condition pattern.
2351 (movdf_hardfloat_32bit): Similarly.
2352 (movdi_gp32_fp64): New DImode pattern for MIPS32R2 which optionally
2353 support a full 64-bit fpu.
2354 (mthc1): New pattern to generate MTHC1 instruction.
2355 (mfhc1): New pattern to generate MFHC1 instruction.
2356 * doc/invoke.texi (MIPS Options): Document the -mgp32 -mfp64
2357 option for the MIPS32R2 and mention its use under O32 ABI.
2359 2006-11-23 Bernd Schmidt <bernd.schmidt@analog.com>
2361 * var-tracking.c (emit_note_insn_var_location): Take care not to
2362 cause verify_flow_info failures.
2364 2006-11-22 Daniel Berlin <dberlin@dberlin.org>
2366 * tree-ssa-structalias.c: Remove edge weights in favor of just
2367 processing them as complex constraints.
2368 (struct constraint_graph): Remove weighted succs and preds. Rename
2369 nonweighted succs and preds.
2370 (constraint_edge): Removed.
2371 (constraint_edge_t): Ditto.
2372 (constraint_edge_pool): Ditto.
2373 (new_constraint_edge): Ditto.
2374 (constraint_edge_equal): Ditto.
2375 (constraint_edge_less): Ditto.
2376 (constraint_edge_vec_find): Ditto.
2377 (erase_self_graph_edge): Ditto.
2378 (add_graph_edge): Removed.
2379 (get_graph_weights): Ditto.
2380 (allocate_graph_weights): Ditto.
2381 (valid_weighted_graph_edge): Ditto
2382 (bitmap_other_than_zero_bit_set): Ditto.
2383 (int_add_graph_edge): Renamed to add_graph_edge.
2384 (clear_edges_for_node): Remove support for weighted edges.
2385 (merge_graph_nodes): Ditto.
2386 (valid_graph_edge): Ditto.
2387 (build_constraint_graph): Ditto.
2389 (collapse_nodes): Ditto.
2390 (process_unification_queue): Ditto.
2391 (topo_visit): Ditto.
2392 (do_ds_constraint): Ditto.
2393 (perform_var_subsitution): Ditto.
2394 (solve_graph): Ditto.
2395 (init_alias_vars): Ditto.
2396 (delete_points_to_sets): Ditto.
2397 (do_complex_constraint): Support offsetted copies here.
2399 2006-11-23 Ulrich Weigand <uweigand@de.ibm.com>
2401 * config/spu/spu_intrinsics.h (SPU_RdEventStatMask): Rename to
2403 * config/spu/spu_mfcio.h (spu_read_event_mask): Update.
2405 * config/spu/spu_mfcio.h (struct mfc_list_element): Change width
2408 2006-11-23 Ben Elliston <bje@au.ibm.com>
2410 * config/spu/spu-elf.h (LIB_SPEC): Do not link with -lc_p.
2412 2006-11-23 Zdenek Dvorak <dvorakz@suse.cz>
2414 PR tree-optimization/29921
2415 * fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
2416 signed and unsigned zero equal.
2418 2006-11-22 Peter Bergner <bergner@vnet.ibm.com>
2420 * config/rs6000/rs6000.c (get_store_dest): New.
2421 (adjacent_mem_locations): Use get_store_dest() to get
2422 the rtl of the store destination.
2424 2006-11-22 Joseph Myers <joseph@codesourcery.com>
2426 * config/rs6000/spe.md (SPE64): New mode macro.
2427 (mov_sidf_e500_subreg0): Change to mov_si<mode>_e500_subreg0. Add
2429 (mov_si<mode>_e500_subreg0_2): New.
2430 (mov_sidf_e500_subreg4): Change to mov_si<mode>_e500_subreg4. Add
2432 (mov_si<mode>_e500_subreg4_2): New.
2433 * config/rs6000/predicates.md (input_operand): Do not allow
2434 invalid E500 subregs.
2435 (rs6000_nonimmediate_operand): Check for invalid E500 subregs also
2437 * config/rs6000/rs6000.c (invalid_e500_subreg): Check for subregs
2438 involving DFmode if TARGET_E500_DOUBLE. Check for subregs
2439 involving vector modes if TARGET_SPE.
2441 2006-11-22 Kaz Kojima <kkojima@gcc.gnu.org>
2444 2006-11-12 Kaz Kojima <kkojima@gcc.gnu.org>
2445 * reorg.c (emit_delay_sequence): Copy the delay slot insn.
2447 2006-11-22 Bernd Schmidt <bernd.schmidt@analog.com>
2449 * config/bfin/predicates.md (d_register_operand, mem_p_address_operand,
2450 mem_i_address_operand): New predicates.
2451 * config/bfin/bfin.c (bfin_issue_rate): New function.
2452 (TARGET_SCHED_ISSUE_RATE): New macro.
2453 * config/bfin/bfin.md (addrtype): New attribute.
2454 (slot0, slot1, slot2, store, pregs): New cpu_units.
2455 (core): Now a define_reservation.
2456 (alu): Remove some insn types from this reservation.
2457 (dsp32, load32, loadp, loadi, store32, storep, storei, multi): New
2459 (dummy reservation): Don't trigger for mcld insns.
2460 (absence_sets): Two new absence sets to enforce slot ordering.
2461 (popsi_insn): Set addrtype.
2463 2006-11-22 Ira Rosen <irar@il.ibm.com>
2465 * doc/c-tree.texi: Document new tree codes.
2466 * doc/md.texi: Document new optabs.
2467 * tree-pretty-print.c (dump_generic_node): Handle print of new tree
2469 * optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
2470 * optabs.h (optab_index): Add new.
2471 (vec_extract_even_optab, vec_extract_odd_optab,
2472 vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
2473 * genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
2474 vec_interleave_high_optab, vec_interleave_low_optab): Initialize
2476 * expr.c (expand_expr_real_1): Add implementation for new tree codes.
2477 * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
2478 * tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
2479 along with macros for their access.
2480 * tree-data-ref.h (first_location_in_loop, data_reference): Update
2482 * tree-vect-analyze.c (toplev.h): Include.
2483 (vect_determine_vectorization_factor): Fix indentation.
2484 (vect_insert_into_interleaving_chain,
2485 vect_update_interleaving_chain, vect_equal_offsets): New functions.
2486 (vect_analyze_data_ref_dependence): Add argument for interleaving
2487 check. Check for interleaving if it's true.
2488 (vect_check_dependences): New function.
2489 (vect_analyze_data_ref_dependences): Call vect_check_dependences for
2490 every ddr. Call vect_analyze_data_ref_dependence with new argument.
2491 (vect_update_misalignment_for_peel): Update for interleaving.
2492 (vect_verify_datarefs_alignment): Check only first data-ref for
2494 (vect_enhance_data_refs_alignment): Update for interleaving. Check
2495 only first data-ref for interleaving.
2496 (vect_analyze_data_ref_access): Check interleaving, update
2498 (vect_analyze_data_refs): Call compute_data_dependences_for_loop
2499 with different parameters.
2500 * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
2501 VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
2502 * tree-inline.c (estimate_num_insns_1): Add cases for new codes.
2503 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
2504 Update step in case of interleaving.
2505 (vect_strided_store_supported, vect_permute_store_chain): New
2507 (vectorizable_store): Handle strided stores.
2508 (vect_strided_load_supported, vect_permute_load_chain,
2509 vect_transform_strided_load): New functions.
2510 (vectorizable_load): Handle strided loads.
2511 (vect_transform_stmt): Add argument. Handle strided stores. Check
2512 that vectorized stmt exists for patterns.
2513 (vect_gen_niters_for_prolog_loop): Update calculation for
2515 (vect_transform_loop): Remove stmt_vec_info for strided stores after
2516 whole chain vectorization.
2517 * config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
2518 UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
2519 (vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
2520 vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
2521 vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.
2523 2006-11-22 Steven Bosscher <steven@gcc.gnu.org>
2525 * cse.c (enum taken): Remove PATH_AROUND.
2526 (addr_affects_sp_p, invalidate_skipped_set,
2527 invalidate_skipped_block): Remove.
2528 (cse_end_of_basic_block): Remove skip_blocks and related code.
2529 (cse_main): Don't test for flag_cse_skip_blocks.
2530 Update cse_end_of_basic_block call.
2531 (cse_basic_block): Likewise. Remove PATH_AROUND case. Remove
2532 code to lengthen the path if a jump was simplified.
2534 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
2536 PR rtl-optimization/29924
2537 * loop-unroll.c (split_edge_and_insert): Handle the case insns is NULL.
2538 (unroll_loop_runtime_iterations): Assert that the argument passed to
2539 split_edge_and_insert is not NULL.
2540 * loop-doloop.c (add_test): Ditto.
2542 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
2544 * tree-loop-linear.c (linear_transform_loops): Use single_exit accessor
2546 * tree-ssa-loop-niter.c (loop_only_exit_p): Ditto.
2547 * cfgloopmanip.c (update_single_exits_after_duplication,
2548 update_single_exit_for_duplicated_loop, loop_version): Ditto.
2549 * tree-scalar-evolution.c (get_loop_exit_condition,
2550 get_exit_conditions_rec, loop_closed_phi_def,
2551 number_of_iterations_in_loop, scev_const_prop): Ditto.
2552 * tree-ssa-loop-ivopts.c (single_dom_exit): Ditto.
2553 * modulo-sched.c (generate_prolog_epilog, loop_canon_p, sms_schedule):
2555 * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
2557 * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
2558 slpeel_update_phi_nodes_for_guard1, slpeel_update_phi_nodes_for_guard2,
2559 slpeel_make_loop_iterate_ntimes,
2560 slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_can_duplicate_loop_p,
2561 slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
2563 * tree-if-conv.c (if_convertible_loop_p): Ditto.
2564 * tree-vect-analyze.c (vect_analyze_operations, vect_stmt_relevant_p,
2565 vect_analyze_loop_form): Ditto.
2566 * lambda-code.c (lambda_loopnest_to_gcc_loopnest, exit_phi_for_loop_p,
2567 can_convert_to_perfect_nest, perfect_nestify): Ditto.
2568 * tree-vect-transform.c (vect_create_epilog_for_reduction,
2569 vect_update_ivs_after_vectorizer, vect_do_peeling_for_loop_bound,
2570 vect_transform_loop): Ditto.
2571 * cfgloop.c (mark_single_exit_loops, verify_loop_structure): Ditto.
2572 (single_exit, set_single_exit): New functions.
2573 * cfgloop.h (struct loop): Rename single_exit field to single_exit_.
2574 (single_exit, set_single_exit): Declare.
2575 * doc/loop.texi: Undocument single_exit field. Document single_exit
2578 2006-11-22 Zdenek Dvorak <dvorakz@suse.cz>
2580 PR tree-optimization/29902
2581 * tree-ssa-loop-manip.c (can_unroll_loop_p): Return false if
2582 any involved ssa name appears in abnormal phi node.
2584 2006-11-21 Bob Wilson <bob.wilson@acm.org>
2586 * config/xtensa/xtensa.c (xtensa_char_to_class): Delete.
2587 (xtensa_const_ok_for_letter_p): Delete.
2588 (xtensa_extra_constraint): Delete.
2589 (override_options): Delete xtensa_char_to_class initialization.
2590 * config/xtensa/xtensa.h (REG_CLASS_FROM_LETTER): Delete.
2591 (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
2592 (EXTRA_CONSTRAINT): Delete.
2593 * config/xtensa/xtensa.md: Include constraints.md.
2594 (call_internal): Combine alternatives.
2595 (call_value_internal): Likewise, and remove invalid constraints.
2596 * config/xtensa/constraints.md: New file.
2597 * config/xtensa/xtensa-protos.h (xtensa_const_ok_for_letter_p): Delete.
2598 (xtensa_extra_constraint): Delete.
2599 * doc/md.texi (Machine Constraints): Refer to constraints.md for
2602 2006-11-21 Janis Johnson <janis187@us.ibm.com>
2604 * config/dfp-bits.c (DFP_TO_INT): Remove code to saturate result
2605 of conversion that doesn't fit.
2607 * config/dfp-bit.h (CONTEXT_TRAPS, CONTEXT_ERRORS, DFP_RAISE): Delete.
2608 * config/dfp-bit.c (dfp_unary_op, dfp_binary_op, dfp_compare_op,
2609 DFP_TO_DFP, INT_TO_DFP, BFP_TO_DFP): Remove calls to DFP_RAISE.
2611 * config/dfp-bit.c (dfp_binary_func): Fix typedef.
2613 2006-11-21 Douglas Gregor <doug.gregor@gmail.com>
2615 * c-common.h (enum rid): Add RID_STATIC_ASSERT.
2617 2006-11-21 Richard Guenther <rguenther@suse.de>
2619 * tree-vectorizer.h (NUM_PATTERNS): Increase.
2620 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
2621 vect_recog_pow_pattern.
2622 (vect_recog_pow_pattern): New function.
2624 2006-11-21 Bernd Schmidt <bernd.schmidt@analog.com>
2626 * config/bfin/bfin.opt (mstack-check-l1): New.
2627 * doc/invoke.texi (Blackfin Options): Document it.
2628 * config/bfin/bfin.c (bfin_expand_prologue): Generate code to use
2629 stack bounds in L1 memory if the new option is enabled.
2630 (override_options): Don't allow combinations of -fstack-limit and
2632 (add_to_reg): Renamed from add_to_sp. All callers changed. Lose some
2635 * config/bfin/bfin.c (hard_regno_mode_ok): Only allow first 31
2637 (bfin_register_move_cost): Bump costs if trying to move plain
2638 integer values through accumulators.
2640 2006-11-21 Ben Elliston <bje@au.ibm.com>
2642 * config/spu/spu.c (spu_expand_vector_init): Initialise x.
2644 2006-11-20 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2645 Russell Olsen <Russell_Olsen@playstation.sony.com>
2646 Dmitri Makarov <Dmitri_Makarov@playstation.sony.com>
2647 Yukishige Shibata <shibata@rd.scei.sony.co.jp>
2648 Nobuhisa Fujinami <fnami@rd.scei.sony.co.jp>
2649 Takeaki Fukuoka <fukuoka@rd.scei.sony.co.jp>
2650 Andrew Pinski <Andrew_Pinski@playstation.sony.com>
2652 * config.gcc: Add target for SPU.
2653 * config/spu/constraints.md: New file.
2654 * config/spu/crt0.c: New file.
2655 * config/spu/crtend.c: New file.
2656 * config/spu/crti.asm: New file.
2657 * config/spu/crtn.asm: New file.
2658 * config/spu/float_unsdidf.c: New file.
2659 * config/spu/float_unssidf.c: New file.
2660 * config/spu/predicates.md: New file.
2661 * config/spu/spu-builtins.def: New file.
2662 * config/spu/spu-builtins.h: New file.
2663 * config/spu/spu-builtins.md: New file.
2664 * config/spu/spu-c.c: New file.
2665 * config/spu/spu-elf.h: New file.
2666 * config/spu/spu-modes.def: New file.
2667 * config/spu/spu-protos.h: New file.
2668 * config/spu/spu.c: New file.
2669 * config/spu/spu.h: New file.
2670 * config/spu/spu.md: New file.
2671 * config/spu/spu.opt: New file.
2672 * config/spu/spu_internals.h: New file.
2673 * config/spu/spu_intrinsics.h: New file.
2674 * config/spu/spu_mfcio.h: New file.
2675 * config/spu/t-spu-elf: New file.
2676 * config/spu/vec_types.h: New file.
2677 * config/spu/vmx2spu.h: New file.
2678 * doc/contrib.texi: Document SPU contributor.
2679 * doc/extend.texi: Document SPU extensions.
2680 * doc/invoke.texi: Document SPU options.
2681 * doc/md.texi: Document SPU constraints.
2683 2006-11-21 Zdenek Dvorak <dvorakz@suse.cz>
2685 * cfgloopmanip.c (add_loop, duplicate_loop): Do not set level
2687 * cfgloop.c (flow_loop_level_compute, flow_loops_level_compute):
2689 (flow_loop_dump): Do not dump loop level.
2690 (flow_loops_find): Do not call flow_loops_level_compute.
2691 * cfgloop.h (struct loop): Remove level field.
2693 2006-11-21 Zdenek Dvorak <dvorakz@suse.cz>
2695 * tree-ssa-loop-im.c (schedule_sm, determine_lsm_ref,
2696 hoist_memory_references, loop_suitable_for_sm, determine_lsm_loop):
2697 Use vector of edges instead of array.
2698 * tree-ssa-loop-niter.c (find_loop_niter, find_loop_niter_by_eval,
2699 estimate_numbers_of_iterations_loop): Ditto.
2700 * predict.c (predict_loops): Ditto.
2701 * loop-unroll.c (analyze_insns_in_loop): Ditto.
2702 * tree-ssa-threadupdate.c: Remove declaration of heap allocation for
2704 * basic-block.h: Declare heap allocation for edge vectors.
2705 * tree-outof-ssa.c: Ditto.
2706 * cfgloop.c (get_loop_exit_edges): Return vector of edges.
2707 * cfgloop.h (get_loop_exit_edges): Declaration changed.
2709 2006-11-20 Zack Weinberg <zackw@panix.com>
2711 * gengtype.c (process_gc_options): Remove unnecessary forward decl.
2712 Add another out parameter, "skip".
2713 (set_gc_used_type): Adjust calls to process_gc_options. If a field
2714 is tagged "skip", do not mark its type used.
2716 2006-11-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
2719 * tree-sra.c (single_scalar_field_in_record_p): New function.
2720 (decide_block_copy): Use it.
2722 2006-11-20 David Daney <ddaney@avtrex.com>
2724 * config/mips/linux-unwind.h (mips_fallback_frame_state): Adjust
2725 PC to point to following instruction.
2727 2006-11-20 Anatoly Sokolov <aesok@post.ru>
2731 * config/avr/avr.h (OBJECT_FORMAT_ELF): Define.
2733 * config/avr/avr.h (DWARF2_DEBUGGING_INFO): Define.
2735 2006-11-20 J"orn Rennecke <joern.rennecke@st.com>
2737 * config.gcc (sh*-superh-elf): Add t-superh to tmake_file.
2738 Add sh/superh.h to tm_file.
2740 2006-11-20 Carlos O'Donell <carlos@codesourcery.com>
2741 Mark Mitchell <mark@codesourcery.com>
2743 * cppdefault.c: Define cpp_PREFIX, cpp_PREFIX_len, and
2745 (cpp_relocated): New function.
2746 * cppdefault.h: Declare cpp_PREFIX, cpp_PREFIX_len, gcc_exec_prefix
2748 * Makefile.in (PREPROCESSOR_DEFINES): Add -DPREFIX option.
2749 * c-incpath.c (add_standard_paths): Call cpp_relocated. If relocated,
2750 replace configured prefix with gcc_exec_prefix.
2752 2006-11-20 Bernd Schmidt <bernd.schmidt@analog.com>
2754 * config/bfin/bfin.h (LEGITIMATE_CONSTANT_P): Call
2755 bfin_legitimate_constant_p.
2756 * config/bfin/bfin.md (movsi expander): Check return value of
2758 * config/bfin/bfin-protos.h (bfin_legitimate_constant_p): Declare.
2759 (expand_move): Adjust prototype.
2760 * config/bfin/bfin.c (expand_move): Now returns bool. Handle
2761 invalid constants specially.
2762 (bfin_cannot_force_const_mem, bfin_legitimate_constant_p): New
2764 (TARGET_CANNOT_FORCE_CONST_MEM): New macro.
2766 * config/bfin/bfin.md (call_symbol, call_value_symbol, sibcall_symbol,
2767 sibcall_value_symbol): Allow these patterns if
2768 TARGET_LEAF_ID_SHARED_LIBRARY.
2769 * config/bfin/bfin.c (bfin_expand_call): Allow them here as well.
2770 (override_options): Turn on id shared library flags if -msep-data,
2771 but disallow the combination of these options on the command line.
2772 * config/bfin/bfin.h (TARGET_LEAF_ID_SHARED_LIBRARY, MASK_SEP_DATA
2773 MASK_LEAF_ID_SHARED_LIBRARY, TARGET_SEP_DATA): New macros.
2774 (DRIVER_SELF_SPECS): -mleaf-id-shared-library implies
2775 -mid-shared-library.
2776 (TARGET_SWITCHES): Add -mleaf-id-shared-library and -msep-data.
2777 * doc/invoke.texi (Blackfin Options): Document new switches.
2779 * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Handle some
2780 edge cases with local functions and TARGET_ID_SHARED_LIBRARY.
2782 * tree-ssa-loop-ivopts.c (get_address_cost): Do not artificially
2783 inflate costs for addresses with an out-of-bounds address.
2785 2006-11-19 Andrew Pinski <pinskia@gmail.com>
2788 * fwprop.c (loops): Remove.
2789 (forward_propagate_into): Use current_loops instead of
2791 (fwprop_init): Call loop_optimizer_init instead of
2793 (fwprop_done): Call loop_optimizer_finalize instead of
2795 (fwprop): Use current_loops instead of loops.
2797 2006-11-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
2800 * c-opts.c (c_common_handle_option): Enable -Wwrite-strings if -Wall.
2802 2006-11-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2805 * pa.c (emit_move_sequence): Don't split constants with PLUS for modes
2806 larger than BITS_PER_WORD.
2808 2006-11-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2812 * stor-layout.c (set_sizetype): Limit precision of *bitsizetypes types
2813 to MAX_FIXED_MODE_SIZE.
2815 2006-11-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2817 * builtins.c (integer_valued_real_p): Handle fmin/fmax.
2818 (fold_builtin_fmin_fmax): New.
2819 (fold_builtin_1): Use it.
2821 * fold-const.c (fold_strip_sign_ops): Handle copysign.
2823 2006-11-18 Richard Guenther <rguenther@suse.de>
2825 * config/i386/i386.c (ix86_builtins): New array for ix86
2826 builtin function decls.
2827 (def_builtin): New function.
2828 (def_builtin_const): Likewise.
2829 (ix86_init_mmx_sse_builtins): Mark sqrt and cvt builtins const.
2831 2006-11-18 Vladimir Makarov <vmakarov@redhat.com>
2833 * doc/invoke.texi (core2): Add item.
2835 * config/i386/i386.h (TARGET_CORE2, TARGET_CPU_DEFAULT_core2): New
2837 (TARGET_CPU_CPP_BUILTINS): Add code for core2.
2838 (TARGET_CPU_DEFAULT_generic): Change value.
2839 (TARGET_CPU_DEFAULT_NAMES): Add core2.
2840 (processor_type): Add new constant PROCESSOR_CORE2.
2842 * config/i386/i386.md (cpu): Add core2.
2844 * config/i386/i386.c (core2_cost): New initialized variable.
2845 (m_CORE2): New macro.
2846 (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
2847 x86_deep_branch, x86_partial_reg_stall, x86_use_simode_fiop,
2848 x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
2849 x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
2850 x86_partial_reg_dependency, x86_memory_mismatch_stall,
2851 x86_accumulate_outgoing_args, x86_prologue_using_move,
2852 x86_epilogue_using_move, x86_arch_always_fancy_math_387,
2853 x86_sse_partial_reg_dependency, x86_rep_movl_optimal,
2854 x86_use_incdec, x86_four_jump_limit, x86_schedule,
2855 x86_pad_returns): Add m_CORE2.
2856 (override_options): Add entries for Core2.
2857 (ix86_issue_rate): Add case for Core2.
2859 2006-11-18 Aldy Hernandez <aldyh@redhat.com>
2861 * doc/invoke.texi: Fix mno-isel typo.
2863 2006-11-18 Joseph Myers <joseph@codesourcery.com>
2865 * config/rs6000/spe.md (movv4hi_internal): Add alternative for
2866 easy vector constant loads.
2868 2006-11-18 Joseph Myers <joseph@codesourcery.com>
2870 * config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Define.
2871 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2872 __NO_LWSYNC__ if TARGET_NO_LWSYNC.
2873 * config/rs6000/sync.md (lwsync): Emit plain sync if
2876 2006-11-17 DJ Delorie <dj@redhat.com>
2878 * reload1.c (reloads_unique_chain): New.
2879 (reloads_conflict): Call it.
2881 2006-11-17 Bob Wilson <bob.wilson@acm.org>
2883 * config/xtensa/predicates.md (addsubx_operand): New.
2884 * config/xtensa/xtensa.c (xtensa_emit_branch): New.
2885 (xtensa_emit_bit_branch): New.
2886 (xtensa_emit_movcc): New.
2887 * config/xtensa/xtensa.md (any_minmax): New code macro.
2888 (minmax): New code attribute.
2889 (any_cond, any_scc, any_scc_sf): New code macros.
2890 (*addx2, *addx4, *addx8): Delete.
2892 (*subx2, *subx4, *subx8): Delete.
2894 (sminsi3, uminsi3, smaxsi3, umaxsi3): Use any_minmax macro.
2895 (beq, bne, bgt, bge, blt, ble, bgtu, bgeu, bltu, bleu): Use any_cond.
2896 (*btrue, *bfalse, *ubtrue, *ubfalse): Use xtensa_emit_branch.
2897 (*bittrue, *bitfalse): Use xtensa_emit_bit_branch.
2898 (seq, sne, sgt, sge, slt, sle): Use any_scc macro.
2899 (movsicc_internal0, movsicc_internal1): Use xtensa_emit_movcc.
2900 (movsfcc_internal0, movsfcc_internal1): Likewise.
2901 (seq_sf, slt_sf, sle_sf): Use any_scc_sf macro.
2902 * config/xtensa/xtensa-protos.h: (xtensa_emit_branch): New.
2903 (xtensa_emit_bit_branch): New.
2904 (xtensa_emit_movcc): New.
2905 (function_arg_boundary): Add missing prototype.
2907 2006-11-17 Bob Wilson <bob.wilson@acm.org>
2909 * config/xtensa/xtensa.md (tstsi): Delete
2911 2006-11-17 Bob Wilson <bob.wilson@acm.org>
2913 * config/xtensa/xtensa.md (entry): Do not emit .frame directive.
2915 2006-11-17 Bob Wilson <bob.wilson@acm.org>
2917 * config/xtensa/elf.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2919 2006-11-17 Bob Wilson <bob.wilson@acm.org>
2921 * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a0 on exit.
2923 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
2925 * tree-vrp.c (execute_vrp): Do not update current_loops.
2926 * loop-unswitch.c (unswitch_loop): Do not use loop_split_edge_with.
2927 * doc/loop.texi: Remove documentation for cancelled functions.
2928 * tree-ssa-loop-im.c (loop_commit_inserts): Removed.
2929 (move_computations, determine_lsm): Use bsi_commit_edge_inserts
2931 * cfgloopmanip.c (remove_bbs): Do not update loops explicitly.
2932 (remove_path): Ensure that in delete_basic_blocks, the loops
2933 are still allocated.
2934 (add_loop): Work on valid loop structures.
2935 (loopify): Modify call of add_loop.
2936 (mfb_update_loops): Removed.
2937 (create_preheader): Do not update loops explicitly.
2938 (force_single_succ_latches, loop_version): Do not use
2939 loop_split_edge_with.
2940 (loop_split_edge_with): Removed.
2941 * tree-ssa-loop-manip.c (create_iv, determine_exit_conditions):
2942 Do not use bsi_insert_on_edge_immediate_loop.
2943 (split_loop_exit_edge, tree_unroll_loop): Do not use
2944 loop_split_edge_with.
2945 (bsi_insert_on_edge_immediate_loop): Removed.
2946 * tree-ssa-loop-ch.c (copy_loop_headers): Use current_loops. Do not
2947 use loop_split_edge_with.
2948 * cfghooks.c: Include cfgloop.h.
2949 (verify_flow_info): Verify that loop_father is filled iff current_loops
2951 (redirect_edge_and_branch_force, split_block, delete_basic_block,
2952 split_edge, merge_blocks, make_forwarder_block, duplicate_block):
2954 * cfgloopanal.c (mark_irreducible_loops): Work if the function contains
2956 * modulo-sched.c (generate_prolog_epilog, canon_loop): Do not use
2957 loop_split_edge_with.
2958 (sms_schedule): Use current_loops.
2959 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Use current_loops.
2960 * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Set
2962 (rtl_loop_init, rtl_loop_done): Do not set current_loops.
2963 * tree-ssa-sink.c (execute_sink_code): Use current_loops.
2964 * ifcvt.c (if_convert): Ditto.
2965 * predict.c (predict_loops): Do not clear current_loops.
2966 (tree_estimate_probability): Use current_loops.
2967 (propagate_freq): Receive head of the region to propagate instead of
2969 (estimate_loops_at_level): Do not use shared to_visit bitmap.
2970 (estimate_loops): New function. Handle case current_loops == NULL.
2971 (estimate_bb_frequencies): Do not allocate tovisit. Use
2973 * tree-ssa-loop.c (current_loops): Removed.
2974 (tree_loop_optimizer_init): Do not return loops.
2975 (tree_ssa_loop_init, tree_ssa_loop_done): Do not set current_loops.
2976 * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard1,
2977 slpeel_update_phi_nodes_for_guard2, slpeel_tree_peel_loop_to_edge):
2978 Do not update loops explicitly.
2979 * function.h (struct function): Add x_current_loops field.
2980 (current_loops): New macro.
2981 * tree-if-conv.c (combine_blocks): Do not update loops explicitly.
2982 * loop-unroll.c (split_edge_and_insert): New function.
2983 (unroll_loop_runtime_iterations, analyze_insns_in_loop): Do not
2984 use loop_split_edge_with.
2985 * loop-doloop.c (add_test, doloop_modify): Ditto.
2986 * tree-ssa-pre.c (init_pre, fini_pre): Do not set current_loops.
2987 * cfglayout.c (copy_bbs): Do not update loops explicitly.
2988 * lambda-code.c (perfect_nestify): Do not use loop_split_edge_with.
2989 * tree-vect-transform.c (vect_transform_loop): Do not update loops
2991 * cfgloop.c (flow_loops_cfg_dump): Do not dump dfs_order and rc_order.
2992 (flow_loops_free): Do not free dfs_order and rc_order.
2993 (flow_loops_find): Do not set dfs_order and rc_order in loops
2994 structure. Do not call loops and flow info verification.
2995 (add_bb_to_loop, remove_bb_from_loops): Check whether the block
2996 already belongs to some loop.
2997 * cfgloop.h (struct loops): Remove struct cfg.
2998 (current_loops, loop_split_edge_with): Declaration removed.
2999 (loop_optimizer_init, loop_optimizer_finalize): Declaration changed.
3000 * tree-flow.h (loop_commit_inserts, bsi_insert_on_edge_immediate_loop):
3001 Declaration removed.
3002 * Makefile.in (cfghooks.o): Add CFGLOOP_H dependency.
3003 * basic-block.h (split_edge_and_insert): Declare.
3004 * tree-cfg.c (remove_bb): Do not update loops explicitly.
3006 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
3008 PR tree-optimization/29801
3009 * tree-ssa-ccp.c (get_symbol_constant_value): New function.
3010 (get_default_value): Use get_symbol_constant_value.
3011 (set_lattice_value): ICE when the value of the constant is
3013 (visit_assignment): Ignore VDEFs of read-only variables.
3015 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
3017 * tree-vect-transform.c (vect_create_epilog_for_reduction): Fix
3019 (vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
3020 vect_gen_niters_for_prolog_loop): Fold the emited expressions.
3022 2006-11-17 Zdenek Dvorak <dvorakz@suse.cz>
3024 * tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
3025 select subvars of var.
3027 2006-11-17 Jakub Jelinek <jakub@redhat.com>
3030 * tree-ssa-forwprop.c (simplify_switch_expr): Don't
3031 optimize if DEF doesn't have integral type.
3033 2006-11-16 Mike Stump <mrs@apple.com>
3035 * config/darwin.h (LINK_COMMAND_SPEC): Don't do dwarf stuff on
3036 pre-darwin9 system, unless the user asks for it directly.
3037 (PREFERRED_DEBUGGING_TYPE): Likewise.
3038 * config/i386/darwin.h (PREFERRED_DEBUGGING_TYPE): Likewise.
3039 * config.gcc: Add suppport for darwin9.h.
3040 * config/darwin9.h: Add.
3041 * doc/install.texi (Specific): Clarify darwin documentation.
3043 2006-11-16 Richard Earnshaw <rearnsha@arm.com>
3045 * arm.h (CONSTANT_ALIGNMENT): Don't over-align strings when
3046 optimizing for size.
3048 2006-11-16 Mike Stump <mrs@apple.com>
3050 * Makefile.in (targhooks.o): Add $(OPTABS_H).
3052 2006-11-16 Dirk Mueller <dmueller@suse.de>
3054 * tree-vrp.c (get_value_range): Use XCNEW instead
3056 (insert_range_assertions): Use XCNEWVEC instead
3057 of XNEWVEC and memset.
3058 (vrp_initialize): Same.
3059 (vrp_finalize): Same.
3060 * tree-ssa-ccp.c (ccp_initialize): Same.
3061 * predict.c (tree_bb_level_predictions): Same.
3062 * calls.c (expand_call): Same.
3063 * tree-ssa-copy.c (init_copy_prop): Same.
3064 (fini_copy_prop): Same.
3065 * tree-ssa-alias.c (get_ptr_info): Use GGC_CNEW instead
3066 of GGC_NEW and memset.
3068 2006-11-16 Eric Botcazou <ebotcazou@adacore.com>
3071 * gimplify.c (gimplify_expr): Only force a load for references to
3072 non-BLKmode volatile values.
3073 * doc/implement-c.texi (Qualifiers implementation): Document the
3074 interpretation of what a volatile access is.
3075 * doc/extend.texi (C++ Extensions): Rework same documentation.
3077 2006-11-16 Joseph Myers <joseph@codesourcery.com>
3079 * config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
3082 2006-11-16 Richard Earnshaw <rearnsha@arm.com>
3084 * arm.md (abssi2): Allow Thumb as well. Use an SImode scratch for
3086 (arm_neg_abssi2): Renamed from neg_abssi2.
3087 (thumb_abssi2, thumb_neg_abssi2): New patterns with splitters.
3089 2006-11-16 Uros Bizjak <ubizjak@gmail.com>
3091 * config/i386/i386.c (ix86_function_sseregparm): Fix comment:
3092 number of arguments passed to local functions in SSE registers is 3.
3094 * doc/invoke.texi (Function Attributes) [sseregparm]: Correct
3095 number of arguments passed in SSE registers to 3.
3097 2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
3100 * cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
3102 (get_last_bb_insn): ... new global function.
3103 (basic_block.h): Declare it.
3104 * haifa-sched.c (create_recovery_block): Use it.
3106 2006-11-15 H.J. Lu <hongjiu.lu@intel.com>
3109 * real.c (mpfr_from_real): Call mpfr_set_str before gcc_assert.
3111 2006-11-15 Paul Brook <paul@codesourcery.com>
3113 * config/arm/unwind-arm.c (_Unwind_GetDataRelBase,
3114 _Unwind_GetTextRelBase): Move from here ...
3115 * config/arm/pr-support.c (_Unwind_GetDataRelBase,
3116 _Unwind_GetTextRelBase): ... To here.
3118 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
3120 * tree-ssa-loop-ivopts.c (get_address_cost): Make sure memory
3121 addresses we generate for testing are aligned.
3123 2006-11-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
3126 * fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
3127 to what is the const decl is a place holder for.
3129 2006-11-15 Uros Bizjak <ubizjak@gmail.com>
3131 * config/i386/i386.opt: New target option -mx87regparm.
3133 * config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno
3134 and float_in_x87 variables. mmx_words, sse_words: Remove.
3135 (X87_REGPARM_MAX): Define.
3137 * config/i386/i386.c (override_options): Error out for
3138 -mx87regparm but no 80387 support.
3139 (ix86_attribute_table): Add x87regparm.
3140 (ix86_handle_cconv_attribute): Update comments for x87regparm.
3141 (ix86_comp_type_attributes): Check for mismatched x87regparm types.
3142 (ix86_function_x87regparm): New function.
3143 (ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
3145 (init_cumulative_args): Initialize x87_nregs and float_in_x87
3147 (function_arg_advance): Process x87_nregs and x87_regno when
3148 floating point argument is to be passed in 80387 register.
3149 (function_arg): Pass XFmode arguments in 80387 registers for local
3150 functions. Pass SFmode and DFmode arguments to local functions
3151 in 80387 registers when flag_unsafe_math_optimizations is set.
3153 * reg-stack.c (convert_regs_entry): Disable NaN load for
3154 stack registers that are used for argument passing.
3156 * doc/extend.texi: Document x87regparm function attribute.
3157 * doc/invoke.texi: Document -mx87regparm.
3159 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
3161 * tree-flow.h (multiplier_allowed_in_address_p): Adjust prototype.
3162 * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): New
3163 arg MODE; all callers changed. Use it to determine validity per
3164 machine mode instead of using Pmode for all memory references.
3165 (get_address_cost): Likewise add and use new arg MEM_MODE.
3167 2006-11-15 Rask Ingemann Lambertsen <rask@sygehus.dk>
3168 J"orn Rennecke <joern.rennecke@st.com>
3170 * combine.c (likely_spilled_retval_1): Fix masking operation.
3171 (likely_spilled_retval_p): Use proper pattern for call to
3172 likely_spilled_retval_1.
3174 2006-11-15 Bernd Schmidt <bernd.schmidt@analog.com>
3176 * tree-ssa-loop-ivopts.c (determine_iv_costs): Fix formatting.
3178 * config/bfin/bfin.c (legitimize_pic_address): Lose dead code
3179 that tests for CONSTANT_POOL_ADDRESS_P.
3181 2006-11-15 Jakub Jelinek <jakub@redhat.com>
3183 PR tree-optimization/29581
3184 * lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
3185 REPLACEMENTS, FIRSTBSI arguments. If initial condition or
3186 type is different between Y and USE, create a temporary
3187 variable, initialize it at the beginning of the body bb
3188 and use it as replacement instead of Y.
3190 2006-11-15 Paolo Bonzini <bonzini@gnu.org>
3193 * gimplify.c (fold_indirect_ref_rhs): Use
3194 STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.
3196 2006-11-14 Richard Earnshaw <rearnsha@arm.com>
3198 * expmed.c (emit_store_flag_1): New function.
3199 (emit_store_flag): Call it. If we can't find a suitable scc insn,
3201 * expr.c (do_store_flag): If we can't find a scc insn, try cstore.
3202 Use do_compare_rtx_and_jump.
3203 * arm.h (BRANCH_COST): Increase to 2 on Thumb.
3204 * arm.md (cstoresi4): New define_expand.
3205 (cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
3206 (cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
3207 (cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.
3209 2006-11-14 Caroline Tice <ctice@apple.com>
3211 * dwarf2out.c (debug_pubtypes_section): New static global variable.
3212 (pubname_entry): Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for
3214 (pubname_table): Redefine as a vector.
3215 (pubtype_table): New static global variable, defined as a vector.
3216 (pubname_table_allocated): Remove static global variable.
3217 (pubname_table_in_use): Remove static global variable.
3218 (PUBNAME_TABLE_INCREMENT): Remove constant.
3219 (size_of_pubnames): Add parameter to deal with either pubnames or
3220 pubtypes, and change code to deal with table being a vector.
3221 (add_pubname): Change to deal with table being a vector.
3222 (add_pubtype): New function.
3223 (output_pubnames): Add parameter to deal with either pubnames or
3224 pubtypes, and change code to deal with table being a vector.
3225 (gen_array_type_die): Add call to add_pubtype.
3226 (gen_enumeration_type_die): Add call to add_pubtype.
3227 (gen_struct_or_union_type_die): Add call to add_pubtype.
3228 (gen_subroutine_type_die): Add call to add_pubtype.
3229 (gen_typedef_die): Add call to add_pubtype.
3230 (dwarf2out_init): Add code to initialize pubname_table and
3231 pubtype_table vectors; also initialize debug_pubtypes_section.
3232 (prune_unused_types): Change to deal with pubnames being a vector.
3233 (dwarf2out_finish): Change to deal with pubnames being a vector; add
3234 pubnames table to call to output_pubnames; Add code to output pubtypes
3235 table if DEBUG_PUBTYPES_SECTION is defined.
3236 * config/darwin.c (darwin_file_start): Add DEBUG_PUBTYPES_SECTION to
3238 * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable.
3240 2006-11-14 Joseph Myers <joseph@codesourcery.com>
3242 * config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
3243 iwmmxt_nregs if TARGET_IWMMXT_ABI.
3244 * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
3245 movv2si_internal): Support moves between core registers.
3247 2006-11-14 Eric Christopher <echristo@apple.com>
3249 * configure: Regenerate with autoconf 2.59.
3251 2006-11-14 Daniel Berlin <dberlin@dberlin.org>
3253 Fix PR tree-optimization/27755
3255 * tree-ssa-pre.c: Update comments.
3256 (bb_bitmap_sets): Add pa_in and deferred member.
3257 (BB_DEFERRED): New macro.
3258 (maximal_set): New variable.
3259 (pre_stats): Add pa_insert member.
3260 (bitmap_set_and): Short circuit orig == dest.
3261 (bitmap_set_subtract_values): New function.
3262 (bitmap_set_contains_expr): Ditto.
3263 (translate_vuses_through_block): Add phiblock argument.
3264 (dependent_clean): New function.
3265 (compute_antic_aux): Update for maximal_set changes.
3266 (compute_partial_antic_aux): New function.
3267 (compute_antic): Handle partial anticipation.
3268 (do_partial_partial_insertion): New function.
3269 (insert_aux): Handle partial anticipation.
3270 (add_to_sets): Add to maximal set.
3271 (compute_avail): Ditto.
3272 (init_pre): Initialize maximal_set.
3273 (execute_pre): Do partial anticipation if -O3+.
3275 2006-11-14 Paolo Bonzini <bonzini@gnu.org>
3277 PR rtl-optimization/29798
3279 * fwprop.c (use_killed_between): Check that DEF_INSN dominates
3280 TARGET_INSN before any other check.
3281 (fwprop_init): Always calculate dominators.
3282 (fwprop_done): Always free them.
3284 2006-11-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3286 * fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
3289 2006-11-13 DJ Delorie <dj@redhat.com>
3291 * config/m32c/m32c.c (m32c_prepare_shift): Use a separate
3292 temporary for intermediates.
3294 2006-11-13 Kaz Kojima <kkojima@gcc.gnu.org>
3296 * config/sh/sh.c (expand_cbranchdi4): Initialize skip_label.
3297 (sh_optimize_target_register_callee_saved): #if 0 the code
3298 using NOTE_INSN_LOOP_{BEG,END}.
3300 2006-11-13 Roger Sayle <roger@eyesopen.com>
3302 * fold-const.c (optimize_bit_field_compare): Recursively call
3303 fold when simplifying non-constant comparisons between bit-fields.
3305 2006-11-13 Jakub Jelinek <jakub@redhat.com>
3307 * configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL
3309 * configure: Rebuilt.
3311 2006-11-13 Andrew Pinski <andrew_pinski@playstation.sony.com>
3313 * config/rs6000/cell.md: New file.
3314 * config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
3316 (ppccell_cost): New cost matrix.
3317 (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
3318 (rs6000_override_options): Set rs6000_always_hint to false
3319 for cell. Also align functions/lables/loops to 8byte
3320 for the Cell. Use PROCESSOR_CELL.
3321 (rs6000_emit_epilogue): Rename using_mfcr_multiple to
3322 using_mtcr_multiple.
3323 (rs6000_variable_issue): If the insn is a nonpipelined instruction
3324 on the Cell, return 0.
3325 (rs6000_adjust_cost): Add Cell cost adjustments.
3326 (is_microcoded_insn): Return true for Cell microcoded
3328 (is_nonpipeline_insn): New function.
3329 (rs6000_issue_rate): Add PROCESSOR_CELL.
3330 (rs6000_use_sched_lookahead): If Cell, then we should look ahead 8
3332 (rs6000_use_sched_lookahead_guard): New function.
3333 (rs6000_sched_reorder): Reorder the ready list, if the second
3334 to last ready insn is a nonepipeline insn on the Cell.
3335 * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_CELL.
3336 (ASM_CPU_SPEC): Add Cell.
3337 * config/rs6000/rs6000.md (cpu): Add Cell.
3338 (cell_micro): New Attr.
3341 2006-11-13 Jakub Jelinek <jakub@redhat.com>
3343 * configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715
3345 * configure: Rebuilt.
3347 2006-11-13 Richard Guenther <rguenther@suse.de>
3349 * config/i386/i386.c (ix86_expand_lround): Handle expand_simple_binop
3351 (ix86_expand_lfloorceil): Likewise.
3352 (ix86_expand_rint): Likewise.
3353 (ix86_expand_floorceildf_32): Likewise.
3354 (ix86_expand_floorceil): Likewise.
3355 (ix86_expand_rounddf_32): Likewise.
3356 (ix86_expand_truncdf_32): Likewise.
3357 (ix86_expand_round): Likewise.
3359 2006-11-13 Carlos O'Donell <carlos@codesourcery.com>
3360 Mark Mitchell <mark@codesourcery.com>
3362 * gcc.c: Organize search path variables into $prefix relative,
3363 and well-known native. Add comments.
3364 (add_sysrooted_prefix): Add comment.
3365 (process_command): If !gcc_exec_prefix add $prefix based paths.
3366 If *cross_compile == '0', add native well-known paths.
3367 Assert tooldir_base_prefix is always relative.
3368 (main): If print_search_dirs, and if gcc_exec_prefix is set,
3369 use this value for 'install:' path.
3370 * Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.
3372 2006-11-13 H.J. Lu <hongjiu.lu@intel.com>
3374 * config/i386/i386.c: Fix a typo in comment.
3376 2006-11-13 Michael Matz <matz@suse.de>
3378 * genemit.c (gen_expand): Allocate enough memory.
3380 2006-11-13 Joseph Myers <joseph@codesourcery.com>
3382 * config/arm/bpapi.h (TARGET_BPABI_CPP_BUILTINS): Define
3383 __GXX_TYPEINFO_EQUALITY_INLINE but not
3384 __GXX_MERGED_TYPEINFO_NAMES.
3385 * config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Define
3386 __GXX_MERGED_TYPEINFO_NAMES.
3387 * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define
3388 __GXX_TYPEINFO_EQUALITY_INLINE.
3390 2006-11-13 H.J. Lu <hongjiu.lu@intel.com>
3391 Zdenek Dvorak <dvorakz@suse.cz>
3393 PR tree-optimization/29680
3394 * tree-ssa-operands.c (access_can_touch_variable): Revert fix for
3397 2006-11-12 Jason Merrill <jason@redhat.com>
3398 Andrew Pinski <pinskia@physics.uc.edu>
3401 * gimplify.c (gimplify_init_constructor): Don't reduce TREE_CONSTANT
3403 * tree-cfg.c (verify_expr): Don't look into TREE_CONSTANT
3405 * expmed.c (make_tree): Handle CONST, SYMBOL_REF.
3406 * tree.c (build_vector): Handle non-_CST elements.
3408 2006-11-12 Kaz Kojima <kkojima@gcc.gnu.org>
3410 * genemit.c (gen_insn): Call gen_exp with a non-null used
3411 when handling multiple insns.
3412 (gen_expand): Likewise.
3413 * reorg.c (emit_delay_sequence): Copy the delay slot insn.
3414 * config/sh/sh.md (ashrsi2_31+1): Copy operands[0].
3415 (movsi_const_16bit+1): Copy operands[1].
3416 (call_pcrel): Copy the call_site pattern.
3417 (call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.
3419 2006-11-12 Roger Sayle <roger@eyesopen.com>
3421 * fold-const.c (negate_expr_p) <PLUS_EXPR, MINUS_EXPR>: Correct/refine
3422 condition for transformations. Use !HONOR_SIGN_DEPENDENT_ROUNDING
3423 && !HONOR_SIGNED_ZEROS instead of flag_unsafe_math_optimizations.
3424 (fold_negate_expr) <PLUS_EXPR, MINUS_EXPR>: Likewise.
3426 2006-11-12 Daniel Berlin <dberlin@dberlin.org>
3428 Fix PR tree-optimization/29587
3429 * tree-ssa-structalias.c (process_constraint): Don't
3430 mark address taken due only to escaped vars constraint.
3432 2006-11-12 Michael Matz <matz@suse.de>
3433 Roger Sayle <roger@eyesopen.com>
3435 PR rtl-optimization/29797
3436 * ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
3437 BITS_BIG_ENDIAN targets.
3439 2006-11-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3441 * builtins.c (fold_builtin_cosh): New.
3442 (fold_builtin_1): Use it.
3443 * fold-const.c (negate_mathfn_p): Add llround, lround, round,
3444 trunc to the list of "odd" functions. Also add llrint, lrint,
3445 rint and nearbyint when flag_rounding_math is false.
3447 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3449 * tree-flow.h (name_mappings_registered_p): Declare.
3450 * tree-into-ssa.c (name_mappings_registered_p): New function.
3451 * tree-cfg.c (tree_can_merge_blocks_p): Check
3452 name_mappings_registered_p instead of need_ssa_update_p.
3454 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3456 * tree-ssa-loop.c (tree_vectorize): Return the result of
3458 * tree-vectorizer.c (vectorize_loops): Return TODO_cleanup_cfg
3459 if anything changed.
3460 * tree-vectorizer.h (vectorize_loops): Declaration removed.
3461 * tree-flow.h (vectorize_loops): Declaration changed.
3463 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3465 * tree-ssa-loop-prefetch.c (schedule_prefetches): Cleanup and improve
3467 (issue_prefetch_ref): Move assignment to write_p out of loop.
3468 (determine_unroll_factor): Do not take PARAM_MAX_UNROLL_TIMES and
3469 SIMULTANEOUS_PREFETCHES into account.
3470 (loop_prefetch_arrays): Do not pass ahead to determine_unroll_factor.
3471 * lambda-code.c (lcm): Renamed to ...
3472 (least_common_multiple): ... and exported.
3473 * tree-flow.h (least_common_multiple): Declare.
3475 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3477 * Makefile.in (tree-data-ref.o): Add langhooks.h dependency.
3478 * tree-ssa-loop-niter.c (derive_constant_upper_bound): Follow
3479 ud-chains. Handle AND_EXPR.
3480 (record_estimate): Record whether the estimate is realistic
3481 and whether it is derived from a loop exit.
3482 (record_nonwrapping_iv, idx_infer_loop_bounds, infer_loop_bounds_from_ref,
3483 infer_loop_bounds_from_array, infer_loop_bounds_from_signedness): New
3485 (compute_estimated_nb_iterations): Take only realistic bounds into
3486 account. Set estimate_state. Use double_ints.
3487 (infer_loop_bounds_from_undefined): Call infer_loop_bounds_from_array
3488 and infer_loop_bounds_from_signedness. Do not consider basic blocks
3489 that do not have to be always executed.
3490 (estimate_numbers_of_iterations_loop): Set estimate_state, and use it
3491 to determine whether to call infer_loop_bounds_from_undefined
3492 and compute_estimated_nb_iterations.
3493 (n_of_executions_at_most): Use double_ints.
3494 (free_numbers_of_iterations_estimates_loop): Set estimate_state.
3495 (substitute_in_loop_info): Do not replace in estimated_nb_iterations.
3496 * double-int.c (double_int_to_tree): Improve comment.
3497 (double_int_fits_to_tree_p): New function.
3498 * double-int.h (double_int_fits_to_tree_p): Declare.
3499 * tree-data-ref.c: Include langhooks.h.
3500 (estimate_niter_from_size_of_data, estimate_iters_using_array): Removed.
3501 (analyze_array_indexes): Do not call estimate_niter_from_size_of_data.
3502 (analyze_array): Do not pass estimate_only argument to
3503 analyze_array_indexes.
3504 (get_number_of_iters_for_loop): Build tree from the stored double_int
3506 (get_references_in_stmt, find_data_references_in_stmt): New functions.
3507 (find_data_references_in_loop): Use find_data_references_in_stmt.
3508 * tree-data-ref.h (struct data_ref_loc_d): New.
3509 (get_references_in_stmt): Declare.
3510 (estimate_iters_using_array): Declaration removed.
3511 * cfgloop.h (struct nb_iter_bound): Change type of bound to
3512 double_int. Improve comments. Add is_exit and realistic
3514 (struct loop): Changed type of estimated_nb_iterations to double_int.
3515 Added estimate_state field.
3516 (record_estimate): Declaration removed.
3518 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3520 * params.c (set_param_value): Initialize the "set" field.
3521 * params.h (struct param_info): Add "set" field.
3522 (PARAM_SET_P): New macro.
3523 (PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
3524 L1_CACHE_LINE_SIZE): New macros.
3525 * toplev.c (DEFPARAM): Initialize the "set" field.
3526 * tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
3527 SIMULTANEOUS_PREFETCHES): Removed.
3528 (PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
3529 (tree_ssa_prefetch_arrays): Dump the values of the parameters.
3530 * config/sparc/sparc.c: Include params.h.
3531 (sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
3532 L1_CACHE_LINE_SIZE parameters.
3533 * config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
3535 * config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
3537 * config/i386/i386.c: Include params.h.
3538 (k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
3539 (override_options): Set SIMULTANEOUS_PREFETCHES and
3540 L1_CACHE_LINE_SIZE parameters.
3541 * config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
3542 (OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
3543 L1_CACHE_LINE_SIZE parameters.
3544 * config/ia64/ia64.c (ia64_optimization_options): Set
3545 SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
3546 * config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
3548 * params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
3549 PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
3550 * doc/invoke.texi: Document new params.
3552 2006-11-12 Roger Sayle <roger@eyesopen.com>
3554 PR tree-optimization/13827
3555 * fold-const.c (fold_binary) <EQ_EXPR, NE_EXPR>: Fold (X&C) op (Y&C)
3558 2006-11-12 Zdenek Dvorak <dvorakz@suse.cz>
3560 * cfgloopmanip.c (update_single_exit_for_duplicated_loop,
3561 update_single_exit_for_duplicated_loops): New functions.
3562 (duplicate_loop_to_header_edge): Use
3563 update_single_exit_for_duplicated_loops.
3564 * tree-ssa-loop-manip.c (tree_unroll_loop): Call verification
3565 functions only with ENABLE_CHECKING.
3567 2006-11-12 Andreas Schwab <schwab@suse.de>
3569 * except.c (sjlj_emit_function_enter): Remove unused variable.
3571 2006-11-11 Roger Sayle <roger@eyesopen.com>
3573 * fold-const.c (int_binop_types_match_p): New function.
3574 (size_binop): Relax constraint that both arguments must both have
3575 exactly the same sizetype type. Instead use int_binop_types_match_p.
3576 (size_diffop): Likewise.
3578 (make_range): Use build_int_cst instead of fold_convert.
3579 (fold_cond_expr_with_comparison): Use build_int_cst to construct
3580 integer constants of the correct type.
3581 (fold_div_compare): Likewise.
3582 (fold_single_bit_test): Likewise.
3583 (fold_binary): Likewise.
3584 * stor-layout.c (layout_type) <VECTOR_TYPE>: Ensure that TYPE_SIZE
3585 has type bitsizetype and TYPE_SIZE_UNIT has type sizetype.
3587 2006-11-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
3590 * alias.c (fixed_scalar_and_varying_struct_p): Don't return a
3591 non null value if the struct memory access is in the 0th
3594 2006-11-12 Jie Zhang <jie.zhang@analog.com>
3597 2006-11-11 Jie Zhang <jie.zhang@analog.com>
3598 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
3601 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Use builtin_define_std
3602 instead of builtin_define for bfin and BFIN.
3604 2006-11-11 Jie Zhang <jie.zhang@analog.com>
3606 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __bfin__
3609 2006-11-11 Jan Hubicka <jh@suse.cz>
3611 * extend.texi (__builtin_expect): We no longer require second argument
3613 * gengtype.c (adjust_field_rtx_def): Drop NOTE_INSN_EXPECTED_VALUE.
3614 * builtins.c (expand_builtin_expect): Simplify.
3615 (expand_builtin_expect_jump): Kill.
3616 * final.c (final_scan_insn): Do not skip the removed notes.
3617 * insn-notes.def (LOOP_BEG, LOOP_END, REPEATED_LINE_NUMBER,
3618 EXPECTED_VALUE): Remove.
3619 * dojump.c (do_jump): Do not care about __builtin_expect.
3620 * predict.c (expected_value_to_br_prob): Kill.
3621 * function.c (expand_function_end): Do not expand
3622 NOTE_INSN_REPEATED_LINE_NUMBER.
3623 * print-rtl.c (print_rtx): Do not pretty print the removed notes.
3624 * expect.c (sjlj_emit_function_enter): Emit directly branch probability.
3625 * cfgexpand.c (add_reg_br_prob_note): Export.
3626 * cfgcleanup.c (rest_of_handle_jump2): Do not call
3627 expected_value_to_br_prob.
3628 * cfglayout.c (duplicate_insn_chain): Do not deal with removed notes.
3629 * rtl.h (add_reg_br_prob_note): Declare.
3631 2006-11-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3633 * tree-pretty-print.c (dump_generic_node): Print sign of Inf.
3635 2006-11-11 Jan Hubicka <jh@suse.cz>
3637 * predict.c (predict_loops): Kill RTL variant.
3639 2006-11-11 Jan Hubicka <jh@suse.cz>
3641 * tree-pass.h (pass_purge_lineno_notes): Remove declaration.
3642 * modulo-sched.c (find_line_note): Remove.
3643 (loop_canon_p): Do not worry about line number notes.
3644 (sms_schedule): Likewise.
3645 * cse.c (cse_main): Likewise.
3646 * regmove.c (fixup_match_1): Likewise
3647 * function.c (emit_return_info_block): Likewise.
3648 (expand_function_end): Likewise.
3649 (thread_prologue_an_epilogue_insns): Likewise.
3650 * cfgrtl.c (try_redirect_by_replacing_jump, rtl_tidy_fallthru_edge):
3652 * emit-rtl.c (find_line_note, emit_insn_after_with_line_notes,
3653 emit_note_copy_after): Kill.
3654 (emit_note_copy): Do not worry about line numbers.
3655 * jump.c (purge_line_number_notes): Kill.
3656 (pass_purge_lineno_notes): Kill.
3657 * cfgcleanup.c (rest_of_handle_jump2): Kill purge_line_number_notes
3659 * rtl.h (emit_note_copy_after, emit_insn_after_with_line_notes): Kill.
3660 * passes.c (init_optimization_passes): Don't purge_lineno_notes.
3661 * sched-ebb.c (schedule_ebbs): Don't do rm_redundant_line_notes.
3662 * tree-pass.h (pass_purge_lineno_notes): Kill.
3663 * sched-ebb.c (schedule_ebb): Don't rm_line_notes,
3664 rm_redundant_line_notes.
3665 * sched-rgb.c (schedule_region): Don't rm_line_notes,
3666 rm_redundant_line_notes.
3667 * sched-int.h (rm_line_notes, rm_redundant_line_notes): Kill.
3668 * haifa-sched.c: Update comment about handling notes.
3669 (unlink_line_notes): Kill.
3670 (rm_line_notes): Kill.
3671 (save_line_notes): Simplify.
3672 (rm_redundant_line_notes): Kill.
3674 2006-11-11 Richard Guenther <rguenther@suse.de>
3676 * tree.def (FIX_CEIL_EXPR, FIX_FLOOR_EXPR, FIX_ROUND_EXPR):
3677 Remove unused tree codes.
3678 * tree-vrp.c (extract_range_from_unary_expr): Remove handling
3679 of FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
3680 * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
3681 * tree.c (stabilize_reference): Likewise.
3682 * fold-const.c (fold_convert_const_int_from_real, operand_equal_p,
3683 fold_unary): Likewise.
3684 * tree-gimple.c (is_gimple_cast): Likewise.
3685 * dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
3686 * expr.c (expand_expr_real_1): Likewise.
3687 * tree-eh.c (tree_could_trap_p): Likewise.
3688 * gimplify.c (gimplify_expr): Likewise.
3689 * tree-inline.c (estimate_num_insns_1): Likewise.
3690 * tree-cfg.c (verify_expr): Likewise.
3692 2006-11-11 Zdenek Dvorak <dvorakz@suse.cz>
3694 * tree-ssa-loop.c (pass_loop_prefetch): Change name to aprefetch.
3695 * tree-ssa-loop-prefetch.c (dump_mem_ref): Fix target file.
3696 (tree_ssa_prefetch_arrays): Do not dump for removed loops.
3698 2006-11-11 Richard Sandiford <richard@codesourcery.com>
3701 * stmt.c (expand_asm_operands): Use EXPAND_INITIALIZER if the
3702 constraints accept neither registers or memories.
3704 2006-11-11 Jie Zhang <jie.zhang@analog.com>
3706 * config/bfin/bfin.h (FUNCTION_PROFILER): Don't use LABELNO.
3707 (NO_PROFILE_COUNTERS): Define as 1.
3709 2006-11-10 Roger Sayle <roger@eyesopen.com>
3711 * fold-const.c (operand_equal_p) <INTEGER_CST, REAL_CST, VECTOR_CST>:
3712 Don't check for TREE_CONSTANT_OVERFLOW when comparing constants.
3714 2006-11-10 Peter Bergner <bergner@vnet.ibm.com>
3716 * rtl.h (MEM_COPY_ATTRIBUTES): Copy MEM_POINTER.
3718 2006-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3720 * builtins.c (fold_builtin_cos): Use fold_strip_sign_ops().
3721 (fold_builtin_hypot): Likewise.
3722 * fold-const.c (fold_strip_sign_ops): Handle "odd" builtins.
3724 * fold-const.c (negate_mathfn_p): Add BUILT_IN_ERF.
3726 2006-11-10 Roger Sayle <roger@eyesopen.com>
3728 * tree.c (build_int_cst_wide): Add an assertion (gcc_unreachable)
3729 when attempting to build INTEGER_CSTs of non-integral types.
3730 * expmed.c (make_tree): Use the correct type, i.e. the inner
3731 type, when constructing the individual elements of a CONST_VECTOR.
3733 2006-11-10 Jan Hubicka <jh@suse.cz>
3735 * cse.c (cse_process_notes): Copy the propagated value.
3736 * local-alloc.c (update_equiv_regs): Copy the memory RTX to be used
3738 * gcse.c (try_replace_reg): Copy the replacement.
3739 * i386.c (emit_i387_cw_initialization): Copy stored_mode.
3740 (assign_386_stack_local): Always return copied memory expression
3741 * function.c (instantiate_virtual_regs_in_insn): Copy the operand
3744 2006-11-10 Jan Hubicka <jh@suse.cz>
3746 * final.c (final): Walk from first instruction.
3747 * cfglayout.c (insn_locators_initialize): Remove line number notes.
3749 2006-11-10 Uros Bizjak <ubizjak@gmail.com>
3752 * config/i386/sse.md (smulv8hi3_highpart): Change from define_insn
3754 (umulv8hi3_highpart): Ditto.
3755 (vec_widen_smult_hi_v8hi): New expander.
3756 (vec_widen_smult_lo_v8hi): Ditto.
3758 2006-11-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3761 * builtins.c (do_mpfr_arg3): New.
3762 (fold_builtin_1): Handle builtins fma, fmin and fmax.
3764 2006-11-09 Eric Christopher <echristo@apple.com>
3769 * configure.ac: Match powerpc*-*-darwin* for powerpc darwin checks.
3770 * config.gcc (powerpc64-*-darwin*): New target.
3771 * config.host: Ditto.
3772 * config/rs6000/darwin64.h: New file.
3773 * config/rs6000/x-darwin64: Ditto.
3774 * config/rs6000/host-ppc64-darwin.c: Ditto.
3776 2006-11-09 Steve Ellcey <sje@cup.hp.com>
3778 * config/ia64/ia64.c (ia64_hpux_init_libfuncs): Use HP-UX millicode
3779 routines for integer division.
3781 2006-11-09 Daniel Jacobowitz <dan@codesourcery.com>
3783 * config/arm/t-linux (LIBGCC2_DEBUG_CFLAGS): Delete.
3785 2006-11-09 Serge Belyshev <belyshev@depni.sinp.msu.ru>
3788 * fold-const.c (fold_binary) <EQ_EXPR>: Fix typo in variable name.
3790 2006-11-09 Andreas Krebbel <krebbel1@de.ibm.com>
3792 * simplify-rtx.c (avoid_constant_pool_reference): Avoid calling
3793 simplify_subreg with BLKmode outer mode.
3795 2006-11-08 Brooks Moses <brooks.moses@codesourcery.com>
3797 * doc/invoke.texi: Minor formatting fixes in option lists.
3799 2006-11-08 Zdenek Dvorak <dvorakz@suse.cz>
3801 PR tree-optimization/29738
3802 * tree-ssa-ccp.c: Remove UNKNOWN_VAL from comments.
3803 (ccp_lattice_t): Remove UNKNOWN_VAL.
3804 (dump_lattice_value, ccp_lattice_meet, ccp_visit_phi_node):
3805 Do not handle UNKNOWN_VAL.
3806 (get_default_value): Set initial value of virtual operands to
3808 (get_value): Always use get_default_value on uninitialized
3810 (set_value_varying, surely_varying_stmt_p): New functions.
3811 (set_lattice_value): Do not pass argument to get_value.
3812 Do not handle UNKNOWN_VAL.
3813 (likely_value): Follow the semantics described in the comment.
3814 (ccp_initialize): Use surely_varying_stmt_p. Do not mark
3815 phi nodes DONT_SIMULATE_AGAIN.
3816 (ccp_fold): Do not pass argument to get_value.
3817 (fold_const_aggregate_ref, visit_assignment): Ditto. Do not
3820 2006-11-08 Andrew Pinski <Andrew_Pinski@playstation.sony.com>
3822 * tree-pretty-print.c (dump_generic_node) <INTEGER_CST>: Use
3823 HOST_WIDE_INT_PRINT_DOUBLE_HEX instead of format buffer.
3825 2006-11-08 Roger Sayle <roger@eyesopen.com>
3827 * tree-ssa-propagate.c (set_rhs): Restructure validity tests as a
3828 test for inclusion rather than as a test for exclusion.
3829 * tree-ssa-ccp.c (fold_stmt_r) <COND_EXPR>: Use set_rhs to modify
3830 the condition after calling fold_binary.
3831 * fold-const.c (fold_inf_compare): Remove in_gimple_form check.
3832 (fold_binary) <LT_EXPR, GT_EXPR, LE_EXPR, GE_EXPR>: Likewise.
3833 * builtins.c (fold_builtin_isascii): Likewise.
3834 (fold_builtin_isdigit): Likewise.
3836 2006-11-08 Carlos O'Donell <carlos@codesourcery.com>
3838 * configure.ac: Do not set PREFIX_INCLUDE_DIR if $prefix is NONE.
3839 * configure: Regenerate.
3841 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
3843 * tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p): Take
3844 enum argument instead of bool.
3845 (vect_analyze_operations): Call vectorizable_type_promotion.
3846 * tree-vectorizer.h (type_promotion_vec_info_type): New enum
3847 stmt_vec_info_type value.
3848 (supportable_widening_operation, vectorizable_type_promotion): New
3849 function declarations.
3850 * tree-vect-transform.c (vect_gen_widened_results_half): New function.
3851 (vectorizable_type_promotion): New function.
3852 (vect_transform_stmt): Call vectorizable_type_promotion.
3853 * tree-vect-analyze.c (supportable_widening_operation): New function.
3854 * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
3856 * tree-vect-generic.c (expand_vector_operations_1): Consider correct
3859 * tree.def (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR):
3860 (VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR): New tree-codes.
3861 * tree-inline.c (estimate_num_insns_1): Add cases for above new
3863 * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
3864 * expr.c (expand_expr_real_1): Likewise.
3865 * optabs.c (optab_for_tree_code): Likewise.
3866 (init_optabs): Initialize new optabs.
3867 * genopinit.c (vec_widen_umult_hi_optab, vec_widen_smult_hi_optab,
3868 vec_widen_smult_hi_optab, vec_widen_smult_lo_optab,
3869 vec_unpacks_hi_optab, vec_unpacks_lo_optab, vec_unpacku_hi_optab,
3870 vec_unpacku_lo_optab): Initialize new optabs.
3871 * optabs.h (OTI_vec_widen_umult_hi, OTI_vec_widen_umult_lo):
3872 (OTI_vec_widen_smult_h, OTI_vec_widen_smult_lo, OTI_vec_unpacks_hi,
3873 OTI_vec_unpacks_lo, OTI_vec_unpacku_hi, OTI_vec_unpacku_lo): New
3875 (vec_widen_umult_hi_optab, vec_widen_umult_lo_optab):
3876 (vec_widen_smult_hi_optab, vec_widen_smult_lo_optab):
3877 (vec_unpacks_hi_optab, vec_unpacku_hi_optab, vec_unpacks_lo_optab):
3878 (vec_unpacku_lo_optab): New optabs.
3879 * doc/md.texi (vec_unpacks_hi, vec_unpacks_lo, vec_unpacku_hi):
3880 (vec_unpacku_lo, vec_widen_umult_hi, vec_widen_umult_lo):
3881 (vec_widen_smult_hi, vec_widen_smult_lo): New.
3882 * doc/c-tree.texi (VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR):
3883 (VEC_WIDEN_MULT_HI_EXPR, VEC_WIDEN_MULT_LO_EXPR, VEC_UNPACK_HI_EXPR):
3884 (VEC_UNPACK_LO_EXPR, VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New.
3886 * config/rs6000/altivec.md (UNSPEC_VMULWHUB, UNSPEC_VMULWLUB):
3887 (UNSPEC_VMULWHSB, UNSPEC_VMULWLSB, UNSPEC_VMULWHUH, UNSPEC_VMULWLUH):
3888 (UNSPEC_VMULWHSH, UNSPEC_VMULWLSH): New.
3889 (UNSPEC_VPERMSI, UNSPEC_VPERMHI): New.
3890 (vec_vperm_v8hiv4si, vec_vperm_v16qiv8hi): New patterns used to
3891 implement the unsigned unpacking patterns.
3892 (vec_unpacks_hi_v16qi, vec_unpacks_hi_v8hi, vec_unpacks_lo_v16qi):
3893 (vec_unpacks_lo_v8hi): New signed unpacking patterns.
3894 (vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi):
3895 (vec_unpacku_lo_v8hi): New unsigned unpacking patterns.
3896 (vec_widen_umult_hi_v16qi, vec_widen_umult_lo_v16qi):
3897 (vec_widen_smult_hi_v16qi, vec_widen_smult_lo_v16qi):
3898 (vec_widen_umult_hi_v8hi, vec_widen_umult_lo_v8hi):
3899 (vec_widen_smult_hi_v8hi, vec_widen_smult_lo_v8hi): New widening
3900 multiplication patterns.
3902 * target.h (builtin_mul_widen_even, builtin_mul_widen_odd): New.
3903 * target-def.h (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN):
3904 (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.
3905 * config/rs6000/rs6000.c (rs6000_builtin_mul_widen_even): New.
3906 (rs6000_builtin_mul_widen_odd): New.
3907 (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Defined.
3908 (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): Defined.
3909 * tree-vectorizer.h (enum vect_relevant): New enum type.
3910 (_stmt_vec_info): Field relevant chaned from bool to enum
3912 (STMT_VINFO_RELEVANT_P): Updated.
3913 (STMT_VINFO_RELEVANT): New.
3914 * tree-vectorizer.c (new_stmt_vec_info): Use STMT_VINFO_RELEVANT
3915 instead of STMT_VINFO_RELEVANT_P.
3916 * tree-vect-analyze.c (vect_mark_relevant, vect_stmt_relevant_p):
3917 Replace calls to STMT_VINFO_RELEVANT_P with STMT_VINFO_RELEVANT,
3918 and boolean variable with enum vect_relevant.
3919 (vect_mark_stmts_to_be_vectorized): Likewise + update documentation.
3920 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): New.
3921 (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD): New.
3923 2006-11-08 Richard Henderson <rth@redhat.com>
3925 * config/i386/sse.md (vec_widen_umult_hi_v8hi,
3926 vec_widen_umult_lo_v8hi): New.
3927 (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si,
3928 vec_widen_umult_hi_v4si, vec_widen_umult_lo_v4si): New.
3930 * config/i386/i386.c (ix86_expand_sse_unpack): New.
3931 * config/i386/i386-protos.h (ix86_expand_sse_unpack): New.
3932 * config/i386/sse.md (vec_unpacku_hi_v16qi, vec_unpacks_hi_v16qi,
3933 vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi, vec_unpacku_hi_v8hi,
3934 vec_unpacks_hi_v8hi, vec_unpacku_lo_v8hi, vec_unpacks_lo_v8hi,
3935 vec_unpacku_hi_v4si, vec_unpacks_hi_v4si, vec_unpacku_lo_v4si,
3936 vec_unpacks_lo_v4si): New.
3938 2006-11-08 Dorit Nuzman <dorit@il.ibm.com>
3940 * tree-vect-transform.c (vectorizable_type_demotion): New function.
3941 (vect_transform_stmt): Add case for type_demotion_vec_info_type.
3942 (vect_analyze_operations): Call vectorizable_type_demotion.
3943 * tree-vectorizer.h (type_demotion_vec_info_type): New enum
3944 stmt_vec_info_type value.
3945 (vectorizable_type_demotion): New function declaration.
3946 * tree-vect-generic.c (expand_vector_operations_1): Consider correct
3949 * tree.def (VEC_PACK_MOD_EXPR, VEC_PACK_SAT_EXPR): New tree-codes.
3950 * expr.c (expand_expr_real_1): Add case for VEC_PACK_MOD_EXPR and
3952 * tree-iniline.c (estimate_num_insns_1): Likewise.
3953 * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
3954 * optabs.c (optab_for_tree_code): Likewise.
3956 * optabs.c (expand_binop): In case of vec_pack_*_optabs the mode
3957 compared against the predicate of the result is not 'mode' (the input
3958 to the function) but a mode with half the size of 'mode'.
3959 (init_optab): Initialize new optabs.
3960 * optabs.h (OTI_vec_pack_mod, OTI_vec_pack_ssat, OTI_vec_pack_usat):
3962 (vec_pack_mod_optab, vec_pack_ssat_optab, vec_pack_usat_optab): New
3964 * genopinit.c (vec_pack_mod_optab, vec_pack_ssat_optab):
3965 (vec_pack_usat_optab): Initialize new optabs.
3966 * doc/md.texi (vec_pack_mod, vec_pack_ssat, vec_pack_usat): New.
3967 * config/rs6000/altivec.md (vec_pack_mod_v8hi, vec_pack_mod_v4si): New.
3969 2006-11-08 Richard Henderson <rth@redehat.com>