OSDN Git Service

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