OSDN Git Service

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