OSDN Git Service

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