OSDN Git Service

2008-09-04 Kai Tietz <kai.tietz@onevision.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
2
3         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
4         libraries.
5
6 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
7
8         * config/rs6000/rs6000.c (processor_target_table): Do not
9         enable VMX for POWER6.
10
11 2008-09-03  Anton Blanchard  <anton@samba.org>
12
13         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
14         emit memory barrier before operation.
15
16 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
17
18         PR testsuite/37325
19         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
20         default_elf_asm_output_external.
21
22 2008-09-03  Jeff Law  <law@redhat.com>
23
24         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
25
26 2008-09-03  Richard Henderson  <rth@redhat.com>
27
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.
31
32 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
33
34         PR rtl-opt/37243
35
36         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
37         all_allocnos.
38
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.
42
43         * ira-emit.c (change_loop): Use all_allocnos.
44
45         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
46         Ditto.
47         (ira_create_allocno): Set up all_allocnos bit for the created
48         allocno.
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.
54         
55 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
56
57         PR rtl-opt/37243
58         
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.
64
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.
71  
72 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
73
74         PR rtl-opt/37296
75
76         * ira-int.h (ira_sort_insn_chain): Remove.
77
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.
81
82         * reload1.c (reload): Don't call ira_sort_insn_chain.
83
84 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
85
86         PR middle-end/37293
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.
91
92 2008-09-03  Jan Hubicka  <jh@suse.cz>
93
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
100         expanding.
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;
106         copy fields needed.
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.
113
114 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
115
116         PR c++/37346
117         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
118         substatements.
119         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
120
121 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
122
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
126         for bf538.
127
128 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
129
130         Add picoChip port.
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.
137
138 2008-09-03  Richard Guenther  <rguenther@suse.de>
139
140         PR tree-optimization/37328
141         * tree-sra.c (sra_build_assignment): Gimplify properly.
142         (generate_copy_inout): Take the correct stmt as definition,
143         remove bogus assert.
144
145 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
146
147         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
148         attributes.
149
150         From Michael Frysinger  <michael.frysinger@analog.com>
151         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
152
153 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
154
155         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
156         defined.
157         (__gthread_setspecific): Revert 2008-08-31 change to
158         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API
159         case.
160
161 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
162
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.
167
168 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
169
170         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
171
172 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
173
174         * dwarf2out.c (tree_add_const_value_attribute): Only handle
175         VAR_DECL and CONST_DECL.
176
177 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
178             Jakub Jelinek  <jakub@redhat.com>
179
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.
196
197 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
198
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
202         offset_field.
203
204         PR tree-optimization/36766
205         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
206         for already removed basic blocks.
207
208         PR target/36332
209         * real.c (real_maxval): Clear a lower bit to make real_maxval
210         match get_max_float for IBM long double format.
211
212 2008-09-02  Andreas Schwab  <schwab@suse.de>
213
214         * configure.ac: Use m4_quote to quote the expansion of m4_do.
215         * configure: Regenerate.
216
217 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
218
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.
222
223 2008-09-02  Jan Hubicka  <jh@suse.cz>
224
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
227
228 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
229
230         * expr.c (emit_group_store): Don't assert stack temp mode size.
231
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>
239
240         Merge from graphite branch.
241         * graphite.c: New.
242         * graphite.h: New.
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.
280         (scop_p): New.
281         (struct data_reference): Add a field scop.
282         (DR_SCOP): New.
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.
316
317 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
318
319         PR target/37283
320         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
321         and -fno-toplevel-reorder after handle_options.
322
323 2008-09-02  Paul Brook  <paul@codesourcery.com>
324
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.
335
336 2008-09-02  Richard Guenther  <rguenther@suse.de>
337
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.
341
342 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
343
344         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
345
346         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
347         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
348         spec_info->mask.
349
350 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
351
352         * gcc/config/spu/spu.md (divdf3): Removed.
353
354 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
355
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
359         table.
360
361 2008-09-01  Paul Brook  <paul@codesourcery.com>
362
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.
377
378 2008-09-01  Paul Brook  <paul@codesourcery.com>
379
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.
384
385 2008-09-01  Paul Brook  <paul@codesourcery.com>
386
387         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
388         optimized LT0 test.  Remove optimization for GT.
389
390 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
391
392         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
393         openmp applications.
394         * pa-hpux11.h (LIB_SPEC): Likewise.
395
396         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
397         defined.
398
399 2008-09-01  Jan Hubicka  <jh@suse.cz>
400
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.
407
408 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
409
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
418         error.
419         * c-omp.c (c_finish_omp_atomic): Pass location when calling
420         build_indirect_ref.
421         * c-common.c (finish_label_address_expr): Handle new location
422         argument.
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
426         functions.
427         (c_parser_postfix_expression): Same.
428
429 2008-09-01  Paul Brook  <paul@codesourcery.com>
430
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
441         types.
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.
447
448 2008-09-01  Richard Guenther  <rguenther@suse.de>
449
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.
454
455 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
456
457         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
458         #ifdef ENABLE_CHECKING.
459
460 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
461
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.
465
466 2008-09-01  Andreas Schwab  <schwab@suse.de>
467
468         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
469
470 2008-09-01  Paul Brook  <paul@codesourcery.com>
471
472         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
473
474 2008-09-01  Jan Hubicka  <jh@suse.cz>
475
476         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
477
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.
498
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>
504
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
508         files.
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
515         the loop latch edge.
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.
527         (hash_rtx): Use it.
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
548         code to ...
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
568         through HID macro.
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
580         selective scheduler.
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
584         them.
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
603         current_sched_info.
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
613         reemit_notes.
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.
619         (luid): Remove.
620         (sched_init, sched_finish): Move Haifa-specific initialization/
621         finalization to ...
622         (haifa_sched_init, haifa_sched_finish): ... respectively.
623         New functions.
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
628         change_pattern.
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.
636         (add_block): Remove.
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
659         add_block.
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
677         to NULL.
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
682         reversed.  Use them.
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
691         contexts.
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
699         the Haifa scheduler.
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
703         functions.
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
713         sel_sched_p.
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.
751         (sel_sched_p): New.
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'.
769         (deps_t): New.
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
779         dep_count field.
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
788         and HDID.
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,
798         ds_to_dt): Export.
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
832         sched-int.h.
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
838         declaration.
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
860         scheduling.
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):
867         New functions.
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
884         gen_spec_check.
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
901         scheduling.
902         (rs6000_sched_finish): Do not run for selective scheduling.
903
904 2008-08-31  Jan Hubicka  <jh@suse.cz>
905
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.
926
927 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
928
929         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
930
931 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
932
933         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
934         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
935
936 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
937
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.
947
948 2008-08-31  Jan Hubicka  <jh@suse.cz>
949
950         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
951         mistakely had old version of patch.
952
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
957         profile as read.
958
959 2008-08-31  Jan Hubicka  <jh@suse.cz>
960
961         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
962         loop is optimized for speed.
963
964 2008-08-31  Richard Guenther  <rguenther@suse.de>
965
966         PR middle-end/37289
967         * fold-const.c (fold_binary): Retain conversions in folding
968         ~A + 1 to -A.
969
970 2008-08-31  Jan Hubicka  <jh@suse.cz>
971
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.
978
979 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
980
981         PR target/37168
982         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
983         prototype.
984         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
985         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
986         Also split V4SFmode.
987         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
988         vector float modes.
989
990 2008-08-31  Jan Hubicka  <jh@suse.cz>
991
992         * predict.c (PROB_VERY_LIKELY): Make small enough so things
993         become cold.
994         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
995
996 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
997
998         PR debug/37287
999         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1000         add source coords.
1001
1002         * dwarf2out.c (native_encode_initializer): Subtract min_index for
1003         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1004
1005 2008-08-31  Jan Hubicka  <jh@suse.cz>
1006
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.
1010
1011 2008-08-31  Richard Guenther  <rguenther@suse.de>
1012
1013         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1014         types instead of operands.  Re-instantiate verifying of
1015         binary expression operands.
1016
1017 2008-08-30  Jan Hubicka  <jh@suse.cz>
1018
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):
1108         Remove.
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.
1164
1165 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1166
1167         PR middle-end/36444
1168         * expmed.c (extract_bit_field_1): Check the mode size to make
1169         sure the vector modes have the same size.
1170
1171 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
1172
1173         * dojump.c (top level): Include basic-block.h to declare
1174         optimize_insn_for_speed_p
1175
1176         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1177
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.
1181
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.
1185
1186         * attribs.c (decl_attributes): Change #pragma GCC option to
1187         #pragma GCC target, and attribute((option(...))) to
1188         attribute((target(...))).
1189
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
1193         push/pop/reset.
1194         (#pragma GCC push_options): Document new pragma.
1195         (#pragma GCC pop_options): Document new pragma.
1196         (#pragma GCC reset_options): Document new pragma.
1197
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.
1202
1203         * targhooks.h (default_target_option_pragma_parse): Add
1204         declaration.
1205
1206         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1207         TI_CURRENT_OPTION_PRAGMA.
1208         (current_target_pragma): Rename from current_option_pragma.
1209
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.
1213
1214         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1215
1216         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1217         that the declaration is done at global scope.
1218
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
1224         global scope.
1225
1226         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1227         hook.
1228         (add_builtin_function_ext_scope): Add declaration.
1229
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
1234         pragma.
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
1239         options.
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.
1249
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.
1258
1259         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1260         if the caller and callee have different optimization levels.
1261
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.
1269
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.
1277
1278         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1279         Rename from ix86_valid_option_attribute_tree.
1280
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
1303         options.
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.
1313
1314         * config/ia64/ia64.h
1315         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1316         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1317
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.
1322
1323 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
1324
1325         PR target/37270
1326         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
1327         the reload address with the index register for SFmode
1328         access with a displacement.
1329
1330 2008-08-30  Jan Hubicka  <jh@suse.cz>
1331
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
1340         branch cost.
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.
1374
1375 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
1376
1377         PR target/37283
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.
1381
1382 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
1383
1384         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
1385         final insn of a split.
1386
1387 2008-08-30  Jan Hubicka  <jh@suse.cz>
1388
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.
1406
1407 2008-08-30  Jan Hubicka  <jh@suse.cz>
1408
1409         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
1410         functions.
1411         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
1412         profile presence locally.
1413
1414 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
1415
1416         PR bootstrap/37086
1417         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
1418         versions before 4.0.
1419
1420 2008-08-29  Jan Hubicka  <jh@suse.cz>
1421
1422         * tree-inline.c (insert_init_stmt): Insert sequence even when
1423         not in SSA form.
1424
1425 2008-08-29  Jeff Law  <law@redhat.com>
1426
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.
1430
1431 2008-08-29  Jan Hubicka  <jh@suse.cz>
1432
1433         * see.c (see_merge_one_def_extension): Silence used uninitialized
1434         warning.
1435         * matrix-reorg.c (check_allocation_function): Likewise.
1436         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
1437
1438 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
1439
1440         PR c/37261
1441         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
1442         compute new & and | in type rather than TREE_TYPE (arg0).
1443
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.
1447
1448         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
1449
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 ().
1456
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.
1460
1461         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
1462         types.
1463         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
1464         types.
1465
1466         * dwarf2out.c (loc_by_reference): New function.
1467         (add_location_or_const_value_attribute): Use it.
1468
1469         PR fortran/23057
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.
1474
1475         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
1476         loc_descriptor_from_tree_1.
1477
1478         PR fortran/29635
1479         PR fortran/23057
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
1492         the namespace.
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
1496         DW_AT_declaration.
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.
1506
1507 2008-08-29  Jan Hubicka  <jh@suse.cz>
1508
1509         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
1510
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
1526         debug output.
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.
1538
1539 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
1540
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.
1544
1545 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1546
1547         PR rtl-opt/37251
1548
1549         * ira-color.c (push_allocnos_to_stack): Truncate
1550         removed_splay_allocno_vec.
1551
1552 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1553
1554         PR rtl-opt/37243
1555         * ira-color (ira_fast_allocation): Don't assign hard registers to
1556         global allocnos.
1557
1558 2008-08-29  Jan Hubicka  <jh@suse.cz>
1559
1560         PR middle-end/37278
1561         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
1562         for cold internal loops.
1563
1564 2008-08-29  Richard Guenther  <rguenther@suse.de>
1565
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
1569         from ESCAPED.
1570
1571 2008-08-29  Richard Guenther  <rguenther@suse.de>
1572
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
1601         initialize mem_ref.
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.
1607
1608 2008-08-29  Richard Guenther  <rguenther@suse.de>
1609
1610         PR middle-end/37236
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.
1615
1616 2008-08-29  Jan Hubicka  <jh@suse.cz>
1617
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.
1622
1623 2008-08-29  Jan Hubicka  <jh@suse.cz>
1624
1625         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
1626         New functions.
1627         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
1628         Declare.
1629         * gimple.c (giple_copy_call_skip_args): New function.
1630         (giple_copy_call_skip_args): Declare.
1631
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;
1639         skip args.
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.
1646
1647 2008-08-29  Jan Hubicka  <jh@suse.cz>
1648
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
1676         argument.
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.
1700
1701 2008-08-29  Tristan Gingold  <gingold@adacore.com>
1702
1703         * gcov.c (main): Call expandargv.
1704
1705 2008-08-29  Jan Hubicka  <jh@suse.cz>
1706
1707         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
1708         is not cold.
1709         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1710         Constify arguments.
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):
1713         Constify.
1714         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
1715
1716 2008-08-29  Jan Hubicka  <jh@suse.cz>
1717
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
1725         it as unlikely.
1726         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
1727
1728 2008-08-29  Richard Guenther  <rguenther@suse.de>
1729
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.
1733
1734 2008-08-29  Nick Clifton  <nickc@redhat.com>
1735
1736         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
1737         the same way as SYMBOL_REFs.
1738
1739 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
1740
1741         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
1742
1743 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1744
1745         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
1746         * config/mips/mips.md (branch_likely): Remove const.  Fix
1747         comment formatting.
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
1751         definition.
1752         (equality_op): New code iterator.
1753         (bbv, bbinv): New code attributes.
1754         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
1755         patterns.
1756
1757 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1758             Andrew Pinski  <pinskia@gcc.gnu.org>
1759
1760         PR 18050
1761         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
1762
1763 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
1764
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.
1769
1770 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1771
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
1776         patterns.
1777         (muldi3_mul3): New pattern.
1778         (mulsi3_mult3): Rename to mulsi3_mul3.
1779
1780 2008-08-28  Jan Hubicka  <jh@suse.cz>
1781
1782         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
1783         to fail.
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
1793         predicate.
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.
1799
1800 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
1801
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.
1807
1808 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1809
1810         PR c/30949
1811         * c-typeck.c (convert_for_assignment): Give a note describing what
1812         was passed and what was expected.
1813
1814 2008-08-28  Joey Ye  <joey.ye@intel.com>
1815
1816         * doc/extend.texi: Document AVX built-in functions.
1817         * doc/invoke.texi: Document -mavx.
1818
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>
1822
1823         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
1824
1825         * config/i386/cpuid.h (bit_FMA): New.
1826         (bit_XSAVE): Likewise.
1827         (bit_OSXSAVE): Likewise.
1828         (bit_AVX): Likewise.
1829
1830         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
1831         define.  Use ASM_OUTPUT_AVX_PREFIX.
1832
1833         * config/i386/gmmintrin.h: New.
1834
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
1850         in AVX register.
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
1868         modes.
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
1872         instructions.
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,
2000         IX86_BUILTIN_CMPPS,
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
2048         PATTERN.
2049
2050         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2051         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2052
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
2066         support.
2067         (SSE_REG_MODE_P): Allow 256bit vector modes.
2068         (ix86_args): Add a warn_avx field.
2069
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.
2095         (prefix): Likewise.
2096         (prefix_vex_imm8): Likewise.
2097         (prefix_vex_w): Likewise.
2098         (length_vex): Likewise.
2099         (maxmin): Likewise.
2100         (movoi): 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.
2145
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.
2159
2160         * config/i386/i386.opt (mavx): New.
2161         (mfma): Likewise.
2162
2163         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2164
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.
2169
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.
2175
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.
2486         (aesimc): Likewise.
2487         (aeskeygenassist): Likewise.
2488
2489 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
2490
2491         * config/i386/predicates.md (vzeroall_operation): New.
2492
2493         * config/i386/sse.md (avx_vzeroall): New.
2494         (*avx_vzeroall): Likewise.
2495
2496 2008-08-28  Paul Brook  <paul@codesourcery.com>
2497             Mark Shinwell  <shinwell@codesourcery.com>
2498             Richard Earnshaw  <richard.earnshaw@arm.com>
2499
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
2507         above.
2508         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
2509         * config/arm/arm-protos.h (arm_optimization_options): New.
2510
2511 2008-08-28  Nick Clifton  <nickc@redhat.com>
2512
2513         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
2514         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
2515         attribute.
2516
2517         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
2518         * config/v850/v850.md (return): Remove frame size restriction.
2519
2520         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
2521
2522         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
2523
2524         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
2525
2526         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
2527
2528 2008-08-28  Paul Brook  <paul@codesourcery.com>
2529
2530         * config/arm/vfp11.md: Update license notice.
2531         * config/arm/cortex-r4.md: Ditto.
2532
2533 2008-08-28  Richard Guenther  <rguenther@suse.de>
2534
2535         PR tree-optimization/37207
2536         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
2537         tuplification bug.
2538
2539 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
2540
2541         PR c++/36741
2542         * tree.c (int_fits_type_p): Don't forget unsigned integers
2543           of type sizetype which higher end word equals -1.
2544
2545 2008-08-28  Ira Rosen  <irar@il.ibm.com>
2546
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
2560         vectorizable_load.
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
2570         supported.
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.
2589
2590 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
2591
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):
2597         Likewise.
2598         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
2599         thread interfaces.
2600
2601 2008-08-28  Richard Guenther  <rguenther@suse.de>
2602
2603         PR middle-end/37005
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
2609         checking from here.
2610         (fold_binary): Remove now duplicate folding.
2611
2612 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2613
2614         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
2615         use not updated in the last change.
2616
2617 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2618
2619         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
2620         (IRA_COVER_CLASSES): Add FPUL_REGS.
2621
2622 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2623
2624         PR 37217
2625         * c-common.c (conversion_warning): Check for null operands.
2626
2627 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2628
2629         PR c/31673
2630         * c-decl.c (check_for_loop_decls): Improve error message. Give
2631         hint.
2632
2633 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2634
2635         PR c/37186
2636         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
2637         (convert_for_assignment): Pass corrent OPT_W* parameter to
2638         WARN_FOR_ASSIGNMENT.
2639
2640 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2641
2642         PR c++/35321
2643         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
2644
2645 2008-08-27  Paul Brook  <paul@codesourcery.com>
2646
2647         * config.gcc: Loosen checks for arm uclinux eabi targets.
2648
2649 2008-08-27  Paul Brook  <paul@codesourcery.com>
2650
2651         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
2652         _clzsi2.
2653         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
2654
2655 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
2656
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.
2660
2661 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2662
2663         PR rtl-opt/37219
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.
2666
2667 2008-08-26  Paul Brook  <paul@codesourcery.com>
2668
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.
2680
2681 2008-08-26  Paul Brook   <paul@codesourcery.com>
2682
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.
2686
2687 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
2688
2689         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
2690         parameter to inform call.
2691
2692 2008-08-26  Jeff Law  <law@redhat.com>
2693
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.
2697
2698 2008-08-26  Ben Elliston  <bje@au.ibm.com>
2699
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.
2704         * jump.c: Likewise.
2705
2706 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
2707
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.
2710
2711         * doc/passes.texi: Describe IRA.
2712
2713         * doc/tm.texi (IRA_COVER_CLASSES,
2714         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
2715
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.
2720
2721         * flags.h (ira_algorithm): New enumeration.
2722         (flag_ira_algorithm, flag_ira_verbose): New external variable
2723         declarations.
2724
2725         * postreload.c (gate_handle_postreload): Don't do post reload
2726         optimizations unless the reload is completed.
2727
2728         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
2729         IRA.
2730
2731         * tree-pass.h (pass_ira): New external variable declaration.
2732
2733         * reload.h: Add 2008 to the Copyright.
2734
2735         * cfgloopanal.c: Include params.h.
2736         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
2737         mode.
2738
2739         * params.h (IRA_MAX_LOOPS_NUM): New macro.
2740
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.
2746
2747         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
2748         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
2749         external variables.
2750
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.
2754
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
2759         prototypes.
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
2766         functions.
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.
2773
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.
2781
2782         * opts.c (decode_options): Set up flag_ira.  Print the warning for
2783         -fira.
2784         (common_handle_option): Process -fira-algorithm and -fira-verbose.
2785
2786         * timevar.def (TV_IRA, TV_RELOAD): New passes.
2787
2788         * regmove.c (regmove_optimize): Don't do replacement of output for
2789         IRA.
2790
2791         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
2792         New external variable declarations.
2793
2794         * local-alloc.c (update_equiv_regs): Make it external.  Return
2795         true if jump label rebuilding should be done.  Rescan new_insn for
2796         notes.
2797         (gate_handle_local_alloc): New function.
2798         (pass_local_alloc): Add the gate function.
2799
2800         * alias.c (value_addr_p, stack_addr_p): New functions.
2801         (nonoverlapping_memrefs_p): Use them for IRA.
2802
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.
2806
2807         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
2808         move_cost, may_move_in_cost, may_move_out_cost): Make the
2809         variables external.
2810         (move_table): Remove typedef.
2811         (init_move_cost): Make it external.
2812         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
2813         functions.
2814
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.
2819
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.
2828
2829         * passes.c (pass_ira): New pass.
2830
2831         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
2832
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
2851         code for IRA.
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
2862         functions.
2863         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
2864
2865         * testsuite/gcc.dg/20080410-1.c: New file.
2866
2867         * config/s390/s390.h (IRA_COVER_CLASSES,
2868         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
2869
2870         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
2871
2872         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
2873
2874         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
2875
2876         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
2877
2878         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
2879
2880         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
2881
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.
2885
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.
2891
2892         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
2893         * ira-build.c (allocno_range_compare_func): Stabilize sort.
2894
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.
2898
2899         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
2900         * toplev.c (backend_init_target): Move ira_init call from
2901         here...
2902         (lang_dependent_init_target): ...to here.
2903
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.
2907
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.
2911
2912         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
2913         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
2914
2915         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
2916         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
2917
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
2921         barrier.
2922
2923 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
2924             Dorit Nuzman  <dorit@il.ibm.com>
2925
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
2935
2936 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
2937
2938         PR target/36756
2939         * config/rs6000/rs6000.c (optimization_options): Don't default to
2940         section anchors without toplevel reorder.
2941
2942 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2943
2944         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
2945         (mfc_end_critical_section): Likewise.
2946
2947 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2948
2949         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
2950         all type qualifiers from element type to vector type.
2951
2952 2008-08-25  David Daney  <ddaney@avtrex.com>
2953
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.
2968         (sync.md): Include.
2969         * config/mips/sync.md: New file.
2970
2971 2008-08-25  Richard Henderson  <rth@redhat.com>
2972
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.
2979
2980 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
2981
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
2989         Octeon.
2990         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
2991         Handle Octeon.
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.
2996
2997 2008-08-24  Jan Hubicka  <jh@suse.cz>
2998
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.
3012
3013 2008-08-24  Jan Hubicka  <jh@suse.cz>
3014
3015         * tree-inline.c (tree_function_versioning): Look harder
3016         for referenced vars.
3017
3018 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
3019
3020         PR tree-optimization/37185
3021         * matrix-reorg.c (transform_access_sites): Update changed stmt.
3022
3023 2008-08-23  Jan Hubicka  <jh@suse.cz>
3024
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.
3033
3034 2008-08-23  Jan Hubicka  <jh@suse.cz>
3035
3036         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
3037
3038 2008-08-23  Jan Hubicka  <jh@suse.cz>
3039
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
3047         replacement map.
3048
3049 2008-08-23  Jan Hubicka  <jh@suse.cz>
3050
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):
3058         Declare.
3059
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
3076         replacing trees.
3077
3078 2008-08-23  Jan Hubicka  <jh@suse.cz>
3079
3080         PR target/37094
3081         * i386.c (standard_80387_constant_p): Use optimize_size.
3082
3083 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3084
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.
3096
3097 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3098
3099         PR 35648
3100         * doc/invoke.texi (Wwrite-strings): Clarify description.
3101
3102 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3103
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.
3107
3108 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
3109
3110         PR target/11259
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
3121         peephole2 patterns.
3122
3123 2008-08-22  Richard Guenther  <rguenther@suse.de>
3124
3125         PR tree-optimization/37078
3126         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
3127         [+INF, +INF] ranges.
3128
3129 2008-08-22  Richard Guenther  <rguenther@suse.de>
3130
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.
3134
3135 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
3136
3137         PR target/37184
3138         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
3139         CCCmode, CCOmode and CCSmode destination modes.
3140
3141         PR target/37191
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.
3151
3152         PR target/37197
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.
3159
3160 2008-08-22  Richard Guenther  <rguenther@suse.de>
3161
3162         PR middle-end/36548
3163         PR middle-end/37125
3164         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
3165         if the multiplication does not overflow.
3166
3167 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
3168
3169         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
3170
3171 2008-08-21  Richard Henderson  <rth@redhat.com>
3172
3173         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
3174         spurrious comma from test.
3175         * configure: Rebuild.
3176
3177 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3178
3179         PR 30457
3180         * builtins.c (fold_builtin_next_arg): Add warning about undefined
3181         behaviour.
3182
3183 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
3184
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
3188         grokfield.
3189
3190 2008-08-21  Richard Guenther  <rguenther@suse.de>
3191
3192         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
3193
3194 2008-08-21  Jan Hubicka  <jh@suse.cz>
3195
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.
3213
3214         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
3215
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
3226         offset to address.
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.
3231
3232 2008-08-21  Richard Guenther  <rguenther@suse.de>
3233
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.
3238
3239 2008-08-21  Richard Guenther  <rguenther@suse.de>
3240
3241         PR middle-end/36817
3242         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
3243         makes sure to produce a result of the correct type.
3244
3245 2008-08-21  Jan Hubicka  <jh@suse.cz>
3246         Backport from LTO branch:
3247
3248         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3249                     Jan Hubicka  <jh@suse.cz>
3250
3251         * ipa-pure-const.c
3252         (init_state, finish_state, set_function_state, generate_summary):
3253         New functions.
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.
3260
3261         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
3262
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.
3269
3270 2008-08-21  Richard Guenther  <rguenther@suse.de>
3271
3272         PR tree-optimization/37181
3273         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
3274         folding result.
3275         (extract_range_from_unary_expr): Likewise.
3276
3277 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3278
3279         * diagnostic.c (pedwarn_at): Rename as pedwarn.
3280         (pedwarn): Delete.
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.
3291
3292 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
3293
3294         PR target/31070
3295         * config/sparc/sparc.c (function_arg_slotno): Handle structure
3296         with MODE_VECTOR_INT mode.
3297
3298 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3299
3300         PR middle-end/179
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.
3306
3307 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
3308
3309         PR bootstrap/37155
3310         * rtlanal.c (subreg_offset_representable_p): Revert last change.
3311
3312 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3313
3314         PR 35701
3315         * c-common.c (conversion_warning): Do not warn if applying bit-and
3316         operator to unsigned constant that fits in the target type.
3317
3318 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3319
3320         PR c++/35602
3321         * c-common.c (conversion_warning): Do not warn for artificial
3322         expressions.
3323
3324 2008-08-20  Richard Guenther  <rguenther@suse.de>
3325
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.
3329
3330 2008-08-20  Richard Guenther  <rguenther@suse.de>
3331
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.
3335
3336 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
3337
3338         PR c/37171
3339         * c-parser.c (c_parser_attributes): For keywords use canonical
3340         spelling for attr_name.
3341
3342 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3343
3344         * value-prof.c (check_counter): Revert wrong call to error.
3345
3346 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3347
3348         * profile.c: Update calls to inform.
3349         * value-prof.c: Update calls to inform.
3350
3351 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3352
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.
3363         * opts.c: Likewise.
3364         * toplev.c: Likewise.
3365         * tree-cfg.c: Likewise.
3366         * tree-ssa.c: Likewise.
3367
3368 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
3369
3370         PR target/37169
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.
3374
3375 2008-08-20  Richard Guenther  <rguenther@suse.de>
3376
3377         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
3378     &