1 2008-09-04 Kai Tietz <kai.tietz@onevision.com>
3 * config/i386/t-mingw32 (SHLIB_LC): Change order of import
6 2008-09-03 David Edelsohn <edelsohn@gnu.org>
8 * config/rs6000/rs6000.c (processor_target_table): Do not
11 2008-09-03 Anton Blanchard <anton@samba.org>
13 * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
14 emit memory barrier before operation.
16 2008-09-03 John David Anglin <dave.anglin@nrc.cnrc.gc.ca>
19 * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
20 default_elf_asm_output_external.
22 2008-09-03 Jeff Law <law@redhat.com>
24 * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
26 2008-09-03 Richard Henderson <rth@redhat.com>
28 * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
29 memory barrier to below the test-and-set.
30 (alpha_split_lock_test_and_set_12): Likewise.
32 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
36 * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
39 * ira-color.c (print_loop_title): Use all_allocnos.
40 (color_pass): Ditto. Don't add border_allocnos. Check that
41 subloop allocno in the correspdoning bitmap all_allocnos.
43 * ira-emit.c (change_loop): Use all_allocnos.
45 * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
47 (ira_create_allocno): Set up all_allocnos bit for the created
49 (create_cap_allocno): Remove setting mentioned_allocnos.
50 (create_insn_allocnos): Ditto.
51 (remove_unnecessary_allocnos): Use all_allocnos.
52 (check_allocno_creation): Check that allocnos are in the
53 corresponding bitmap all_allocnos.
55 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
59 * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
60 (process_regs_for_copy): Process subregs. Refine check when cost
61 is taken into account in ira-costs.c.
62 (process_reg_shuffles): Use REG_SUBREG_P.
63 (add_insn_allocno_copies): Ditto. Ignore modes.
65 * ira-color.c (conflict_allocno_vec): New.
66 (COST_HOP_DIVISOR): New macro.
67 (update_copy_costs_1): Use it.
68 (update_conflict_hard_regno_costs): New function.
69 (assign_hard_reg): Use it.
70 (ira_color): Allocate and free conflict_allocno_vec.
72 2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
76 * ira-int.h (ira_sort_insn_chain): Remove.
78 * ira.c (basic_block_order_nums, chain_insn_order,
79 chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
80 (ira): Don't call ira_sort_insn_chain.
82 * reload1.c (reload): Don't call ira_sort_insn_chain.
84 2008-09-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
87 * cgraphunit.c (update_call_expr): Remove eh regions from statements
88 which become non throw.
89 (cgraph_function_versioning): Also clear DECL_WEAK. Call
90 update_call_expr after updating the flags on the decl.
92 2008-09-03 Jan Hubicka <jh@suse.cz>
94 PR tree-optimization/37315
95 * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
96 * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
97 (cgraph_analyze_functions): Use node->analyzed
98 (cgraph_mark_functions_to_output): Likewise.
99 (cgraph_expand_function): All functions can be released after
101 (cgraph_optimize): Use gimple_has_body_p.
102 * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
103 (cgraph_decide_inlining_incrementally): Likewise.
104 (inline_transform): Inline transform.
105 * tree-inline.c (initialize_cfun): Do now shallow copy structure;
107 (inlinable_function_p): Drop gimple_body check.
108 (expand_call_inline): Use gimple_has_body_p.
109 * gimple.c (gimple_has_body_p): New.
110 * gimple.h (gimple_has_body_p): Add prototype.
111 * tree-cfg.c (execute_build_cfg): Remove gimple_body.
112 (dump_function_to_file): Use gimple_has_body_p check.
114 2008-09-03 Jakub Jelinek <jakub@redhat.com>
117 * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
119 * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
121 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
123 From Michael Frysinger <michael.frysinger@analog.com>
124 * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
125 bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549. Add 0.2
128 2008-09-03 Hari Sandanagobalane <hariharan@picochip.com>
131 * doc/extend.texi: Document picoChip builtin functions.
132 * doc/invoke.texi: Document picoChip options.
133 * doc/contrib.texi: Add picoChip contribution.
134 * doc/md.texi: Document picoChip constraints.
135 * config.gcc: Add picochip-*-*.
136 * config/picochip/: Add new port.
138 2008-09-03 Richard Guenther <rguenther@suse.de>
140 PR tree-optimization/37328
141 * tree-sra.c (sra_build_assignment): Gimplify properly.
142 (generate_copy_inout): Take the correct stmt as definition,
145 2008-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
147 * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
150 From Michael Frysinger <michael.frysinger@analog.com>
151 * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
153 2008-09-03 Danny Smith <dannysmith@usrs.sourceforge.net>
155 * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
157 (__gthread_setspecific): Revert 2008-08-31 change to
158 __GTHREAD_HIDE_W32API case. Apply it to !__GTHREAD_HIDE_W32API
161 2008-09-02 Aldy Hernandez <aldyh@redhat.com>
163 * diagnostic.c (error_at): New.
164 * toplev.h (error_at): New prototype.
165 * c-typeck.c (build_array_ref): Call error_at instead of error.
166 Pass location to pedwarn.
168 2008-09-02 Adam Nemet <anemet@caviumnetworks.com>
170 * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
172 2008-09-02 Jakub Jelinek <jakub@redhat.com>
174 * dwarf2out.c (tree_add_const_value_attribute): Only handle
175 VAR_DECL and CONST_DECL.
177 2008-09-02 H.J. Lu <hongjiu.lu@intel.com>
178 Jakub Jelinek <jakub@redhat.com>
180 * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
181 (setup_incoming_varargs_64): Assume cum != NULL. Set/check
182 ix86_varargs_gpr_size and ix86_varargs_fpr_size. Use
183 ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
184 Don't set ix86_save_varrargs_registers.
185 (ix86_setup_incoming_varargs): Assume cum != NULL.
186 (ix86_va_start): Check ix86_varargs_gpr_size and
187 ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
188 cfun->va_list_fpr_size, respectively. Subtract 8*X86_64_REGPARM_MAX
189 from frame pointer if ix86_varargs_gpr_size == 0.
190 (ix86_compute_frame_layout): Updated.
191 * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
192 (ix86_varargs_gpr_size): Define.
193 (ix86_varargs_fpr_size): Likewise.
194 (machine_function): Remove save_varrargs_registers.
195 Add varargs_gpr_size and varargs_fpr_size.
197 2008-09-02 Jakub Jelinek <jakub@redhat.com>
199 * config/alpha/alpha.c (va_list_skip_additions,
200 alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
201 (alpha_gimplify_va_arg): Call unshare_expr on second use of
204 PR tree-optimization/36766
205 * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
206 for already removed basic blocks.
209 * real.c (real_maxval): Clear a lower bit to make real_maxval
210 match get_max_float for IBM long double format.
212 2008-09-02 Andreas Schwab <schwab@suse.de>
214 * configure.ac: Use m4_quote to quote the expansion of m4_do.
215 * configure: Regenerate.
217 2008-09-02 Richard Sandiford <rdsandiford@googlemail.com>
219 * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
220 SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
221 checking for a non-VOID CONSTANT_P.
223 2008-09-02 Jan Hubicka <jh@suse.cz>
225 * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
226 * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and sdiv_pow2_cheap
228 2008-09-02 H.J. Lu <hongjiu.lu@intel.com>
230 * expr.c (emit_group_store): Don't assert stack temp mode size.
232 2008-09-02 Sebastian Pop <sebastian.pop@amd.com>
233 Tobias Grosser <grosser@fim.uni-passau.de>
234 Jan Sjodin <jan.sjodin@amd.com>
235 Harsha Jagasia <harsha.jagasia@amd.com>
236 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
237 Konrad Trifunovic <konrad.trifunovic@inria.fr>
238 Adrien Eliche <aeliche@isty.uvsq.fr>
240 Merge from graphite branch.
243 * tree-loop-linear.c (perfect_loop_nest_depth): Export.
244 * doc/invoke.texi (-floop-block, -floop-interchange,
245 -floop-strip-mine): Document new flags.
246 * tree-into-ssa.c (gimple_vec): Moved...
247 * tree-loop-distribution.c (rdg_component): Moved...
248 * cfgloopmanip.c: Include tree-flow.h.
249 (update_dominators_in_loop): New.
250 (create_empty_if_region_on_edge): New.
251 (create_empty_loop_on_edge): New.
252 (loopify): Use update_dominators_in_loop.
253 * tree-pass.h (pass_graphite_transforms): Declared.
254 * configure: Regenerate.
255 * tree-phinodes.c (make_phi_node): Export.
256 (add_phi_node_to_bb): New, split from create_phi_node.
257 * tree-chrec.c (for_each_scev_op): New.
258 * tree-chrec.h (for_each_scev_op): Declared.
259 * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
260 (remove_statement): Call get_phi_with_result.
261 * config.in (HAVE_cloog): Undef.
262 * gdbinit.in (pgg): New.
263 * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
264 * tree-ssa-loop.c (graphite_transforms): New.
265 (gate_graphite_transforms): New.
266 (pass_graphite_transforms): New.
267 * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
268 HAVE_cloog): Defined.
269 * tree-vectorizer.c (rename_variables_in_bb): Export.
270 * tree-data-ref.c (dr_may_alias_p): Export.
271 (stmt_simple_memref_p): New.
272 (find_data_references_in_stmt): Export.
273 (find_data_references_in_loop): Export.
274 (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
275 (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
276 (create_rdg_vertices): Export.
277 (build_empty_rdg): New.
278 (build_rdg): Call build_empty_rdg. Free dependence_relations.
279 * tree-data-ref.h (rdg_component): ... here.
281 (struct data_reference): Add a field scop.
283 (find_data_references_in_loop): Declared.
284 (find_data_references_in_stmt): Declared.
285 (create_rdg_vertices): Declared.
286 (dr_may_alias_p): Declared.
287 (stmt_simple_memref_p): Declared.
288 (struct rdg_edge): Add a field ddr_p relation.
289 (build_empty_rdg): Declared.
290 * lambda.h (lambda_matrix): Declare a VEC of.
291 (find_induction_var_from_exit_cond): Declared.
292 (lambda_vector_compare): New.
293 * common.opt (fgraphite, floop-strip-mine,
294 floop-interchange, floop-block): New flags.
295 * lambda-code.c (find_induction_var_from_exit_cond): Export.
296 * cfgloop.c (is_loop_exit): New.
297 * cfgloop.h (is_loop_exit): Declared.
298 (create_empty_if_region_on_edge): Declared.
299 (create_empty_loop_on_edge): Declared.
300 * tree-flow.h (add_phi_node_to_bb): Declared.
301 (make_phi_node): Declared.
302 (rename_variables_in_bb): Declared.
303 (perfect_loop_nest_depth): Declared.
304 (graphite_transform_loops): Declared.
305 * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
306 (graphite.o-warn): Add -Wno-error.
307 (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
308 (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
309 (INCLUDES): Add PPLINC, CLOOGINC.
310 (OBJS-common): Add graphite.o.
311 (graphite.o): Add rule.
312 * gimple.h (gimple_vec): ... here.
313 * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
314 * passes.c (init_optimization_passes): Schedule
315 pass_graphite_transforms.
317 2008-09-02 Samuel Tardieu <sam@rfc1149.net>
320 * opts.c (decode_options): Move processing of -fno-unit-at-a-time
321 and -fno-toplevel-reorder after handle_options.
323 2008-09-02 Paul Brook <paul@codesourcery.com>
325 * config/arm/arm.c (arm_tune_cortex_a9): Define.
326 (arm_override_options): Set arm_tune_cortex_a9.
327 (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
328 (arm_issue_rate): Handle cortexa9.
329 * config/arm/arm.h (arm_tune_cortex_a9): Declare.
330 * config/arm/arm-cores.def: Add cortex-a9.
331 * config/arm/arm-tune.md: Regenerate.
332 * config/arm/arm.md: Include cortex-a9.md.
333 (generic_sched, generic_vfp): Add cortexa9.
334 * config/arm/cortex-a9.md: New file.
336 2008-09-02 Richard Guenther <rguenther@suse.de>
338 PR tree-optimization/37327
339 * tree-vrp.c (register_new_assert_for): Make sure to not have
340 TREE_OVERFLOW set on the bound.
342 2008-09-02 Alexander Monakov <amonakov@ispras.ru>
344 Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
346 * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
347 * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
350 2008-09-02 Victor Kaplansky <victork@il.ibm.com>
352 * gcc/config/spu/spu.md (divdf3): Removed.
354 2008-09-02 Jakub Jelinek <jakub@redhat.com>
356 PR tree-optimization/37095
357 * cgraph.c (cgraph_node): When creating new cgraph node after
358 assembler_name_hash has been populated, record it in the hash
361 2008-09-01 Paul Brook <paul@codesourcery.com>
363 * doc/invoke.texi: Document -mword-relocations.
364 * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
365 * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
366 * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
367 * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
368 (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
369 (arm_emit_movpair): New function.
370 (arm_print_operand <c>): Handle sybolic addresses.
371 * config/arm/arm.h (TARGET_USE_MOVT): Define.
372 (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
373 * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
374 * config/arm/arm.opt: Add -mword-relocations.
375 * config/arm/arm.md (movsi): Use arm_emit_movpair.
376 (arm_movt, arm_movw): New.
378 2008-09-01 Paul Brook <paul@codesourcery.com>
380 * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
381 Allow Interworking on ARMv4 EABI based targets.
382 * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
383 (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
385 2008-09-01 Paul Brook <paul@codesourcery.com>
387 * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
388 optimized LT0 test. Remove optimization for GT.
390 2008-09-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
392 * pa64-hpux.h (LIB_SPEC): Link against librt when building static
394 * pa-hpux11.h (LIB_SPEC): Likewise.
396 * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
399 2008-09-01 Jan Hubicka <jh@suse.cz>
401 * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
402 present, use only counts; when guessed use only frequencies.
403 (estimate_bb_frequencies): Use function_frequency.
404 * profile.c (compute_branch_probabilities): Exit early when
405 profile reading failed. Set profile_status.
406 (branch_prob): Do not set profile_status.
408 2008-09-01 Aldy Hernandez <aldyh@redhat.com>
410 * tree.c (protected_set_expr_location): New.
411 * tree.h (protected_set_expr_location): New prototype.
412 * c-tree.h (build_array_ref): Add argument.
413 (parser_build_unary_op): Same.
414 * c-typeck.c (build_indirect_ref): Handle new location argument.
415 (build_array_ref): Same.
416 (parser_build_unary_op): Same.
417 * gimplify.c (gimplify_asm_expr): Set input_location before calling
419 * c-omp.c (c_finish_omp_atomic): Pass location when calling
421 * c-common.c (finish_label_address_expr): Handle new location
423 * c-common.h (build_indirect_ref): Add argument.
424 (finish_label_address_expr): Same.
425 * c-parser.c (c_parser_unary_expression): Pass location to build
427 (c_parser_postfix_expression): Same.
429 2008-09-01 Paul Brook <paul@codesourcery.com>
431 * config/arm/arm.md: Include cortex-r4f.md.
432 (attr fpu): Update type list.
433 (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
434 fconstd, fcmps and fcmpd.
435 (attr tune_cortexr4): Define.
436 (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
437 * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
438 fconsts, fconstd, fcmps and fcmpd. Use them in insn patterns.
439 * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
440 * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
442 * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
443 cortex_a8_vfp_farith: Ditto.
444 * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
445 * config/arm/cortex-r4.md: Use tune_cortexr4.
446 * config/arm/cortex-r4f.md: New file.
448 2008-09-01 Richard Guenther <rguenther@suse.de>
450 PR tree-optimization/37305
451 * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
452 the result of constant conversions.
453 (fold_gimple_assign): Likewise.
455 2008-09-01 Andrey Belevantsev <abel@ispras.ru>
457 * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
458 #ifdef ENABLE_CHECKING.
460 2008-09-01 Andrey Belevantsev <abel@ispras.ru>
462 * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
463 * sched-int.h (print_insn, print_pattern, print_value): Declare also
464 when !INSN_SCHEDULING.
466 2008-09-01 Andreas Schwab <schwab@suse.de>
468 * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
470 2008-09-01 Paul Brook <paul@codesourcery.com>
472 * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
474 2008-09-01 Jan Hubicka <jh@suse.cz>
476 * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
478 * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
479 * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
480 * gimplify.c (gimplify_init_constructor): Add speed operand.
481 * tree-sra.c (decide_block_copy): Likewise.
482 * tree-inline.c (estimate_move_cost): Likewise.
483 * config/alpha/alpha.h (MOVE_RATIO): Update.
484 * config/frv/frv.c (MOVE_RATIO): Update.
485 * config/spu/spu.h (MOVE_RATIO): Update.
486 * config/sparc/sparc.h (MOVE_RATIO): Update.
487 * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
488 * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
489 * config/cris/cris.h (MOVE_RATIO): Update.
490 * config/mn10300/mn10300.h (MOVE_RATIO): Update.
491 * config/arm/arm.h (MOVE_RATIO): Update.
492 * config/pa/pa.md: Update uses of MOVE_RATIO
493 * config/pa/pa.h (MOVE_RATIO): Update.
494 * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
495 * config/h8300/h8300.h (MOVE_RATIO): Update.
496 * config/v850/v850.h (MOVE_RATIO): Update.
497 * config/bfin/bfin.h (MOVE_RATIO): Update.
499 2008-08-31 Andrey Belevantsev <abel@ispras.ru>
500 Dmitry Melnik <dm@ispras.ru>
501 Dmitry Zhurikhin <zhur@ispras.ru>
502 Alexander Monakov <amonakov@ispras.ru>
503 Maxim Kuvyrkov <maxim@codesourcery.com>
505 * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
506 sel-sched-dump.c, sel-sched-ir.c: New files.
507 * Makefile.in (OBJS-common): Add selective scheduling object
509 (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
510 (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
511 (sched-vis.o): Add dependency on $(INSN_ATTR_H).
512 * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
513 * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
514 (make_forwarder_block): Update loop latch if we have redirected
516 * cfgloop.c (get_loop_body_in_custom_order): New function.
517 * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
518 (CP_FALLTHRU_PREHEADERS): Likewise.
519 (get_loop_body_in_custom_order): Declare.
520 * cfgloopmanip.c (has_preds_from_loop): New.
521 (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
522 Assert that the preheader edge will be fall thru when it is set.
523 * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
524 fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
525 fsel-sched-substitution, fselective-scheduling): New flags.
526 * cse.c (hash_rtx_cb): New.
528 * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
529 sel_sched_insn_cnt): New counters.
530 * final.c (compute_alignments): Export. Free dominance info after loop_optimizer_finalize.
531 * genattr.c (main): Output maximal_insn_latency prototype.
532 * genautomata.c (output_default_latencies): New. Factor its code from ...
533 (output_internal_insn_latency_func): ... here.
534 (output_internal_maximal_insn_latency_func): New.
535 (output_maximal_insn_latency_func): New.
536 * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
537 (struct hard_reg_set_iterator): New.
538 (hard_reg_set_iter_init, hard_reg_set_iter_set,
539 hard_reg_set_iter_next): New functions.
540 (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
541 * lists.c (remove_free_INSN_LIST_node,
542 remove_free_EXPR_LIST_node): New functions.
543 * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
544 set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
545 (loop_optimizer_finalize): Do not verify flow info after reload.
546 * recog.c (validate_replace_rtx_1): New parameter simplify.
547 Default it to true. Update all uses. Factor out simplifying
549 (simplify_while_replacing): ... this new function.
550 (validate_replace_rtx_part,
551 validate_replace_rtx_part_nosimplify): New.
552 * recog.h (validate_replace_rtx_part,
553 validate_replace_rtx_part_nosimplify): Declare.
554 * rtl.c (rtx_equal_p_cb): New.
555 (rtx_equal_p): Use it.
556 * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
557 (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
558 debug_bb_n_slim, debug_bb_slim, print_rtl_slim): Likewise.
559 * vecprim.h: Add a vector type for unsigned int.
560 * haifa-sched.c: Include vecprim.h and cfgloop.h.
561 (issue_rate, sched_verbose_param, note_list, dfa_state_size,
562 ready_try, cycle_issued_insns, spec_info): Make global.
563 (readyp): Initialize.
564 (dfa_lookahead): New global variable.
565 (old_max_uid, old_last_basic_block): Remove.
566 (h_i_d): Make it a vector.
567 (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
569 (after_recovery, adding_bb_to_current_region_p):
570 New variables to handle correct insertion of the recovery code.
571 (struct ready_list): Move declaration to sched-int.h.
572 (rgn_n_insns): Removed.
573 (rtx_vec_t): Move to sched-int.h.
574 (find_insn_reg_weight): Remove.
575 (find_insn_reg_weight1): Rename to find_insn_reg_weight.
576 (haifa_init_h_i_d, haifa_finish_h_i_d):
577 New functions to initialize / finalize haifa instruction data.
578 (extend_h_i_d, init_h_i_d): Rewrite.
579 (unlink_other_notes): Move logic to add_to_note_list. Handle
581 (ready_lastpos, ready_element, ready_sort, reemit_notes,
582 find_fallthru_edge): Make global, remove static prototypes.
583 (max_issue): Make global. Add privileged_n and state parameters. Use
585 (extend_global, extend_all): Removed.
586 (init_before_recovery): Add new param. Fix the handling of the case
587 when we insert a recovery code before the EXIT which has a predecessor
588 with a fallthrough edge to it.
589 (create_recovery_block): Make global. Rename to
590 sched_create_recovery_block. Update.
591 (change_pattern): Rename to sched_change_pattern. Make global.
592 (speculate_insn): Rename to sched_speculate_insn. Make global.
593 Split haifa-specific functionality into ...
594 (haifa_change_pattern): New static function.
595 (sched_extend_bb): New static function.
596 (sched_init_bbs): New function.
597 (current_sched_info): Change type to struct haifa_sched_info.
598 (insn_cost): Adjust for selective scheduling.
599 (dep_cost_1): New function. Move logic from ...
600 (dep_cost): ... here.
601 (dep_cost): Use dep_cost_1.
602 (contributes_to_priority_p): Use sched_deps_info instead of
604 (priority): Adjust to work with selective scheduling. Process the
605 corner case when all dependencies don't contribute to priority.
606 (rank_for_schedule): Use ds_weak instead of dep_weak.
607 (advance_state): New function. Move logic from ...
608 (advance_one_cycle): ... here.
609 (add_to_note_list, concat_note_lists): New functions.
610 (rm_other_notes): Make static. Adjust for selective scheduling.
611 (remove_notes, restore_other_notes): New functions.
612 (move_insn): Add two arguments. Update assert. Don't call
614 (choose_ready): Remove lookahead variable, use dfa_lookahead.
615 Remove more_issue, max_points. Move the code to initialize
616 max_lookahead_tries to max_issue.
617 (schedule_block): Remove rgn_n_insns1 parameter. Don't allocate
618 ready. Adjust use of move_insn. Call restore_other_notes.
620 (sched_init, sched_finish): Move Haifa-specific initialization/
622 (haifa_sched_init, haifa_sched_finish): ... respectively.
624 (setup_sched_dump): New function.
625 (haifa_init_only_bb): New static function.
626 (haifa_speculate_insn): New static function.
627 (try_ready): Use haifa_* instead of speculate_insn and
629 (extend_ready, extend_all): Remove.
630 (sched_extend_ready_list, sched_finish_ready_list): New functions.
631 (create_check_block_twin, add_to_speculative_block): Use
632 haifa_insns_init instead of extend_global. Update to use new
633 initialization functions. Change parameter. Factor out code from
634 create_check_block_twin to ...
635 (sched_create_recovery_edges) ... this new function.
637 (sched_scan_info): New.
638 (extend_bb): Use sched_scan_info.
639 (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
640 static functions for walking through scheduling region.
641 (sched_luids): New vector variable to replace uid_to_luid.
642 (luids_extend_insn): New function.
643 (sched_max_luid): New variable.
644 (luids_init_insn): New function.
645 (sched_init_luids, sched_finish_luids): New functions.
646 (insn_luid): New debug function.
647 (sched_extend_target): New function.
648 (haifa_init_insn): New static function.
649 (sched_init_only_bb): New hook.
650 (sched_split_block): New hook.
651 (sched_split_block_1): New function.
652 (sched_create_empty_bb): New hook.
653 (sched_create_empty_bb_1): New function.
654 (common_sched_info, ready): New global variables.
655 (current_sched_info_var): Remove.
656 (move_block_after_check): Use common_sched_info.
657 (haifa_luid_for_non_insn): New static function.
658 (init_before_recovery): Use haifa_init_only_bb instead of
660 (increase_insn_priority): New.
661 * modulo-sched.c: (issue_rate): Remove static declaration.
662 (sms_sched_info): Change type to haifa_sched_info.
663 (sms_sched_deps_info, sms_common_sched_info): New variables.
664 (setup_sched_infos): New.
665 (sms_schedule): Initialize them. Call haifa_sched_init/finish.
666 Do not call regstat_free_calls_crossed.
667 (sms_print_insn): Use const_rtx.
668 * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
669 PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
670 PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
671 PARAM_SCHED_MEM_TRUE_DEP_COST): New.
672 * sched-deps.c (sched_deps_info): New. Update all relevant uses of
673 current_sched_info to use it.
674 (enum reg_pending_barrier_mode): Move to sched-int.h.
675 (h_d_i_d): New variable. Initialize to NULL.
676 ({true, output, anti, spec, forward}_dependency_cache): Initialize
678 (estimate_dep_weak): Remove static declaration.
679 (sched_has_condition_p): New function. Adjust users of
680 sched_get_condition to use it instead.
681 (conditions_mutex_p): Add arguments indicating which conditions are
683 (sched_get_condition_with_rev): Rename from sched_get_condition. Add
684 argument to indicate whether returned condition is reversed. Do not
685 generate new rtx when condition should be reversed; indicate it by
686 setting new argument instead.
687 (add_dependence_list_and_free): Add deps parameter.
688 Update all users. Do not free dependence list when
689 deps context is readonly.
690 (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
692 (remove_from_dependence_list, remove_from_both_dependence_lists): New.
693 (remove_from_deps): New. Use the above functions.
694 (cur_insn, can_start_lhs_rhs_p): New static variables.
695 (add_or_update_back_dep_1): Initialize present_dep_type.
696 (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
697 haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
698 haifa_note_dep): New functions implementing dependence hooks for
700 (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
701 note_dep): New functions.
702 (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
704 (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
705 (free_deps): Initialize deps->reg_last.
706 (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
707 sched_analyze_insn): Update to use dependency hooks infrastructure
708 and readonly contexts.
709 (deps_analyze_insn): New function. Move part of logic from ...
710 (sched_analyze): ... here. Also move some logic to ...
711 (deps_start_bb): ... here. New function.
712 (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
714 (sched_deps_init): New function. Move code from ...
715 (init_dependency_caches): ... here. Remove.
716 (init_deps_data_vector): New.
717 (sched_deps_finish): New function. Move code from ...
718 (free_dependency_caches): ... here. Remove.
719 (init_deps_global, finish_deps_global): Adjust for use with
720 selective scheduling.
721 (get_dep_weak): Move logic to ...
722 (get_dep_weak_1): New function.
723 (ds_merge): Move logic to ...
724 (ds_merge_1): New static function.
725 (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
726 (ds_get_max_dep_weak): New function.
727 * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
728 (n_insns): Rename to rgn_n_insns.
729 (debug_ebb_dependencies): New function.
730 (init_ready_list): Use it.
731 (begin_schedule_ready): Use sched_init_only_bb.
732 (ebb_print_insn): Indicate when an insn starts a new cycle.
733 (contributes_to_priority, compute_jump_reg_dependencies,
734 add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
735 (add_block1): Remove to ebb_add_block.
736 (ebb_sched_deps_info, ebb_common_sched_info): New variables.
737 (schedule_ebb): Initialize them. Use remove_notes instead of
738 rm_other_notes. Use haifa_local_init/finish.
739 (schedule_ebbs): Use haifa_sched_init/finish.
740 * sched-int.h: Include vecprim.h, remove rtl.h.
741 (struct ready_list): Delete declaration.
742 (sched_verbose_param, enum sched_pass_id_t,
743 bb_vec_t, insn_vec_t, rtx_vec_t): New.
744 (struct sched_scan_info_def): New structure.
745 (sched_scan_info, sched_scan, sched_init_bbs,
746 sched_init_luids, sched_finish_luids, sched_extend_target,
747 haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
748 (struct common_sched_info_def): New.
749 (common_sched_info, haifa_common_sched_info,
750 sched_emulate_haifa_p): Declare.
752 (sched_luids): Declare.
753 (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
754 (sched_max_luid, insn_luid): Declare.
755 (note_list, remove_notes, restore_other_notes, bb_note): Declare.
756 (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
757 print_insn, print_pattern, print_value, haifa_classify_insn,
758 sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
759 setup_sched_dump, sched_init, sched_finish,
760 sel_insn_is_speculation_check): Export.
761 (struct ready_list): Move from haifa-sched.c.
762 (ready_try, ready, max_issue): Export.
763 (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
764 sched_init_only_bb, sched_split_block, sched_split_block_1,
765 sched_create_empty_bb, sched_create_empty_bb_1,
766 sched_create_recovery_block, sched_create_recovery_edges): Export.
767 (enum reg_pending_barrier_mode): Export.
768 (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
770 (struct sched_info): Rename to haifa_sched_info. Use const_rtx for
771 print_insn field. Move add_block and fix_recovery_cfg to
772 common_sched_info_def. Move compute_jump_reg_dependencies, use_cselib ...
773 (struct sched_deps_info_def): ... this new structure.
774 (sched_deps_info): Declare.
775 (struct spec_info_def): Remove weakness_cutoff, add
776 data_weakness_cutoff and control_weakness_cutoff.
777 (spec_info): Declare.
778 (struct _haifa_deps_insn_data): Split from haifa_insn_data. Add
780 (struct haifa_insn_data): Rename to struct _haifa_insn_data.
781 (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
782 (current_sched_info): Change type to struct haifa_sched_info.
783 (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
784 (h_d_i_d): New variable.
785 (HDID): New accessor macro.
786 (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
787 (HID): New accessor macro. Rewrite h_i_d accessor macros through HID
789 (IS_SPECULATION_CHECK_P): Update for selective scheduler.
790 (enum SCHED_FLAGS): Update for selective scheduler.
791 (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
792 (init_dependency_caches, free_dependency_caches): Delete declarations.
793 (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
794 estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
795 ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
796 sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
797 haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
799 (rm_other_notes): Delete declaration.
800 (schedule_block): Remove one argument.
801 (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
802 ready_element, ready_lastpos, sched_extend_ready_list,
803 sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
804 concat_note_lists): Export.
805 (struct region): Move from sched-rgn.h.
806 (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
807 RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
808 BLOCK_TO_BB, CONTAINING_RGN): Export.
809 (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
810 (current_nr_blocks, current_blocks, target_bb): Likewise.
811 (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
812 sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
813 sched_rgn_local_init, extend_regions,
814 rgn_make_new_region_out_of_new_block, compute_priorities,
815 debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
816 extend_rgns, deps_join rgn_setup_common_sched_info,
817 rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
818 dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
819 (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
820 increase_insn_priority): Likewise.
821 * sched-rgn.c: Include sel-sched.h.
822 (ref_counts): New static variable. Use it ...
823 (INSN_REF_COUNT): ... here. Rewrite and move closer to uses.
824 (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
825 (sched_is_disabled_for_current_region_p): Delete static declaration.
826 (struct region): Move to sched-int.h.
827 (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
828 ebb_head): Define and initialize.
829 (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
830 BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
831 BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
833 (find_single_block_region): Add new argument to indicate that EBB
834 regions should be constructed.
835 (debug_live): Delete declaration.
836 (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
837 (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
839 (init_regions): Delete declaration.
840 (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
841 rgn_estimate_number_of_insns): New.
842 (too_large): Use estimate_number_of_insns.
843 (haifa_find_rgns): New. Move the code from ...
844 (find_rgns): ... here. Call either sel_find_rgns or haifa_find_rgns.
845 (free_trg_info): New.
846 (compute_trg_info): Allocate candidate tables here instead of ...
847 (init_ready_list): ... here.
848 (rgn_print_insn): Use const_rtx.
849 (contributes_to_priority, extend_regions): Delete static declaration.
850 (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
851 (add_block1): Rename to rgn_add_block.
852 (debug_rgn_dependencies): Delete static qualifier.
853 (new_ready): Use sched_deps_info. Simplify.
854 (rgn_common_sched_info, rgn_const_sched_deps_info,
855 rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
856 (region_sched_info): Rename to rgn_const_sched_info.
857 (deps_join): New, extracted from ...
858 (propagate_deps): ... here.
859 (compute_block_dependences, debug_dependencies): Update for selective
861 (free_rgn_deps, compute_priorities): New functions.
862 (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
863 sched_rgn_compute_dependencies): New functions.
864 (schedule_region): Use them.
865 (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
866 rgn_setup_common_sched_info, rgn_setup_sched_infos):
868 (schedule_insns): Call new functions that were split out.
869 (rgn_make_new_region_out_of_new_block): New.
870 (get_rgn_sched_max_insns_priority): New.
871 (rest_of_handle_sched, rest_of_handle_sched2): Call selective
872 scheduling when appropriate.
873 * sched-vis.c: Include insn-attr.h.
874 (print_value, print_pattern): Make global.
875 (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
876 * target-def.h (TARGET_SCHED_ADJUST_COST_2,
877 TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
878 TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
879 TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
880 TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
881 hooks. Initialize them to 0.
882 (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
883 * target.h (struct gcc_target): Add them. Rename gen_check field to
885 * flags.h (sel_sched_switch_set): Declare.
886 * opts.c (sel_sched_switch_set): New variable.
887 (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
888 pipelining is disabled from command line.
889 (common_handle_option): Record whether selective scheduling is
890 requested from command line.
891 * doc/invoke.texi: Document new flags and parameters.
892 * doc/tm.texi: Document new target hooks.
893 * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
894 (dfa_state_size): Do not declare locally.
895 * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
896 * config/rs6000/rs6000.c (rs6000_init_sched_context,
897 rs6000_alloc_sched_context, rs6000_set_sched_context,
898 rs6000_free_sched_context): New functions.
899 (struct _rs6000_sched_context): New.
900 (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
902 (rs6000_sched_finish): Do not run for selective scheduling.
904 2008-08-31 Jan Hubicka <jh@suse.cz>
906 * frv.c (frv_rtx_costs): Update forward declaration.
907 * spu.c (spu_rtx_costs): Likewise.
908 * pdp11.c: Include df.h
909 (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
910 * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
911 (m68hc11_rtx_costs_1): Fix call of rtx_cost.
912 * iq2000.c (iq2000_address_cost): Add speed argument.
913 (iq2000_rtx_costs): Likewise.
914 * mn10300.c (mn10300_address_cost_1): Remove speed argument;
915 update call of mn10300_address_cost.
916 * mcore.c: Include df.h
917 (mcore_rtx_costs): Update prototype.
918 * score3.c: Include df.h
919 (score3_rtx_costs): Remove speed argument.
920 * score7.c: Include df.h
921 (score7_address_cost): Remove speed argument.
922 * score-protos.h (score_address_cost): Update prototype.
923 * score.c: Include df.h
924 (score_rtx_costs): Update call of costs functions.
925 * v850.c (v850_rtx_costs): Add bool argument.
927 2008-08-31 Hans-Peter Nilsson <hp@axis.com>
929 * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
931 2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
933 * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
934 * config/i386/gthr-win32.c (__gthread_setspecific): Same.
936 2008-08-31 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
938 * mkmap-flat.awk: Add option pe_dll.
939 * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
940 * config/i386/t-cygwin (SHLIB_LC): Add.
941 * config/i386/t-mingw32 (SHLIB_LC): Add.
942 * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
943 (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
944 (LINK_SPEC): Support libgcc_s.
945 (LIBGCC_SPEC): Support libgcc_s.
946 (LIBGCC_SONAME): New.
948 2008-08-31 Jan Hubicka <jh@suse.cz>
950 * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
951 mistakely had old version of patch.
953 * ipa-cp.c (ipcp_need_original_clone_p): Remove.
954 (ipcp_estimate_growth): New.
955 (ipcp_insert_stage): Use ipcp_estimate_growth.
956 * profile.c (branch_prob): When reading failed, do not consider
959 2008-08-31 Jan Hubicka <jh@suse.cz>
961 * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
962 loop is optimized for speed.
964 2008-08-31 Richard Guenther <rguenther@suse.de>
967 * fold-const.c (fold_binary): Retain conversions in folding
970 2008-08-31 Jan Hubicka <jh@suse.cz>
972 * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
973 * predict.c (maybe_hot_frequency_p): Make inline.
974 (maybe_hot_count_p): Break out from ...
975 (maybe_hot_bb_p): ... this one.
976 (maybe_hot_edge_p): Simplify.
977 * basic-block.h (probably_cold_bb_p): Remove.
979 2008-08-31 Jakub Jelinek <jakub@redhat.com>
982 * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
984 * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
985 * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
987 * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
990 2008-08-31 Jan Hubicka <jh@suse.cz>
992 * predict.c (PROB_VERY_LIKELY): Make small enough so things
994 * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
996 2008-08-31 Jakub Jelinek <jakub@redhat.com>
999 * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1002 * dwarf2out.c (native_encode_initializer): Subtract min_index for
1003 non-range array index. Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1005 2008-08-31 Jan Hubicka <jh@suse.cz>
1007 * sparc.h (BRANCH_COST): Fix macro definition.
1008 * avr.c (avr_operand_rtx_cost): Add speed argument.
1009 (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
1011 2008-08-31 Richard Guenther <rguenther@suse.de>
1013 * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1014 types instead of operands. Re-instantiate verifying of
1015 binary expression operands.
1017 2008-08-30 Jan Hubicka <jh@suse.cz>
1019 * fwprop.c (should_replace_address): Add speed attribute.
1020 (PR_OPTIMIZE_FOR_SPEED): New flag.
1021 (propagate_rtx_1): Use it.
1022 (propagate_rtx): Set it.
1023 (try_fwprop_subst): Update call of rtx_costs.
1024 (forward_propagate_and_simplify): LIkewise.
1025 * hooks.c (hook_int_rtx_bool_0): New
1026 (hook_bool_rtx_int_int_intp_false): Replace by ...
1027 (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1028 * hooks.h (hook_int_rtx_bool_0): New
1029 (hook_bool_rtx_int_int_intp_false): Replace by ...
1030 (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1031 * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
1032 (prepare_cmp_insn): UPdate call of rtx_cost.
1033 * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
1034 (reload_cse_simplify_operands): Update call of rtx_cost.
1035 (reload_cse_move2add): call of rtx_cost.
1036 * target.h (struct gcc_target): Update rtx_costs and address_costs.
1037 * rtlanal.c (rtx_cost): Add speed argument.
1038 (address_cost): Add speed argument
1039 (default_address_cost): Likewise.
1040 (insn_rtx_cost): Likewise.
1041 * cfgloopanal.c (seq_cost): Add speed argument.
1042 (target_reg_cost, target_spill_cost): Turn to array.
1043 (init_set_costs): Update for speed.
1044 (estimate_reg_pressure_cost): Add speed argument.
1045 * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
1046 * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
1047 * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
1048 (seq_cost): Add speed argument.
1049 (computation_cost): Add speed arugment.
1050 (add_cost, multiply_by_const, get_address_cost): add speed argument.
1051 (force_expr_to_var_cost): Update for profile info.
1052 (force_var_cost): Likewise.
1053 (split_address_cost): Likewise.
1054 (ptr_difference_cost): Likewise.
1055 (difference_cost): Likewise.
1056 (get_computation_cost_at): Likewise.
1057 (determine_iv_cost): Likewise.
1058 (ivopts_global_cost_for_size): Likewise.
1059 (rewrite_use_address): Likewise.
1060 (tree_ssa_iv_optimize_loop): Initialize speed field.
1061 * cse.c (optimize_this_for_speed_p): New static var.
1062 (notreg_cost): Update call of rtx_cost.
1063 (cse_extended_basic_block): set optimize_this_for_speed_p.
1064 * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
1065 (noce_try_cmove_arith): Likewise.
1066 (noce_try_sign_mask): LIkewise.
1067 * expr.c (compress_float_constant): Update rtx_cost calls.
1068 * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
1069 (addr_to_parts): Likewise.
1070 (create_mem_ref): Likewise.
1071 * dse.c (find_shift_sequence): Add speed argument.
1072 (replace_read): Update call.
1073 * calls.c (precompute_register_parameters): Update call of rtx_cost.
1074 * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
1075 * neg_cost, shift_cost, shiftadd_cost,
1076 shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
1077 mul_highpart_cost): Increase dimension.
1078 (init_expmed): Initialize for both size and speed.
1079 (expand_shift): Use profile.
1080 (synth_mult): Use profile.
1081 (choose_mult_variant): Use profile.
1082 (expand_mult): Use profile.
1083 (expand_mult_highpart_optab): Use profile.
1084 (expand_mult_highpart): Use profile.
1085 (expand_smod_pow2): Use profile.
1086 (expand_divmod): Use profile.
1087 * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
1088 * loop-invariant.c (create_new_invariant): Use profile.
1089 (gain_for_invariant): Add speed parameter.
1090 (best_gain_for_invariant): Likewise.
1091 (find_invariants_to_move): Likewise.
1092 (move_single_loop_invariants): Set it.
1093 * target-def.h (TARGET_RTX_COSTS): Use hook.
1094 * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
1095 (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
1096 * output.h (default_address_cost): Update prototype.
1097 * combine.c (optimize_this_for_speed_p): New static var.
1098 (combine_validate_cost): Update call of rtx_cost.
1099 (combine_instructions): Set optimize_this_for_speed_p.
1100 (expand_compound_operation): Update call of rtx_cost.
1101 (make_extraction):Update call of rtx_cost.
1102 (force_to_mode):Update call of rtx_cost.
1103 (distribute_and_simplify_rtx):Update call of rtx_cost.
1104 * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
1105 (estimate_reg_pressure_cost): Update prototype.
1106 * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
1107 * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
1109 * config/alpha/alpha.c (alpha_rtx_costs): Update.
1110 (alpha_rtx_costs): Update.
1111 * config/frv/frv.c (frv_rtx_costs): Update.
1112 * config/s390/s390.c (s390_rtx_costs): Update.
1113 * config/m32c/m32c.c (m32c_memory_move_cost): Update.
1114 (m32c_rtx_costs): Update.
1115 * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
1116 (spu_rtx_costs): Update.
1117 * config/sparc/sparc.c (sparc_rtx_costs): Update.
1118 * config/m32r/m32r.c (m32r_rtx_costs): Update.
1119 * config/i386/i386.c (:ix86_address_cost): Update.
1120 (ix86_rtx_costs): Update.
1121 * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
1122 * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
1123 * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
1124 * config/crx/crx.c (crx_address_cost): Update.
1125 * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
1126 * config/stormy16/stormy16.c
1127 (xstormy16_address_cost, xstormy16_rtx_costs): Update.
1128 * config/m68hc11/m68hc11.c
1129 (m68hc11_address_cost, m68hc11_rtx_costs): Update.
1130 * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
1131 * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
1132 * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
1133 * config/ia64/ia64.c (ia64_rtx_costs): Update.
1134 * config/m68k/m68k.c (m68k_rtx_costs): Update.
1135 * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
1136 * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
1137 * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
1138 (mcore_rtx_costs): update.
1139 * config/score/score3.c (score3_rtx_costs): Update.
1140 * config/score/score7.c (score7_rtx_costs): Update.
1141 * config/score/score3.h (score3_rtx_costs):Update.
1142 * config/score/score7.h (score7_rtx_costs): Update.
1143 * config/score/score.c (score_rtx_costs): Update.
1144 * config/arm/arm.c (arm_address_cost): Update.
1145 (arm_rtx_costs_1): Update.
1146 (arm_rtx_costs_1): Update.
1147 (arm_size_rtx_costs): Update.
1148 (arm_size_rtx_costs): Update.
1149 (arm_size_rtx_costs): Update.
1150 (arm_xscale_rtx_costs): Update.
1151 (arm_thumb_address_cost): Update.
1152 * config/pa/pa.c (hppa_address_cost): Update.
1153 * config/mips/mips.c (mips_rtx_costs): Update.
1154 * config/vax/vax.c (vax_address_cost): Update.
1155 * config/h8300/h8300.c (h8300_shift_costs): Update.
1156 (h8300_rtx_costs): Update.
1157 * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
1158 (v850_rtx_costs): Update.
1159 * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
1160 * config/bfin/bfin.c
1161 (bfin_address_cost): Update.
1162 (bfin_rtx_costs): Update.
1163 * stmt.c (lshift_cheap_p): Update.
1165 2008-08-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
1168 * expmed.c (extract_bit_field_1): Check the mode size to make
1169 sure the vector modes have the same size.
1171 2008-08-29 Michael Meissner <gnu@the-meissners.org>
1173 * dojump.c (top level): Include basic-block.h to declare
1174 optimize_insn_for_speed_p
1176 * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1178 * opts.h (CL_SAVE): New option class for marking options that are
1179 target specific options usable in the target attribute.
1180 (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
1182 * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
1183 can easily find the target specific options that are safe to use
1184 in the attribute or pragma.
1186 * attribs.c (decl_attributes): Change #pragma GCC option to
1187 #pragma GCC target, and attribute((option(...))) to
1188 attribute((target(...))).
1190 * doc/extend.texi (target attribute): Change from option
1191 attribute. Delete push/pop/reset.
1192 (#pragma GCC target): Change from #pragma GCC option. Delete
1194 (#pragma GCC push_options): Document new pragma.
1195 (#pragma GCC pop_options): Document new pragma.
1196 (#pragma GCC reset_options): Document new pragma.
1198 * targhooks.c (default_target_option_valid_attribute_p): Add
1199 warning about port not supporting target attributes.
1200 (default_target_option_pragma_parse): New function, warn about
1201 #pragma GCC target not being supported.
1203 * targhooks.h (default_target_option_pragma_parse): Add
1206 * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1207 TI_CURRENT_OPTION_PRAGMA.
1208 (current_target_pragma): Rename from current_option_pragma.
1210 * target.h: (struct target_option): Delete booleans for changing
1211 the optimization level on hot/cold functions. Change signature of
1212 pragma_parse hook to take a second tree.
1214 * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1216 * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1217 that the declaration is done at global scope.
1219 * langhooks.c (add_builtin_function_common): Move most of the code
1220 from add_builtin_function here, calling the hook passed in.
1221 (add_builtin_function): Call add_builtin_function_common with
1222 standard builtin hook.
1223 (add_builtin_function_ext_scope): New function to add builtins to
1226 * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1228 (add_builtin_function_ext_scope): Add declaration.
1230 * c-pragma.c (handle_pragma_target): Rename from
1231 handle_pragma_option, #pragma GCC option is now #pragma GCC
1232 target. Move warning about port not supporting target options to
1233 default pragma parse hook. Remove push/pop/reset from this
1235 (handle_pragma_optimize): Remove push/pop/reset from this pragma.
1236 (option_stack): Delete static variable.
1237 (optimize_stack): Ditto.
1238 (optons_stack): New stack of saved target and optimization
1240 (handle_pragma_push_options): New function to handle pushing both
1241 target and optimization options.
1242 (handle_pragma_pop_options): New function to handle popping both
1243 target and optimization options.
1244 (handle_pragma_reset_options): New function to handle resetting
1245 both target and optimization options to their initial state.
1246 (init_pragma): Rename handle_pragma_option to
1247 handle_pragma_target. Add support for push_options, pop_options,
1248 and reset_options pragmas.
1250 * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
1251 default_target_option_pragma_parse.
1252 (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
1253 default_target_option_valid_attribute_p.
1254 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1255 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1256 (TARGET_OPTION_HOOKS): Delete the fields for whether to change
1257 optimization level on hot/cold functions.
1259 * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1260 if the caller and callee have different optimization levels.
1262 * c-common.c (handle_target_attribute): Rename from
1263 handle_option_attribute, attribute((option(...))) is now
1264 attribute((target(...))). Move warning if the port does not
1265 support target attributes to the default hook.
1266 (handle_hot_attribute): Delete code to change the optimization
1267 level of hot functions.
1268 (handle_cold_attribute): Ditto.
1270 * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
1271 argument that is the binary tree options to use if there are no
1272 arguments. Call ix86_valid_target_attribute_tree instead of
1273 ix86_valid_option_attribute_tree.
1274 (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
1275 (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
1276 ix86_pragma_option_parse.
1278 * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1279 Rename from ix86_valid_option_attribute_tree.
1281 * config/i386/i386.c (ix86_add_new_builtins): New function to add
1282 new builtins when the ISA changes.
1283 (ix86_valid_target_attribute_tree): Rename from
1284 ix86_valid_option_attribute_tree. Change callers. If the
1285 function specified optimization options, use those as the starting
1286 point before setting up the target attributes. If the
1287 optimization options were changed in the course of setting the
1288 target attributes, record the new optimization options.
1289 (ix86_valid_target_attribute_tree_inner_p): Rename from
1290 ix86_valid_option_attribute_tree_inner_p. Change callers. Call
1291 ix86_add_new_builtins if the ISA changed.
1292 (ix86_valid_target_attribute_p): Rename from
1293 ix86_valid_option_attribute_p. Change callers.
1294 (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
1295 __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
1296 as delayed builtin functions.
1297 (struct builtin_isa): New structure to record builtin functions
1298 that should be delayed until the ISA for that function is used.
1299 (ix86_builtins_isa): Change from int to struct to track builtin
1300 functions we want to declare at some point.
1301 (def_builtin): If the front end can delay defining the builtin
1302 functions, don't create builtins for ISAs not part of the default
1304 (def_builtin_const): Ditto.
1305 (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
1306 __builtin_ia32_pcmov_v2di to be different builtin functions.
1307 (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
1308 a structure instead of an int.
1309 (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
1310 ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
1311 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1312 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1314 * config/ia64/ia64.h
1315 (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1316 (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1318 * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
1319 hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
1320 (LANG_HOOKS_INITIALIZER): Add
1321 LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
1323 2008-08-30 Kaz Kojima <kkojima@gcc.gnu.org>
1326 * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
1327 the reload address with the index register for SFmode
1328 access with a displacement.
1330 2008-08-30 Jan Hubicka <jh@suse.cz>
1332 * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
1333 * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
1334 * dojump.c (do_jump): Likewise.
1335 * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
1336 (note-if_info): Add BRANCH_COST.
1337 (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
1338 noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
1339 noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
1341 * expr.h (BRANCH_COST): Update default.
1342 * predict.c (predictable_edge_p): New function.
1343 * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
1344 Update BRANCH_COST call.
1345 * basic-block.h (predictable_edge_p): Declare.
1346 * config/alpha/alpha.h (BRANCH_COST): Update.
1347 * config/frv/frv.h (BRANCH_COST): Update.
1348 * config/s390/s390.h (BRANCH_COST): Update.
1349 * config/spu/spu.h (BRANCH_COST): Update.
1350 * config/sparc/sparc.h (BRANCH_COST): Update.
1351 * config/m32r/m32r.h (BRANCH_COST): Update.
1352 * config/i386/i386.h (BRANCH_COST): Update.
1353 * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
1354 * config/sh/sh.h (BRANCH_COST): Update.
1355 * config/pdp11/pdp11.h (BRANCH_COST): Update.
1356 * config/avr/avr.h (BRANCH_COST): Update.
1357 * config/crx/crx.h (BRANCH_COST): Update.
1358 * config/xtensa/xtensa.h (BRANCH_COST): Update.
1359 * config/stormy16/stormy16.h (BRANCH_COST): Update.
1360 * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
1361 * config/iq2000/iq2000.h (BRANCH_COST): Update.
1362 * config/ia64/ia64.h (BRANCH_COST): Update.
1363 * config/rs6000/rs6000.h (BRANCH_COST): Update.
1364 * config/arc/arc.h (BRANCH_COST): Update.
1365 * config/score/score.h (BRANCH_COST): Update.
1366 * config/arm/arm.h (BRANCH_COST): Update.
1367 * config/pa/pa.h (BRANCH_COST): Update.
1368 * config/mips/mips.h (BRANCH_COST): Update.
1369 * config/vax/vax.h (BRANCH_COST): Update.
1370 * config/h8300/h8300.h (BRANCH_COST): Update.
1371 * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
1372 * doc/invoke.texi (predictable-branch-cost-outcome): Document.
1373 * doc/tm.texi (BRANCH_COST): Update.
1375 2008-08-30 Samuel Tardieu <sam@rfc1149.net>
1378 * config/arm/arm.c (arm_optimization_options): Set
1379 flag_section_anchors to 2 instead of 1 to distinguish it from
1380 -fsection-anchors given explicitely on the command line.
1382 2008-08-30 Richard Sandiford <rdsandiford@googlemail.com>
1384 * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
1385 final insn of a split.
1387 2008-08-30 Jan Hubicka <jh@suse.cz>
1389 * postreload-gcse.c (gate_handle_gcse2): Disable for functions
1390 optimized for speed.
1391 * final.c (compute_alignments): Use optimize_bb_for_size_p.
1392 * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
1393 * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
1394 flag_gcse_after_reload_set): New static vars.
1395 (common_handle_option): Enable those flags for profile-use.
1396 (decode_options): Remove optimize_size flags that are handled
1397 on higher granuality.
1398 * tree-vectorizer.c (vectorize_loops): Use
1399 optimize_loop_nest_for_speed_p.
1400 * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
1401 * tree-predcom.c (tree_predictive_commoning): Use
1402 optimize_loop_for_speed_p.
1403 * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
1404 * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
1405 * predict.c (optimize_loop_for_speed_p): Fix walk.
1407 2008-08-30 Jan Hubicka <jh@suse.cz>
1409 * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
1411 (cgraph_decide_inlining_of_small_function): Use edge->count to detect
1412 profile presence locally.
1414 2008-08-29 Joseph Myers <joseph@codesourcery.com>
1417 * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
1418 versions before 4.0.
1420 2008-08-29 Jan Hubicka <jh@suse.cz>
1422 * tree-inline.c (insert_init_stmt): Insert sequence even when
1425 2008-08-29 Jeff Law <law@redhat.com>
1427 * mn10300.c (mn10300_secondary_reload_class): We need secondary
1428 reloads for AM33-2 if IN is a pseudo with an equivalent memory
1429 location and class is an FP register.
1431 2008-08-29 Jan Hubicka <jh@suse.cz>
1433 * see.c (see_merge_one_def_extension): Silence used uninitialized
1435 * matrix-reorg.c (check_allocation_function): Likewise.
1436 * config/i386/driver-i386.c (detect_caches_amd): Likewise.
1438 2008-08-29 Jakub Jelinek <jakub@redhat.com>
1441 * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
1442 compute new & and | in type rather than TREE_TYPE (arg0).
1444 * dwarf2out.c (fortran_common): Update comment.
1445 (gen_variable_die): Swap com_die and var_die variables in Fortran
1446 COMMON block handling code.
1448 * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
1450 * dwarf2out.c (gen_const_die): New function.
1451 (size_of_die, value_format, output_die): Output larger
1452 dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
1453 (native_encode_initializer): New function.
1454 (tree_add_const_value_attribute): Call it.
1455 (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
1457 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
1458 DECL_BY_REFERENCE decls don't pass TREE_READONLY and
1459 TREE_THIS_VOLATILE to add_type_attribute.
1461 * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
1463 (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
1466 * dwarf2out.c (loc_by_reference): New function.
1467 (add_location_or_const_value_attribute): Use it.
1470 * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
1471 as DW_TAG_variable children of DW_TAG_common_block rather than
1472 DW_TAG_member children. Put DW_AT_external to individual
1473 DW_TAG_variable DIEs, not to DW_TAG_common_block.
1475 * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
1476 loc_descriptor_from_tree_1.
1480 * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
1481 arguments to imported_module_or_decl.
1482 (debug_nothing_tree_tree): Removed.
1483 (debug_nothing_tree_tree_tree_bool): New prototype.
1484 * debug.c (do_nothing_debug_hooks): Adjust.
1485 (debug_nothing_tree_tree): Removed.
1486 (debug_nothing_tree_tree_tree_bool): New function.
1487 * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
1488 (gen_variable_die): Put all common vars for the
1489 same COMMON block under one DW_TAG_common_block.
1490 (declare_in_namespace): Return new context_die, for Fortran
1491 return the module DIE instead of adding extra declarations into
1493 (gen_type_die_with_usage): Adjust declare_in_namespace caller.
1494 (gen_namespace_die): If is_fortran (), generate DW_TAG_module
1495 instead of DW_TAG_namespace. If DECL_EXTERNAL is set, add
1497 (dwarf2out_global_decl): Don't skip Fortran global vars.
1498 (gen_decl_die): Likewise. Adjust declare_in_namespace callers.
1499 (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
1500 If NAME is non-NULL, add DW_AT_name. If CHILD is non-NULL, put
1501 DW_TAG_imported_declaration as child of previous
1502 DW_TAG_imported_module.
1503 * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
1504 * sdbout.c (sdb_debug_hooks): Likewise.
1505 * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1507 2008-08-29 Jan Hubicka <jh@suse.cz>
1509 * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
1511 * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
1512 * ipa-cp.c (n_cloning_candidates): New static variable.
1513 (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
1514 (ipcp_print_all_lattices): Improve debug output.
1515 (ipcp_cloning_candidate_p): New function.
1516 (ipcp_initialize_node_lattices): Use it.
1517 (ipcp_init_stage): Do only analyzis here; prettier debug output.
1518 (ipcp_propagate_stage): Prettier debug output.
1519 (ipcp_iterate_stage): Initialize latices here; prettier debug output.
1520 (ipcp_print_all_structures): Remove.
1521 (ipcp_need_redirect_p): Test !n_cloning_candidates.
1522 (ipcp_insert_stage): Prettier debug output; call
1523 cgraph_remove_unreachable_nodes before propagating.
1524 (pass_ipa_cp): Schedule function removal pass.
1525 * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
1527 (cgraph_maybe_hot_edge_p): Move to ...
1528 * predict.c (cgraph_maybe_hot_edge_p) ... here.
1529 * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
1530 (common_handle_option): Set them; enable ipa-cp when profiling.
1531 * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
1532 (ipa_print_all_jump_functions): Likewise.
1533 (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
1534 (ipa_print_node_params, ipa_print_all_params): New.
1535 * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
1536 ipa_print_all_param_flags): Remove.
1537 (ipa_print_node_params, ipa_print_all_params): New.
1539 2008-08-29 Bob Wilson <bob.wilson@acm.org>
1541 * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
1542 change from 2008-04-03.
1543 * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
1545 2008-08-29 Vladimir Makarov <vmakarov@redhat.com>
1549 * ira-color.c (push_allocnos_to_stack): Truncate
1550 removed_splay_allocno_vec.
1552 2008-08-29 Vladimir Makarov <vmakarov@redhat.com>
1555 * ira-color (ira_fast_allocation): Don't assign hard registers to
1558 2008-08-29 Jan Hubicka <jh@suse.cz>
1561 * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
1562 for cold internal loops.
1564 2008-08-29 Richard Guenther <rguenther@suse.de>
1566 * tree-ssa-structalias.c (create_variable_info_for): Do not
1567 create fields for heap vars or vars with a noalias state.
1568 For NO_ALIAS_ANYTHING variables add a self-constraint, not one
1571 2008-08-29 Richard Guenther <rguenther@suse.de>
1573 * common.opt (ftree-store-ccp): Mark as preserved for
1574 backward compatibility.
1575 * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
1576 * tree-pass.h (pass_store_ccp): Remove.
1577 * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
1578 (first_vdef): Remove declaration.
1579 (get_value_loaded_by): Likewise.
1580 * tree-ssa-ccp.c (do_store_ccp): Remove.
1581 (get_default_value): Simplify as do_store_ccp is always false
1582 now. Do not initialize mem_ref.
1583 (set_value_varying): Likewise.
1584 (canonicalize_float_value): Likewise.
1585 (set_lattice_value): Likewise.
1586 (likely_value): Likewise.
1587 (surely_varying_stmt_p): Likewise.
1588 (ccp_initialize): Likewise.
1589 (ccp_lattice_meet): Likewise.
1590 (ccp_visit_phi_node): Likewise.
1591 (ccp_fold): Likewise.
1592 (evaluate_stmt): Likewise.
1593 (visit_assignment): Likewise.
1594 (ccp_visit_stmt): Likewise.
1595 (execute_ssa_ccp): Fold into ...
1596 (do_ssa_ccp): ... this.
1597 (do_ssa_store_ccp): Remove.
1598 (gate_store_ccp): Likewise.
1599 (pass_store_ccp): Likewise.
1600 * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
1602 * tree-ssa-propagate.c (first_vdef): Remove.
1603 (get_value_loaded_by): Likewise.
1604 (replace_vuses_in): Likewise.
1605 (substitute_and_fold): Do not call replace_vuses_in.
1606 * opts.c (decode_options): Do not set flag_tree_store_ccp.
1608 2008-08-29 Richard Guenther <rguenther@suse.de>
1611 * tree-ssa-structalias.c (intra_create_variable_infos): Mark
1612 PARAM_NOALIAS tags with is_heapvar.
1613 * tree-ssa-operands.c (access_can_touch_variable): Offset
1614 based tests do not apply for heapvars. Fix offset test.
1616 2008-08-29 Jan Hubicka <jh@suse.cz>
1618 * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
1619 (-fipa-cp-clone): Enabled by default at -O3.
1620 * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
1621 make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
1623 2008-08-29 Jan Hubicka <jh@suse.cz>
1625 * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
1627 * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
1629 * gimple.c (giple_copy_call_skip_args): New function.
1630 (giple_copy_call_skip_args): Declare.
1632 * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
1633 * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
1634 (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
1635 (ipcp_create_replace_map): Improve debug output.
1636 (ipcp_need_redirect_p): Return false when not clonning.
1637 (ipcp_update_callgraph): Skip args.
1638 (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
1640 * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
1641 (save_inline_function_body): Update call of tree_function_versioning.
1642 * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
1643 * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
1644 (tree_function_versioning): Likewise.
1645 * tree-inline.h (tree_function_versioning): Update prototype.
1647 2008-08-29 Jan Hubicka <jh@suse.cz>
1649 * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
1650 * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
1651 * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
1652 * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
1653 * value-prof.c (gimple_divmod_fixed_value_transform,
1654 gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
1655 gimple_stringops_transform): Use optimize_bb_for_size_p.
1656 * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
1657 * final.c (compute_alignments): Use optimize_function_for_size_p.
1658 * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
1659 (fold_builtin_strcpy, fold_builtin_fputs): Use
1660 optimize_function_for_size_p.
1661 * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
1662 * recog.c (relax_delay_slots): Likewise.
1663 * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
1664 (execute_cse_reciprocals): Use optimize_bb_for_size_p.
1665 * ipa-inline.c (cgraph_decide_recursive_inlining): Use
1666 optimize_function_for_size_p.
1667 (cgraph_decide_inlining_of_small_function): Use
1668 optimize_function_for_size_p.
1669 * global.c (find_reg): Use optimize_function_for_size_p.
1670 * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
1671 flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
1672 flag_prefetch_loop_arrays. Those can work it out from profile.
1673 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
1674 optimize_loop_for_speed_p.
1675 * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
1677 (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
1678 * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
1679 * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
1680 * local-alloc.c (block_alloc): Pass BB pointer.
1681 (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
1682 * gcse.c (gcse_main): Use optimize_function_for_size_p.
1683 * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
1684 (decide_peel_completely): Likewise.
1685 * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
1686 optimize_loop_for_size_p.
1687 (vect_enhance_data_refs_alignment): Likewise.
1688 * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
1689 (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
1690 * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
1691 (try_crossjump_bb): Use optimize_bb_for_size_p.
1692 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
1693 optimize_loop_for_speed_p.
1694 * bb-reorder.c (find_traces_1_round): Likewise.
1695 (copy_bb): Use optimize_bb_for_speed_p.
1696 (duplicate_computed_gotos): Likewise.
1697 * basic-block.h (optimize_loop_nest_for_size_p,
1698 optimize_loop_nest_for_speed_p): New.
1699 * stmt.c (expand_case): Use optimize_insn_for_size_p.
1701 2008-08-29 Tristan Gingold <gingold@adacore.com>
1703 * gcov.c (main): Call expandargv.
1705 2008-08-29 Jan Hubicka <jh@suse.cz>
1707 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
1709 * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1711 (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
1712 * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1714 (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
1716 2008-08-29 Jan Hubicka <jh@suse.cz>
1718 * tree-pass.h (pass_strip_predict_hints): Declare.
1719 * predict.c (strip_builtin_expect): Rename to ...
1720 (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
1721 (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
1722 (tree_estimate_probability): Do not strip builtin_expect.
1723 (pass_strip_predict_hints): New pass.
1724 * tree-inline.c (expand_call_inline): When inlining cold function, predict
1726 * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
1728 2008-08-29 Richard Guenther <rguenther@suse.de>
1730 PR tree-optimization/37207
1731 * tree-vrp.c (extract_range_from_binary_expr): Also try
1732 to constant fold if only one of the operands is a constant.
1734 2008-08-29 Nick Clifton <nickc@redhat.com>
1736 * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
1737 the same way as SYMBOL_REFs.
1739 2008-08-28 Bob Wilson <bob.wilson@acm.org>
1741 * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
1743 2008-08-28 Adam Nemet <anemet@caviumnetworks.com>
1745 * config/mips/mips.h (ISA_HAS_BBIT): New macro.
1746 * config/mips/mips.md (branch_likely): Remove const. Fix
1748 (define_delay for type "branch"): Change to only apply for branch
1749 with likely variant.
1750 (define_delay for type "branch" and "branch_likely" no). New delay
1752 (equality_op): New code iterator.
1753 (bbv, bbinv): New code attributes.
1754 (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
1757 2008-08-28 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1758 Andrew Pinski <pinskia@gcc.gnu.org>
1761 * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
1763 2008-08-28 Paolo Carlini <paolo.carlini@oracle.com>
1765 * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
1766 rule that a symbolic constant must be defined and >= 0 for the
1767 corresponding facility to be present at compile-time.
1768 * gthr-posix.c: Likewise.
1770 2008-08-28 Adam Nemet <anemet@caviumnetworks.com>
1772 * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
1773 * config/mips/mips.md (D): New mode attribute.
1774 (mulsi3, muldi3): Merge it into ...
1775 (mul<mode>3): ... new template. Use _mul3 ending for 3-op
1777 (muldi3_mul3): New pattern.
1778 (mulsi3_mult3): Rename to mulsi3_mul3.
1780 2008-08-28 Jan Hubicka <jh@suse.cz>
1782 * expmed.c (store_bit_field_1): Be prepared for movstrict expander
1784 * predict.c (always_optimize_for_size_p): Rename to ...
1785 (optimize_function_for_size): ... this one; make extern.
1786 (optimize_function_for_speed_p): New.
1787 (optimize_bb_for_size_p, optimize_bb_for_size_p,
1788 optimize_edge_for_size_p,optimize_edge_for_size_p,
1789 optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
1790 * basic-block.h (optimize_function_for_size_p,
1791 optimize_function_for_speed_p): Declare.
1792 * i386.md (optimize_size checks): Replace them by appropriate
1794 (standard_80387_constant_p, ix86_compute_frame_layout,
1795 ix86_expand_epilogue, ix86_decompose_address,
1796 print_operand, emit_i387_cw_initialization,
1797 inline_memory_move_cost, ix86_pad_returns,
1798 ix86_reorg): Replace optimize_size checks.
1800 2008-08-28 Richard Sandiford <rdsandiford@googlemail.com>
1802 * rtl.h (simplify_subreg_regno): Declare.
1803 * rtlanal.c (simplify_subreg_regno): New function, split out from...
1804 * simplify-rtx.c (simplify_subreg): ...here.
1805 * reload.c (find_reloads): Use simplify_subreg_regno instead of
1806 subreg_offset_representable_p.
1808 2008-08-28 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1811 * c-typeck.c (convert_for_assignment): Give a note describing what
1812 was passed and what was expected.
1814 2008-08-28 Joey Ye <joey.ye@intel.com>
1816 * doc/extend.texi: Document AVX built-in functions.
1817 * doc/invoke.texi: Document -mavx.
1819 2008-08-28 H.J. Lu <hongjiu.lu@intel.com>
1820 Joey Ye <joey.ye@intel.com>
1821 Xuepeng Guo <xuepeng.guo@intel.com>
1823 * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
1825 * config/i386/cpuid.h (bit_FMA): New.
1826 (bit_XSAVE): Likewise.
1827 (bit_OSXSAVE): Likewise.
1828 (bit_AVX): Likewise.
1830 * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
1831 define. Use ASM_OUTPUT_AVX_PREFIX.
1833 * config/i386/gmmintrin.h: New.
1835 * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
1836 (OPTION_MASK_ISA_AVX_SET): New.
1837 (OPTION_MASK_ISA_FMA_SET): Likewise.
1838 (OPTION_MASK_ISA_AVX_UNSET): Likewise.
1839 (OPTION_MASK_ISA_FMA_SET): Likewise.
1840 (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
1841 (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
1842 (pta_flags): Add PTA_AVX and PTA_FMA.
1843 (override_options): Handle PTA_AVX and PTA_FMA.
1844 (init_cumulative_args): Handle warn_avx.
1845 (classify_argument): Return 0 for COImode and OImode. Return
1846 1 and X86_64_AVX_CLASS for 256bit vector types.
1847 (examine_argument): Handle X86_64_AVX_CLASS.
1848 (construct_container): Likewise.
1849 (function_arg_advance_32): Pass OImode and 256bit vector types
1851 (function_arg_advance_64): Take a new argument to indicate if a
1852 parameter is named. Handle 256bit vector types. Return
1853 immediately for unnamed 256bit vector mode parameters.
1854 (function_arg_advance): Updated.
1855 (function_arg_32): Add comments for TImode. Handle OImode
1856 and 256bit vector types.
1857 (function_arg_64): Take a new argument to indicate if a
1858 parameter is named. Handle 256bit vector types. Return NULL
1859 for unnamed 256bit vector mode parameters.
1860 (function_arg): Updated.
1861 (setup_incoming_varargs_64): Support
1862 AVX encoding for *sse_prologue_save_insn.
1863 (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
1864 (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
1865 enabled. For all 1s in 256bit vector modes, return 3 if AVX is
1866 enabled, otherwise return -3.
1867 (standard_sse_constant_opcode): Handle AVX and 256bit vector
1869 (print_reg): Support AVX registers. Handle 'x' and 't'.
1870 Handle 'd' to duplicate the operand.
1871 (print_operand): Likewise. Also support AVX vector compare
1873 (output_387_binary_op): Support AVX.
1874 (output_fp_compare): Likewise.
1875 (ix86_expand_vector_move_misalign): Likewise.
1876 (ix86_attr_length_vex_default): New.
1877 (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
1878 IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
1879 IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
1880 IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
1881 IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
1882 IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
1883 IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
1884 IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
1885 IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
1886 IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
1887 IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
1888 IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
1889 IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
1890 IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
1891 IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
1892 IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
1893 IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
1894 IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
1895 IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
1896 IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
1897 IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
1898 IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
1899 IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
1900 IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
1901 IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
1902 IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
1903 IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
1904 IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
1905 IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
1906 IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
1907 IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
1908 IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
1909 IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
1910 IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
1911 IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
1912 IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
1913 IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
1914 IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
1915 IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
1916 IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
1917 IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
1918 IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
1919 IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
1920 IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
1921 IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
1922 IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
1923 IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
1924 IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
1925 IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
1926 IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
1927 IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
1928 IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
1929 IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
1930 IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
1931 IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
1932 IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
1933 IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
1934 IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
1935 IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
1936 IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
1937 IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
1938 IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
1939 IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
1940 IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
1941 and IX86_BUILTIN_MOVMSKPS256,
1942 (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
1943 V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
1944 V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
1945 V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
1946 V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
1947 VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
1948 VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
1949 VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
1950 (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
1951 INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
1952 INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
1953 INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
1954 V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
1955 V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
1956 V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
1957 V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
1958 V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
1959 V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
1960 V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
1961 V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
1962 V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
1963 V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
1964 V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
1965 V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
1966 V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
1967 V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
1968 (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
1969 IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
1970 IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
1971 IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
1972 IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
1973 IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
1974 IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
1975 IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
1976 IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
1977 IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
1978 IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
1979 IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
1980 (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
1981 IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
1982 IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
1983 IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
1984 IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
1985 IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
1986 IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
1987 IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
1988 IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
1989 IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
1990 IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
1991 IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
1992 IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
1993 IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
1994 IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
1995 IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
1996 IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
1997 IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
1998 IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
1999 IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2001 IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
2002 IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
2003 IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
2004 IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2005 IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2006 IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2007 IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
2008 IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2009 IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
2010 IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2011 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
2012 IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2013 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
2014 IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
2015 IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
2016 IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
2017 IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2018 IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2019 IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2020 IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2021 IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2022 IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2023 IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2024 IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2025 IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2026 IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2027 IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2028 IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2029 IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2030 IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2031 IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2032 IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2033 IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2034 IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
2035 IX86_BUILTIN_MOVMSKPS256.
2036 (ix86_init_mmx_sse_builtins): Support AVX builtins.
2037 (ix86_expand_args_builtin): Likewise.
2038 (ix86_expand_special_args_builtin): Likewise.
2039 (ix86_hard_regno_mode_ok): Handle AVX modes.
2040 (ix86_expand_vector_init_duplicate): Likewise.
2041 (ix86_expand_vector_init_one_nonzero): Likewise.
2042 (ix86_expand_vector_init_one_var): Likewise.
2043 (ix86_expand_vector_init_concat): Likewise.
2044 (ix86_expand_vector_init_general): Likewise.
2045 (ix86_expand_vector_set): Likewise.
2046 (ix86_vector_mode_supported_p): Likewise.
2047 (x86_extended_reg_mentioned_p): Check INSN_P before using
2050 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2051 OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2053 * config/i386/i386.h (TARGET_AVX): New.
2054 (TARGET_FMA): Likewise.
2055 (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
2056 (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
2057 (VALID_AVX256_REG_MODE): New.
2058 (AVX256_VEC_FLOAT_MODE_P): Likewise.
2059 (AVX_FLOAT_MODE_P): Likewise.
2060 (AVX128_VEC_FLOAT_MODE_P): Likewise.
2061 (AVX256_VEC_FLOAT_MODE_P): Likewise.
2062 (AVX_VEC_FLOAT_MODE_P): Likewise.
2063 (ASM_OUTPUT_AVX_PREFIX): Likewise.
2064 (ASM_OUTPUT_OPCODE): Likewise.
2065 (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
2067 (SSE_REG_MODE_P): Allow 256bit vector modes.
2068 (ix86_args): Add a warn_avx field.
2070 * config/i386/i386.md (UNSPEC_PCMP): New.
2071 (UNSPEC_VPERMIL): Likewise.
2072 (UNSPEC_VPERMIL2): Likewise.
2073 (UNSPEC_VPERMIL2F128): Likewise.
2074 (UNSPEC_MASKLOAD): Likewise.
2075 (UNSPEC_MASKSTORE): Likewise.
2076 (UNSPEC_CAST): Likewise.
2077 (UNSPEC_VTESTP): Likewise.
2078 (UNSPECV_VZEROALL): Likewise.
2079 (UNSPECV_VZEROUPPER): Likewise.
2080 (XMM0_REG): Likewise.
2081 (XMM1_REG): Likewise.
2082 (XMM2_REG): Likewise.
2083 (XMM3_REG): Likewise.
2084 (XMM4_REG): Likewise.
2085 (XMM5_REG): Likewise.
2086 (XMM6_REG): Likewise.
2087 (XMM8_REG): Likewise.
2088 (XMM9_REG): Likewise.
2089 (XMM10_REG): Likewise.
2090 (XMM11_REG): Likewise.
2091 (XMM12_REG): Likewise.
2092 (XMM13_REG): Likewise.
2093 (XMM14_REG): Likewise.
2094 (XMM15_REG): Likewise.
2096 (prefix_vex_imm8): Likewise.
2097 (prefix_vex_w): Likewise.
2098 (length_vex): Likewise.
2101 (*avx_ashlti3): Likewise.
2102 (*avx_lshrti3): Likewise.
2103 (*avx_setcc<mode>): Likewise.
2104 (*fop_<mode>_comm_mixed_avx): Likewise.
2105 (*fop_<mode>_comm_avx): Likewise.
2106 (*fop_<mode>_1_mixed_avx): Likewise.
2107 (*fop_<mode>_1_avx): Likewise.
2108 (*avx_<code><mode>3): Likewise.
2109 (*avx_ieee_smin<mode>3): Likewise.
2110 (*avx_ieee_smax<mode>3): Likewise.
2111 (mode): Add OI, V8SF and V4DF.
2112 (length): Support VEX prefix.
2113 (*cmpfp_i_mixed): Set prefix attribute.
2114 (*cmpfp_i_sse): Likewise.
2115 (*cmpfp_iu_mixed): Likewise.
2116 (*cmpfp_iu_sse): Likewise.
2117 (*movsi_1): Support AVX.
2118 (*movdi_2): Likewise.
2119 (*movdi_1_rex64): Likewise.
2120 (*movti_internal): Likewise.
2121 (*movti_rex64): Likewise.
2122 (*movsf_1): Likewise.
2123 (*movdf_nointeger): Likewise.
2124 (*movdf_integer_rex64): Likewise.
2125 (*movtf_internal): Likewise.
2126 (zero_extendsidi2_32): Likewise.
2127 (zero_extendsidi2_rex64): Likewise.
2128 (*extendsfdf2_mixed): Likewise.
2129 (*extendsfdf2_sse): Likewise.
2130 (*truncdfsf_fast_mixed): Likewise.
2131 (*truncdfsf_fast_sse): Likewise.
2132 (*truncdfsf_mixed): Likewise.
2133 (fix_trunc<mode>di_sse): Likewise.
2134 (fix_trunc<mode>si_sse): Likewise.
2135 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
2136 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
2137 (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
2138 (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
2139 (*rcpsf2_sse): Likewise.
2140 (*rsqrtsf2_sse): Likewise.
2141 (*sqrt<mode>2_sse): Likewise.
2142 (sse4_1_round<mode>2): Likewise.
2143 (*sse_prologue_save_insn): Disallow REX prefix for AVX.
2144 Support AVX. Set length attribute properly for AVX.
2146 * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
2147 (VECTOR_MODES (FLOAT, 32)): Likewise.
2148 (VECTOR_MODE (INT, DI, 8)): Likewise.
2149 (VECTOR_MODE (INT, HI, 32)): Likewise.
2150 (VECTOR_MODE (INT, QI, 64)): Likewise.
2151 (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
2152 (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
2153 (VECTOR_MODE (INT, DI, 4)): Removed.
2154 (VECTOR_MODE (INT, SI, 8)): Likewise.
2155 (VECTOR_MODE (INT, HI, 16)): Likewise.
2156 (VECTOR_MODE (INT, QI, 32)): Likewise.
2157 (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
2158 (INT_MODE (OI, 32)): Likewise.
2160 * config/i386/i386.opt (mavx): New.
2163 * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2165 * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
2166 (*mov<mode>_internal_avx): New.
2167 (*movv2sf_internal_rex64_avx): Likewise.
2168 (*movv2sf_internal_avx): Likewise.
2170 * config/i386/predicates.md (const_4_to_5_operand): New.
2171 (const_6_to_7_operand): Likewise.
2172 (const_8_to_11_operand): Likewise.
2173 (const_12_to_15_operand): Likewise.
2174 (avx_comparison_float_operator): Likewise.
2176 * config/i386/sse.md (AVX256MODEI): New.
2177 (AVX256MODE): Likewise.
2178 (AVXMODEQI): Likewise.
2179 (AVXMODE): Likewise.
2180 (AVX256MODEF2P): Likewise.
2181 (AVX256MODE2P): Likewise.
2182 (AVX256MODE4P): Likewise.
2183 (AVX256MODE8P): Likewise.
2184 (AVXMODEF2P): Likewise.
2185 (AVXMODEF4P): Likewise.
2186 (AVXMODEDCVTDQ2PS): Likewise.
2187 (AVXMODEDCVTPS2DQ): Likewise.
2188 (avxvecmode): Likewise.
2189 (avxvecpsmode): Likewise.
2190 (avxhalfvecmode): Likewise.
2191 (avxscalarmode): Likewise.
2192 (avxcvtvecmode): Likewise.
2193 (avxpermvecmode): Likewise.
2194 (avxmodesuffixf2c): Likewise.
2195 (avxmodesuffixp): Likewise.
2196 (avxmodesuffixs): Likewise.
2197 (avxmodesuffix): Likewise.
2198 (vpermilbits): Likewise.
2199 (pinsrbits): Likewise.
2200 (mov<mode>): Likewise.
2201 (*mov<mode>_internal): Likewise.
2202 (push<mode>1): Likewise.
2203 (movmisalign<mode>): Likewise.
2204 (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2205 (avx_movdqu<avxmodesuffix>): Likewise.
2206 (avx_lddqu<avxmodesuffix>): Likewise.
2207 (<plusminus_insn><mode>3): Likewise.
2208 (*avx_<plusminus_insn><mode>3): Likewise.
2209 (*avx_vm<plusminus_insn><mode>3): Likewise.
2210 (mul<mode>3): Likewise.
2211 (*avx_mul<mode>3): Likewise.
2212 (*avx_vmmul<mode>3): Likewise.
2213 (divv8sf3): Likewise.
2214 (divv4df3): Likewise.
2215 (avx_div<mode>3): Likewise.
2216 (*avx_div<mode>3): Likewise.
2217 (*avx_vmdiv<mode>3): Likewise.
2218 (avx_rcpv8sf2): Likewise.
2219 (*avx_vmrcpv4sf2): Likewise.
2220 (sqrtv8sf2): Likewise.
2221 (avx_sqrtv8sf2): Likewise.
2222 (*avx_vmsqrt<mode>2): Likewise.
2223 (rsqrtv8sf2): Likewise.
2224 (avx_rsqrtv8sf2): Likewise.
2225 (*avx_vmrsqrtv4sf2): Likewise.
2226 (<code><mode>3): Likewise.
2227 (*avx_<code><mode>3_finite): Likewise.
2228 (*avx_<code><mode>3): Likewise.
2229 (*avx_vm<code><mode>3): Likewise.
2230 (*avx_ieee_smin<mode>3): Likewise.
2231 (*avx_ieee_smax<mode>3): Likewise.
2232 (avx_addsubv8sf3): Likewise.
2233 (avx_addsubv4df3): Likewise.
2234 (*avx_addsubv4sf3): Likewise.
2235 (*avx_addsubv2df3): Likewise.
2236 (avx_h<plusminus_insn>v4df3): Likewise.
2237 (avx_h<plusminus_insn>v8sf3): Likewise.
2238 (*avx_h<plusminus_insn>v4sf3): Likewise.
2239 (*avx_h<plusminus_insn>v2df3): Likewise.
2240 (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
2241 (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
2242 (*avx_maskcmp<mode>3): Likewise.
2243 (avx_nand<mode>3): Likewise.
2244 (*avx_<code><mode>3): Likewise.
2245 (*avx_nand<mode>3): Likewise.
2246 (*avx_<code><mode>3): Likewise.
2247 (*avx_cvtsi2ss): Likewise.
2248 (*avx_cvtsi2ssq): Likewise.
2249 (*avx_cvtsi2sd): Likewise.
2250 (*avx_cvtsi2sdq): Likewise.
2251 (*avx_cvtsd2ss): Likewise.
2252 (avx_cvtss2sd): Likewise.
2253 (avx_cvtdq2ps<avxmodesuffix>): Likewise.
2254 (avx_cvtps2dq<avxmodesuffix>): Likewise.
2255 (avx_cvttps2dq<avxmodesuffix>): Likewise.
2256 (*avx_cvtsi2sd): Likewise.
2257 (*avx_cvtsi2sdq): Likewise.
2258 (avx_cvtdq2pd256): Likewise.
2259 (avx_cvtpd2dq256): Likewise.
2260 (avx_cvttpd2dq256): Likewise.
2261 (*avx_cvtsd2ss): Likewise.
2262 (*avx_cvtss2sd): Likewise.
2263 (avx_cvtpd2ps256): Likewise.
2264 (avx_cvtps2pd256): Likewise.
2265 (*avx_movhlps): Likewise.
2266 (*avx_movlhps): Likewise.
2267 (avx_unpckhps256): Likewise.
2268 (*avx_unpckhps): Likewise.
2269 (avx_unpcklps256): Likewise.
2270 (*avx_unpcklps): Likewise.
2271 (avx_movshdup256): Likewise.
2272 (avx_movsldup256): Likewise.
2273 (avx_shufps256): Likewise.
2274 (avx_shufps256_1): Likewise.
2275 (*avx_shufps_<mode>): Likewise.
2276 (*avx_loadhps): Likewise.
2277 (*avx_storelps): Likewise.
2278 (*avx_loadlps): Likewise.
2279 (*avx_movss): Likewise.
2280 (*vec_dupv4sf_avx): Likewise.
2281 (*vec_concatv2sf_avx): Likewise.
2282 (*vec_concatv4sf_avx): Likewise.
2283 (*vec_setv4sf_0_avx): Likewise.
2284 (*vec_setv4sf_avx): Likewise.
2285 (*avx_insertps): Likewise.
2286 (avx_vextractf128<mode>): Likewise.
2287 (vec_extract_lo_<mode>): Likewise.
2288 (vec_extract_hi_<mode>): Likewise.
2289 (vec_extract_lo_<mode>): Likewise.
2290 (vec_extract_hi_<mode>): Likewise.
2291 (vec_extract_lo_v16hi): Likewise.
2292 (vec_extract_hi_v16hi): Likewise.
2293 (vec_extract_lo_v32qi): Likewise.
2294 (vec_extract_hi_v32qi): Likewise.
2295 (avx_unpckhpd256): Likewise.
2296 (*avx_unpckhpd): Likewise.
2297 (avx_movddup256): Likewise.
2298 (*avx_movddup): Likewise.
2299 (avx_unpcklpd256): Likewise.
2300 (*avx_unpcklpd): Likewise.
2301 (avx_shufpd256): Likewise.
2302 (avx_shufpd256_1): Likewise.
2303 (*avx_punpckhqdq): Likewise.
2304 (*avx_punpcklqdq): Likewise.
2305 (*avx_shufpd_<mode>): Likewise.
2306 (*avx_storehpd): Likewise.
2307 (*avx_loadhpd): Likewise.
2308 (*avx_loadlpd): Likewise.
2309 (*avx_movsd): Likewise.
2310 (*vec_concatv2df_avx): Likewise.
2311 (*avx_<plusminus_insn><mode>3): Likewise.
2312 (*avx_<plusminus_insn><mode>3): Likewise.
2313 (*avx_mulv8hi3): Likewise.
2314 (*avxv8hi3_highpart): Likewise.
2315 (*avx_umulv8hi3_highpart): Likewise.
2316 (*avx_umulv2siv2di3): Likewise.
2317 (*avx_mulv2siv2di3): Likewise.
2318 (*avx_pmaddwd): Likewise.
2319 (*avx_mulv4si3): Likewise.
2320 (*avx_ashr<mode>3): Likewise.
2321 (*avx_lshr<mode>3): Likewise.
2322 (*avx_ashl<mode>3): Likewise.
2323 (*avx_<code><mode>3): Likewise.
2324 (*avx_eq<mode>3): Likewise.
2325 (*avx_gt<mode>3): Likewise.
2326 (*avx_nand<mode>3): Likewise.
2327 (*avx_nand<mode>3): Likewise.
2328 (*avx_<code><mode>3): Likewise.
2329 (*avx_<code><mode>3): Likewise.
2330 (*avx_packsswb): Likewise.
2331 (*avx_packssdw): Likewise.
2332 (*avx_packuswb): Likewise.
2333 (*avx_punpckhbw): Likewise.
2334 (*avx_punpcklbw): Likewise.
2335 (*avx_punpckhwd): Likewise.
2336 (*avx_punpcklwd): Likewise.
2337 (*avx_punpckhdq): Likewise.
2338 (*avx_punpckldq): Likewise.
2339 (*avx_pinsr<avxmodesuffixs>): Likewise.
2340 (*avx_pinsrq): Likewise.
2341 (*avx_loadld): Likewise.
2342 (*vec_extractv2di_1_rex64_avx): Likewise.
2343 (*vec_extractv2di_1_avx): Likewise.
2344 (*vec_dupv2di_avx): Likewise.
2345 (*vec_concatv2si_avx): Likewise.
2346 (*vec_concatv4si_1_avx): Likewise.
2347 (*vec_concatv2di_avx): Likewise.
2348 (*vec_concatv2di_rex64_avx): Likewise.
2349 (*avx_uavgv16qi3): Likewise.
2350 (*avx_uavgv8hi3): Likewise.
2351 (*avx_psadbw): Likewise.
2352 (avx_movmskp<avxmodesuffixf2c>256): Likewise.
2353 (*avx_phaddwv8hi3): Likewise.
2354 (*avx_phadddv4si3): Likewise.
2355 (*avx_phaddswv8hi3): Likewise.
2356 (*avx_phsubwv8hi3): Likewise.
2357 (*avx_phsubdv4si3): Likewise.
2358 (*avx_phsubswv8hi3): Likewise.
2359 (*avx_pmaddubsw128): Likewise.
2360 (*avx_pmulhrswv8hi3): Likewise.
2361 (*avx_pshufbv16qi3): Likewise.
2362 (*avx_psign<mode>3): Likewise.
2363 (*avx_palignrti): Likewise.
2364 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2365 (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2366 (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2367 (*avx_mpsadbw): Likewise.
2368 (*avx_packusdw): Likewise.
2369 (*avx_pblendvb): Likewise.
2370 (*avx_pblendw): Likewise.
2371 (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2372 (avx_ptest256): Likewise.
2373 (avx_roundp<avxmodesuffixf2c>256): Likewise.
2374 (*avx_rounds<ssemodesuffixf2c>): Likewise.
2375 (*avx_aesenc): Likewise.
2376 (*avx_aesenclast): Likewise.
2377 (*avx_aesdec): Likewise.
2378 (*avx_aesdeclast): Likewise.
2379 (avx_vzeroupper): Likewise.
2380 (avx_vzeroupper_rex64): Likewise.
2381 (avx_vpermil<mode>): Likewise.
2382 (avx_vpermilvar<mode>3): Likewise.
2383 (avx_vpermil2<mode>3): Likewise.
2384 (avx_vperm2f128<mode>3): Likewise.
2385 (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2386 (avx_vbroadcastss256): Likewise.
2387 (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
2388 (avx_vinsertf128<mode>): Likewise.
2389 (vec_set_lo_<mode>): Likewise.
2390 (vec_set_hi_<mode>): Likewise.
2391 (vec_set_lo_<mode>): Likewise.
2392 (vec_set_hi_<mode>): Likewise.
2393 (vec_set_lo_v16hi): Likewise.
2394 (vec_set_hi_v16hi): Likewise.
2395 (vec_set_lo_v32qi): Likewise.
2396 (vec_set_hi_v32qi): Likewise.
2397 (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2398 (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2399 (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
2400 (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
2401 (vec_init<mode>): Likewise.
2402 (*vec_concat<mode>_avx): Likewise.
2403 (blendbits): Support V8SF and V4DF.
2404 (sse2_movq128): Support AVX.
2405 (<sse>_movnt<mode>): Likewise.
2406 (sse2_movntv2di): Likewise.
2407 (sse_rcpv4sf2): Likewise.
2408 (sse_sqrtv4sf2): Likewise.
2409 (sse_rsqrtv4sf2): Likewise.
2410 (<sse>_comi): Likewise.
2411 (<sse>_ucomi): Likewise.
2412 (sse_cvtss2si): Likewise.
2413 (sse_cvtss2si_2): Likewise.
2414 (sse_cvtss2siq): Likewise.
2415 (sse_cvtss2siq_2): Likewise.
2416 (sse_cvttss2si): Likewise.
2417 (sse_cvttss2siq): Likewise.
2418 (sse2_cvtsd2si): Likewise.
2419 (sse2_cvtsd2si_2): Likewise.
2420 (sse2_cvtsd2siq): Likewise.
2421 (sse2_cvtsd2siq_2): Likewise.
2422 (sse2_cvttsd2si): Likewise.
2423 (sse2_cvttsd2siq): Likewise.
2424 (sse2_cvtdq2pd): Likewise.
2425 (*sse2_cvtpd2dq): Likewise.
2426 (*sse2_cvttpd2dq): Likewise.
2427 (*sse2_cvtpd2ps): Likewise.
2428 (sse2_cvtps2pd): Likewise.
2429 (sse3_movshdup): Likewise.
2430 (sse3_movsldup): Likewise.
2431 (sse_storehps): Likewise.
2432 (*sse4_1_extractps): Likewise.
2433 (sse2_storelpd): Likewise.
2434 (vec_dupv2df_sse3): Likewise.
2435 (*vec_concatv2df_sse3): Likewise.
2436 (*sse4_1_pextrb): Likewise.
2437 (*sse4_1_pextrb_memory): Likewise.
2438 (*sse2_pextrw): Likewise.
2439 (*sse4_1_pextrw_memory): Likewise.
2440 (*sse4_1_pextrd): Likewise.
2441 (*sse4_1_pextrq): Likewise.
2442 (sse2_pshufd_1): Likewise.
2443 (sse2_pshuflw_1): Likewise.
2444 (sse2_pshufhw_1): Likewise.
2445 (*sse2_storeq_rex64): Likewise.
2446 (*vec_dupv4si): Likewise.
2447 (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
2448 (sse2_pmovmskb): Likewise.
2449 (*sse2_maskmovdqu): Likewise.
2450 (*sse2_maskmovdqu_rex64): Likewise.
2451 (sse_ldmxcsr): Likewise.
2452 (sse_stmxcsr): Likewise.
2453 (abs<mode>2): Likewise.
2454 (sse4_1_movntdqa): Likewise.
2455 (sse4_1_phminposuw): Likewise.
2456 (sse4_1_extendv8qiv8hi2): Likewise.
2457 (*sse4_1_extendv8qiv8hi2): Likewise.
2458 (sse4_1_extendv4qiv4si2): Likewise.
2459 (*sse4_1_extendv4qiv4si2): Likewise.
2460 (sse4_1_extendv2qiv2di2): Likewise.
2461 (*sse4_1_extendv2qiv2di2): Likewise.
2462 (sse4_1_extendv4hiv4si2): Likewise.
2463 (*sse4_1_extendv4hiv4si2): Likewise.
2464 (sse4_1_extendv2hiv2di2): Likewise.
2465 (*sse4_1_extendv2hiv2di2): Likewise.
2466 (sse4_1_extendv2siv2di2): Likewise.
2467 (*sse4_1_extendv2siv2di2): Likewise.
2468 (sse4_1_zero_extendv8qiv8hi2): Likewise.
2469 (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2470 (sse4_1_zero_extendv4qiv4si2): Likewise.
2471 (*sse4_1_zero_extendv4qiv4si2): Likewise.
2472 (sse4_1_zero_extendv2qiv2di2): Likewise.
2473 (*sse4_1_zero_extendv2qiv2di2): Likewise.
2474 (sse4_1_zero_extendv4hiv4si2): Likewise.
2475 (*sse4_1_zero_extendv4hiv4si2): Likewise.
2476 (sse4_1_zero_extendv2hiv2di2): Likewise.
2477 (*sse4_1_zero_extendv2hiv2di2): Likewise.
2478 (sse4_1_zero_extendv2siv2di2): Likewise.
2479 (*sse4_1_zero_extendv2siv2di2): Likewise.
2480 (sse4_1_ptest): Likewise.
2481 (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
2482 (sse4_2_pcmpestri): Likewise.
2483 (sse4_2_pcmpestrm): Likewise.
2484 (sse4_2_pcmpistri): Likewise.
2485 (sse4_2_pcmpistrm): Likewise.
2487 (aeskeygenassist): Likewise.
2489 2008-08-28 Uros Bizjak <ubizjak@gmail.com>
2491 * config/i386/predicates.md (vzeroall_operation): New.
2493 * config/i386/sse.md (avx_vzeroall): New.
2494 (*avx_vzeroall): Likewise.
2496 2008-08-28 Paul Brook <paul@codesourcery.com>
2497 Mark Shinwell <shinwell@codesourcery.com>
2498 Richard Earnshaw <richard.earnshaw@arm.com>
2500 * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
2501 (TARGET_MIN_ANCHOR_OFFSET): New.
2502 (arm_override_options): Set correct anchor ranges for Thumb-1
2503 and Thumb-2 if required.
2504 (legitimize_pic_address): Handle case involving a TLS symbol
2505 reference with an addend.
2506 (arm_optimization_options): Enable section anchors at -O1 and
2508 * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
2509 * config/arm/arm-protos.h (arm_optimization_options): New.
2511 2008-08-28 Nick Clifton <nickc@redhat.com>
2513 * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
2514 * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
2517 * config/v850/v850.h (IRA_COVER_CLASSES): Define.
2518 * config/v850/v850.md (return): Remove frame size restriction.
2520 * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
2522 * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
2524 * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
2526 * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
2528 2008-08-28 Paul Brook <paul@codesourcery.com>
2530 * config/arm/vfp11.md: Update license notice.
2531 * config/arm/cortex-r4.md: Ditto.
2533 2008-08-28 Richard Guenther <rguenther@suse.de>
2535 PR tree-optimization/37207
2536 * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
2539 2008-08-28 Dodji Seketeli <dodji@redhat.com>
2542 * tree.c (int_fits_type_p): Don't forget unsigned integers
2543 of type sizetype which higher end word equals -1.
2545 2008-08-28 Ira Rosen <irar@il.ibm.com>
2547 * target.h (struct vectorize): Add new target builtin.
2548 * tree-vectorizer.c (destroy_loop_vec_info): Call
2549 vect_free_slp_instance instead of vect_free_slp_node.
2550 * tree-vectorizer.h (enum slp_load_perm_type): New.
2551 (struct _slp_instance): Add new fields.
2552 (SLP_INSTANCE_LOAD_PERMUTATION): New.
2553 (SLP_INSTANCE_LOADS): New.
2554 (vect_free_slp_tree): Remove.
2555 (vect_free_slp_instance): Declare.
2556 (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
2557 (vectorizable_load): Add argument.
2558 (vect_transform_slp_perm_load): New.
2559 * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
2561 (vect_get_place_in_interleaving_chain): New function.
2562 (vect_free_slp_tree): Make static.
2563 (vect_free_slp_instance): New function.
2564 (vect_build_slp_tree): Add new arguments. Allow load permutations and
2565 collect the load location in the interleaving chain.
2566 (vect_supported_slp_permutation_p): New function.
2567 (vect_supported_load_permutation_p): Likewise.
2568 (vect_analyze_slp_instance): In case of loads permutation, call
2569 vect_supported_load_permutation_p to check that the permutation is
2571 * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
2572 * tree-vect-transform.c (vect_transform_stmt): Add new argument.
2573 (vect_create_mask_and_perm): New function.
2574 (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
2575 (vectorizable_load): Add an argument. Don't keep the created vectors
2576 statements in the node if permutation is required. Call
2577 vect_transform_slp_perm_load to generate the permutation.
2578 (vect_transform_stmt): Add new argument. Call vectorizable_load with
2579 additional argument.
2580 (vect_schedule_slp_instance): In case of loads permutation, allocate
2581 vectorized statements structure for all the related SLP nodes. Call
2582 vect_transform_stmt with addditional argument.
2583 (vect_transform_loop): Call vect_transform_stmt with correct arguments.
2584 * config/spu/spu.c (spu_builtin_vec_perm): New.
2585 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2586 * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
2587 * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
2588 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2590 2008-08-28 Chris Fairles <chris.fairles@gmail.com>
2592 * gthr-posix.h (__gthread_create, __gthread_join, __gthread_detach,
2593 __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
2594 __gthread_cond_signal, __gthread_cond_timedwait,
2595 __gthread_cond_timedwait_recursive): New functions.
2596 * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
2598 * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
2601 2008-08-28 Richard Guenther <rguenther@suse.de>
2604 * fold-const.c (maybe_canonicalize_comparison_1): Require
2605 undefined overflow only for canonicalizing A +- CST cmp CST.
2606 Make sure to not generate new constants that are not inside
2607 their TYPE_MIN/MAX_VALUE range.
2608 (maybe_canonicalize_comparison): Remove undefined overflow
2610 (fold_binary): Remove now duplicate folding.
2612 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
2614 * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
2615 use not updated in the last change.
2617 2008-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
2619 * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
2620 (IRA_COVER_CLASSES): Add FPUL_REGS.
2622 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2625 * c-common.c (conversion_warning): Check for null operands.
2627 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2630 * c-decl.c (check_for_loop_decls): Improve error message. Give
2633 2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2636 * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
2637 (convert_for_assignment): Pass corrent OPT_W* parameter to
2638 WARN_FOR_ASSIGNMENT.
2640 2008-08-27 Paolo Carlini <paolo.carlini@oracle.com>
2643 * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
2645 2008-08-27 Paul Brook <paul@codesourcery.com>
2647 * config.gcc: Loosen checks for arm uclinux eabi targets.
2649 2008-08-27 Paul Brook <paul@codesourcery.com>
2651 * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
2653 * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
2655 2008-08-26 Douglas Gregor <doug.gregor@gmail.com>
2657 * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
2658 the enumerators of an ENUMERAL_TYPE.
2659 * dbxout.c (dbxout_type): Ditto.
2661 2008-08-26 Andrew Pinski <andrew_pinski@playstation.sony.com>
2664 * fwprop.c (fwprop): Check that the loop_father is the outer loop.
2665 (fwprop_addr): Check that the loop_father is not the outer loop.
2667 2008-08-26 Paul Brook <paul@codesourcery.com>
2669 * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
2670 Remove documentation entry for fmul type.
2671 Use fmuls to annotate single-precision multiplication patterns,
2672 fmuld to annotate double-precision multiplication patterns,
2673 fmacs to annotate single-precision multiply-accumulate patterns
2674 and fmacd to annotate double-precision multiply-accumulate patterns.
2675 * config/arm/vfp11.md: Update reservations accordingly.
2676 * config/arm/arm.md: Note that certain values of the "type"
2677 attribute are documented in vfp.md.
2678 * config/arm/arm1020e.md: Remove out of date duplicate comment.
2679 (v10_cvt): Use new fmul types.
2681 2008-08-26 Paul Brook <paul@codesourcery.com>
2683 * config/arm/vfp.md: Move pipeline description for VFP11 to...
2684 * config/arm/vfp11.md: ...here. New.
2685 * config/arm/arm.md: Include vfp11.md.
2687 2008-08-26 Hans-Peter Nilsson <hp@axis.com>
2689 * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
2690 parameter to inform call.
2692 2008-08-26 Jeff Law <law@redhat.com>
2694 * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
2695 avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
2696 preferred class when copying a constant into a partial word register.
2698 2008-08-26 Ben Elliston <bje@au.ibm.com>
2700 * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
2701 * cp/typeck.c: Likewise.
2702 * cp/tree.c: Likewise.
2703 * gimple-low.c: Likewise.
2706 2008-08-26 Vladimir Makarov <vmakarov@redhat.com>
2708 * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
2709 ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
2711 * doc/passes.texi: Describe IRA.
2713 * doc/tm.texi (IRA_COVER_CLASSES,
2714 IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
2716 * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
2717 (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
2718 -fira-propagate-cost, -fno-ira-share-save-slots,
2719 -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
2721 * flags.h (ira_algorithm): New enumeration.
2722 (flag_ira_algorithm, flag_ira_verbose): New external variable
2725 * postreload.c (gate_handle_postreload): Don't do post reload
2726 optimizations unless the reload is completed.
2728 * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
2731 * tree-pass.h (pass_ira): New external variable declaration.
2733 * reload.h: Add 2008 to the Copyright.
2735 * cfgloopanal.c: Include params.h.
2736 (estimate_reg_pressure_cost): Decrease cost for IRA optimization
2739 * params.h (IRA_MAX_LOOPS_NUM): New macro.
2741 * toplev.c (ira.h): New include.
2742 (flag_ira_algorithm, flag_ira_verbose): New external variables.
2743 (backend_init_target): Call ira_init.
2744 (backend_init): Call ira_init_once.
2745 (finalize): Call finish_ira_once.
2747 * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
2748 flag_ira_share_save_slots, flag_ira_share_spill_slots): New
2751 * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
2752 may_move_out_cost): New external variable declarations.
2753 (move_table): New typedef.
2755 * caller-save.c: Include headers output.h and ira.h.
2756 (no_caller_save_reg_set): New global variable.
2757 (save_slots_num, save_slots): New variables.
2758 (reg_save_code, reg_restore_code, add_stored_regs): Add
2760 (init_caller_save): Set up no_caller_save_reg_set.
2761 (init_save_areas): Reset save_slots_num.
2762 (saved_hard_reg): New structure.
2763 (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
2764 (initiate_saved_hard_regs, new_saved_hard_reg,
2765 finish_saved_hard_regs, saved_hard_reg_compare_func): New
2767 (setup_save_areas): Add code for sharing stack slots.
2768 (all_blocks): New variable.
2769 (save_call_clobbered_regs): Process pseudo-register too.
2770 (mark_set_regs): Process pseudo-register too.
2771 (insert_one_insn): Put the insn after bb note in a empty basic
2772 block. Add insn check.
2774 * global.c (eliminable_regset): Make it external.
2775 (mark_elimination): Use DF_LR_IN for IRA.
2776 (pseudo_for_reload_consideration_p): New.
2777 (build_insn_chain): Make it external. Don't ignore spilled
2778 pseudos for IRA. Use pseudo_for_reload_consideration_p.
2779 (gate_handle_global_alloc): New function.
2780 (pass_global_alloc): Add the gate function.
2782 * opts.c (decode_options): Set up flag_ira. Print the warning for
2784 (common_handle_option): Process -fira-algorithm and -fira-verbose.
2786 * timevar.def (TV_IRA, TV_RELOAD): New passes.
2788 * regmove.c (regmove_optimize): Don't do replacement of output for
2791 * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
2792 New external variable declarations.
2794 * local-alloc.c (update_equiv_regs): Make it external. Return
2795 true if jump label rebuilding should be done. Rescan new_insn for
2797 (gate_handle_local_alloc): New function.
2798 (pass_local_alloc): Add the gate function.
2800 * alias.c (value_addr_p, stack_addr_p): New functions.
2801 (nonoverlapping_memrefs_p): Use them for IRA.
2803 * common.opt (fira, fira-algorithm, fira-coalesce,
2804 fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
2805 fira-verbose): New options.
2807 * regclass.c (reg_class_subclasses, contains_reg_of_mode,
2808 move_cost, may_move_in_cost, may_move_out_cost): Make the
2810 (move_table): Remove typedef.
2811 (init_move_cost): Make it external.
2812 (allocate_reg_info, resize_reg_info, setup_reg_classes): New
2815 * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
2816 setup_reg_classes): New function prototypes.
2817 (eliminable_regset): New external variable declaration.
2818 (build_insn_chain, update_equiv_regs): New function prototypes.
2820 * Makefile.in (IRA_INT_H): New definition.
2821 (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
2822 ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
2823 (reload1.o, toplev.o): Add dependence on ira.h.
2824 (cfgloopanal.o): Add PARAMS_H.
2825 (caller-save.o): Add dependence on output.h and ira.h.
2826 (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
2827 ira-emit.o, ira-lives.o): New entries.
2829 * passes.c (pass_ira): New pass.
2831 * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
2833 * reload1.c (ira.h): Include the header.
2834 (changed_allocation_pseudos): New bitmap.
2835 (init_reload): Initiate the bitmap.
2836 (compute_use_by_pseudos): Permits spilled registers in FROM.
2837 (temp_pseudo_reg_arr): New variable.
2838 (reload): Allocate and free temp_pseudo_reg_arr. Sort pseudos for
2839 IRA. Call alter_reg with the additional parameter. Don't clear
2840 spilled_pseudos for IRA. Restore original insn chain for IRA.
2841 Clear changed_allocation_pseudos at the end of reload.
2842 (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
2843 (hard_regno_to_pseudo_regno): New variable.
2844 (count_pseudo): Check spilled pseudos. Set up
2845 hard_regno_to_pseudo_regno.
2846 (count_spilled_pseudo): Check spilled pseudos. Update
2847 hard_regno_to_pseudo_regno.
2848 (find_reg): Use better_spill_reload_regno_p. Check
2849 hard_regno_to_pseudo_regno.
2850 (alter_reg): Set up spilled_pseudos. Add a new parameter. Add
2852 (eliminate_regs_1): Use additional parameter for alter_reg.
2853 (finish_spills): Set up pseudo_previous_regs only for spilled
2854 pseudos. Call reassign_pseudos once for all spilled pseudos, pass
2855 more arguments. Don't clear live_throughout and dead_or_set for
2856 spilled pseudos. Use additional parameter for alter_reg. Call
2857 mark_allocation_change. Set up changed_allocation_pseudos.
2858 Remove sanity check.
2859 (emit_input_reload_insns, delete_output_reload): Use additional
2860 parameter for alter_reg. Call mark_allocation_change.
2861 (substitute, gen_reload_chain_without_interm_reg_p): New
2863 (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
2865 * testsuite/gcc.dg/20080410-1.c: New file.
2867 * config/s390/s390.h (IRA_COVER_CLASSES,
2868 IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
2870 * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
2872 * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
2874 * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
2876 * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
2878 * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
2880 * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
2882 2008-08-24 Jeff Law <law@redhat.com>
2883 * ira.c (setup_reg_class_intersect_union): Prefer smallest class
2884 when ignoring unavailable registers.
2886 2008-08-24 Jeff Law <law@redhat.com>
2887 * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
2888 FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
2889 * ira.c (setup_eliminable_regset): Check stack_realign_needed.
2890 * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
2892 2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
2893 * ira-build.c (allocno_range_compare_func): Stabilize sort.
2895 2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
2896 * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
2897 * reload1.c (find_reg): Process registers in register allocation order.
2899 2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
2900 * toplev.c (backend_init_target): Move ira_init call from
2902 (lang_dependent_init_target): ...to here.
2904 2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
2905 * ira.c (setup_class_subset_and_memory_move_costs): Don't
2906 calculate memory move costs for NO_REGS.
2908 2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
2909 * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
2910 STACK_REGS is defined.
2912 2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
2913 * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
2915 2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
2916 * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
2918 2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
2919 * config/sh/sh.h (IRA_COVER_CLASSES): Define.
2920 * config/sh/sh.md (movsicc_true+3): Check if emit returns a
2923 2008-08-26 Victor Kaplansky <victork@il.ibm.com>
2924 Dorit Nuzman <dorit@il.ibm.com>
2926 * gcc/config/spu/spu.md (vec_extract_evenv4si,
2927 vec_extract_evenv4sf, vec_extract_evenv8hi,
2928 vec_extract_evenv16qi, vec_extract_oddv4si,
2929 vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
2930 vec_interleave_highv4sf, vec_interleave_lowv4sf,
2931 vec_interleave_highv4si, vec_interleave_lowv4si,
2932 vec_interleave_highv8hi, vec_interleave_lowv8hi,
2933 vec_interleave_highv16qi, vec_interleave_lowv16qi,
2934 vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
2936 2008-08-25 Janis Johnson <janis187@us.ibm.com>
2939 * config/rs6000/rs6000.c (optimization_options): Don't default to
2940 section anchors without toplevel reorder.
2942 2008-08-25 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2944 * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
2945 (mfc_end_critical_section): Likewise.
2947 2008-08-25 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2949 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
2950 all type qualifiers from element type to vector type.
2952 2008-08-25 David Daney <ddaney@avtrex.com>
2954 * config/mips/mips.md (immediate_insn): Move up in file, fix
2955 comment typo, reformat.
2956 (fetchop_bit, atomic_hiqi_op memory_barrier,
2957 sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
2958 sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
2959 sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
2960 sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
2961 sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
2962 sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
2963 sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
2964 sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
2965 sync_old_nand<mode>, sync_new_nand<mode>,
2966 sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
2967 test_and_set_12): Moved to sync.md.
2969 * config/mips/sync.md: New file.
2971 2008-08-25 Richard Henderson <rth@redhat.com>
2973 * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
2974 (regsave): Likewise.
2975 (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
2976 (output_cfi_directive): Likewise.
2977 (div_data_align): New.
2978 (output_cfi): Use it.
2980 2008-08-24 Adam Nemet <anemet@caviumnetworks.com>
2982 * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
2983 * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
2984 (TARGET_OCTEON): New macro.
2985 (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
2986 (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
2987 (ISA_HAS_POP): New macro.
2988 * config/mips/driver-native.c (host_detect_local_cpu): Handle
2990 * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
2992 * config/mips/mips.md (cpu): Add octeon.
2993 (type): Add pop attribute value.
2994 (popcount<mode>2): New pattern.
2995 * doc/invoke.texi (-march=@var{arch}): Add octeon.
2997 2008-08-24 Jan Hubicka <jh@suse.cz>
2999 * doc/invoke.texi (-fipa-cp-clone): New option.
3000 (-fipa-cp): Update docs.
3001 (--param ipcp-unit-growth):New.
3002 * ipa-cp.c: Include fibheap.h, params.h
3003 (ipcp_initialize_node_lattices): When not cloning, all externally
3004 visible functions are bottom.
3005 (ipcp_need_redirect_p): Accept clones.
3006 (ipcp_insert_stage): Use cost driven heuristics.
3007 (max_count, dead_nodes): New static vars.
3008 (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
3009 ipcp_const_param_count): New functions.
3010 * common.opt (ipa-cp-clone): New command line option.
3011 * params.def (ipcp-unit-growth): New.
3013 2008-08-24 Jan Hubicka <jh@suse.cz>
3015 * tree-inline.c (tree_function_versioning): Look harder
3016 for referenced vars.
3018 2008-08-24 Razya Ladelsky <razya@il.ibm.com>
3020 PR tree-optimization/37185
3021 * matrix-reorg.c (transform_access_sites): Update changed stmt.
3023 2008-08-23 Jan Hubicka <jh@suse.cz>
3025 * ipa-cp.c (ipcp_analyze_node): New function.
3026 (ipcp_update_cloned_node): Use it.
3027 (ipcp_init_stage): Likewise.
3028 * ipa-inline.c (function_insertion_hook_holder): New static var.
3029 (analyze_function): Break out from ....
3030 (inline_generate_summary): Here; register insertion hook.
3031 (cgraph_decide_inlining): Remove hook.
3032 (add_new_function): New function.
3034 2008-08-23 Jan Hubicka <jh@suse.cz>
3036 * opts.c (decode_options): Revert accidental change enabling ipa-cp.
3038 2008-08-23 Jan Hubicka <jh@suse.cz>
3040 * ipa-cp.c (constant_val_insert): Remove.
3041 (ipcp_propagate_one_const): Remove.
3042 (ipcp_create_replace_map): Always insert replacements to the map.
3043 (ipcp_insert_stage): Do not try to insert statements by hand.
3044 * tree-inline.c (insert_init_stmt): Break out from ...
3045 (setup_one_parameter): ... here; allow NULL BB pointer.
3046 (tree_function_versioning): Use setup_one_parameter to process
3049 2008-08-23 Jan Hubicka <jh@suse.cz>
3051 * tree.c (decl_address_ip_invariant_p): New function.
3052 * tree.h (decl_address_ip_invariant_p): Declare.
3053 * gimple.c (strip_invariant_refs): Break out from ...
3054 (is_gimple_invariant_address): ... here
3055 (is_gimple_ip_invariant_address): New function.
3056 (is_gimple_ip_invariant): New function.
3057 * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
3060 * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
3061 (ipcp_lat_is_insertable): All constants are insertable.
3062 (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
3063 IPA_CONST_VALUE_REF.
3064 (ipcp_initialize_node_lattices): Propagate all types of operands.
3065 (build_const_val): Do not handle IPA_CONST_VALUE_REF.
3066 (ipcp_create_replace_map): Reformat.
3067 (ipcp_need_redirect_p): Simplify.
3068 (ipcp_insert_stage): Check that argument is used before clonning.
3069 * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
3070 (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
3071 (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
3072 (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
3073 * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
3074 (jump_func_type): Remove IPA_CONST_VALUE_REF.
3075 * tree-inline.c (tree_function_versioning): Add variables referenced by
3078 2008-08-23 Jan Hubicka <jh@suse.cz>
3081 * i386.c (standard_80387_constant_p): Use optimize_size.
3083 2008-08-23 Ira Rosen <irar@il.ibm.com>
3085 PR tree-optimization/37161
3086 * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
3087 * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
3088 (vect_determine_vectorization_factor): Move the scalar type
3089 retrieval to vect_get_smallest_scalar_type.
3090 (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
3091 scalar type. Remove redundant computation.
3092 * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
3093 (vect_get_slp_defs): Take the type of RHS into account if
3094 necessary by calling vect_get_smallest_scalar_type. Call
3095 vect_get_constant_vectors with additional argument.
3097 2008-08-23 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3100 * doc/invoke.texi (Wwrite-strings): Clarify description.
3102 2008-08-23 Ira Rosen <irar@il.ibm.com>
3104 PR tree-optimization/37174
3105 * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
3106 def stmt is a part of the loop before accessing its stmt_vec_info.
3108 2008-08-22 Anatoly Sokolov <aesok@post.ru>
3111 * config/avr/avr.md (UNSPEC_SWAP): New constants.
3112 (*swap): New insn pattern.
3113 (*ashlqi3): Rename from ashlqi3 insn pattern.
3114 (ashlqi3): New expanders.
3115 (*lshrqi3): Rename from lshrqi3 insn pattern.
3116 (lshrqi3): New expanders.
3117 (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
3118 lshrqi3_const5, lshrqi3_const6): New splitters.
3119 (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
3120 lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
3123 2008-08-22 Richard Guenther <rguenther@suse.de>
3125 PR tree-optimization/37078
3126 * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
3127 [+INF, +INF] ranges.
3129 2008-08-22 Richard Guenther <rguenther@suse.de>
3131 PR tree-optimization/37143
3132 * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
3133 a conversion statement instead of a copy.
3135 2008-08-22 Uros Bizjak <ubizjak@gmail.com>
3138 * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
3139 CCCmode, CCOmode and CCSmode destination modes.
3142 * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
3143 from different units in a single alternative.
3144 (*vec_extractv2sf_1): Ditto.
3145 (*vec_extractv2si_0): Ditto.
3146 (*vec_extractv2si_1): Ditto.
3147 * config/i386/sse.md (sse2_storehpd): Ditto.
3148 (sse2_storelpd): Ditto.
3149 (sse2_loadhpd): Ditto.
3150 (sse2_loadlpd): Ditto.
3153 * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
3154 (popcountsi2): Ditto.
3155 (clzdi2_abm): Ditto.
3156 (popcountdi2): Ditto.
3157 (clzhi2_abm): Ditto.
3158 (popcounthi2): Ditto.
3160 2008-08-22 Richard Guenther <rguenther@suse.de>
3164 * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
3165 if the multiplication does not overflow.
3167 2008-08-21 Nathan Sidwell <nathan@codesourcery.com>
3169 * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
3171 2008-08-21 Richard Henderson <rth@redhat.com>
3173 * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
3174 spurrious comma from test.
3175 * configure: Rebuild.
3177 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3180 * builtins.c (fold_builtin_next_arg): Add warning about undefined
3183 2008-08-21 Aldy Hernandez <aldyh@redhat.com>
3185 * c-tree.h (grokfield): New argument.
3186 * c-decl.c (grokfield): Handle new location argument.
3187 * c-parser.c (c_parser_struct_declaration): Pass location to
3190 2008-08-21 Richard Guenther <rguenther@suse.de>
3192 * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
3194 2008-08-21 Jan Hubicka <jh@suse.cz>
3196 * cgraph.c (first_cgraph_function_insertion_hook): New variable.
3197 (cgraph_add_function_insertion_hook,
3198 cgraph_remove_function_insertion_hook,
3199 cgraph_call_function_insertion_hooks): New functions.
3200 * cgraph.h (cgraph_add_function_insertion_hook,
3201 cgraph_remove_function_insertion_hook,
3202 cgraph_call_function_insertion_hooks): Declare.
3203 * ipa-reference.c (function_insertion_hook_holder): New variable.
3204 (check_operand, look_for_address_of): When checking late, do not care
3205 about module bitmaps.
3206 (add_new_function): New function.
3207 (generate_summary): Register hooks; zero module bitmaps.
3208 (propagate): Unregister hooks.
3209 * ipa-pure-const.c (function_insertion_hook_holder): New variable.
3210 (add_new_function): New function.
3211 (generate_summary): Register hook.
3212 (propagate): Remove hook.
3214 * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
3216 * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
3217 * ipa-cp.c (ipcp_update_cloned_node): New function.
3218 (build_const_val): Handle functions correctly; bring type logic
3219 into sync with tree-inline.c
3220 (ipcp_init_stage): Take care of computing stuff needed by
3221 indirect inlining; update clones.
3222 (ipcp_generate_summary): Break out of ipcp_driver.
3223 (ipcp_driver): Do only execution and transformation.
3224 (pass_ipa_cp): Make IPA_PASS.
3225 * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
3227 * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
3228 ipcp, some info is already available.
3229 * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
3230 * tree-inline.c (remap_ssa_name): Unshare expression.
3232 2008-08-21 Richard Guenther <rguenther@suse.de>
3234 * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
3235 a PHI ask VN if it is already available.
3236 * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
3237 * tree-ssa-sccvn.c (vn_phi_lookup): Export.
3239 2008-08-21 Richard Guenther <rguenther@suse.de>
3242 * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
3243 makes sure to produce a result of the correct type.
3245 2008-08-21 Jan Hubicka <jh@suse.cz>
3246 Backport from LTO branch:
3248 2008-05-05 Kenneth Zadeck <zadeck@naturalbridge.com>
3249 Jan Hubicka <jh@suse.cz>
3252 (init_state, finish_state, set_function_state, generate_summary):
3254 (scan_stmt): Renamed from scan_function. Changed to keep state in
3255 local static vars rather than cgraph aux field.
3256 (propagate): Renamed from static_execute. Changed to keep state in
3257 local static vars rather than cgraph aux field.
3258 (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
3259 * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
3261 2008-07-15 Kenneth Zadeck <zadeck@naturalbridge.com>
3263 * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
3264 * ipa-reference.c (init_function_info, generate_summary,
3265 propagate): New functions.
3266 (analyze_function): Call init_function_info.
3267 (static_execute): Stripped into generate_summary and propagate.
3268 (pass_ipa_reference): Made into ipa_opt_pass.
3270 2008-08-21 Richard Guenther <rguenther@suse.de>
3272 PR tree-optimization/37181
3273 * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
3275 (extract_range_from_unary_expr): Likewise.
3277 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3279 * diagnostic.c (pedwarn_at): Rename as pedwarn.
3281 * toplev.h (pedwarn_at): Likewise.
3282 * builtins.c: Update all calls to pedwarn.
3283 * c-lex.c: Likewise.
3284 * toplev.c: Likewise.
3285 * c-tree.h: Likewise.
3286 * c-decl.c: Likewise.
3287 * c-errors.c: Likewise.
3288 * c-typeck.c: Likewise.
3289 * c-common.c: Likewise.
3290 * c-parser.c: Likewise.
3292 2008-08-20 Joseph Myers <joseph@codesourcery.com>
3295 * config/sparc/sparc.c (function_arg_slotno): Handle structure
3296 with MODE_VECTOR_INT mode.
3298 2008-08-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3301 * tree-ssa.c (warn_uninit): Do not warn for variables that can be
3302 initialized outside the current module.
3303 (warn_uninitialized_var): Ignore left-hand side when walking the
3304 trees. Ignore address expressions. Examine VUSE operands in gimple
3305 statements with a variable declaration on the right-hand side.
3307 2008-08-20 Richard Sandiford <rdsandiford@googlemail.com>
3310 * rtlanal.c (subreg_offset_representable_p): Revert last change.
3312 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3315 * c-common.c (conversion_warning): Do not warn if applying bit-and
3316 operator to unsigned constant that fits in the target type.
3318 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3321 * c-common.c (conversion_warning): Do not warn for artificial
3324 2008-08-20 Richard Guenther <rguenther@suse.de>
3326 * tree-vrp.c (op_with_constant_singleton_value_range): New function.
3327 (extract_range_from_binary_expr): Fall back to constant propagation.
3328 (extract_range_from_unary_expr): Likewise.
3330 2008-08-20 Richard Guenther <rguenther@suse.de>
3332 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
3333 with TREE_THIS_VOLATILE on shared nodes.
3334 (fold_stmt_r): Likewise.
3336 2008-08-20 Jakub Jelinek <jakub@redhat.com>
3339 * c-parser.c (c_parser_attributes): For keywords use canonical
3340 spelling for attr_name.
3342 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3344 * value-prof.c (check_counter): Revert wrong call to error.
3346 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3348 * profile.c: Update calls to inform.
3349 * value-prof.c: Update calls to inform.
3351 2008-08-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3353 * diagnostic.c (inform): Add an explicit location_t parameter.
3354 * toplev.h (inform): Update declaration.
3355 * builtins.c: Update all calls to inform.
3356 * c-common.c: Likewise.
3357 * c-decl.c: Likewise.
3358 * c-opts.c: Likewise.
3359 * c-pch.c: Likewise.
3360 * c-pragma.c: Likewise.
3361 * c-typeck.c: Likewise.
3362 * coverage.c: Likewise.
3364 * toplev.c: Likewise.
3365 * tree-cfg.c: Likewise.
3366 * tree-ssa.c: Likewise.
3368 2008-08-20 H.J. Lu <hongjiu.lu@intel.com>
3371 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
3372 V2DI mode, for SSE4.1, use movq instead of vector set if the
3373 second element is zero and inter-unit moves are OK.
3375 2008-08-20 Richard Guenther <rguenther@suse.de>
3377 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More