OSDN Git Service

* config/bfin/bfin.c (workaround_speculation): Correct algorithm to
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
2
3         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
4         not lose track of the number of NOPs needed.  Number of NOPs needed
5         for sync vs. loads workaround was switched; corrected.  Run second
6         pass for all workarounds.  No NOPs needed after call insns.  Change
7         second pass to use find_next_insn_start and find_load helpers in order
8         to properly detect parallel insns.
9         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
10
11 2008-09-10  Jan Hubicka  <jh@suse.cz>
12
13         * value-prof.c (gimple_ic): Fix tuplification bug.
14         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized var
15         warning.
16
17 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
18
19         PR tree-optimization/37353
20         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
21         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
22         calls instead of cond_dead_built_in_calls.
23         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
24         initalize the vector only before adding first entry.  Use VEC_safe_push
25         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
26         shrink_wrap_conditional_dead_built_in_calls call.
27
28 2008-09-10  Ira Rosen  <irar@il.ibm.com>
29
30         PR tree-optimization/37385
31         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument,
32         and use it as a vector type if not NULL.
33         (vectorizable_store): Call vect_create_data_ref_ptr with the type of 
34         vectorized rhs.
35         (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
36         argument.
37         (vectorizable_load): Likewise.
38
39 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
40
41         * config/i386/i386.md (SWI32): New mode iterator.
42         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
43         of SWI.
44
45 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
46
47         PR rtl-optimization/37435
48         * caller-save.c (insert_restore, insert_save): Check the mode by
49         reg_save_code.
50
51 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
52
53         PR other/37265
54         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
55         splay tree lookup.
56         (dw2_output_indirect_constant_1): Use unstripped name in symbol
57         reference.
58
59 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
60
61         * doc/invoke.texi (ARM Options): Correct errors in discussion 
62         of -mfloat-abi, -mhard-float, and -msoft-float.
63
64 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
65             Jan Hubicka  <jh@suse.cz>
66
67         PR middle-end/37356
68         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
69         calling gimple_regimplify_operands on it.  Iterate over all newly
70         added statements, not just the last one.
71         (insert_init_stmt): Insert stmt into seq first, then call
72         gimple_regimplify_operands on it.  Don't create new gimplification
73         context, nor find referenced vars.
74
75 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
76
77         PR other/37419
78         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
79         to pointer to vector pointer.
80         * ipa-prop.c (ipa_propagate_indirect_call_infos,
81         propagate_info_to_inlined_callees): Likewise.
82         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
83         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
84         ipa_check_create_edge_args.
85         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument
86         to pointer to vector pointer.
87         (cgraph_decide_inlining_of_small_function): Adjust
88         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
89         calls.
90
91         PR target/37438
92         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when optimizing
93         for size, not speed.
94
95         PR rtl-optimization/37408
96         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
97         if parm is promoted.
98
99 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
100
101         PR tree-optimization/37375
102         * tree-scalar-evolution.c (scev_info_str): Add field instantiated_below.
103         (new_scev_info_str, eq_scev_info, find_var_scev_info,
104         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
105         set_instantiated_value): Pass instantiated_below.
106         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls to
107         above functions.
108         (instantiate_scev_1, instantiate_scev): Pass a basic block above which the
109         definitions are not instantiated.
110
111         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
112         (block_before_loop): New.
113         * tree-data-ref.c (dr_analyze_indices): Update uses of instantiate_scev.
114         * graphite.c (block_before_scop): New.
115         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a 
116         basic block, not a loop for determining the parameters.
117         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
118         scop.
119         (idx_record_params, find_params_in_bb, find_scop_parameters,
120         build_loop_iteration_domains, add_conditions_to_domain): Update calls 
121         to instantiate_scev.
122
123         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
124
125 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
126
127         PR rtl-opt/37333
128         
129         * ira-build.c (ira_create_allocno): Setup frequency to 0.
130
131         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
132         Check zero freq and increase if necessary.
133
134 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
135
136         * ira-conflicts.c (process_regs_for_copy): Check that the hard
137         regno is in the right range.  Add comments.
138
139 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
140
141         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
142         warnings.
143         * mips-tfile.c (copy_object): Cast alloca result to int *.
144         * mips-tdump.c (print_symbol): Cast xmalloc return values to
145         proper types.
146         Rename class to sclass.
147         (read_tfile): Cast read_seek return values to proper types.
148         Cast xcalloc return value to proper type.
149
150 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
151
152         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
153         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
154         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
155
156 2008-09-09  Jan Hubicka  <jh@suse.cz>
157
158         * profile.c (is_edge_inconsistent): Add debug output; ignore negative count
159         on fake edges.
160         (is_inconsistent): Add debug output.
161
162 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
163
164         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
165         dump message.
166         (choose_ready): When first insn is chosen from the ready list, also
167         dump it.
168
169 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
170
171         PR rtl-optimization/37360
172         * haifa-sched.c (max_issue): Do not assert that we never issue more
173         insns than issue_rate.  Add comment.
174         
175 2008-09-09  Richard Guenther  <rguenther@suse.de>
176
177         * tree-cfg.c (verify_types_in_gimple_op): Remove.
178         (verify_types_in_gimple_call): Rename to ...
179         (verify_gimple_call): ... this.  Enhance.
180         (verify_types_in_gimple_cond): Remove.
181         (verify_gimple_comparison): New function ...
182         (verify_types_in_gimple_assign): ... split out from here.
183         (verify_types_in_gimple_return): Rename to ...
184         (verify_gimple_return): ... this.  Enhance.
185         (verify_types_in_gimple_switch): Rename to ...
186         (verify_gimple_switch): ... this.  Enhance.
187         (verify_gimple_goto): New function.
188         (verify_types_in_gimple_phi): Rename to ...
189         (verify_gimple_phi): ... this.  Enhance.
190         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
191         Fold in single-statement cases from verify_types_in_gimple_seq_2.
192         (verify_types_in_gimple_seq_2): Remove cases handled in
193         verify_types_in_gimple_stmt.
194
195 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
196
197         * config/bfin/bfin.c (n_regs_to_save): New static variable.
198         (push_multiple_operation, pop_multiple_operation): Set it.
199         (workaround_rts_anomaly): New function.
200         (workaround_speculation): New function, broken out of bfin_reorg.
201         (bfin_reorg): Call the new functions.
202
203 2008-09-09  Richard Guenther  <rguenther@suse.de>
204
205         PR middle-end/37354
206         PR middle-end/30165
207         * gimplify.c (gimplify_conversion): Change conversions of
208         non-register type to VIEW_CONVERT_EXPRs.
209         (gimplify_addr_expr): If we need to make the operand
210         addressable make sure to use a properly initialized
211         temporary for that so it gets a valid gimple store.
212
213 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
214
215         * function.h (struct function): Add function_start_locus.
216         * cfgexpand.c (gimple_expand_cfg): Use it.
217         * c-parser.c (c_parser_declaration_or_fndef): Set it.
218
219 2008-09-09  Richard Guenther  <rguenther@suse.de>
220
221         PR tree-optimization/37433
222         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
223         function calls.
224
225 2008-09-09  Richard Guenther  <rguenther@suse.de>
226
227         PR tree-optimization/37387
228         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
229         and bits to a common type.
230
231 2008-09-09  Nick Clifton  <nickc@redhat.com>
232
233         * config/v850/v850.md (return): Restore frame size restriction.
234
235 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
236
237         * c-common.c (c_expand_decl): Remove.
238         * c-common.h (anon_aggr_type_p): Remove prototype.
239         (DECL_ANON_UNION_ELEMS): Remove.
240         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
241         * c-decl.c (anon_aggr_type_p): Remove.
242         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
243         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
244         * langhooks.h (struct lang_hooks): Remove expand_decl.
245         * langhooks.c (lhd_expand_decl): Remove.
246         * stmt.c (expand_anon_union_decl): Remove.
247         * tree.h (expand_anon_union_decl): Remove prototype.
248
249 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
250
251         PR target/36609
252         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
253         zero.
254         * config/avr/avr.md  (QISI) : Define mode iterator.
255         (negated_tst<mode>) : Redefine as split using mode macro.
256         (reversed_tstqi): Define insn as reversed compare with zero.
257         (reversed_tsthi): Ditto.
258         (reversed_tstsi): Ditto.
259
260 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
261
262         PR middle-end/37393
263         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
264         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
265
266         PR middle-end/37414
267         * predict.c (optimize_function_for_size_p): Don't segfault if
268         FUN is NULL.
269         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
270         tree_swap_operands_p): Don't test cfun != NULL before calling
271         optimize_function_for_s*_p.
272
273 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
274
275         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
276         end of the search.
277
278 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
279
280         * crx/crx.h (IRA_COVER_CLASSES): Define.
281
282 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
283
284         PR middle-end/37337
285         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
286         even when a stmt has been gimple_modified_p, but after fold_stmt is
287         not any longer.  Remove unneeded may_have_exposed_new_symbols
288         initializations.
289
290 2008-09-08  Richard Guenther  <rguenther@suse.de>
291
292         PR tree-optimization/37421
293         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
294         valueize the RHS.
295
296 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
297
298         PR middle-end/37415
299         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
300
301 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
302
303         PR driver/37409
304         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
305         * pa-hpux10.h (LINK_SPEC): Likewise.
306         * pa-hpux11.h (LINK_SPEC): Likewise.
307
308 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
309
310         * pa32-regs.h (IRA_COVER_CLASSES): Define.
311         * pa64-regs.h (IRA_COVER_CLASSES): Define.
312
313 2008-09-07  Helge Deller  <deller@gmx.de>
314
315         * pa/linux-atomic.c: New file.
316         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
317         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
318
319 2008-09-07  Richard Guenther  <rguenther@suse.de>
320             Ira Rosen  <irar@il.ibm.com>
321
322         PR tree-optimization/36630
323         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
324         Call STRIP_NOPS before calling evolution_part_in_loop_num.
325
326 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
327             Ira Rosen  <irar@il.ibm.com>
328
329         PR tree-optimization/35642
330         * config/rs6000/altivec.md (mulv8hi3): Implement.
331
332 2008-09-06  Jeff Law <law@redhat.com>
333
334         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
335
336 2008-09-06  Jan Hubicka  <jh@suse.cz>
337
338         PR tree-optimization/14703
339         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored declarations.
340         * passes.c (init_optimization_passes): Recompute inline parameters.
341
342 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
343
344         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
345         DECL being null.
346
347 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
348             Peter Fuerst  <post@pfrst.de>
349
350         * doc/invoke.texi: Document -mr10k-cache-barrier=.
351         * doc/extend.texi: Document __builtin_mips_cache.
352         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
353         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
354         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
355         __GCC_HAVE_BUILTIN_MIPS_CACHE.
356         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
357         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
358         (set_push_mips_isas): New variable.
359         (mips_r10k_cache_barrier): New variable.
360         (cache): New availability predicate.
361         (mips_builtins): Add an entry for __builtin_mips_cache.
362         (mips_build_cvpointer_type): New function.
363         (MIPS_ATYPE_CVPOINTER): New macro.
364         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
365         mode is VOIDmode.
366         (r10k_simplified_address_p, r10k_simplify_address)
367         (r10k_uncached_address_p, r10k_safe_address_p)
368         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
369         (r10k_needs_protection_p_call, r10k_needs_protection_p)
370         (r10k_insert_cache_barriers): New functions.
371         (mips_reorg_process_insns): Delete cache barriers after a
372         branch-likely instruction.
373         (mips_reorg): Call r10k_insert_cache_barriers.
374         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
375         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
376         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
377         (mips_cache, r10k_cache_barrier): New define_insns.
378
379 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
380
381         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
382         * ira-color.c (setup_allocno_left_conflicts_num): Use
383         hard_reg_set_equal_p instead of a comparison with
384         ira_zero_hard_reg_set.
385         * ira.c (setup_reg_subclasses): Likewise.
386         (setup_cover_and_important_classes): Likewise.
387         (setup_class_translate): Likewise.
388         (setup_reg_class_intersect_union): Likewise.
389         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
390         (ira_init_once): Don't initialize them.
391
392 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
393
394         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
395
396 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
397
398         * ira-color.c (ira_fast_allocation): Permit global allocno
399         allocation.
400         
401 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
402
403         Improved branch hints, safe hints, and scheduling.
404
405         * haifa-sched.c (sched_emit_insn) : Define.
406         * sched-int.h (sched_emit_insn) : Add prototype.
407         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
408         -mhint-max-distance -msafe-hints) : Document.
409         * config/spu/spu.c (spu_flag_var_tracking): New.
410         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
411         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
412         TARGET_ASM_FILE_START): Define.
413         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
414         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
415         (spu_emit_branch_hint): Add blocks argument.
416         (insert_branch_hints, insert_nops): Remove.
417         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
418         uses_ls_unit, spu_sched_init_global, spu_sched_init,
419         spu_sched_reorder, asm_file_start): New functions.
420         (clock_var, spu_sched_length, pipe0_clock,
421         pipe1_clock, prev_clock_var, prev_priority,
422         spu_ls_first, prev_ls_clock): New static variables.
423         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
424         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
425         (nopn_nv): Add a non-volatile version of nop.
426         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
427         -mhint-max-distance, -msafe-hints): New options.
428
429 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
430             Samuel Tardieu  <sam@rfc1149.net>
431
432         * opts.c (decode_options): Combine nested if statements.
433
434         PR target/37283
435         * opts.c (decode_options): Handle more relationships among
436         unit-at-a-time, toplevel-reorder, and section-anchors.
437
438 2008-09-05  David Daney  <ddaney@avtrex.com>
439
440         * doc/install.texi (--enable-reduced-reflection): Document new option.
441
442 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
443
444         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
445         constantpool_mem_p.
446         (constantpool_operand): New.
447         (move_operand): Disallow sub-word modes for the constant pool.
448         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
449         (xtensa_secondary_reload_class): Replace with....
450         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check. 
451         Set icode for sub-word reloads from the constant pool.
452         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
453         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
454         * config/xtensa/xtensa.md (reload<mode>_literal): New.
455         * config/xtensa/xtensa-protos.h: Update prototypes.
456         
457 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
458
459         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
460         (REG_CLASS_NAMES): Update.
461         (REG_CLASS_CONTENTS): Update.
462         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
463         of ALL_REGS for regs 77 and 78.
464         * function.c (instantiate_virtual_regs_in_insn): Assert that
465         return value of simplify_gen_subreg is not NULL.
466
467 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
468
469         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
470         (gen_rtvec_v): Fix coding standards.
471
472 2008-09-04  Jan Hubicka  <jh@suse.cz>
473
474         * i386.c (decide_alg): Be more conservative about optimizing for size.
475
476 2008-09-04  Ian Lance Taylor  <iant@google.com>
477
478         * varasm.c (narrowing_initializer_constant_valid_p): New
479         static function.
480         (initializer_constant_valid_p): Call it.
481
482 2008-09-04  Jeff Law  <law@redhat.com>
483
484         * fold-const.c (native_encode_real): Fix computation of WORDS.
485         (native_interpret_real): Likewise.
486
487 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
488
489         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
490
491 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
492
493         * ira-conflicts.c (process_regs_for_copy): Check insn to check
494         that the cost is already taken into account in ira-costs.c
495
496         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
497
498         * ira-build.c (print_copy, print_copies, ira_debug_copy,
499         ira_debug_copies): New.
500         (ira_bulid): Call print_copies.
501         
502         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
503         
504 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
505
506         PR target/32783
507         * config/rs6000/rs6000.c (optimization_options): Remove check of
508         flag_toplevel_order.
509
510 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
511
512         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
513         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
514         second operand is a reg_imm10_operand.
515         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
516         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
517         (*seq_<GPR:mode><GPR2:mode>): Rename to
518         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
519         ISA_HAS_SEQ_SNE.
520         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
521         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
522         ISA_HAS_SEQ_SNE.
523         (*sne_<GPR:mode><GPR2:mode>): Rename to
524         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
525         ISA_HAS_SEQ_SNE.
526
527 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
528
529         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
530         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
531         combining an arithmetic right shift by more than 31 and a
532         trunction.  Don't match for out-of-range shift amounts.  Set
533         attribute mode to <MODE>.
534         (*lshr32_trunc<mode>): Name the pattern combining a logical right
535         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
536         (*<optab>_trunc<mode>_exts): New pattern for truncated right
537         shifts by less than 32.
538         (extv): Change predicate on first operand to accept registers.
539         Change predicate of the other operands from immediate_operand to
540         const_int_operand.  Expand exts when source is a register.
541         (extzv): Change predicate of the constant operands from
542         immediate_operand to const_int_operand.
543         (extzv<mode>): Change predicate of the constant operands from
544         immediate_operand to const_int_operand and no constraint. Also
545         remove mode.
546         (*extzv_trunc<mode>_exts): New pattern.
547
548 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
549
550         * config/mips/mips.h (ISA_HAS_CINS): New macro.
551         * config/mips/mips-protos.h (mask_low_and_shift_p,
552         mask_low_and_shift_len): Declare.
553         * config/mips/mips.c (mask_low_and_shift_p,
554         mask_low_and_shift_len): New functions.
555         (mips_print_operand): Handle new operand prefix "m".
556         * config/mips/mips.md (*cins<mode>): New pattern.
557
558 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
559
560         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
561         optimizing for size.
562
563 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
564
565         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
566         regardless of epilogue_completed.
567
568 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
569
570         PR middle-end/37359
571         * ira-lives.c (process_bb_node_lives): Check setjmp.
572
573 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
574
575         PR middle-end/37243
576         * ira-build.c (form_loop_tree): Reverse BB walk.
577         (create_bb_allocnos): Likewise.
578         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
579         (mark_reg_store): Rename to...
580         (mark_ref_live): ...this and take a df_ref argument instead of
581         note_stores arguments.  Assert that we have a register.
582         (mark_reg_clobber): Delete.
583         (def_conflicts_with_inputs_p): New function.
584         (mark_reg_conflicts): Delete.
585         (mark_reg_death): Rename to...
586         (mark_ref_dead): ...this and take a df_ref argument instead of
587         a register.  Assert that we have a register.
588         (process_bb_node_lives): Hoist frequency calculation out of
589         instruction walk.  Convert from a forwards scan to a backwards scan.
590         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
591         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
592         (create_allocno_live_ranges): Don't create regs_set.
593
594 2008-09-04  Ian Lance Taylor  <iant@google.com>
595
596         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
597         or REG_LABEL_TARGET.
598         * calls.c (emit_library_call_value_1): Use MEM_P rather than
599         comparing MODE with MEM.
600         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
601         comparing with GF_PREDICT_TAKEN.
602         (gimple_get_lhs): Change code to enum gimple_code.
603         (gimple_set_lhs): Likewise.
604         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
605         * omp-low.c (find_omp_clause): Change kind parameter to enum
606         omp_clause_code.
607         * tree-flow.h (find_omp_clause): Update declaration.
608         * regrename.c (clear_dead_regs): Change kind parameter to enum
609         reg_note.
610         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
611         GET_MODE.
612         * see.c (see_get_extension_data): Change return type to enum
613         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
614         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
615         (see_gen_normalized_extension): Change extension_code parameter to
616         enum entry_type.
617         (see_seek_pre_extension_expr): Change extension_code to enum
618         entry_type.
619         (see_merge_one_def_extension): Likewise.
620         (see_handle_relevant_defs): Likewise.
621         (see_handle_relevant_uses): Likewise.
622         (see_analyze_one_def): Likewise.
623         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
624         GIMPLE_ASM rather than ASM_EXPR.
625         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
626         GIMPLE_RETURN rather than RETURN_EXPR.
627         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
628         (evaluate_stmt): Likewise.
629         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
630         to enum vect_relevant.
631         (vect_mark_stmts_to_be_vectorized): Change assertion to not
632         compare gimple codes with tree codes.
633
634 2008-09-04  Paul Brook  <paul@codesourcery.com>
635
636         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
637
638 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
639
640         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
641         pointer check lost in the recent no-unit-at-a-time patch.
642         
643 2008-09-04  Jan Hubicka  <jh@suse.cz>
644
645         PR middle-end/37343
646         * tree-switch-conversion.c (check_final_bb): Accept only IP
647         invariants.
648
649 2008-09-04  Jan Hubicka  <jh@suse.cz>
650
651         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
652         Break out from ...
653         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
654         using_ranges argument.
655         (vrp_evaluate_conditional): Avoid bogus warning for type range.
656         (vrp_visit_cond_stmt): Update call of
657         vrp_evaluate_conditional_warnv_with_ops
658
659 2008-09-04  Jan Hubicka  <jh@suse.cz>
660
661         PR tree-optimization/37345
662         PR tree-optimization/37358
663         PR tree-optimization/37357
664         * tree.c (build_function_type_skip_args): Build distinct type copy;
665         set TYPE_CONTEXT.
666         (build_function_decl_skip_args): Set type of new decl not orig decl;
667         clear DECL_VINDEX for methods turned into functions.
668
669 2008-09-04  Nick Clifton  <nickc@redhat.com>
670
671         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler
672         check.
673         * configure: Regenerate.
674         * config.in: Regenerate.
675         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
676         alignment field, if it is supported.
677
678 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
679
680         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
681         libraries.
682
683 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
684
685         * config/rs6000/rs6000.c (processor_target_table): Do not
686         enable VMX for POWER6.
687
688 2008-09-03  Anton Blanchard  <anton@samba.org>
689
690         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
691         emit memory barrier before operation.
692
693 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
694
695         PR testsuite/37325
696         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
697         default_elf_asm_output_external.
698
699 2008-09-03  Jeff Law  <law@redhat.com>
700
701         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
702
703 2008-09-03  Richard Henderson  <rth@redhat.com>
704
705         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
706         memory barrier to below the test-and-set.
707         (alpha_split_lock_test_and_set_12): Likewise.
708
709 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
710
711         PR rtl-opt/37243
712
713         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
714         all_allocnos.
715
716         * ira-color.c (print_loop_title): Use all_allocnos.
717         (color_pass): Ditto.  Don't add border_allocnos.  Check that
718         subloop allocno in the correspdoning bitmap all_allocnos.
719
720         * ira-emit.c (change_loop): Use all_allocnos.
721
722         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
723         Ditto.
724         (ira_create_allocno): Set up all_allocnos bit for the created
725         allocno.
726         (create_cap_allocno): Remove setting mentioned_allocnos.
727         (create_insn_allocnos): Ditto.
728         (remove_unnecessary_allocnos): Use all_allocnos.
729         (check_allocno_creation): Check that allocnos are in the
730         corresponding bitmap all_allocnos.
731         
732 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
733
734         PR rtl-opt/37243
735         
736         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
737         (process_regs_for_copy): Process subregs.  Refine check when cost
738         is taken into account in ira-costs.c.
739         (process_reg_shuffles): Use REG_SUBREG_P.
740         (add_insn_allocno_copies): Ditto.  Ignore modes.
741
742         * ira-color.c (conflict_allocno_vec): New.
743         (COST_HOP_DIVISOR): New macro.
744         (update_copy_costs_1): Use it.
745         (update_conflict_hard_regno_costs): New function.
746         (assign_hard_reg): Use it.
747         (ira_color): Allocate and free conflict_allocno_vec.
748  
749 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
750
751         PR rtl-opt/37296
752
753         * ira-int.h (ira_sort_insn_chain): Remove.
754
755         * ira.c (basic_block_order_nums, chain_insn_order,
756         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
757         (ira): Don't call ira_sort_insn_chain.
758
759         * reload1.c (reload): Don't call ira_sort_insn_chain.
760
761 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
762
763         PR middle-end/37293
764         * cgraphunit.c (update_call_expr): Remove eh regions from statements
765         which become non throw.
766         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
767         update_call_expr after updating the flags on the decl.
768
769 2008-09-03  Jan Hubicka  <jh@suse.cz>
770
771         PR tree-optimization/37315
772         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
773         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
774         (cgraph_analyze_functions): Use node->analyzed
775         (cgraph_mark_functions_to_output): Likewise.
776         (cgraph_expand_function): All functions can be released after
777         expanding.
778         (cgraph_optimize): Use gimple_has_body_p.
779         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
780         (cgraph_decide_inlining_incrementally): Likewise.
781         (inline_transform): Inline transform.
782         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
783         copy fields needed.
784         (inlinable_function_p): Drop gimple_body check.
785         (expand_call_inline): Use gimple_has_body_p.
786         * gimple.c (gimple_has_body_p): New.
787         * gimple.h (gimple_has_body_p): Add prototype.
788         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
789         (dump_function_to_file): Use gimple_has_body_p check.
790
791 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
792
793         PR c++/37346
794         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
795         substatements.
796         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
797
798 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
799
800         From Michael Frysinger  <michael.frysinger@analog.com>
801         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
802         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
803         for bf538.
804
805 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
806
807         Add picoChip port.
808         * doc/extend.texi: Document picoChip builtin functions.
809         * doc/invoke.texi: Document picoChip options.
810         * doc/contrib.texi: Add picoChip contribution.
811         * doc/md.texi: Document picoChip constraints.
812         * config.gcc: Add picochip-*-*.
813         * config/picochip/: Add new port.
814
815 2008-09-03  Richard Guenther  <rguenther@suse.de>
816
817         PR tree-optimization/37328
818         * tree-sra.c (sra_build_assignment): Gimplify properly.
819         (generate_copy_inout): Take the correct stmt as definition,
820         remove bogus assert.
821
822 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
823
824         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
825         attributes.
826
827         From Michael Frysinger  <michael.frysinger@analog.com>
828         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
829
830 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
831
832         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
833         defined.
834         (__gthread_setspecific): Revert 2008-08-31 change to
835         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API
836         case.
837
838 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
839
840         * diagnostic.c (error_at): New.
841         * toplev.h (error_at): New prototype.
842         * c-typeck.c (build_array_ref): Call error_at instead of error.
843         Pass location to pedwarn.
844
845 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
846
847         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
848
849 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
850
851         * dwarf2out.c (tree_add_const_value_attribute): Only handle
852         VAR_DECL and CONST_DECL.
853
854 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
855             Jakub Jelinek  <jakub@redhat.com>
856
857         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
858         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
859         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
860         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
861         Don't set ix86_save_varrargs_registers.
862         (ix86_setup_incoming_varargs): Assume cum != NULL.
863         (ix86_va_start): Check ix86_varargs_gpr_size and
864         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
865         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
866         from frame pointer if ix86_varargs_gpr_size == 0.
867         (ix86_compute_frame_layout): Updated.
868         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
869         (ix86_varargs_gpr_size): Define.
870         (ix86_varargs_fpr_size): Likewise.
871         (machine_function): Remove save_varrargs_registers.
872         Add varargs_gpr_size and varargs_fpr_size.
873
874 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
875
876         * config/alpha/alpha.c (va_list_skip_additions,
877         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
878         (alpha_gimplify_va_arg): Call unshare_expr on second use of
879         offset_field.
880
881         PR tree-optimization/36766
882         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
883         for already removed basic blocks.
884
885         PR target/36332
886         * real.c (real_maxval): Clear a lower bit to make real_maxval
887         match get_max_float for IBM long double format.
888
889 2008-09-02  Andreas Schwab  <schwab@suse.de>
890
891         * configure.ac: Use m4_quote to quote the expansion of m4_do.
892         * configure: Regenerate.
893
894 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
895
896         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
897         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
898         checking for a non-VOID CONSTANT_P.
899
900 2008-09-02  Jan Hubicka  <jh@suse.cz>
901
902         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
903         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and sdiv_pow2_cheap
904
905 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
906
907         * expr.c (emit_group_store): Don't assert stack temp mode size.
908
909 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
910             Tobias Grosser  <grosser@fim.uni-passau.de>
911             Jan Sjodin  <jan.sjodin@amd.com>
912             Harsha Jagasia  <harsha.jagasia@amd.com>
913             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
914             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
915             Adrien Eliche  <aeliche@isty.uvsq.fr>
916
917         Merge from graphite branch.
918         * graphite.c: New.
919         * graphite.h: New.
920         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
921         * doc/invoke.texi (-floop-block, -floop-interchange,
922         -floop-strip-mine): Document new flags.
923         * tree-into-ssa.c (gimple_vec): Moved...
924         * tree-loop-distribution.c (rdg_component): Moved...
925         * cfgloopmanip.c: Include tree-flow.h.
926         (update_dominators_in_loop): New.
927         (create_empty_if_region_on_edge): New.
928         (create_empty_loop_on_edge): New.
929         (loopify): Use update_dominators_in_loop.
930         * tree-pass.h (pass_graphite_transforms): Declared.
931         * configure: Regenerate.
932         * tree-phinodes.c (make_phi_node): Export.
933         (add_phi_node_to_bb): New, split from create_phi_node.
934         * tree-chrec.c (for_each_scev_op): New.
935         * tree-chrec.h (for_each_scev_op): Declared.
936         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
937         (remove_statement): Call get_phi_with_result.
938         * config.in (HAVE_cloog): Undef.
939         * gdbinit.in (pgg): New.
940         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
941         * tree-ssa-loop.c (graphite_transforms): New.
942         (gate_graphite_transforms): New.
943         (pass_graphite_transforms): New.
944         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
945         HAVE_cloog): Defined.
946         * tree-vectorizer.c (rename_variables_in_bb): Export.
947         * tree-data-ref.c (dr_may_alias_p): Export.
948         (stmt_simple_memref_p): New.
949         (find_data_references_in_stmt): Export.
950         (find_data_references_in_loop): Export.
951         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
952         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
953         (create_rdg_vertices): Export.
954         (build_empty_rdg): New.
955         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
956         * tree-data-ref.h (rdg_component): ... here.
957         (scop_p): New.
958         (struct data_reference): Add a field scop.
959         (DR_SCOP): New.
960         (find_data_references_in_loop): Declared.
961         (find_data_references_in_stmt): Declared.
962         (create_rdg_vertices): Declared.
963         (dr_may_alias_p): Declared.
964         (stmt_simple_memref_p): Declared.
965         (struct rdg_edge): Add a field ddr_p relation.
966         (build_empty_rdg): Declared.
967         * lambda.h (lambda_matrix): Declare a VEC of.
968         (find_induction_var_from_exit_cond): Declared.
969         (lambda_vector_compare): New.
970         * common.opt (fgraphite, floop-strip-mine,
971         floop-interchange, floop-block): New flags.
972         * lambda-code.c (find_induction_var_from_exit_cond): Export.
973         * cfgloop.c (is_loop_exit): New.
974         * cfgloop.h (is_loop_exit): Declared.
975         (create_empty_if_region_on_edge): Declared.
976         (create_empty_loop_on_edge): Declared.
977         * tree-flow.h (add_phi_node_to_bb): Declared.
978         (make_phi_node): Declared.
979         (rename_variables_in_bb): Declared.
980         (perfect_loop_nest_depth): Declared.
981         (graphite_transform_loops): Declared.
982         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
983         (graphite.o-warn): Add -Wno-error.
984         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
985         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
986         (INCLUDES): Add PPLINC, CLOOGINC.
987         (OBJS-common): Add graphite.o.
988         (graphite.o): Add rule.
989         * gimple.h (gimple_vec): ... here.
990         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
991         * passes.c (init_optimization_passes): Schedule 
992         pass_graphite_transforms.
993
994 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
995
996         PR target/37283
997         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
998         and -fno-toplevel-reorder after handle_options.
999
1000 2008-09-02  Paul Brook  <paul@codesourcery.com>
1001
1002         * config/arm/arm.c (arm_tune_cortex_a9): Define.
1003         (arm_override_options): Set arm_tune_cortex_a9.
1004         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
1005         (arm_issue_rate): Handle cortexa9.
1006         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
1007         * config/arm/arm-cores.def: Add cortex-a9.
1008         * config/arm/arm-tune.md: Regenerate.
1009         * config/arm/arm.md: Include cortex-a9.md.
1010         (generic_sched, generic_vfp): Add cortexa9.
1011         * config/arm/cortex-a9.md: New file.
1012
1013 2008-09-02  Richard Guenther  <rguenther@suse.de>
1014
1015         PR tree-optimization/37327
1016         * tree-vrp.c (register_new_assert_for): Make sure to not have
1017         TREE_OVERFLOW set on the bound.
1018
1019 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
1020
1021         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
1022
1023         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
1024         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
1025         spec_info->mask.
1026
1027 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
1028
1029         * gcc/config/spu/spu.md (divdf3): Removed.
1030
1031 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
1032
1033         PR tree-optimization/37095
1034         * cgraph.c (cgraph_node): When creating new cgraph node after
1035         assembler_name_hash has been populated, record it in the hash
1036         table.
1037
1038 2008-09-01  Paul Brook  <paul@codesourcery.com>
1039
1040         * doc/invoke.texi: Document -mword-relocations.
1041         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1042         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1043         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1044         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
1045         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
1046         (arm_emit_movpair): New function.
1047         (arm_print_operand <c>): Handle sybolic addresses.
1048         * config/arm/arm.h (TARGET_USE_MOVT): Define.
1049         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
1050         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
1051         * config/arm/arm.opt: Add -mword-relocations.
1052         * config/arm/arm.md (movsi): Use arm_emit_movpair.
1053         (arm_movt, arm_movw): New.
1054
1055 2008-09-01  Paul Brook  <paul@codesourcery.com>
1056
1057         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
1058         Allow Interworking on ARMv4 EABI based targets.
1059         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
1060         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
1061
1062 2008-09-01  Paul Brook  <paul@codesourcery.com>
1063
1064         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
1065         optimized LT0 test.  Remove optimization for GT.
1066
1067 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1068
1069         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
1070         openmp applications.
1071         * pa-hpux11.h (LIB_SPEC): Likewise.
1072
1073         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
1074         defined.
1075
1076 2008-09-01  Jan Hubicka  <jh@suse.cz>
1077
1078         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
1079         present, use only counts; when guessed use only frequencies.
1080         (estimate_bb_frequencies): Use function_frequency.
1081         * profile.c (compute_branch_probabilities): Exit early when
1082         profile reading failed. Set profile_status.
1083         (branch_prob): Do not set profile_status.
1084
1085 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
1086
1087         * tree.c (protected_set_expr_location): New.
1088         * tree.h (protected_set_expr_location): New prototype.
1089         * c-tree.h (build_array_ref): Add argument.
1090         (parser_build_unary_op): Same.
1091         * c-typeck.c (build_indirect_ref): Handle new location argument.
1092         (build_array_ref): Same.
1093         (parser_build_unary_op): Same.
1094         * gimplify.c (gimplify_asm_expr): Set input_location before calling
1095         error.
1096         * c-omp.c (c_finish_omp_atomic): Pass location when calling
1097         build_indirect_ref.
1098         * c-common.c (finish_label_address_expr): Handle new location
1099         argument.
1100         * c-common.h (build_indirect_ref): Add argument.
1101         (finish_label_address_expr): Same.
1102         * c-parser.c (c_parser_unary_expression): Pass location to build
1103         functions.
1104         (c_parser_postfix_expression): Same.
1105
1106 2008-09-01  Paul Brook  <paul@codesourcery.com>
1107
1108         * config/arm/arm.md: Include cortex-r4f.md.
1109         (attr fpu): Update type list.
1110         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
1111         fconstd, fcmps and fcmpd.
1112         (attr tune_cortexr4): Define.
1113         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
1114         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
1115         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
1116         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
1117         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
1118         types.
1119         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
1120         cortex_a8_vfp_farith: Ditto.
1121         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
1122         * config/arm/cortex-r4.md: Use tune_cortexr4.
1123         * config/arm/cortex-r4f.md: New file.
1124
1125 2008-09-01  Richard Guenther  <rguenther@suse.de>
1126
1127         PR tree-optimization/37305
1128         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
1129         the result of constant conversions.
1130         (fold_gimple_assign): Likewise.
1131
1132 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
1133
1134         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
1135         #ifdef ENABLE_CHECKING.
1136
1137 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
1138
1139         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
1140         * sched-int.h (print_insn, print_pattern, print_value): Declare also
1141         when !INSN_SCHEDULING.
1142
1143 2008-09-01  Andreas Schwab  <schwab@suse.de>
1144
1145         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
1146
1147 2008-09-01  Paul Brook  <paul@codesourcery.com>
1148
1149         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
1150
1151 2008-09-01  Jan Hubicka  <jh@suse.cz>
1152
1153         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
1154
1155         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
1156         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
1157         * gimplify.c (gimplify_init_constructor): Add speed operand.
1158         * tree-sra.c (decide_block_copy): Likewise.
1159         * tree-inline.c (estimate_move_cost): Likewise.
1160         * config/alpha/alpha.h (MOVE_RATIO): Update.
1161         * config/frv/frv.c (MOVE_RATIO): Update.
1162         * config/spu/spu.h (MOVE_RATIO): Update.
1163         * config/sparc/sparc.h (MOVE_RATIO): Update.
1164         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
1165         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
1166         * config/cris/cris.h (MOVE_RATIO): Update.
1167         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
1168         * config/arm/arm.h (MOVE_RATIO): Update.
1169         * config/pa/pa.md: Update uses of MOVE_RATIO
1170         * config/pa/pa.h (MOVE_RATIO): Update.
1171         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
1172         * config/h8300/h8300.h (MOVE_RATIO): Update.
1173         * config/v850/v850.h (MOVE_RATIO): Update.
1174         * config/bfin/bfin.h (MOVE_RATIO): Update.
1175
1176 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
1177         Dmitry Melnik  <dm@ispras.ru>
1178         Dmitry Zhurikhin  <zhur@ispras.ru>
1179         Alexander Monakov  <amonakov@ispras.ru>
1180         Maxim Kuvyrkov  <maxim@codesourcery.com>
1181
1182         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
1183         sel-sched-dump.c, sel-sched-ir.c: New files.
1184         * Makefile.in (OBJS-common): Add selective scheduling object
1185         files.
1186         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
1187         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
1188         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
1189         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
1190         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
1191         (make_forwarder_block): Update loop latch if we have redirected
1192         the loop latch edge.
1193         * cfgloop.c (get_loop_body_in_custom_order): New function.
1194         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
1195         (CP_FALLTHRU_PREHEADERS): Likewise.
1196         (get_loop_body_in_custom_order): Declare.
1197         * cfgloopmanip.c (has_preds_from_loop): New.
1198         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
1199         Assert that the preheader edge will be fall thru when it is set.
1200         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
1201         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
1202         fsel-sched-substitution, fselective-scheduling): New flags.
1203         * cse.c (hash_rtx_cb): New.
1204         (hash_rtx): Use it.
1205         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
1206         sel_sched_insn_cnt): New counters.
1207         * final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
1208         * genattr.c (main): Output maximal_insn_latency prototype.
1209         * genautomata.c (output_default_latencies): New. Factor its code from ...
1210         (output_internal_insn_latency_func): ... here.
1211         (output_internal_maximal_insn_latency_func): New.
1212         (output_maximal_insn_latency_func): New.
1213         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
1214         (struct hard_reg_set_iterator): New.
1215         (hard_reg_set_iter_init, hard_reg_set_iter_set,
1216         hard_reg_set_iter_next): New functions.
1217         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
1218         * lists.c (remove_free_INSN_LIST_node,
1219         remove_free_EXPR_LIST_node): New functions.
1220         * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
1221         set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
1222         (loop_optimizer_finalize): Do not verify flow info after reload.
1223         * recog.c (validate_replace_rtx_1): New parameter simplify.
1224         Default it to true.  Update all uses.  Factor out simplifying
1225         code to ...
1226         (simplify_while_replacing): ... this new function.
1227         (validate_replace_rtx_part,
1228         validate_replace_rtx_part_nosimplify): New.
1229         * recog.h (validate_replace_rtx_part,
1230         validate_replace_rtx_part_nosimplify): Declare.
1231         * rtl.c (rtx_equal_p_cb): New.
1232         (rtx_equal_p): Use it.
1233         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
1234         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
1235         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
1236         * vecprim.h: Add a vector type for unsigned int.
1237         * haifa-sched.c: Include vecprim.h and cfgloop.h.
1238         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
1239         ready_try, cycle_issued_insns, spec_info): Make global.
1240         (readyp): Initialize.
1241         (dfa_lookahead): New global variable.
1242         (old_max_uid, old_last_basic_block): Remove.
1243         (h_i_d): Make it a vector.
1244         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
1245         through HID macro.
1246         (after_recovery, adding_bb_to_current_region_p):
1247         New variables to handle correct insertion of the recovery code.
1248         (struct ready_list): Move declaration to sched-int.h.
1249         (rgn_n_insns): Removed.
1250         (rtx_vec_t): Move to sched-int.h.
1251         (find_insn_reg_weight): Remove.
1252         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
1253         (haifa_init_h_i_d, haifa_finish_h_i_d):
1254         New functions to initialize / finalize haifa instruction data.
1255         (extend_h_i_d, init_h_i_d): Rewrite.
1256         (unlink_other_notes): Move logic to add_to_note_list.  Handle
1257         selective scheduler.
1258         (ready_lastpos, ready_element, ready_sort, reemit_notes,
1259         find_fallthru_edge): Make global, remove static prototypes.
1260         (max_issue): Make global.  Add privileged_n and state parameters.  Use
1261         them.
1262         (extend_global, extend_all): Removed.
1263         (init_before_recovery): Add new param.  Fix the handling of the case
1264         when we insert a recovery code before the EXIT which has a predecessor
1265         with a fallthrough edge to it.
1266         (create_recovery_block): Make global.  Rename to
1267         sched_create_recovery_block.  Update.
1268         (change_pattern): Rename to sched_change_pattern.  Make global.
1269         (speculate_insn): Rename to sched_speculate_insn.  Make global.
1270         Split haifa-specific functionality into ...
1271         (haifa_change_pattern): New static function.
1272         (sched_extend_bb): New static function.
1273         (sched_init_bbs): New function.
1274         (current_sched_info): Change type to struct haifa_sched_info.
1275         (insn_cost): Adjust for selective scheduling.
1276         (dep_cost_1): New function.  Move logic from ...
1277         (dep_cost): ... here.
1278         (dep_cost): Use dep_cost_1.
1279         (contributes_to_priority_p): Use sched_deps_info instead of
1280         current_sched_info.
1281         (priority): Adjust to work with selective scheduling.  Process the
1282         corner case when all dependencies don't contribute to priority.
1283         (rank_for_schedule): Use ds_weak instead of dep_weak.
1284         (advance_state): New function.  Move logic from ...
1285         (advance_one_cycle): ... here.
1286         (add_to_note_list, concat_note_lists): New functions.
1287         (rm_other_notes): Make static.  Adjust for selective scheduling.
1288         (remove_notes, restore_other_notes): New functions.
1289         (move_insn): Add two arguments.  Update assert.  Don't call
1290         reemit_notes.
1291         (choose_ready): Remove lookahead variable, use dfa_lookahead.
1292         Remove more_issue, max_points.  Move the code to initialize
1293         max_lookahead_tries to max_issue.
1294         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
1295         ready.  Adjust use of move_insn.  Call restore_other_notes.
1296         (luid): Remove.
1297         (sched_init, sched_finish): Move Haifa-specific initialization/
1298         finalization to ...
1299         (haifa_sched_init, haifa_sched_finish): ... respectively.
1300         New functions.
1301         (setup_sched_dump): New function.
1302         (haifa_init_only_bb): New static function.
1303         (haifa_speculate_insn): New static function.
1304         (try_ready): Use haifa_* instead of speculate_insn and
1305         change_pattern.
1306         (extend_ready, extend_all): Remove.
1307         (sched_extend_ready_list, sched_finish_ready_list): New functions.
1308         (create_check_block_twin, add_to_speculative_block): Use
1309         haifa_insns_init instead of extend_global.  Update to use new
1310         initialization functions.  Change parameter.  Factor out code from
1311         create_check_block_twin to ...
1312         (sched_create_recovery_edges) ... this new function.
1313         (add_block): Remove.
1314         (sched_scan_info): New.
1315         (extend_bb): Use sched_scan_info.
1316         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
1317         static functions for walking through scheduling region.
1318         (sched_luids): New vector variable to replace uid_to_luid.
1319         (luids_extend_insn): New function.
1320         (sched_max_luid): New variable.
1321         (luids_init_insn): New function.
1322         (sched_init_luids, sched_finish_luids): New functions.
1323         (insn_luid): New debug function.
1324         (sched_extend_target): New function.
1325         (haifa_init_insn): New static function.
1326         (sched_init_only_bb): New hook.
1327         (sched_split_block): New hook.
1328         (sched_split_block_1): New function.
1329         (sched_create_empty_bb): New hook.
1330         (sched_create_empty_bb_1): New function.
1331         (common_sched_info, ready): New global variables.
1332         (current_sched_info_var): Remove.
1333         (move_block_after_check): Use common_sched_info.
1334         (haifa_luid_for_non_insn): New static function.
1335         (init_before_recovery): Use haifa_init_only_bb instead of
1336         add_block.
1337         (increase_insn_priority): New.
1338         * modulo-sched.c: (issue_rate): Remove static declaration.
1339         (sms_sched_info): Change type to haifa_sched_info.
1340         (sms_sched_deps_info, sms_common_sched_info): New variables.
1341         (setup_sched_infos): New.
1342         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
1343         Do not call regstat_free_calls_crossed.
1344         (sms_print_insn): Use const_rtx.
1345         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
1346         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
1347         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
1348         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
1349         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
1350         current_sched_info to use it.
1351         (enum reg_pending_barrier_mode): Move to sched-int.h.
1352         (h_d_i_d): New variable. Initialize to NULL.
1353         ({true, output, anti, spec, forward}_dependency_cache): Initialize
1354         to NULL.
1355         (estimate_dep_weak): Remove static declaration.
1356         (sched_has_condition_p): New function.  Adjust users of
1357         sched_get_condition to use it instead.
1358         (conditions_mutex_p): Add arguments indicating which conditions are
1359         reversed.  Use them.
1360         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
1361         argument to indicate whether returned condition is reversed.  Do not
1362         generate new rtx when condition should be reversed; indicate it by
1363         setting new argument instead.
1364         (add_dependence_list_and_free): Add deps parameter.
1365         Update all users.  Do not free dependence list when
1366         deps context is readonly.
1367         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
1368         contexts.
1369         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
1370         (remove_from_deps): New. Use the above functions.
1371         (cur_insn, can_start_lhs_rhs_p): New static variables.
1372         (add_or_update_back_dep_1): Initialize present_dep_type.
1373         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
1374         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
1375         haifa_note_dep): New functions implementing dependence hooks for
1376         the Haifa scheduler.
1377         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
1378         note_dep): New functions.
1379         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
1380         functions.
1381         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
1382         (free_deps): Initialize deps->reg_last.
1383         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
1384         sched_analyze_insn): Update to use dependency hooks infrastructure
1385         and readonly contexts.
1386         (deps_analyze_insn): New function.  Move part of logic from ...
1387         (sched_analyze): ... here.  Also move some logic to ...
1388         (deps_start_bb): ... here.  New function.
1389         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
1390         sel_sched_p.
1391         (sched_deps_init): New function.  Move code from ...
1392         (init_dependency_caches): ... here.  Remove.
1393         (init_deps_data_vector): New.
1394         (sched_deps_finish): New function.  Move code from ...
1395         (free_dependency_caches): ... here.  Remove.
1396         (init_deps_global, finish_deps_global): Adjust for use with
1397         selective scheduling.
1398         (get_dep_weak): Move logic to ...
1399         (get_dep_weak_1): New function.
1400         (ds_merge): Move logic to ...
1401         (ds_merge_1): New static function.
1402         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
1403         (ds_get_max_dep_weak): New function.
1404         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
1405         (n_insns): Rename to rgn_n_insns.
1406         (debug_ebb_dependencies): New function.
1407         (init_ready_list): Use it.
1408         (begin_schedule_ready): Use sched_init_only_bb.
1409         (ebb_print_insn): Indicate when an insn starts a new cycle.
1410         (contributes_to_priority, compute_jump_reg_dependencies,
1411         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
1412         (add_block1): Remove to ebb_add_block.
1413         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
1414         (schedule_ebb): Initialize them.  Use remove_notes instead of
1415         rm_other_notes.  Use haifa_local_init/finish.
1416         (schedule_ebbs): Use haifa_sched_init/finish.
1417         * sched-int.h: Include vecprim.h, remove rtl.h.
1418         (struct ready_list): Delete declaration.
1419         (sched_verbose_param, enum sched_pass_id_t,
1420         bb_vec_t, insn_vec_t, rtx_vec_t): New.
1421         (struct sched_scan_info_def): New structure.
1422         (sched_scan_info, sched_scan, sched_init_bbs,
1423         sched_init_luids, sched_finish_luids, sched_extend_target,
1424         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
1425         (struct common_sched_info_def): New.
1426         (common_sched_info, haifa_common_sched_info,
1427         sched_emulate_haifa_p): Declare.
1428         (sel_sched_p): New.
1429         (sched_luids): Declare.
1430         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
1431         (sched_max_luid, insn_luid): Declare.
1432         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
1433         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
1434         print_insn, print_pattern, print_value, haifa_classify_insn,
1435         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
1436         setup_sched_dump, sched_init, sched_finish,
1437         sel_insn_is_speculation_check): Export.
1438         (struct ready_list): Move from haifa-sched.c.
1439         (ready_try, ready, max_issue): Export.
1440         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
1441         sched_init_only_bb, sched_split_block, sched_split_block_1,
1442         sched_create_empty_bb, sched_create_empty_bb_1,
1443         sched_create_recovery_block, sched_create_recovery_edges): Export.
1444         (enum reg_pending_barrier_mode): Export.
1445         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
1446         (deps_t): New.
1447         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
1448         print_insn field.  Move add_block and fix_recovery_cfg to
1449         common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
1450         (struct sched_deps_info_def): ... this new structure.
1451         (sched_deps_info): Declare.
1452         (struct spec_info_def): Remove weakness_cutoff, add
1453         data_weakness_cutoff and control_weakness_cutoff.
1454         (spec_info): Declare.
1455         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
1456         dep_count field.
1457         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
1458         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
1459         (current_sched_info): Change type to struct haifa_sched_info.
1460         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
1461         (h_d_i_d): New variable.
1462         (HDID): New accessor macro.
1463         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
1464         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
1465         and HDID.
1466         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
1467         (enum SCHED_FLAGS): Update for selective scheduler.
1468         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
1469         (init_dependency_caches, free_dependency_caches): Delete declarations.
1470         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
1471         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
1472         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
1473         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
1474         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
1475         ds_to_dt): Export.
1476         (rm_other_notes): Delete declaration.
1477         (schedule_block): Remove one argument.
1478         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
1479         ready_element, ready_lastpos, sched_extend_ready_list,
1480         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
1481         concat_note_lists): Export.
1482         (struct region): Move from sched-rgn.h.
1483         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1484         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1485         BLOCK_TO_BB, CONTAINING_RGN): Export.
1486         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
1487         (current_nr_blocks, current_blocks, target_bb): Likewise.
1488         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
1489         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
1490         sched_rgn_local_init, extend_regions,
1491         rgn_make_new_region_out_of_new_block, compute_priorities,
1492         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
1493         extend_rgns, deps_join rgn_setup_common_sched_info,
1494         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
1495         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
1496         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
1497         increase_insn_priority): Likewise.
1498         * sched-rgn.c: Include sel-sched.h.
1499         (ref_counts): New static variable.  Use it ...
1500         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
1501         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
1502         (sched_is_disabled_for_current_region_p): Delete static declaration.
1503         (struct region): Move to sched-int.h.
1504         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1505         ebb_head): Define and initialize.
1506         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1507         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
1508         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
1509         sched-int.h.
1510         (find_single_block_region): Add new argument to indicate that EBB
1511         regions should be constructed.
1512         (debug_live): Delete declaration.
1513         (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
1514         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
1515         declaration.
1516         (init_regions): Delete declaration.
1517         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
1518         rgn_estimate_number_of_insns): New.
1519         (too_large): Use estimate_number_of_insns.
1520         (haifa_find_rgns): New. Move the code from ...
1521         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
1522         (free_trg_info): New.
1523         (compute_trg_info): Allocate candidate tables here instead of ...
1524         (init_ready_list): ... here.
1525         (rgn_print_insn): Use const_rtx.
1526         (contributes_to_priority, extend_regions): Delete static declaration.
1527         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
1528         (add_block1): Rename to rgn_add_block.
1529         (debug_rgn_dependencies): Delete static qualifier.
1530         (new_ready): Use sched_deps_info.  Simplify.
1531         (rgn_common_sched_info, rgn_const_sched_deps_info,
1532         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
1533         (region_sched_info): Rename to rgn_const_sched_info.
1534         (deps_join): New, extracted from ...
1535         (propagate_deps): ... here.
1536         (compute_block_dependences, debug_dependencies): Update for selective
1537         scheduling.
1538         (free_rgn_deps, compute_priorities): New functions.
1539         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
1540         sched_rgn_compute_dependencies): New functions.
1541         (schedule_region): Use them.
1542         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
1543         rgn_setup_common_sched_info, rgn_setup_sched_infos):
1544         New functions.
1545         (schedule_insns): Call new functions that were split out.
1546         (rgn_make_new_region_out_of_new_block): New.
1547         (get_rgn_sched_max_insns_priority): New.
1548         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
1549         scheduling when appropriate.
1550         * sched-vis.c: Include insn-attr.h.
1551         (print_value, print_pattern): Make global.
1552         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
1553         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1554         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1555         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1556         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
1557         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
1558         hooks.  Initialize them to 0.
1559         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1560         * target.h (struct gcc_target): Add them.  Rename gen_check field to
1561         gen_spec_check.
1562         * flags.h (sel_sched_switch_set): Declare.
1563         * opts.c (sel_sched_switch_set): New variable.
1564         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
1565         pipelining is disabled from command line.
1566         (common_handle_option): Record whether selective scheduling is
1567         requested from command line.
1568         * doc/invoke.texi: Document new flags and parameters.
1569         * doc/tm.texi: Document new target hooks.
1570         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
1571         (dfa_state_size): Do not declare locally.
1572         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
1573         * config/rs6000/rs6000.c (rs6000_init_sched_context,
1574         rs6000_alloc_sched_context, rs6000_set_sched_context,
1575         rs6000_free_sched_context): New functions.
1576         (struct _rs6000_sched_context): New.
1577         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
1578         scheduling.
1579         (rs6000_sched_finish): Do not run for selective scheduling.
1580
1581 2008-08-31  Jan Hubicka  <jh@suse.cz>
1582
1583         * frv.c (frv_rtx_costs): Update forward declaration.
1584         * spu.c (spu_rtx_costs): Likewise.
1585         * pdp11.c: Include df.h
1586         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
1587         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
1588         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
1589         * iq2000.c (iq2000_address_cost): Add speed argument.
1590         (iq2000_rtx_costs): Likewise.
1591         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
1592         update call of mn10300_address_cost.
1593         * mcore.c: Include df.h
1594         (mcore_rtx_costs): Update prototype.
1595         * score3.c: Include df.h
1596         (score3_rtx_costs): Remove speed argument.
1597         * score7.c: Include df.h
1598         (score7_address_cost): Remove speed argument.
1599         * score-protos.h (score_address_cost): Update prototype.
1600         * score.c: Include df.h
1601         (score_rtx_costs): Update call of costs functions.
1602         * v850.c (v850_rtx_costs): Add bool argument.
1603
1604 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
1605
1606         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
1607
1608 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1609
1610         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
1611         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
1612
1613 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1614
1615         * mkmap-flat.awk: Add option pe_dll.
1616         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
1617         * config/i386/t-cygwin (SHLIB_LC): Add.
1618         * config/i386/t-mingw32 (SHLIB_LC): Add.
1619         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
1620         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
1621         (LINK_SPEC): Support libgcc_s.
1622         (LIBGCC_SPEC): Support libgcc_s.
1623         (LIBGCC_SONAME): New.
1624
1625 2008-08-31  Jan Hubicka  <jh@suse.cz>
1626
1627         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
1628         mistakely had old version of patch.
1629
1630         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
1631         (ipcp_estimate_growth): New.
1632         (ipcp_insert_stage): Use ipcp_estimate_growth.
1633         * profile.c (branch_prob): When reading failed, do not consider
1634         profile as read.
1635
1636 2008-08-31  Jan Hubicka  <jh@suse.cz>
1637
1638         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
1639         loop is optimized for speed.
1640
1641 2008-08-31  Richard Guenther  <rguenther@suse.de>
1642
1643         PR middle-end/37289
1644         * fold-const.c (fold_binary): Retain conversions in folding
1645         ~A + 1 to -A.
1646
1647 2008-08-31  Jan Hubicka  <jh@suse.cz>
1648
1649         * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
1650         * predict.c (maybe_hot_frequency_p): Make inline.
1651         (maybe_hot_count_p): Break out from ...
1652         (maybe_hot_bb_p): ... this one.
1653         (maybe_hot_edge_p): Simplify.
1654         * basic-block.h (probably_cold_bb_p): Remove.
1655
1656 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1657
1658         PR target/37168
1659         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
1660         prototype.
1661         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
1662         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
1663         Also split V4SFmode.
1664         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
1665         vector float modes.
1666
1667 2008-08-31  Jan Hubicka  <jh@suse.cz>
1668
1669         * predict.c (PROB_VERY_LIKELY): Make small enough so things
1670         become cold.
1671         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
1672
1673 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1674
1675         PR debug/37287
1676         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1677         add source coords.
1678
1679         * dwarf2out.c (native_encode_initializer): Subtract min_index for
1680         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1681
1682 2008-08-31  Jan Hubicka  <jh@suse.cz>
1683
1684         * sparc.h (BRANCH_COST): Fix macro definition.
1685         * avr.c (avr_operand_rtx_cost): Add speed argument.
1686         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
1687
1688 2008-08-31  Richard Guenther  <rguenther@suse.de>
1689
1690         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1691         types instead of operands.  Re-instantiate verifying of
1692         binary expression operands.
1693
1694 2008-08-30  Jan Hubicka  <jh@suse.cz>
1695
1696         * fwprop.c (should_replace_address): Add speed attribute.
1697         (PR_OPTIMIZE_FOR_SPEED): New flag.
1698         (propagate_rtx_1): Use it.
1699         (propagate_rtx): Set it.
1700         (try_fwprop_subst): Update call of rtx_costs.
1701         (forward_propagate_and_simplify): LIkewise.
1702         * hooks.c (hook_int_rtx_bool_0): New
1703         (hook_bool_rtx_int_int_intp_false): Replace by ...
1704         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1705         * hooks.h (hook_int_rtx_bool_0): New
1706         (hook_bool_rtx_int_int_intp_false): Replace by ...
1707         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1708         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
1709         (prepare_cmp_insn): UPdate call of rtx_cost.
1710         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
1711         (reload_cse_simplify_operands): Update call of rtx_cost.
1712         (reload_cse_move2add): call of rtx_cost.
1713         * target.h (struct gcc_target): Update rtx_costs and address_costs.
1714         * rtlanal.c (rtx_cost): Add speed argument.
1715         (address_cost): Add speed argument
1716         (default_address_cost): Likewise.
1717         (insn_rtx_cost): Likewise.
1718         * cfgloopanal.c (seq_cost): Add speed argument.
1719         (target_reg_cost, target_spill_cost): Turn to array.
1720         (init_set_costs): Update for speed.
1721         (estimate_reg_pressure_cost): Add speed argument.
1722         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
1723         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
1724         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
1725         (seq_cost): Add speed argument.
1726         (computation_cost): Add speed arugment.
1727         (add_cost, multiply_by_const, get_address_cost): add speed argument.
1728         (force_expr_to_var_cost): Update for profile info.
1729         (force_var_cost): Likewise.
1730         (split_address_cost): Likewise.
1731         (ptr_difference_cost): Likewise.
1732         (difference_cost): Likewise.
1733         (get_computation_cost_at): Likewise.
1734         (determine_iv_cost): Likewise.
1735         (ivopts_global_cost_for_size): Likewise.
1736         (rewrite_use_address): Likewise.
1737         (tree_ssa_iv_optimize_loop): Initialize speed field.
1738         * cse.c (optimize_this_for_speed_p): New static var.
1739         (notreg_cost): Update call of rtx_cost.
1740         (cse_extended_basic_block): set optimize_this_for_speed_p.
1741         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
1742         (noce_try_cmove_arith): Likewise.
1743         (noce_try_sign_mask): LIkewise.
1744         * expr.c (compress_float_constant): Update rtx_cost calls.
1745         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
1746         (addr_to_parts): Likewise.
1747         (create_mem_ref): Likewise.
1748         * dse.c (find_shift_sequence): Add speed argument.
1749         (replace_read): Update call.
1750         * calls.c (precompute_register_parameters): Update call of rtx_cost.
1751         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
1752         * neg_cost, shift_cost, shiftadd_cost,
1753         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
1754         mul_highpart_cost): Increase dimension.
1755         (init_expmed): Initialize for both size and speed.
1756         (expand_shift): Use profile.
1757         (synth_mult): Use profile.
1758         (choose_mult_variant): Use profile.
1759         (expand_mult): Use profile.
1760         (expand_mult_highpart_optab): Use profile.
1761         (expand_mult_highpart): Use profile.
1762         (expand_smod_pow2): Use profile.
1763         (expand_divmod): Use profile.
1764         * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
1765         * loop-invariant.c (create_new_invariant): Use profile.
1766         (gain_for_invariant): Add speed parameter.
1767         (best_gain_for_invariant): Likewise.
1768         (find_invariants_to_move): Likewise.
1769         (move_single_loop_invariants): Set it.
1770         * target-def.h (TARGET_RTX_COSTS): Use hook.
1771         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
1772         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
1773         * output.h (default_address_cost): Update prototype.
1774         * combine.c (optimize_this_for_speed_p): New static var.
1775         (combine_validate_cost): Update call of rtx_cost.
1776         (combine_instructions): Set optimize_this_for_speed_p.
1777         (expand_compound_operation): Update call of rtx_cost.
1778         (make_extraction):Update call of rtx_cost.
1779         (force_to_mode):Update call of rtx_cost.
1780         (distribute_and_simplify_rtx):Update call of rtx_cost.
1781         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
1782         (estimate_reg_pressure_cost): Update prototype.
1783         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
1784         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
1785         Remove.
1786         * config/alpha/alpha.c (alpha_rtx_costs): Update.
1787         (alpha_rtx_costs): Update.
1788         * config/frv/frv.c (frv_rtx_costs): Update.
1789         * config/s390/s390.c (s390_rtx_costs): Update.
1790         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
1791         (m32c_rtx_costs): Update.
1792         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
1793         (spu_rtx_costs): Update.
1794         * config/sparc/sparc.c (sparc_rtx_costs): Update.
1795         * config/m32r/m32r.c (m32r_rtx_costs): Update.
1796         * config/i386/i386.c (:ix86_address_cost): Update.
1797         (ix86_rtx_costs): Update.
1798         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
1799         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
1800         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
1801         * config/crx/crx.c (crx_address_cost): Update.
1802         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
1803         * config/stormy16/stormy16.c
1804         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
1805         * config/m68hc11/m68hc11.c
1806         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
1807         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
1808         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
1809         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
1810         * config/ia64/ia64.c (ia64_rtx_costs): Update.
1811         * config/m68k/m68k.c (m68k_rtx_costs): Update.
1812         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
1813         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
1814         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
1815         (mcore_rtx_costs): update.
1816         * config/score/score3.c (score3_rtx_costs): Update.
1817         * config/score/score7.c (score7_rtx_costs): Update.
1818         * config/score/score3.h (score3_rtx_costs):Update.
1819         * config/score/score7.h (score7_rtx_costs): Update.
1820         * config/score/score.c (score_rtx_costs): Update.
1821         * config/arm/arm.c (arm_address_cost): Update.
1822         (arm_rtx_costs_1): Update.
1823         (arm_rtx_costs_1): Update.
1824         (arm_size_rtx_costs): Update.
1825         (arm_size_rtx_costs): Update.
1826         (arm_size_rtx_costs): Update.
1827         (arm_xscale_rtx_costs): Update.
1828         (arm_thumb_address_cost): Update.
1829         * config/pa/pa.c (hppa_address_cost): Update.
1830         * config/mips/mips.c (mips_rtx_costs): Update.
1831         * config/vax/vax.c (vax_address_cost): Update.
1832         * config/h8300/h8300.c (h8300_shift_costs): Update.
1833         (h8300_rtx_costs): Update.
1834         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
1835         (v850_rtx_costs): Update.
1836         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
1837         * config/bfin/bfin.c
1838         (bfin_address_cost): Update.
1839         (bfin_rtx_costs): Update.
1840         * stmt.c (lshift_cheap_p): Update.
1841
1842 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1843
1844         PR middle-end/36444
1845         * expmed.c (extract_bit_field_1): Check the mode size to make
1846         sure the vector modes have the same size.
1847
1848 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
1849
1850         * dojump.c (top level): Include basic-block.h to declare
1851         optimize_insn_for_speed_p
1852
1853         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1854
1855         * opts.h (CL_SAVE): New option class for marking options that are
1856         target specific options usable in the target attribute.
1857         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
1858
1859         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
1860         can easily find the target specific options that are safe to use
1861         in the attribute or pragma.
1862
1863         * attribs.c (decl_attributes): Change #pragma GCC option to
1864         #pragma GCC target, and attribute((option(...))) to
1865         attribute((target(...))).
1866
1867         * doc/extend.texi (target attribute): Change from option
1868         attribute.  Delete push/pop/reset.
1869         (#pragma GCC target): Change from #pragma GCC option.  Delete
1870         push/pop/reset.
1871         (#pragma GCC push_options): Document new pragma.
1872         (#pragma GCC pop_options): Document new pragma.
1873         (#pragma GCC reset_options): Document new pragma.
1874
1875         * targhooks.c (default_target_option_valid_attribute_p): Add
1876         warning about port not supporting target attributes.
1877         (default_target_option_pragma_parse): New function, warn about
1878         #pragma GCC target not being supported.
1879
1880         * targhooks.h (default_target_option_pragma_parse): Add
1881         declaration.
1882
1883         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1884         TI_CURRENT_OPTION_PRAGMA.
1885         (current_target_pragma): Rename from current_option_pragma.
1886
1887         * target.h: (struct target_option): Delete booleans for changing
1888         the optimization level on hot/cold functions.  Change signature of
1889         pragma_parse hook to take a second tree.
1890
1891         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1892
1893         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1894         that the declaration is done at global scope.
1895
1896         * langhooks.c (add_builtin_function_common): Move most of the code
1897         from add_builtin_function here, calling the hook passed in.
1898         (add_builtin_function): Call add_builtin_function_common with
1899         standard builtin hook.
1900         (add_builtin_function_ext_scope): New function to add builtins to
1901         global scope.
1902
1903         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1904         hook.
1905         (add_builtin_function_ext_scope): Add declaration.
1906
1907         * c-pragma.c (handle_pragma_target): Rename from
1908         handle_pragma_option, #pragma GCC option is now #pragma GCC
1909         target.  Move warning about port not supporting target options to
1910         default pragma parse hook.  Remove push/pop/reset from this
1911         pragma.
1912         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
1913         (option_stack): Delete static variable.
1914         (optimize_stack): Ditto.
1915         (optons_stack): New stack of saved target and optimization
1916         options.
1917         (handle_pragma_push_options): New function to handle pushing both
1918         target and optimization options.
1919         (handle_pragma_pop_options): New function to handle popping both
1920         target and optimization options.
1921         (handle_pragma_reset_options): New function to handle resetting
1922         both target and optimization options to their initial state.
1923         (init_pragma): Rename handle_pragma_option to
1924         handle_pragma_target.  Add support for push_options, pop_options,
1925         and reset_options pragmas.
1926
1927         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
1928         default_target_option_pragma_parse.
1929         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
1930         default_target_option_valid_attribute_p.
1931         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1932         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1933         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
1934         optimization level on hot/cold functions.
1935
1936         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1937         if the caller and callee have different optimization levels.
1938
1939         * c-common.c (handle_target_attribute): Rename from
1940         handle_option_attribute, attribute((option(...))) is now
1941         attribute((target(...))).  Move warning if the port does not
1942         support target attributes to the default hook.
1943         (handle_hot_attribute): Delete code to change the optimization
1944         level of hot functions.
1945         (handle_cold_attribute): Ditto.
1946
1947         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
1948         argument that is the binary tree options to use if there are no
1949         arguments.  Call ix86_valid_target_attribute_tree instead of
1950         ix86_valid_option_attribute_tree.
1951         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
1952         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
1953         ix86_pragma_option_parse.
1954
1955         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1956         Rename from ix86_valid_option_attribute_tree.
1957
1958         * config/i386/i386.c (ix86_add_new_builtins): New function to add
1959         new builtins when the ISA changes.
1960         (ix86_valid_target_attribute_tree): Rename from
1961         ix86_valid_option_attribute_tree.  Change callers.  If the
1962         function specified optimization options, use those as the starting
1963         point before setting up the target attributes.  If the
1964         optimization options were changed in the course of setting the
1965         target attributes, record the new optimization options.
1966         (ix86_valid_target_attribute_tree_inner_p): Rename from
1967         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
1968         ix86_add_new_builtins if the ISA changed.
1969         (ix86_valid_target_attribute_p): Rename from
1970         ix86_valid_option_attribute_p.  Change callers.
1971         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
1972         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
1973         as delayed builtin functions.
1974         (struct builtin_isa): New structure to record builtin functions
1975         that should be delayed until the ISA for that function is used.
1976         (ix86_builtins_isa): Change from int to struct to track builtin
1977         functions we want to declare at some point.
1978         (def_builtin): If the front end can delay defining the builtin
1979         functions, don't create builtins for ISAs not part of the default
1980         options.
1981         (def_builtin_const): Ditto.
1982         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
1983         __builtin_ia32_pcmov_v2di to be different builtin functions.
1984         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
1985         a structure instead of an int.
1986         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
1987         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
1988         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1989         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1990
1991         * config/ia64/ia64.h
1992         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1993         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1994
1995         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
1996         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
1997         (LANG_HOOKS_INITIALIZER): Add
1998         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
1999
2000 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
2001
2002         PR target/37270
2003         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
2004         the reload address with the index register for SFmode
2005         access with a displacement.
2006
2007 2008-08-30  Jan Hubicka  <jh@suse.cz>
2008
2009         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
2010         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
2011         * dojump.c (do_jump): Likewise.
2012         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
2013         (note-if_info): Add BRANCH_COST.
2014         (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
2015         noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
2016         noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
2017         branch cost.
2018         * expr.h (BRANCH_COST): Update default.
2019         * predict.c (predictable_edge_p): New function.
2020         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
2021         Update BRANCH_COST call.
2022         * basic-block.h (predictable_edge_p): Declare.
2023         * config/alpha/alpha.h (BRANCH_COST): Update.
2024         * config/frv/frv.h (BRANCH_COST): Update.
2025         * config/s390/s390.h (BRANCH_COST): Update.
2026         * config/spu/spu.h (BRANCH_COST): Update.
2027         * config/sparc/sparc.h (BRANCH_COST): Update.
2028         * config/m32r/m32r.h (BRANCH_COST): Update.
2029         * config/i386/i386.h (BRANCH_COST): Update.
2030         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
2031         * config/sh/sh.h (BRANCH_COST): Update.
2032         * config/pdp11/pdp11.h (BRANCH_COST): Update.
2033         * config/avr/avr.h (BRANCH_COST): Update.
2034         * config/crx/crx.h (BRANCH_COST): Update.
2035         * config/xtensa/xtensa.h (BRANCH_COST): Update.
2036         * config/stormy16/stormy16.h (BRANCH_COST): Update.
2037         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
2038         * config/iq2000/iq2000.h (BRANCH_COST): Update.
2039         * config/ia64/ia64.h (BRANCH_COST): Update.
2040         * config/rs6000/rs6000.h (BRANCH_COST): Update.
2041         * config/arc/arc.h (BRANCH_COST): Update.
2042         * config/score/score.h (BRANCH_COST): Update.
2043         * config/arm/arm.h (BRANCH_COST): Update.
2044         * config/pa/pa.h (BRANCH_COST): Update.
2045         * config/mips/mips.h (BRANCH_COST): Update.
2046         * config/vax/vax.h (BRANCH_COST): Update.
2047         * config/h8300/h8300.h (BRANCH_COST): Update.
2048         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
2049         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
2050         * doc/tm.texi (BRANCH_COST): Update.
2051
2052 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
2053
2054         PR target/37283
2055         * config/arm/arm.c (arm_optimization_options): Set
2056         flag_section_anchors to 2 instead of 1 to distinguish it from
2057         -fsection-anchors given explicitely on the command line.
2058
2059 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
2060
2061         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
2062         final insn of a split.
2063
2064 2008-08-30  Jan Hubicka  <jh@suse.cz>
2065
2066         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
2067         optimized for speed.
2068         * final.c (compute_alignments): Use optimize_bb_for_size_p.
2069         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
2070         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
2071         flag_gcse_after_reload_set): New static vars.
2072         (common_handle_option): Enable those flags for profile-use.
2073         (decode_options): Remove optimize_size flags that are handled
2074         on higher granuality.
2075         * tree-vectorizer.c (vectorize_loops): Use
2076         optimize_loop_nest_for_speed_p.
2077         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
2078         * tree-predcom.c (tree_predictive_commoning): Use
2079         optimize_loop_for_speed_p.
2080         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
2081         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
2082         * predict.c (optimize_loop_for_speed_p): Fix walk.
2083
2084 2008-08-30  Jan Hubicka  <jh@suse.cz>
2085
2086         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
2087         functions.
2088         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
2089         profile presence locally.
2090
2091 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
2092
2093         PR bootstrap/37086
2094         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
2095         versions before 4.0.
2096
2097 2008-08-29  Jan Hubicka  <jh@suse.cz>
2098
2099         * tree-inline.c (insert_init_stmt): Insert sequence even when
2100         not in SSA form.
2101
2102 2008-08-29  Jeff Law  <law@redhat.com>
2103
2104         * mn10300.c (mn10300_secondary_reload_class): We need secondary
2105         reloads for AM33-2 if IN is a pseudo with an equivalent memory
2106         location and class is an FP register.
2107
2108 2008-08-29  Jan Hubicka  <jh@suse.cz>
2109
2110         * see.c (see_merge_one_def_extension): Silence used uninitialized
2111         warning.
2112         * matrix-reorg.c (check_allocation_function): Likewise.
2113         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
2114
2115 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
2116
2117         PR c/37261
2118         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
2119         compute new & and | in type rather than TREE_TYPE (arg0).
2120
2121         * dwarf2out.c (fortran_common): Update comment.
2122         (gen_variable_die): Swap com_die and var_die variables in Fortran
2123         COMMON block handling code.
2124
2125         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
2126
2127         * dwarf2out.c (gen_const_die): New function.
2128         (size_of_die, value_format, output_die): Output larger
2129         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
2130         (native_encode_initializer): New function.
2131         (tree_add_const_value_attribute): Call it.
2132         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
2133
2134         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
2135         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
2136         TREE_THIS_VOLATILE to add_type_attribute.
2137
2138         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
2139         types.
2140         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
2141         types.
2142
2143         * dwarf2out.c (loc_by_reference): New function.
2144         (add_location_or_const_value_attribute): Use it.
2145
2146         PR fortran/23057
2147         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
2148         as DW_TAG_variable children of DW_TAG_common_block rather than
2149         DW_TAG_member children.  Put DW_AT_external to individual
2150         DW_TAG_variable DIEs, not to DW_TAG_common_block.
2151
2152         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
2153         loc_descriptor_from_tree_1.
2154
2155         PR fortran/29635
2156         PR fortran/23057
2157         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
2158         arguments to imported_module_or_decl.
2159         (debug_nothing_tree_tree): Removed.
2160         (debug_nothing_tree_tree_tree_bool): New prototype.
2161         * debug.c (do_nothing_debug_hooks): Adjust.
2162         (debug_nothing_tree_tree): Removed.
2163         (debug_nothing_tree_tree_tree_bool): New function.
2164         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
2165         (gen_variable_die): Put all common vars for the
2166         same COMMON block under one DW_TAG_common_block.
2167         (declare_in_namespace): Return new context_die, for Fortran
2168         return the module DIE instead of adding extra declarations into
2169         the namespace.
2170         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
2171         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
2172         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
2173         DW_AT_declaration.
2174         (dwarf2out_global_decl): Don't skip Fortran global vars.
2175         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
2176         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
2177         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
2178         DW_TAG_imported_declaration as child of previous
2179         DW_TAG_imported_module.
2180         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
2181         * sdbout.c (sdb_debug_hooks): Likewise.
2182         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
2183
2184 2008-08-29  Jan Hubicka  <jh@suse.cz>
2185
2186         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
2187
2188         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
2189         * ipa-cp.c (n_cloning_candidates): New static variable.
2190         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
2191         (ipcp_print_all_lattices): Improve debug output.
2192         (ipcp_cloning_candidate_p): New function.
2193         (ipcp_initialize_node_lattices): Use it.
2194         (ipcp_init_stage): Do only analyzis here; prettier debug output.
2195         (ipcp_propagate_stage): Prettier debug output.
2196         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
2197         (ipcp_print_all_structures): Remove.
2198         (ipcp_need_redirect_p): Test !n_cloning_candidates.
2199         (ipcp_insert_stage): Prettier debug output; call
2200         cgraph_remove_unreachable_nodes before propagating.
2201         (pass_ipa_cp): Schedule function removal pass.
2202         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
2203         debug output.
2204         (cgraph_maybe_hot_edge_p): Move to ...
2205         * predict.c (cgraph_maybe_hot_edge_p) ... here.
2206         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
2207         (common_handle_option): Set them; enable ipa-cp when profiling.
2208         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
2209         (ipa_print_all_jump_functions): Likewise.
2210         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
2211         (ipa_print_node_params, ipa_print_all_params): New.
2212         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
2213         ipa_print_all_param_flags): Remove.
2214         (ipa_print_node_params, ipa_print_all_params): New.
2215
2216 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
2217
2218         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
2219         change from 2008-04-03.
2220         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
2221
2222 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
2223
2224         PR rtl-opt/37251
2225
2226         * ira-color.c (push_allocnos_to_stack): Truncate
2227         removed_splay_allocno_vec.
2228
2229 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
2230
2231         PR rtl-opt/37243
2232         * ira-color (ira_fast_allocation): Don't assign hard registers to
2233         global allocnos.
2234
2235 2008-08-29  Jan Hubicka  <jh@suse.cz>
2236
2237         PR middle-end/37278
2238         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
2239         for cold internal loops.
2240
2241 2008-08-29  Richard Guenther  <rguenther@suse.de>
2242
2243         * tree-ssa-structalias.c (create_variable_info_for): Do not
2244         create fields for heap vars or vars with a noalias state.
2245         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
2246         from ESCAPED.
2247
2248 2008-08-29  Richard Guenther  <rguenther@suse.de>
2249
2250         * common.opt (ftree-store-ccp): Mark as preserved for
2251         backward compatibility.
2252         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
2253         * tree-pass.h (pass_store_ccp): Remove.
2254         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
2255         (first_vdef): Remove declaration.
2256         (get_value_loaded_by): Likewise.
2257         * tree-ssa-ccp.c (do_store_ccp): Remove.
2258         (get_default_value): Simplify as do_store_ccp is always false
2259         now.  Do not initialize mem_ref.
2260         (set_value_varying): Likewise.
2261         (canonicalize_float_value): Likewise.
2262         (set_lattice_value): Likewise.
2263         (likely_value): Likewise.
2264         (surely_varying_stmt_p): Likewise.
2265         (ccp_initialize): Likewise.
2266         (ccp_lattice_meet): Likewise.
2267         (ccp_visit_phi_node): Likewise.
2268         (ccp_fold): Likewise.
2269         (evaluate_stmt): Likewise.
2270         (visit_assignment): Likewise.
2271         (ccp_visit_stmt): Likewise.
2272         (execute_ssa_ccp): Fold into ...
2273         (do_ssa_ccp): ... this.
2274         (do_ssa_store_ccp): Remove.
2275         (gate_store_ccp): Likewise.
2276         (pass_store_ccp): Likewise.
2277         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
2278         initialize mem_ref.
2279         * tree-ssa-propagate.c (first_vdef): Remove.
2280         (get_value_loaded_by): Likewise.
2281         (replace_vuses_in): Likewise.
2282         (substitute_and_fold): Do not call replace_vuses_in.
2283         * opts.c (decode_options): Do not set flag_tree_store_ccp.
2284
2285 2008-08-29  Richard Guenther  <rguenther@suse.de>
2286
2287         PR middle-end/37236
2288         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
2289         PARAM_NOALIAS tags with is_heapvar.
2290         * tree-ssa-operands.c (access_can_touch_variable): Offset
2291         based tests do not apply for heapvars.  Fix offset test.
2292
2293 2008-08-29  Jan Hubicka  <jh@suse.cz>
2294
2295         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
2296         (-fipa-cp-clone): Enabled by default at -O3.
2297         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
2298         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
2299
2300 2008-08-29  Jan Hubicka  <jh@suse.cz>
2301
2302         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
2303         New functions.
2304         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
2305         Declare.
2306         * gimple.c (giple_copy_call_skip_args): New function.
2307         (giple_copy_call_skip_args): Declare.
2308
2309         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
2310         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
2311         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
2312         (ipcp_create_replace_map): Improve debug output.
2313         (ipcp_need_redirect_p): Return false when not clonning.
2314         (ipcp_update_callgraph): Skip args.
2315         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
2316         skip args.
2317         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
2318         (save_inline_function_body): Update call of tree_function_versioning.
2319         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
2320         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
2321         (tree_function_versioning): Likewise.
2322         * tree-inline.h (tree_function_versioning): Update prototype.
2323
2324 2008-08-29  Jan Hubicka  <jh@suse.cz>
2325
2326         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
2327         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
2328         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
2329         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
2330         * value-prof.c (gimple_divmod_fixed_value_transform,
2331         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
2332         gimple_stringops_transform): Use optimize_bb_for_size_p.
2333         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
2334         * final.c (compute_alignments): Use optimize_function_for_size_p.
2335         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
2336         (fold_builtin_strcpy, fold_builtin_fputs): Use
2337         optimize_function_for_size_p.
2338         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
2339         * recog.c (relax_delay_slots): Likewise.
2340         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
2341         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
2342         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
2343         optimize_function_for_size_p.
2344         (cgraph_decide_inlining_of_small_function): Use
2345         optimize_function_for_size_p.
2346         * global.c (find_reg): Use optimize_function_for_size_p.
2347         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
2348         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
2349         flag_prefetch_loop_arrays. Those can work it out from profile.
2350         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
2351         optimize_loop_for_speed_p.
2352         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
2353         argument.
2354         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
2355         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
2356         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
2357         * local-alloc.c (block_alloc): Pass BB pointer.
2358         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
2359         * gcse.c (gcse_main): Use optimize_function_for_size_p.
2360         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
2361         (decide_peel_completely): Likewise.
2362         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
2363         optimize_loop_for_size_p.
2364         (vect_enhance_data_refs_alignment): Likewise.
2365         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
2366         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
2367         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
2368         (try_crossjump_bb): Use optimize_bb_for_size_p.
2369         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
2370         optimize_loop_for_speed_p.
2371         * bb-reorder.c (find_traces_1_round): Likewise.
2372         (copy_bb): Use optimize_bb_for_speed_p.
2373         (duplicate_computed_gotos): Likewise.
2374         * basic-block.h (optimize_loop_nest_for_size_p,
2375         optimize_loop_nest_for_speed_p): New.
2376         * stmt.c (expand_case): Use optimize_insn_for_size_p.
2377
2378 2008-08-29  Tristan Gingold  <gingold@adacore.com>
2379
2380         * gcov.c (main): Call expandargv.
2381
2382 2008-08-29  Jan Hubicka  <jh@suse.cz>
2383
2384         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
2385         is not cold.
2386         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2387         Constify arguments.
2388         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
2389         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2390         Constify.
2391         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
2392
2393 2008-08-29  Jan Hubicka  <jh@suse.cz>
2394
2395         * tree-pass.h (pass_strip_predict_hints): Declare.
2396         * predict.c (strip_builtin_expect): Rename to ...
2397         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
2398         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
2399         (tree_estimate_probability): Do not strip builtin_expect.
2400         (pass_strip_predict_hints): New pass.
2401         * tree-inline.c (expand_call_inline): When inlining cold function, predict
2402         it as unlikely.
2403         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
2404
2405 2008-08-29  Richard Guenther  <rguenther@suse.de>
2406
2407         PR tree-optimization/37207
2408         * tree-vrp.c (extract_range_from_binary_expr): Also try
2409         to constant fold if only one of the operands is a constant.
2410
2411 2008-08-29  Nick Clifton  <nickc@redhat.com>
2412
2413         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
2414         the same way as SYMBOL_REFs.
2415
2416 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
2417
2418         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
2419
2420 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2421
2422         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
2423         * config/mips/mips.md (branch_likely): Remove const.  Fix
2424         comment formatting.
2425         (define_delay for type "branch"): Change to only apply for branch
2426         with likely variant.
2427         (define_delay for type "branch" and "branch_likely" no).  New delay
2428         definition.
2429         (equality_op): New code iterator.
2430         (bbv, bbinv): New code attributes.
2431         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
2432         patterns.
2433
2434 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2435             Andrew Pinski  <pinskia@gcc.gnu.org>
2436
2437         PR 18050
2438         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
2439
2440 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
2441
2442         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
2443         rule that a symbolic constant must be defined and >= 0 for the
2444         corresponding facility to be present at compile-time.
2445         * gthr-posix.c: Likewise.
2446
2447 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2448
2449         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
2450         * config/mips/mips.md (D): New mode attribute.
2451         (mulsi3, muldi3): Merge it into ...
2452         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
2453         patterns.
2454         (muldi3_mul3): New pattern.
2455         (mulsi3_mult3): Rename to mulsi3_mul3.
2456
2457 2008-08-28  Jan Hubicka  <jh@suse.cz>
2458
2459         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
2460         to fail.
2461         * predict.c (always_optimize_for_size_p): Rename to ...
2462         (optimize_function_for_size): ... this one; make extern.
2463         (optimize_function_for_speed_p): New.
2464         (optimize_bb_for_size_p, optimize_bb_for_size_p,
2465         optimize_edge_for_size_p,optimize_edge_for_size_p,
2466         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
2467         * basic-block.h (optimize_function_for_size_p,
2468         optimize_function_for_speed_p): Declare.
2469         * i386.md (optimize_size checks): Replace them by appropriate
2470         predicate.
2471         (standard_80387_constant_p, ix86_compute_frame_layout,
2472         ix86_expand_epilogue, ix86_decompose_address,
2473         print_operand, emit_i387_cw_initialization,
2474         inline_memory_move_cost, ix86_pad_returns,
2475         ix86_reorg): Replace optimize_size checks.
2476
2477 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
2478
2479         * rtl.h (simplify_subreg_regno): Declare.
2480         * rtlanal.c (simplify_subreg_regno): New function, split out from...
2481         * simplify-rtx.c (simplify_subreg): ...here.
2482         * reload.c (find_reloads): Use simplify_subreg_regno instead of
2483         subreg_offset_representable_p.
2484
2485 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2486
2487         PR c/30949
2488         * c-typeck.c (convert_for_assignment): Give a note describing what
2489         was passed and what was expected.
2490
2491 2008-08-28  Joey Ye  <joey.ye@intel.com>
2492
2493         * doc/extend.texi: Document AVX built-in functions.
2494         * doc/invoke.texi: Document -mavx.
2495
2496 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
2497             Joey Ye  <joey.ye@intel.com>
2498             Xuepeng Guo  <xuepeng.guo@intel.com>
2499
2500         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
2501
2502         * config/i386/cpuid.h (bit_FMA): New.
2503         (bit_XSAVE): Likewise.
2504         (bit_OSXSAVE): Likewise.
2505         (bit_AVX): Likewise.
2506
2507         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
2508         define.  Use ASM_OUTPUT_AVX_PREFIX.
2509
2510         * config/i386/gmmintrin.h: New.
2511
2512         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
2513         (OPTION_MASK_ISA_AVX_SET): New.
2514         (OPTION_MASK_ISA_FMA_SET): Likewise.
2515         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
2516         (OPTION_MASK_ISA_FMA_SET): Likewise.
2517         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
2518         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
2519         (pta_flags): Add PTA_AVX and PTA_FMA.
2520         (override_options): Handle PTA_AVX and PTA_FMA.
2521         (init_cumulative_args): Handle warn_avx.
2522         (classify_argument): Return 0 for COImode and OImode.  Return
2523         1 and X86_64_AVX_CLASS for 256bit vector types.
2524         (examine_argument): Handle X86_64_AVX_CLASS.
2525         (construct_container): Likewise.
2526         (function_arg_advance_32): Pass OImode and 256bit vector types
2527         in AVX register.
2528         (function_arg_advance_64): Take a new argument to indicate if a
2529         parameter is named.  Handle 256bit vector types.  Return
2530         immediately for unnamed 256bit vector mode parameters.
2531         (function_arg_advance): Updated.
2532         (function_arg_32): Add comments for TImode.  Handle OImode
2533         and 256bit vector types.
2534         (function_arg_64): Take a new argument to indicate if a
2535         parameter is named.  Handle 256bit vector types.  Return NULL
2536         for unnamed 256bit vector mode parameters.
2537         (function_arg): Updated.
2538         (setup_incoming_varargs_64): Support
2539         AVX encoding for *sse_prologue_save_insn.
2540         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
2541         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
2542         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
2543         enabled, otherwise return -3.
2544         (standard_sse_constant_opcode): Handle AVX and 256bit vector
2545         modes.
2546         (print_reg): Support AVX registers.  Handle 'x' and 't'.
2547         Handle 'd' to duplicate the operand.
2548         (print_operand): Likewise.  Also support AVX vector compare
2549         instructions.
2550         (output_387_binary_op): Support AVX.
2551         (output_fp_compare): Likewise.
2552         (ix86_expand_vector_move_misalign): Likewise.
2553         (ix86_attr_length_vex_default): New.
2554         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2555         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2556         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2557         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2558         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
2559         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2560         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
2561         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
2562         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
2563         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
2564         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
2565         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
2566         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
2567         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
2568         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2569         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
2570         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
2571         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2572         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
2573         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
2574         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2575         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2576         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2577         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
2578         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
2579         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
2580         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
2581         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2582         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
2583         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
2584         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
2585         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
2586         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
2587         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2588         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2589         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2590         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
2591         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
2592         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
2593         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
2594         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
2595         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
2596         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
2597         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
2598         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
2599         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
2600         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2601         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2602         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2603         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2604         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2605         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2606         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2607         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2608         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2609         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2610         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2611         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2612         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2613         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2614         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2615         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2616         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2617         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
2618         and IX86_BUILTIN_MOVMSKPS256,
2619         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
2620         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
2621         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
2622         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
2623         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
2624         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
2625         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
2626         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
2627         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
2628         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
2629         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
2630         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
2631         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
2632         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
2633         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
2634         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
2635         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
2636         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
2637         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
2638         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
2639         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
2640         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
2641         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
2642         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
2643         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
2644         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
2645         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
2646         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
2647         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2648         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2649         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
2650         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
2651         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
2652         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
2653         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
2654         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
2655         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
2656         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
2657         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2658         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2659         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2660         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2661         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
2662         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
2663         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
2664         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
2665         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
2666         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
2667         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
2668         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
2669         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
2670         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
2671         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2672         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
2673         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2674         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
2675         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2676         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2677         IX86_BUILTIN_CMPPS,
2678         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
2679         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
2680         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
2681         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2682         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2683         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2684         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
2685         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2686         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
2687         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2688         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
2689         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2690         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
2691         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
2692         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
2693         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
2694         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2695         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2696         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2697         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2698         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2699         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2700         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2701         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2702         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2703         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2704         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2705         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2706         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2707         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2708         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2709         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2710         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2711         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
2712         IX86_BUILTIN_MOVMSKPS256.
2713         (ix86_init_mmx_sse_builtins): Support AVX builtins.
2714         (ix86_expand_args_builtin): Likewise.
2715         (ix86_expand_special_args_builtin): Likewise.
2716         (ix86_hard_regno_mode_ok): Handle AVX modes.
2717         (ix86_expand_vector_init_duplicate): Likewise.
2718         (ix86_expand_vector_init_one_nonzero): Likewise.
2719         (ix86_expand_vector_init_one_var): Likewise.
2720         (ix86_expand_vector_init_concat): Likewise.
2721         (ix86_expand_vector_init_general): Likewise.
2722         (ix86_expand_vector_set): Likewise.
2723         (ix86_vector_mode_supported_p): Likewise.
2724         (x86_extended_reg_mentioned_p): Check INSN_P before using
2725         PATTERN.
2726
2727         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2728         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2729
2730         * config/i386/i386.h (TARGET_AVX): New.
2731         (TARGET_FMA): Likewise.
2732         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
2733         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
2734         (VALID_AVX256_REG_MODE): New.
2735         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2736         (AVX_FLOAT_MODE_P): Likewise.
2737         (AVX128_VEC_FLOAT_MODE_P): Likewise.
2738         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2739         (AVX_VEC_FLOAT_MODE_P): Likewise.
2740         (ASM_OUTPUT_AVX_PREFIX): Likewise.
2741         (ASM_OUTPUT_OPCODE): Likewise.
2742         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
2743         support.
2744         (SSE_REG_MODE_P): Allow 256bit vector modes.
2745         (ix86_args): Add a warn_avx field.
2746
2747         * config/i386/i386.md (UNSPEC_PCMP): New.
2748         (UNSPEC_VPERMIL): Likewise.
2749         (UNSPEC_VPERMIL2): Likewise.
2750         (UNSPEC_VPERMIL2F128): Likewise.
2751         (UNSPEC_MASKLOAD): Likewise.
2752         (UNSPEC_MASKSTORE): Likewise.
2753         (UNSPEC_CAST): Likewise.
2754         (UNSPEC_VTESTP): Likewise.
2755         (UNSPECV_VZEROALL): Likewise.
2756         (UNSPECV_VZEROUPPER): Likewise.
2757         (XMM0_REG): Likewise.
2758         (XMM1_REG): Likewise.
2759         (XMM2_REG): Likewise.
2760         (XMM3_REG): Likewise.
2761         (XMM4_REG): Likewise.
2762         (XMM5_REG): Likewise.
2763         (XMM6_REG): Likewise.
2764         (XMM8_REG): Likewise.
2765         (XMM9_REG): Likewise.
2766         (XMM10_REG): Likewise.
2767         (XMM11_REG): Likewise.
2768         (XMM12_REG): Likewise.
2769         (XMM13_REG): Likewise.
2770         (XMM14_REG): Likewise.
2771         (XMM15_REG): Likewise.
2772         (prefix): Likewise.
2773         (prefix_vex_imm8): Likewise.
2774         (prefix_vex_w): Likewise.
2775         (length_vex): Likewise.
2776         (maxmin): Likewise.
2777         (movoi): Likewise.
2778         (*avx_ashlti3): Likewise.
2779         (*avx_lshrti3): Likewise.
2780         (*avx_setcc<mode>): Likewise.
2781         (*fop_<mode>_comm_mixed_avx): Likewise.
2782         (*fop_<mode>_comm_avx): Likewise.
2783         (*fop_<mode>_1_mixed_avx): Likewise.
2784         (*fop_<mode>_1_avx): Likewise.
2785         (*avx_<code><mode>3): Likewise.
2786         (*avx_ieee_smin<mode>3): Likewise.
2787         (*avx_ieee_smax<mode>3): Likewise.
2788         (mode): Add OI, V8SF and V4DF.
2789         (length): Support VEX prefix.
2790         (*cmpfp_i_mixed): Set prefix attribute.
2791         (*cmpfp_i_sse): Likewise.
2792         (*cmpfp_iu_mixed): Likewise.
2793         (*cmpfp_iu_sse): Likewise.
2794         (*movsi_1): Support AVX.
2795         (*movdi_2): Likewise.
2796         (*movdi_1_rex64): Likewise.
2797         (*movti_internal): Likewise.
2798         (*movti_rex64): Likewise.
2799         (*movsf_1): Likewise.
2800         (*movdf_nointeger): Likewise.
2801         (*movdf_integer_rex64): Likewise.
2802         (*movtf_internal): Likewise.
2803         (zero_extendsidi2_32): Likewise.
2804         (zero_extendsidi2_rex64): Likewise.
2805         (*extendsfdf2_mixed): Likewise.
2806         (*extendsfdf2_sse): Likewise.
2807         (*truncdfsf_fast_mixed): Likewise.
2808         (*truncdfsf_fast_sse): Likewise.
2809         (*truncdfsf_mixed): Likewise.
2810         (fix_trunc<mode>di_sse): Likewise.
2811         (fix_trunc<mode>si_sse): Likewise.
2812         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
2813         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
2814         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
2815         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
2816         (*rcpsf2_sse): Likewise.
2817         (*rsqrtsf2_sse): Likewise.
2818         (*sqrt<mode>2_sse): Likewise.
2819         (sse4_1_round<mode>2): Likewise.
2820         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
2821         Support AVX.  Set length attribute properly for AVX.
2822
2823         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
2824         (VECTOR_MODES (FLOAT, 32)): Likewise.
2825         (VECTOR_MODE (INT, DI, 8)): Likewise.
2826         (VECTOR_MODE (INT, HI, 32)): Likewise.
2827         (VECTOR_MODE (INT, QI, 64)): Likewise.
2828         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
2829         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
2830         (VECTOR_MODE (INT, DI, 4)): Removed.
2831         (VECTOR_MODE (INT, SI, 8)): Likewise.
2832         (VECTOR_MODE (INT, HI, 16)): Likewise.
2833         (VECTOR_MODE (INT, QI, 32)): Likewise.
2834         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
2835         (INT_MODE (OI, 32)): Likewise.
2836
2837         * config/i386/i386.opt (mavx): New.
2838         (mfma): Likewise.
2839
2840         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2841
2842         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
2843         (*mov<mode>_internal_avx): New.
2844         (*movv2sf_internal_rex64_avx): Likewise.
2845         (*movv2sf_internal_avx): Likewise.
2846
2847         * config/i386/predicates.md (const_4_to_5_operand): New.
2848         (const_6_to_7_operand): Likewise.
2849         (const_8_to_11_operand): Likewise.
2850         (const_12_to_15_operand): Likewise.
2851         (avx_comparison_float_operator): Likewise.
2852
2853         * config/i386/sse.md (AVX256MODEI): New.
2854         (AVX256MODE): Likewise.
2855         (AVXMODEQI): Likewise.
2856         (AVXMODE): Likewise.
2857         (AVX256MODEF2P): Likewise.
2858         (AVX256MODE2P): Likewise.
2859         (AVX256MODE4P): Likewise.
2860         (AVX256MODE8P): Likewise.
2861         (AVXMODEF2P): Likewise.
2862         (AVXMODEF4P): Likewise.
2863         (AVXMODEDCVTDQ2PS): Likewise.
2864         (AVXMODEDCVTPS2DQ): Likewise.
2865         (avxvecmode): Likewise.
2866         (avxvecpsmode): Likewise.
2867         (avxhalfvecmode): Likewise.
2868         (avxscalarmode): Likewise.
2869         (avxcvtvecmode): Likewise.
2870         (avxpermvecmode): Likewise.
2871         (avxmodesuffixf2c): Likewise.
2872         (avxmodesuffixp): Likewise.
2873         (avxmodesuffixs): Likewise.
2874         (avxmodesuffix): Likewise.
2875         (vpermilbits): Likewise.
2876         (pinsrbits): Likewise.
2877         (mov<mode>): Likewise.
2878         (*mov<mode>_internal): Likewise.
2879         (push<mode>1): Likewise.
2880         (movmisalign<mode>): Likewise.
2881         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2882         (avx_movdqu<avxmodesuffix>): Likewise.
2883         (avx_lddqu<avxmodesuffix>): Likewise.
2884         (<plusminus_insn><mode>3): Likewise.
2885         (*avx_<plusminus_insn><mode>3): Likewise.
2886         (*avx_vm<plusminus_insn><mode>3): Likewise.
2887         (mul<mode>3): Likewise.
2888         (*avx_mul<mode>3): Likewise.
2889         (*avx_vmmul<mode>3): Likewise.
2890         (divv8sf3): Likewise.
2891         (divv4df3): Likewise.
2892         (avx_div<mode>3): Likewise.
2893         (*avx_div<mode>3): Likewise.
2894         (*avx_vmdiv<mode>3): Likewise.
2895         (avx_rcpv8sf2): Likewise.
2896         (*avx_vmrcpv4sf2): Likewise.
2897         (sqrtv8sf2): Likewise.
2898         (avx_sqrtv8sf2): Likewise.
2899         (*avx_vmsqrt<mode>2): Likewise.
2900         (rsqrtv8sf2): Likewise.
2901         (avx_rsqrtv8sf2): Likewise.
2902         (*avx_vmrsqrtv4sf2): Likewise.
2903         (<code><mode>3): Likewise.
2904         (*avx_<code><mode>3_finite): Likewise.
2905         (*avx_<code><mode>3): Likewise.
2906         (*avx_vm<code><mode>3): Likewise.
2907         (*avx_ieee_smin<mode>3): Likewise.
2908         (*avx_ieee_smax<mode>3): Likewise.
2909         (avx_addsubv8sf3): Likewise.
2910         (avx_addsubv4df3): Likewise.
2911         (*avx_addsubv4sf3): Likewise.
2912         (*avx_addsubv2df3): Likewise.
2913         (avx_h<plusminus_insn>v4df3): Likewise.
2914         (avx_h<plusminus_insn>v8sf3): Likewise.
2915         (*avx_h<plusminus_insn>v4sf3): Likewise.
2916         (*avx_h<plusminus_insn>v2df3): Likewise.
2917         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
2918         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
2919         (*avx_maskcmp<mode>3): Likewise.
2920         (avx_nand<mode>3): Likewise.
2921         (*avx_<code><mode>3): Likewise.
2922         (*avx_nand<mode>3): Likewise.
2923         (*avx_<code><mode>3): Likewise.
2924         (*avx_cvtsi2ss): Likewise.
2925         (*avx_cvtsi2ssq): Likewise.
2926         (*avx_cvtsi2sd): Likewise.
2927         (*avx_cvtsi2sdq): Likewise.
2928         (*avx_cvtsd2ss): Likewise.
2929         (avx_cvtss2sd): Likewise.
2930         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
2931         (avx_cvtps2dq<avxmodesuffix>): Likewise.
2932         (avx_cvttps2dq<avxmodesuffix>): Likewise.
2933         (*avx_cvtsi2sd): Likewise.
2934         (*avx_cvtsi2sdq): Likewise.
2935         (avx_cvtdq2pd256): Likewise.
2936         (avx_cvtpd2dq256): Likewise.
2937         (avx_cvttpd2dq256): Likewise.
2938         (*avx_cvtsd2ss): Likewise.
2939         (*avx_cvtss2sd): Likewise.
2940         (avx_cvtpd2ps256): Likewise.
2941         (avx_cvtps2pd256): Likewise.
2942         (*avx_movhlps): Likewise.
2943         (*avx_movlhps): Likewise.
2944         (avx_unpckhps256): Likewise.
2945         (*avx_unpckhps): Likewise.
2946         (avx_unpcklps256): Likewise.
2947         (*avx_unpcklps): Likewise.
2948         (avx_movshdup256): Likewise.
2949         (avx_movsldup256): Likewise.
2950         (avx_shufps256): Likewise.
2951         (avx_shufps256_1): Likewise.
2952         (*avx_shufps_<mode>): Likewise.
2953         (*avx_loadhps): Likewise.
2954         (*avx_storelps): Likewise.
2955         (*avx_loadlps): Likewise.
2956         (*avx_movss): Likewise.
2957         (*vec_dupv4sf_avx): Likewise.
2958         (*vec_concatv2sf_avx): Likewise.
2959         (*vec_concatv4sf_avx): Likewise.
2960         (*vec_setv4sf_0_avx): Likewise.
2961         (*vec_setv4sf_avx): Likewise.
2962         (*avx_insertps): Likewise.
2963         (avx_vextractf128<mode>): Likewise.
2964         (vec_extract_lo_<mode>): Likewise.
2965         (vec_extract_hi_<mode>): Likewise.
2966         (vec_extract_lo_<mode>): Likewise.
2967         (vec_extract_hi_<mode>): Likewise.
2968         (vec_extract_lo_v16hi): Likewise.
2969         (vec_extract_hi_v16hi): Likewise.
2970         (vec_extract_lo_v32qi): Likewise.
2971         (vec_extract_hi_v32qi): Likewise.
2972         (avx_unpckhpd256): Likewise.
2973         (*avx_unpckhpd): Likewise.
2974         (avx_movddup256): Likewise.
2975         (*avx_movddup): Likewise.
2976         (avx_unpcklpd256): Likewise.
2977         (*avx_unpcklpd): Likewise.
2978         (avx_shufpd256): Likewise.
2979         (avx_shufpd256_1): Likewise.
2980         (*avx_punpckhqdq): Likewise.
2981         (*avx_punpcklqdq): Likewise.
2982         (*avx_shufpd_<mode>): Likewise.
2983         (*avx_storehpd): Likewise.
2984         (*avx_loadhpd): Likewise.
2985         (*avx_loadlpd): Likewise.
2986         (*avx_movsd): Likewise.
2987         (*vec_concatv2df_avx): Likewise.
2988         (*avx_<plusminus_insn><mode>3): Likewise.
2989         (*avx_<plusminus_insn><mode>3): Likewise.
2990         (*avx_mulv8hi3): Likewise.
2991         (*avxv8hi3_highpart): Likewise.
2992         (*avx_umulv8hi3_highpart): Likewise.
2993         (*avx_umulv2siv2di3): Likewise.
2994         (*avx_mulv2siv2di3): Likewise.
2995         (*avx_pmaddwd): Likewise.
2996         (*avx_mulv4si3): Likewise.
2997         (*avx_ashr<mode>3): Likewise.
2998         (*avx_lshr<mode>3): Likewise.
2999         (*avx_ashl<mode>3): Likewise.
3000         (*avx_<code><mode>3): Likewise.
3001         (*avx_eq<mode>3): Likewise.
3002         (*avx_gt<mode>3): Likewise.
3003         (*avx_nand<mode>3): Likewise.
3004         (*avx_nand<mode>3): Likewise.
3005         (*avx_<code><mode>3): Likewise.
3006         (*avx_<code><mode>3): Likewise.
3007         (*avx_packsswb): Likewise.
3008         (*avx_packssdw): Likewise.
3009         (*avx_packuswb): Likewise.
3010         (*avx_punpckhbw): Likewise.
3011         (*avx_punpcklbw): Likewise.
3012         (*avx_punpckhwd): Likewise.
3013         (*avx_punpcklwd): Likewise.
3014         (*avx_punpckhdq): Likewise.
3015         (*avx_punpckldq): Likewise.
3016         (*avx_pinsr<avxmodesuffixs>): Likewise.
3017         (*avx_pinsrq): Likewise.
3018         (*avx_loadld): Likewise.
3019         (*vec_extractv2di_1_rex64_avx): Likewise.
3020         (*vec_extractv2di_1_avx): Likewise.
3021         (*vec_dupv2di_avx): Likewise.
3022         (*vec_concatv2si_avx): Likewise.
3023         (*vec_concatv4si_1_avx): Likewise.
3024         (*vec_concatv2di_avx): Likewise.
3025         (*vec_concatv2di_rex64_avx): Likewise.
3026         (*avx_uavgv16qi3): Likewise.
3027         (*avx_uavgv8hi3): Likewise.
3028         (*avx_psadbw): Likewise.
3029         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
3030         (*avx_phaddwv8hi3): Likewise.
3031         (*avx_phadddv4si3): Likewise.
3032         (*avx_phaddswv8hi3): Likewise.
3033         (*avx_phsubwv8hi3): Likewise.
3034         (*avx_phsubdv4si3): Likewise.
3035         (*avx_phsubswv8hi3): Likewise.
3036         (*avx_pmaddubsw128): Likewise.
3037         (*avx_pmulhrswv8hi3): Likewise.
3038         (*avx_pshufbv16qi3): Likewise.
3039         (*avx_psign<mode>3): Likewise.
3040         (*avx_palignrti): Likewise.
3041         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3042         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3043         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3044         (*avx_mpsadbw): Likewise.
3045         (*avx_packusdw): Likewise.
3046         (*avx_pblendvb): Likewise.
3047         (*avx_pblendw): Likewise.
3048         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3049         (avx_ptest256): Likewise.
3050         (avx_roundp<avxmodesuffixf2c>256): Likewise.
3051         (*avx_rounds<ssemodesuffixf2c>): Likewise.
3052         (*avx_aesenc): Likewise.
3053         (*avx_aesenclast): Likewise.
3054         (*avx_aesdec): Likewise.
3055         (*avx_aesdeclast): Likewise.
3056         (avx_vzeroupper): Likewise.
3057         (avx_vzeroupper_rex64): Likewise.
3058         (avx_vpermil<mode>): Likewise.
3059         (avx_vpermilvar<mode>3): Likewise.
3060         (avx_vpermil2<mode>3): Likewise.
3061         (avx_vperm2f128<mode>3): Likewise.
3062         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3063         (avx_vbroadcastss256): Likewise.
3064         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
3065         (avx_vinsertf128<mode>): Likewise.
3066         (vec_set_lo_<mode>): Likewise.
3067         (vec_set_hi_<mode>): Likewise.
3068         (vec_set_lo_<mode>): Likewise.
3069         (vec_set_hi_<mode>): Likewise.
3070         (vec_set_lo_v16hi): Likewise.
3071         (vec_set_hi_v16hi): Likewise.
3072         (vec_set_lo_v32qi): Likewise.
3073         (vec_set_hi_v32qi): Likewise.
3074         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3075         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
3076         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
3077         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
3078         (vec_init<mode>): Likewise.
3079         (*vec_concat<mode>_avx): Likewise.
3080         (blendbits): Support V8SF and V4DF.
3081         (sse2_movq128): Support AVX.
3082         (<sse>_movnt<mode>): Likewise.
3083         (sse2_movntv2di): Likewise.
3084         (sse_rcpv4sf2): Likewise.
3085         (sse_sqrtv4sf2): Likewise.
3086         (sse_rsqrtv4sf2): Likewise.
3087         (<sse>_comi): Likewise.
3088         (<sse>_ucomi): Likewise.
3089         (sse_cvtss2si): Likewise.
3090         (sse_cvtss2si_2): Likewise.
3091         (sse_cvtss2siq): Likewise.
3092         (sse_cvtss2siq_2): Likewise.
3093         (sse_cvttss2si): Likewise.
3094         (sse_cvttss2siq): Likewise.
3095         (sse2_cvtsd2si): Likewise.
3096         (sse2_cvtsd2si_2): Likewise.
3097         (sse2_cvtsd2siq): Likewise.
3098         (sse2_cvtsd2siq_2): Likewise.
3099         (sse2_cvttsd2si): Likewise.
3100         (sse2_cvttsd2siq): Likewise.
3101         (sse2_cvtdq2pd): Likewise.
3102         (*sse2_cvtpd2dq): Likewise.
3103         (*sse2_cvttpd2dq): Likewise.
3104         (*sse2_cvtpd2ps): Likewise.
3105         (sse2_cvtps2pd): Likewise.
3106         (sse3_movshdup): Likewise.
3107         (sse3_movsldup): Likewise.
3108         (sse_storehps): Likewise.
3109         (*sse4_1_extractps): Likewise.
3110         (sse2_storelpd): Likewise.
3111         (vec_dupv2df_sse3): Likewise.
3112         (*vec_concatv2df_sse3): Likewise.
3113         (*sse4_1_pextrb): Likewise.
3114         (*sse4_1_pextrb_memory): Likewise.
3115         (*sse2_pextrw): Likewise.
3116         (*sse4_1_pextrw_memory): Likewise.
3117         (*sse4_1_pextrd): Likewise.
3118         (*sse4_1_pextrq): Likewise.
3119         (sse2_pshufd_1): Likewise.
3120         (sse2_pshuflw_1): Likewise.
3121         (sse2_pshufhw_1): Likewise.
3122         (*sse2_storeq_rex64): Likewise.
3123         (*vec_dupv4si): Likewise.
3124         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
3125         (sse2_pmovmskb): Likewise.
3126         (*sse2_maskmovdqu): Likewise.
3127         (*sse2_maskmovdqu_rex64): Likewise.
3128         (sse_ldmxcsr): Likewise.
3129         (sse_stmxcsr): Likewise.
3130         (abs<mode>2): Likewise.
3131         (sse4_1_movntdqa): Likewise.
3132         (sse4_1_phminposuw): Likewise.
3133         (sse4_1_extendv8qiv8hi2): Likewise.
3134         (*sse4_1_extendv8qiv8hi2): Likewise.
3135         (sse4_1_extendv4qiv4si2): Likewise.
3136         (*sse4_1_extendv4qiv4si2): Likewise.
3137         (sse4_1_extendv2qiv2di2): Likewise.
3138         (*sse4_1_extendv2qiv2di2): Likewise.
3139         (sse4_1_extendv4hiv4si2): Likewise.
3140         (*sse4_1_extendv4hiv4si2): Likewise.
3141         (sse4_1_extendv2hiv2di2): Likewise.
3142         (*sse4_1_extendv2hiv2di2): Likewise.
3143         (sse4_1_extendv2siv2di2): Likewise.
3144         (*sse4_1_extendv2siv2di2): Likewise.
3145         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3146         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3147         (sse4_1_zero_extendv4qiv4si2): Likewise.
3148         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3149         (sse4_1_zero_extendv2qiv2di2): Likewise.
3150         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3151         (sse4_1_zero_extendv4hiv4si2): Likewise.
3152         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3153         (sse4_1_zero_extendv2hiv2di2): Likewise.
3154         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3155         (sse4_1_zero_extendv2siv2di2): Likewise.
3156         (*sse4_1_zero_extendv2siv2di2): Likewise.
3157         (sse4_1_ptest): Likewise.
3158         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
3159         (sse4_2_pcmpestri): Likewise.
3160         (sse4_2_pcmpestrm): Likewise.
3161         (sse4_2_pcmpistri): Likewise.
3162         (sse4_2_pcmpistrm): Likewise.
3163         (aesimc): Likewise.
3164         (aeskeygenassist): Likewise.
3165
3166 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
3167
3168         * config/i386/predicates.md (vzeroall_operation): New.
3169
3170         * config/i386/sse.md (avx_vzeroall): New.
3171         (*avx_vzeroall): Likewise.
3172
3173 2008-08-28  Paul Brook  <paul@codesourcery.com>
3174             Mark Shinwell  <shinwell@codesourcery.com>
3175             Richard Earnshaw  <richard.earnshaw@arm.com>
3176
3177         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
3178         (TARGET_MIN_ANCHOR_OFFSET): New.
3179         (arm_override_options): Set correct anchor ranges for Thumb-1
3180         and Thumb-2 if required.
3181         (legitimize_pic_address): Handle case involving a TLS symbol
3182         reference with an addend.
3183         (arm_optimization_options): Enable section anchors at -O1 and
3184         above.
3185         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
3186         * config/arm/arm-protos.h (arm_optimization_options): New.
3187
3188 2008-08-28  Nick Clifton  <nickc@redhat.com>
3189
3190         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
3191         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
3192         attribute.
3193
3194         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
3195         * config/v850/v850.md (return): Remove frame size restriction.
3196
3197         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
3198
3199         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
3200
3201         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
3202
3203         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
3204
3205 2008-08-28  Paul Brook  <paul@codesourcery.com>
3206
3207         * config/arm/vfp11.md: Update license notice.
3208         * config/arm/cortex-r4.md: Ditto.
3209
3210 2008-08-28  Richard Guenther  <rguenther@suse.de>
3211
3212         PR tree-optimization/37207
3213         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
3214         tuplification bug.
3215
3216 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
3217
3218         PR c++/36741
3219         * tree.c (int_fits_type_p): Don't forget unsigned integers
3220           of type sizetype which higher end word equals -1.
3221
3222 2008-08-28  Ira Rosen  <irar@il.ibm.com>
3223
3224         * target.h (struct vectorize): Add new target builtin.
3225         * tree-vectorizer.c (destroy_loop_vec_info): Call
3226         vect_free_slp_instance instead of vect_free_slp_node.
3227         * tree-vectorizer.h (enum slp_load_perm_type): New.
3228         (struct _slp_instance): Add new fields.
3229         (SLP_INSTANCE_LOAD_PERMUTATION): New.
3230         (SLP_INSTANCE_LOADS): New.
3231         (vect_free_slp_tree): Remove.
3232         (vect_free_slp_instance): Declare.
3233         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
3234         (vectorizable_load): Add argument.
3235         (vect_transform_slp_perm_load): New.
3236         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
3237         vectorizable_load.
3238         (vect_get_place_in_interleaving_chain): New function.
3239         (vect_free_slp_tree): Make static.
3240         (vect_free_slp_instance): New function.
3241         (vect_build_slp_tree): Add new arguments. Allow load permutations and
3242         collect the load location in the interleaving chain.
3243         (vect_supported_slp_permutation_p): New function.
3244         (vect_supported_load_permutation_p): Likewise.
3245         (vect_analyze_slp_instance): In case of loads permutation, call
3246         vect_supported_load_permutation_p to check that the permutation is
3247         supported.
3248         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
3249         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
3250         (vect_create_mask_and_perm): New function.
3251         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
3252         (vectorizable_load): Add an argument. Don't keep the created vectors
3253         statements in the node if permutation is required. Call
3254         vect_transform_slp_perm_load to generate the permutation.
3255         (vect_transform_stmt): Add new argument. Call vectorizable_load with
3256         additional argument.
3257         (vect_schedule_slp_instance): In case of loads permutation, allocate
3258         vectorized statements structure for all the related SLP nodes. Call
3259         vect_transform_stmt with addditional argument.
3260         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
3261         * config/spu/spu.c (spu_builtin_vec_perm): New.
3262         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3263         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
3264         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
3265         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
3266
3267 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
3268
3269         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
3270         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
3271         __gthread_cond_signal, __gthread_cond_timedwait,
3272         __gthread_cond_timedwait_recursive): New functions.
3273         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
3274         Likewise.
3275         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
3276         thread interfaces.
3277
3278 2008-08-28  Richard Guenther  <rguenther@suse.de>
3279
3280         PR middle-end/37005
3281         * fold-const.c (maybe_canonicalize_comparison_1): Require
3282         undefined overflow only for canonicalizing A +- CST cmp CST.
3283         Make sure to not generate new constants that are not inside
3284         their TYPE_MIN/MAX_VALUE range.
3285         (maybe_canonicalize_comparison): Remove undefined overflow
3286         checking from here.
3287         (fold_binary): Remove now duplicate folding.
3288
3289 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3290
3291         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
3292         use not updated in the last change.
3293
3294 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3295
3296         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
3297         (IRA_COVER_CLASSES): Add FPUL_REGS.
3298
3299 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3300
3301         PR 37217
3302         * c-common.c (conversion_warning): Check for null operands.
3303
3304 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3305
3306         PR c/31673
3307         * c-decl.c (check_for_loop_decls): Improve error message. Give
3308         hint.
3309
3310 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3311
3312         PR c/37186
3313         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
3314         (convert_for_assignment): Pass corrent OPT_W* parameter to
3315         WARN_FOR_ASSIGNMENT.
3316
3317 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3318
3319         PR c++/35321
3320         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
3321
3322 2008-08-27  Paul Brook  <paul@codesourcery.com>
3323
3324         * config.gcc: Loosen checks for arm uclinux eabi targets.
3325
3326 2008-08-27  Paul Brook  <paul@codesourcery.com>
3327
3328         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
3329         _clzsi2.
3330         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
3331
3332 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
3333
3334         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
3335         the enumerators of an ENUMERAL_TYPE.
3336         * dbxout.c (dbxout_type): Ditto.
3337
3338 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3339
3340         PR rtl-opt/37219
3341         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
3342         (fwprop_addr): Check that the loop_father is not the outer loop.
3343
3344 2008-08-26  Paul Brook  <paul@codesourcery.com>
3345
3346         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
3347         Remove documentation entry for fmul type.
3348         Use fmuls to annotate single-precision multiplication patterns,
3349         fmuld to annotate double-precision multiplication patterns,
3350         fmacs to annotate single-precision multiply-accumulate patterns
3351         and fmacd to annotate double-precision multiply-accumulate patterns.
3352         * config/arm/vfp11.md: Update reservations accordingly.
3353         * config/arm/arm.md: Note that certain values of the "type"
3354         attribute are documented in vfp.md.
3355         * config/arm/arm1020e.md: Remove out of date duplicate comment.
3356         (v10_cvt): Use new fmul types.
3357
3358 2008-08-26  Paul Brook   <paul@codesourcery.com>
3359
3360         * config/arm/vfp.md: Move pipeline description for VFP11 to...
3361         * config/arm/vfp11.md: ...here.  New.
3362         * config/arm/arm.md: Include vfp11.md.
3363
3364 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
3365
3366         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
3367         parameter to inform call.
3368
3369 2008-08-26  Jeff Law  <law@redhat.com>
3370
3371         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
3372         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
3373         preferred class when copying a constant into a partial word register.
3374
3375 2008-08-26  Ben Elliston  <bje@au.ibm.com>
3376