OSDN Git Service

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