OSDN Git Service

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