OSDN Git Service

* config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2
3         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
4         where we have one entry point in the loop which isn't the head.
5
6 2008-11-03  Richard Guenther  <rguenther@suse.de>
7
8         PR middle-end/37573
9         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
10
11 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
12
13         PR middle-end/37858
14         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
15         for ipa and simple ipa passes.
16
17 2008-11-02  Richard Guenther  <rguenther@suse.de>
18
19         PR tree-optimization/37542
20         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
21         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
22         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
23         (vn_nary_op_insert_stmt): Likewise.
24         (visit_use): Likewise.
25
26 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
27
28         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
29         (*swap): Remove.
30         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
31         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
32         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
33         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
34         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
35         peephole2's): Replace unspec with rotate.
36         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
37
38 2008-11-02  Richard Guenther  <rguenther@suse.de>
39
40         PR tree-optimization/37991
41         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
42         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
43         (set_ssa_val_to): Print if the value changed.
44         (simplify_binary_expression): Strip useless conversions.
45
46 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
47
48         PR target/37939
49         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
50         operand.
51
52 2008-11-01  Richard Guenther  <rguenther@suse.de>
53
54         PR middle-end/37976
55         * builtins.c (fold_builtin_strspn): Return a size_t.
56         (fold_builtin_strcspn): Likewise.
57
58 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
59
60         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
61         attribute for struct return convention.
62
63 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
64
65         * config/rs6000/crtsavres.asm: Really, really delete.
66
67 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
68
69         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
70         problem.
71         (rs6000_emit_prologue): Invert logic.
72         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
73         (reg:P 11) instead of match_operand.
74         (*save_fpregs_<mode>): Likewise.
75         (*restore_gpregs_<mode>): Likewise.
76         (*return_and_restore_gpregs_<mode>): Likewise.
77         (*return_and_restore_fpregs_<mode>): Likewise.
78         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
79         (reg:P 11) insted of match_operand.
80         (*restore_gpregs_spe): Likewise.
81         (*return_and_restore_gpregs_spe): Likewise.
82
83 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
84
85         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
86         list of word switches that take args.
87
88 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
89
90         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
91         (s390_output_pool_entry): Call it through for_each_rtx.
92
93         PR middle-end/37730
94         * expr.c (store_constructor): For vectors, if target is a MEM, use
95         target's MEM_ALIAS_SET instead of elttype alias set.
96
97 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
98
99         PR target/37909
100         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
101         no address.
102
103 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
104
105         PR target/37878
106         * config/rs6000/predicates.md (word_offset_memref_operand):
107         Restructure code and look inside auto-inc/dec addresses.
108         
109 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
110
111         PR target/32277
112         * libgcov.c ( __gcov_indirect_call_profiler): Check
113         TARGET_VTABLE_USES_DESCRIPTORS.
114
115 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
116
117         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
118         (INITIAL_FRAME_POINTER_OFFSET): Remove.
119         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
120         offset if eliminating soft frame pointer.
121         * config/spu/spu.md (stack_protect_set, stack_protect_test)
122         (stack_protect_test_si): Add initial machine description
123         for Stack Smashing Protector
124
125 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
126
127         PR 11492
128         * c-common.c (min_precision): Move to...
129         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
130         * tree.h (tree_int_cst_min_precision): Declare.
131         * c-common.h (min_precision): Delete declaration.
132         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
133         multiplication of non-negative integer constants.
134         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
135         tree_int_cst_min_precision.
136         (finish_enum): Likewise.
137
138 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
139
140         PR middle-end/36578
141         * convert.c (convert_to_real): Do not optimize conversions of
142         binary arithmetic operations between binary and decimal
143         floating-point types.  Consider mode of target type in determining
144         decimal type for arithmetic.  Unless
145         flag_unsafe_math_optimizations, do not optimize binary conversions
146         where this may change rounding behavior.
147         * real.c (real_can_shorten_arithmetic): New.
148         * real.h (real_can_shorten_arithmetic): Declare.
149
150 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
151         
152         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
153         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
154         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
155         appropriate.
156         (must_save_p): For some workarounds, interrupts need to clobber a
157         P register.
158         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
159         and LC1 for WA_05000257.
160         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
161         WA_05000283 and WA_05000315.
162         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
163         (movbi): Add alternative to set CC to 1; improve code for setting
164         CC to 0.
165         (dummy_load): New pattern.
166
167 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
168
169         PR middle-end/37870
170         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
171         BLKmode for non-memory, convert using a wider MODE_INT mode
172         or through memory.
173
174         PR middle-end/37913
175         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
176         that haven't been removed yet.
177
178 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
179
180         * config/bfin/bfin.c (struct machine_function): New member
181         has_loopreg_clobber.
182         (bfin_expand_movmem): Set it when generating memcpy insns.
183         (n_regs_saved_by_prologue, expand_prologue_reg_save,
184         expand_epilogue_reg_restore): If we have hardware loops,
185         memcpy insns (indicated by has_loopreg_clobber) or function
186         calls, we need to save the loop registers.
187
188 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
189
190         * config/i386/i386.c (core2_cost): Fix typos in comments.
191
192 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
193
194         PR c/37924
195         * combine.c (make_compound_operation): Don't call make_extraction with
196         non-positive length.
197         (simplify_shift_const_1): Canonicalize count even if complement_p.
198
199 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
200
201         * convert.c (strip_float_extensions): Do not remove or introduce
202         conversions between binary and decimal floating-point types.
203
204 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
205
206         PR middle-end/37931
207         * fold-const.c (distribute_bit_expr): Convert common, left and
208         right arguments to type.
209
210 2008-10-28  Nick Clifton  <nickc@redhat.com>
211
212         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
213         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
214         call_really_used_regs array rather than the call_used_regs array.
215         (mn10300_get_live_callee_saved_regs, expand_prologue,
216         expand_epilogue, output_tst): Likewise.
217
218 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
219
220         PR target/37378
221         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
222         (df_get_entry_block_def_set): Neither here.
223         (df_get_regular_block_artificial_uses): Add EH_USES registers.
224
225         PR tree-optimization/37879
226         * predict.c (tree_estimate_probability): Check if last_stmt is
227         non-NULL before dereferencing it.
228
229 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
230
231         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
232         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
233         (ira_fast_allocation): Remove the prototype.
234         
235         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
236         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
237         (color_pass): Modify the updated costs.
238         (ira_color): Rename to color.  Make it static.
239         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
240         (ira_color): New function.
241         
242         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
243         change.
244
245         * ira-lives.c (last_call_num, allocno_saved_at_call): New
246         variables.
247         (set_allocno_live, clear_allocno_live, mark_ref_live,
248         mark_ref_dead): Invalidate corresponding element of
249         allocno_saved_at_call.
250         (process_bb_node_lives): Increment last_call_num.  Setup
251         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
252         allocno was already saved.
253         (ira_create_allocno_live_ranges): Initiate last_call_num and
254         allocno_saved_at_call.
255
256         * ira-build.c (ira_create_allocno): Initiate
257         ALLOCNO_UPDATED_COVER_CLASS_COST.
258         (create_cap_allocno, propagate_allocno_info,
259         remove_unnecessary_allocnos): Remove setting updated costs.
260         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
261
262         * ira.c (ira):  Don't call ira_fast_allocation.
263
264         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
265         updated costs.
266         
267 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
268
269         PR middle-end/37813
270         * ira-conflicts.c (process_regs_for_copy): Remove class subset
271         check.
272
273         * ira-int.h (ira_hard_regno_cover_class): New.
274
275         * ira-lives.c (mark_reg_live, mark_reg_dead,
276         process_bb_node_lives): Use ira_hard_regno_cover_class.
277
278         * ira.c (reg_class ira_hard_regno_cover_class): New global
279         variable.
280         (setup_hard_regno_cover_class): New function.
281         (ira_init): Call setup_hard_regno_cover_class.
282
283         * ira-costs.c (cost_class_nums): Add comment.
284         (find_allocno_class_costs): Initiate cost_class_nums.
285         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
286
287 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
288
289         PR middle-end/37884
290         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
291         Rename to copy_info_to_removed_store_destinations.  Propagate
292         conflict hard regs and register stack attribute.
293
294 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
295
296         PR middle-end/37316
297         * pa.c (function_arg_padding):  Pad complex and vector types upward in
298         64-bit runtime.
299         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
300
301 2008-10-26  Matthias Klose  <doko@ubuntu.com>
302
303         * doc/install.texi: Document requirements on antlr.
304
305 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
306
307         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
308         first.
309
310 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
311
312         PR target/37841
313         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
314         is defined, use it to modify the constant offset.
315
316         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
317
318         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
319         and short arguments to the correct location as mandated by the
320         ABI.
321
322 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
323
324         PR rtl-optimization/37769
325         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
326
327 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
328
329         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
330         unwind-dw2-Os-4-200.o.
331
332 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
333
334         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
335         (convert_for_assignment): Remove ic_argpass_nonproto cases.
336
337 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
338
339         PR tree-optimization/36038
340         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
341         add sizetype IV with initial value zero instead of pointer type.
342
343 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
344
345         PR c/7543
346         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
347         around bit operation.
348         * profile.c (is_edge_inconsistent): Likewise.
349         * fold-const.c (truth_value_p): Move from here...
350         * tree.h (truth_value_p): ... to here.
351         * c-tree.h (c_expr): Update description of original_code.
352         * c-typeck.c (parser_build_unary_op): Set original_code.
353         (parser_build_binary_op): Update call to warn_about_parentheses.
354         * c-common.c (warn_about_parentheses): Take two additional
355         arguments of the operands. Use a switch. Quote operators
356         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
357         Add warning about !x | y and !x & y.
358         * c-common.h (warn_about_parentheses): Update declaration.
359
360 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
361
362         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
363         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
364         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
365         New variables.
366         (check-subtargets, check-%-subtargets, check-parallel-%): New
367         targets.
368         (check-%): For test targets listed in lang_checks_parallelized
369         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
370         run the testing in multiple make goals, possibly parallel, and
371         afterwards run dg-extract-results.sh to merge the sum and log files.
372
373 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
374
375         * config/mips/mips.c (mips_canonicalize_move_class): New function.
376         (mips_move_to_gpr_cost): Likewise.
377         (mips_move_from_gpr_cost): Likewise.
378         (mips_register_move_cost): Make more fine-grained.
379
380 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
381
382         * graphite.c (graphite_apply_transformations): Check for
383         -fgraphite-identity.
384         * toplev.c (process_options): Add graphite_identity.
385         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
386
387 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
388
389         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
390         mulhisihl and mulhisihh builtins.
391
392         From Jie Zhang  <jie.zhang@analog.com>
393         * config/bfin/bfin.md (composev2hi): Put operands into vector
394         with correct order.
395         
396 2008-10-22  Chao-ying Fu  <fu@mips.com>
397
398         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
399
400 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
401
402         From Mike Frysinger  <michael.frysinger@analog.com>
403         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
404         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
405         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
406         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
407         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
408         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
409         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
410         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
411         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
412         __ADSPBF51x__ for all of them.
413         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
414         -mcpu bf512, bf514, bf516, and bf518.
415         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
416         bf512-none, bf514-none, bf516-none, and bf518-none.
417         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
418         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
419         * doc/invoke.texi (Blackfin Options): Document that
420         -mcpu now accepts bf512, bf514, bf516, and bf518.
421
422 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
423
424         PR middle-end/37882
425         * fold-const.c (build_range_type): For 1 .. signed_max
426         range call build_nonstandard_inter_type if signed_type_for
427         returned a type with bigger precision.
428
429 2008-10-22  Richard Guenther  <rguenther@suse.de>
430
431         * tree.def (COMPLEX_TYPE): Constrain element type.
432         * tree.c (build_complex_type): Assert that.
433         * tree-ssa-structalias.c (could_have_pointers): Complex types
434         cannot have pointers.
435
436 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
437
438         PR c/30949
439         * c-typeck.c (convert_for_assignment): Do not give declaration's
440         location for builtins. Spell out which type was expected and which
441         was given.
442
443 2008-10-22  Nick Clifton  <nickc@redhat.com>
444
445         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
446         the fdpic register to be a target when running in fdpic mode.
447
448 2008-10-22 Rafael Espindola  <espindola@google.com>
449
450         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
451         newly created statements.
452
453 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
454
455         PR target/37633
456         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
457         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
458         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
459
460 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
461
462         PR target/37880
463         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
464         Adjust -mcmodel=medium description for 2005-07-31 changes.
465
466 2008-10-22  Jan Hubicka  <jh@suse.cz>
467             Jakub Jelinek  <jakub@redhat.com>
468
469         PR middle-end/35853
470         * doc/invoke.texi: Remove references to obsoleted -d dumps.
471
472 2008-10-21  Richard Henderson  <rth@redhat.com>
473
474         PR 37815
475         * emit-rtl.c (get_spill_slot_decl): Export.
476         * emit-rtl.h (get_spill_slot_decl): Declare.
477         * var-tracking.c (vt_add_function_parameters): Relax assertion
478         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
479
480 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
481
482         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
483         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
484         of from insn.
485
486 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
487
488         PR middle-end/37669
489         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
490         processed by get_maxval_strlen.
491
492 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
493
494         PR target/35485
495         * tree.c (get_file_function_name): Copy first_global_object_name.
496         Centralize call to clean_symbol_name.
497
498 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
499
500         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
501         * config/svr4.h (SVR4_ASM_SPEC): New.
502         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
503         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
504
505         * doc/invoke.texi (Option Summary): Add -T to linker options.
506         (Link Options): Document -T.
507         
508 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
509
510         * tree-inline.c (tree_inlinable_function_p): Remove tuples
511         debugging hack.
512
513         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from
514         INTEGER_CSTs.
515
516         PR debug/37020
517         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
518
519 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
520
521         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
522         part of expression.
523
524 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
525
526         * doc/install.texi: Fix typos in previous patch.
527
528 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
529
530         * doc/install.texi: Document in-tree building of gcc and mpfr.
531
532 2008-10-19  Richard Guenther  <rguenther@suse.de>
533
534         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
535
536 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
537
538         PR c/30260
539         * c-decl.c (finish_enum): Convert non-integer enumerators to enum
540         type.
541         (build_enumerator): Convert enumerators that fit in integer to
542         integer type.
543
544 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
545
546         * config/i386/i386.md (unnamed peephole2): Do not force memory
547         operands of arith or logical instructions into registers for
548         non-TARGET_READ_MODIFY targets.
549
550         (ffs_cmove): Change operand 0 predicate to register_operand.
551         Change operand 1 predicate to nonimmediate_operand.
552         (ffsdi2): Ditto.
553         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
554
555 2008-10-18  Richard Guenther  <rguenther@suse.de>
556
557         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
558         VIEW_CONVERT_EXPR case against invalid gimple.
559
560 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
561
562         * c-parser.c (c_parser_binary_expression): Silence the
563         uninitialized variable warning emitted for binary_loc.
564
565 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
566
567         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
568         translation cache.
569
570 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
571
572         PR c/33192
573         * c-typeck.c (build_unary_op): Use omit_one_operand for
574         IMAGPART_EXPR of real argument.
575
576 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
577
578         PR tree-optimization/37664
579         * fold-const.c (fold_binary): When optimizing comparison with
580         highest or lowest type's value, don't consider TREE_OVERFLOW.
581
582 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
583
584         PR target/35483
585         * Makefile.in (coverage.o): Depend on $(TM_P_H).
586         * coverage.c: Include tm_p.h.
587         * config/rs6000/x-aix (jc1): Override LDFLAGS.
588         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
589         dollar signs from PREFIX.
590         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
591         instead of manual strip_name_encoding.
592
593 2008-10-16  Richard Guenther  <rguenther@suse.de>
594
595         PR middle-end/37418
596         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
597         volatile qualified functions or methods as relevant.
598
599 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
600
601         PR tree-optimization/37525
602         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
603         sizetype unsigned constants, both in the case of C and bounds.
604
605 2008-10-15  Jan Hubicka  <jh@suse.cz>
606
607         * ira-emit.c (change_regs): Return false when replacing reg by
608         itself.
609
610 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
611
612         PR target/37633
613         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
614         HARD_REGNO_CALL_PART_CLOBBERED.
615
616 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
617
618         PR middle-end/37535
619         * ira-lives.c (mark_early_clobbers): Remove.
620         (make_pseudo_conflict, check_and_make_def_use_conflicts,
621         check_and_make_def_conflicts,
622         make_early_clobber_and_input_conflicts,
623         mark_hard_reg_early_clobbers): New functions.
624         (process_bb_node_lives): Call
625         make_early_clobber_and_input_conflicts and
626         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
627
628         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
629         early clobbers of pseudo-registers.
630         
631 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
632
633         PR middle-end/37674
634         * ira-build.c (ira_flattening): Recalculate
635         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
636         from the scratch instead of the propagation.
637         
638 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
639
640         * doc/rtl.texi (const_double): Remove the "addr" operand.
641         Describe CONST_DOUBLE_* macros under const_double rather
642         than const_vector.
643         (const_fixed): Fix the operand description.
644         (const): Add an @findex directive.
645         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
646         after the constant rtl table.
647         (fix): Combine floating-point and fixed-point descriptions.
648         Fix hyphenation.
649         * sched-deps.c (sched_analyze_2): Remove reference to
650         CONST_DOUBLE_CHAIN.
651
652 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
653
654         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
655         UNSPEC_GOTSYM_OFFs.
656         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
657         for UNSPEC_GOTSYM_OFFs.
658         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
659         (add_GOT_to_pic_reg): Use it.
660         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
661
662 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
663             Harsha Jagasia  <harsha.jagasia@amd.com>
664
665         PR tree-optimization/37485
666         * graphite.c (gmp_cst_to_tree): Moved.
667         (iv_stack_entry_is_constant): New.
668         (iv_stack_entry_is_iv): New.
669         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
670         (loop_iv_stack_insert_constant): New.
671         (loop_iv_stack_pop): Use new datatpype.
672         (loop_iv_stack_get_iv): Same.
673         (loop_iv_stack_get_iv_from_name): Same.
674         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
675         (loop_iv_stack_patch_for_consts): New.
676         (loop_iv_stack_remove_constants): New.
677         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
678         (translate_clast): Call loop_iv_stack_patch_for_consts and
679         loop_iv_stack_remove_constants.
680         (gloog): Use new datatype.  Redirect construction edge to end
681         block to avoid accidental deletion.
682         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
683         iv stack entry.
684         (union iv_stack_entry_data): New.  Data in iv stack entry.
685         (struct iv_stack_entry): New.  Datatype for iv stack entries.
686
687 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
688
689         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
690         * graphite.c (free_scop): Same.
691         (build_scops): Same.
692         (free_scattering): New.
693         (build_cloog_prog): Call free_scattering.
694         (patch_phis_for_virtual_defs): Fix memleak.
695         (graphite_trans_bb_strip_mine): Same.
696         (limit_scops): Same.
697
698 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
699             Harsha Jagasia  <harsha.jagasia@amd.com>
700
701         PR tree-optimization/37828
702         * graphite.c (graphite_trans_loop_block): Do not loop block
703         single nested loops.
704
705 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
706
707         PR tree-optimization/37686
708         * tree-loop-linear.c (linear_transform_loops): Build a
709         loop nest vector.  Pass it to lambda_compute_access_matrices.
710         * tree-data-ref.h (struct access_matrix): Store the loop nest
711         relative to which it encodes the information.
712         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
713         (am_vector_index_for_loop): Reimplemented: iterate over the
714         loop nest for finding the loop index in the access matrix.
715         (lambda_compute_access_matrices): Update declaration.
716         * lambda-code.c (build_access_matrix): Pass the loop nest and
717         record it.
718         (lambda_compute_access_matrices): Same.
719
720 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
721
722         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
723         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
724         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
725         already implies hard float.  Also fix several insn condition
726         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
727
728 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
729
730         PR target/35483
731         Based on patches by Laurent Vivier.
732         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
733         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
734         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
735         dollar sign to underscore.
736         (ASM_OUTPUT_EXTERNAL): Same.
737         (ASM_OUTPUT_LABELREF): New.
738         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
739
740         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
741         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
742         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
743         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
744
745 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
746
747         PR tree-optimization/36881
748         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
749         that each value doesn't need runtime relocations, for !flag_pic
750         check that each value is just a valid initializer constant.
751
752 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
753
754         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
755         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
756         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
757         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
758         GR_AND_ACC_REGS.
759         (REG_CLASS_NAMES): Update accordingly.
760         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
761         rather than an unpredictable descriptive string.
762         * config/mips/mips.c (mips_register_move_cost): Remove comment.
763         (mips_register_move_cost): Check for specific COP*_REGS classes,
764         instead of ALL_COP_AND_GR_REGS.
765         (mips_ira_cover_classes): New function.
766         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
767         (TARGET_IRA_COVER_CLASSES): Define.
768
769 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
770
771         PR c++/37553
772         * tree.c (build_type_attribute_qual_variant): Hash on the
773         unqualified type, and don't overwrite an existing
774         (type_hash_eq): Make the TYPE_NAME of the types significant, to
775         allow distinguishing between wchar_t and its underlying type. This
776         also means that we'll retain a little more typedef information.
777
778 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
779             Dmitry Melnik  <dm@ispras.ru>
780             Dmitry Zhurikhin  <zhur@ispras.ru>
781             Alexander Monakov  <amonakov@ispras.ru>
782             Maxim Kuvyrkov  <maxim@codesourcery.com>
783
784         * target.h (struct gcc_target): Update prototypes of needs_block_p
785         and gen_spec_check.
786         * haifa-sched.c (create_check_block_twin): Update calls to the above.
787         * sel-sched.c (create_speculation_check): Likewise.
788         * doc/tm.texi: Provide documentation for new target hooks.
789                 
790         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
791         (ia64_gen_spec_insn): Removed.
792         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
793         ia64_gen_spec_check): New static functions.
794         (ia64_alloc_sched_context, ia64_init_sched_context,
795         ia64_set_sched_context, ia64_clear_sched_context,
796         ia64_free_sched_context, ia64_get_insn_spec_ds,
797         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
798         (ia64_needs_block_p): Change prototype.
799         (ia64_gen_check): Rename to ia64_gen_spec_check.
800         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
801         into declaration, add special memory dependencies handling.
802         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
803         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
804         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
805         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
806         Define new target hooks.
807         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
808         (ia64_optimization_options): Turn on selective scheduling with -O3,
809         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by default
810         with selective scheduling.
811         (ia64_override_options): Initialize align_loops and align_functions
812         to 32 and 64, respectively.  Set global selective scheduling flags
813         according to target-dependent flags.
814         (rtx_needs_barrier): Support UNSPEC_LDS_A.
815         (group_barrier_needed): Use new mstop-bit-before-check flag.
816         Add heuristic.
817         (dfa_state_size): Make global.
818         (spec_check_no, max_uid): Remove.
819         (mem_ops_in_group, current_cycle): New variables.
820         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
821         Initialize new variables.
822         (is_load_p, record_memory_reference): New functions.
823         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
824         reached.
825         (ia64_variable_issue): Change use of current_sched_info to
826         sched_deps_info.  Update comment.  Note if a load or a store is issued.
827         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
828         advance if maximal number of loads or stores was issued on current
829         cycle.
830         (scheduled_good_insn): New static helper function.
831         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
832         a group barrier is needed.  Fix vertical spacing.  Guard the code
833         doing state transition with last_scheduled_insn check.
834         Mark that a stop bit should be before current insn if there was a 
835         cycle advance.  Update current_cycle and mem_ops_in_group.
836         (ia64_h_i_d_extended): Change use of current_sched_info to
837         sched_deps_info. Reallocate stops_p by larger chunks.
838         (struct _ia64_sched_context): New structure.
839         (ia64_sched_context_t): New typedef.
840         (ia64_alloc_sched_context, ia64_init_sched_context,
841         ia64_set_sched_context, ia64_clear_sched_context,
842         ia64_free_sched_context): New static functions.
843         (gen_func_t): New typedef.
844         (get_spec_load_gen_function): New function.
845         (SPEC_GEN_EXTEND_OFFSET): Declare.      
846         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
847         (get_mode_no_for_insn): Change the condition that prevents use of
848         special hardware registers so it can now handle pseudos.
849         (get_spec_unspec_code): New function.
850         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
851         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
852         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
853         during selective scheduling.
854         (ia64_speculate_insn): Use ds_get_speculation_types when
855         determining whether we need to change the pattern.
856         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
857         (ia64_spec_check_src_p): Support new speculation/check codes.
858         (struct bundle_state): New field.
859         (issue_nops_and_insn): Initialize it.
860         (insert_bundle_state): Minimize mid-bundle stop bits.
861         (important_for_bundling_p): New function.
862         (get_next_important_insn): Use important_for_bundling_p.
863         (bundling): When shifting TImode from unimportant insns, ignore
864         also group barriers.  Assert that best state is found before
865         the backward bundling pass.  Print number of mid-bundle stop bits.
866         Minimize mid-bundle stop bits.  Check correct calculation of
867         mid-bundle stop bits.
868         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
869         (final_emit_insn_group_barriers): Emit stop bits before insns starting
870         a new cycle.
871         (sel2_run): New variable.
872         (ia64_reorg): When flag_selective_scheduling2 is set, run the selective
873         scheduling pass instead of schedule_ebbs.
874         
875         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
876         (UNSPEC_LDS_A): New UNSPEC.
877         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
878         movti_internal, movsf_internal, movdf_internal,
879         movxf_internal): Make visible.  Add speculable* attributes.
880         (output_c_nc): New mode attribute.
881         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
882         mov<mode>_nc, zero_extend<mode>di2_nc,
883         advanced_load_check_nc_<mode>): New insns.
884         (zero_extend*): Add speculable* attributes.
885
886         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
887         (msched-stop-bits-after-every-cycle): Likewise.
888         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
889         Likewise.
890         (msched-spec-verbose): Remove.
891         (msched-prefer-non-data-spec-insns,
892         msched-prefer-non-control-spec-insns,
893         msched-count-spec-in-critical-path,
894         msel-sched-dont-check-control-spec): Use Target  Report Var
895         instead of Common Report Var.
896
897         * config/ia64/itanium2.md: Remove incorrect bypass.
898         
899         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
900
901 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
902
903         PR middle-end/37805
904         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
905         and -fhelp=separate.
906
907 2008-10-14  Ben Elliston  <bje@au.ibm.com>
908
909         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
910
911 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
912
913         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
914         non-integer modes.
915
916 2008-10-13  Matthias Klose  <doko@ubuntu.com>
917
918         * config/pa/linux-atomic.c: Work around missing header file
919         for hppa64-linux-gnu targets.
920
921 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
922             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
923             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
924             Grace Cao  <grace_cao@playstation.sony.com>
925
926         * doc/invoke.texi (-mgen-cell-microcode): Document.
927         (-mwarn-cell-microcode): Document.
928         * cfglayout.c (locator_location): Export.
929         * rtl.h (locator_location): Define prototype.
930         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
931         New predicate.
932         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
933         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
934         (mwarn-cell-microcode): New option.
935         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
936         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
937         cell and not already set.
938         Turn off string instructions if not generating cell microcode.
939         (rs6000_final_prescan_insn): New function that warns about microcoded
940         instructions.
941         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
942         * config/rs6000/rs6000.md
943         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
944         the instruction would have been microcoded on the Cell.  Set cell_micro
945         to always on unnamed patterns for the string instructions.
946         (cell_micro): Update definition, remove load/store conditional
947         microcoded.
948         (sign_extend:DI): Define new pattern for non microcoded version.
949         (sign_extend:SI): Likewise.
950         (compare (div:P)): Set cell_micro to not.
951         (andsi3): Define as an expand.
952         (andsi3_mc): New pattern.
953         (andsi3_nomc): New pattern.
954         (andsi3_internal0_nomc): New pattern.
955         (andsi3_internal2): Rename to ...
956         (andsi3_internal2_mc): this and enable iff generating microcode.
957         (andsi3_internal3): Rename to ...
958         (andsi3_internal3_mc): this and enable iff generating microcode.
959         (andsi3_internal4): Enable iif generating microcode.
960         (andsi3_internal5): Rename to ..
961         (andsi3_internal5_mc): this and enable iff generating microcode.
962         (andsi3_internal5_nomc): New pattern.
963         (extzvdi_internal1): Enable iff generating microcode.
964         (extzvdi_internal2): Likewise.
965         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
966         (anddi3): Change to expand.
967         (anddi3_mc): Rename from anddi3.
968         (anddi3_no_mc): New pattern.
969         (anddi3_internal2): Rename to ..
970         (anddi3_internal2_mc): this and enable iff generating microcode.
971         (anddi3_internal2_nomc): New pattern.
972         (anddi3_internal3): Rename to ..
973         (anddi3_internal3_mc): this and enable iff generating microcode.
974         (anddi3_internal3_nomc): New pattern.
975         (movti_string): Set cell_micro to always if TARGET_STRING.
976         (stmsi8): Set cell_micro to always.
977         (stmsi7): Likewise.
978         (stmsi6): Likewise.
979         (stmsi5): Likewise.
980         (stmsi4): Likewise.
981         (stmsi3): Likewise.
982         (stmsi8_power): Likewise.
983         (stmsi7_power): Likewise.
984         (stmsi6_power): Likewise.
985         (stmsi5_power): Likewise.
986         (stmsi4_power): Likewise.
987         (stmsi3_power): Likewise.
988         (movsi_update2): Enable iff generating microcode.
989         (movhi_update3): Likewise.
990         (lmw): Set cell_micro to always.
991
992 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
993
994         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
995         * config/s390/s390.c (machine_function): Remove
996         decomposed_literal_pool_addresses_ok_p.
997         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
998         the difference of two labels.
999         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
1000         (s390_pool_offset): New function.
1001         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
1002         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
1003
1004 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
1005
1006         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
1007         (powerpc*-*-linux-gnu*): Describe.
1008         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
1009         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
1010         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
1011         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
1012         config/rs6000/e500crtres32gpr.asm,
1013         config/rs6000/e500crtres64gpr.asm,
1014         config/rs6000/e500crtres64gprctr.asm,
1015         config/rs6000/e500crtrest32gpr.asm,
1016         config/rs6000/e500crtrest64gpr.asm,
1017         config/rs6000/e500crtresx32gpr.asm,
1018         config/rs6000/e500crtresx64gpr.asm,
1019         config/rs6000/e500crtsav32gpr.asm,
1020         config/rs6000/e500crtsav64gpr.asm,
1021         config/rs6000/e500crtsav64gprctr.asm,
1022         config/rs6000/e500crtsavg32gpr.asm,
1023         config/rs6000/e500crtsavg64gpr.asm,
1024         config/rs6000/e500crtsavg64gprctr.asm: Use it.
1025         * config/rs6000/crtsavres.asm: Really remove.
1026
1027 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
1028
1029         Fix PR/25502
1030         * c-format.c (convert_format_name_to_system_name): Use
1031         TARGET_OVERRIDES_FORMAT_INIT.
1032         * config.gcc (extra_options): Add for mingw targets mingw.opt.
1033         * config/i386/mingw.opt: New.
1034         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
1035         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
1036         (ms_printf_length_specs): Removed const specifier.
1037         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
1038         * doc/invoke.texi (Wno-pedantic-ms-format): New.
1039
1040 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1041
1042         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
1043         * doc/install.texi: Bump recommended MPFR to 2.3.2.
1044
1045 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1046
1047         PR middle-end/37808
1048         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
1049         sure that ref has valid bb.
1050         
1051 2008-10-12  Richard Henderson  <rth@redhat.com>
1052
1053         PR middle-end/37447
1054         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
1055         * alias.c (value_addr_p, stack_addr_p): Remove.
1056         (nonoverlapping_memrefs_p): Remove IRA special case.
1057         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
1058         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
1059         * reload1.c (alter_reg): Use it.
1060
1061 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
1062
1063         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
1064         of registers instead of eax, ebx, ecx and edx.  Use for loop
1065         and check register for non-zero value before the call
1066         to decode_caches_intel.
1067
1068 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1069
1070         PR rtl-optimization/37448
1071         * df.h: (df_ref_class): New enum.
1072         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
1073         (struct df_ref): Replaced with union df_ref_d.
1074         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
1075         New members of df_ref_d union.
1076         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
1077         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
1078         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
1079         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
1080         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
1081         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
1082         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
1083         (df_scan_bb_info, df_bb_regno_first_def_find,
1084         df_bb_regno_last_def_find, df_find_def, df_find_use,
1085         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1086         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
1087         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
1088         df_get_artificial_defs, df_get_artificial_uses, union_defs)
1089         Replaced struct df_ref * with df_ref.
1090         * df-scan.c (df_collection_rec, df_null_ref_rec,
1091         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
1092         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
1093         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
1094         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
1095         df_reorganize_refs_by_reg_by_reg,
1096         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
1097         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
1098         df_sort_and_compress_refs, df_install_ref, df_install_refs,
1099         df_ref_record, df_get_conditional_uses, df_get_call_refs,
1100         df_bb_refs_record, df_exit_block_uses_collect,
1101         df_record_exit_block_uses, df_reg_chain_mark,
1102         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
1103         df_ref * with df_ref.
1104         (df_ref_record, df_uses_record, df_ref_create_structure): Added
1105         df_ref_class parameter.
1106         (df_scan_problem_data): Added new pools for different types of refs.
1107         (df_scan_free_internal, df_scan_alloc, df_free_ref,
1108         df_ref_create_structure): Processed new ref pools.
1109         (df_scan_start_dump): Added counts of refs and insns.
1110         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
1111         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
1112         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
1113         code to pass df_ref_class down to ref creation functions.
1114         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
1115         df_reg_chain_mark): Use macros to hide references to df_refs.
1116         (df_ref_chain_change_bb): Removed.
1117         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
1118         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
1119         Enhanced to understand df_ref union structure.
1120         * fwprop.c (local_ref_killed_between_p, use_killed_between,
1121         all_uses_available_at, update_df, try_fwprop_subst,
1122         forward_propagate_subreg, forward_propagate_and_simplify,
1123         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
1124         df_ref * with df_ref.
1125         (use_killed_between, all_uses_available_at): Use macros to hide
1126         references to df_refs.
1127         * regstat.c (regstat_bb_compute_ri,
1128         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
1129         df_ref.
1130         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
1131         see_handle_relevant_refs, see_analyze_one_def,
1132         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
1133         struct df_ref * with df_ref.
1134         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
1135         global_conflicts): Replaced struct df_ref * with df_ref.
1136         * ddg.c (create_ddg_dep_from_intra_loop_link,
1137         add_cross_iteration_register_deps, build_inter_loop_deps):
1138         Replaced struct df_ref * with df_ref.
1139         (create_ddg_dep_from_intra_loop_link,
1140         add_cross_iteration_register_deps): Use macros to hide references
1141         to df_refs.
1142         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
1143         df_ref * with df_ref.
1144         * df-core.c (df_bb_regno_first_def_find,
1145         df_bb_regno_last_def_find, df_find_def, df_find_use,
1146         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1147         debug_df_ref): Replaced struct df_ref * with df_ref.
1148         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
1149         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
1150         df_ref.
1151         * web.c (union_defs, entry_register, replace_ref, web_main):
1152         Replaced struct df_ref * with df_ref.
1153         (union_defs, replace_ref): Use macros to hide references to df_refs.
1154         * global.c (compute_regs_asm_clobbered, build_insn_chain):
1155         Replaced struct df_ref * with df_ref.
1156         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
1157         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
1158         Replaced struct df_ref * with df_ref.
1159         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
1160         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
1161         with df_ref.
1162         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
1163         * df-byte-scan.c (df_compute_accessed_bytes_extract,
1164         df_compute_accessed_bytes_strict_low_part,
1165         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
1166         Replaced struct df_ref * with df_ref.
1167         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
1168         * init-regs.c (initialize_uninitialized_regs): Replaced struct
1169         df_ref * with df_ref.
1170         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
1171         check_dependency, check_dependencies, record_uses): Replaced
1172         struct df_ref * with df_ref.
1173         (invariant_for_use, check_dependency): Use macros to hide
1174         references to df_refs.
1175         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
1176         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
1177         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
1178         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
1179         references to df_refs.
1180         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
1181         with df_ref.
1182         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
1183         * df-problems.c (df_rd_bb_local_compute_process_def,
1184         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
1185         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
1186         df_chain_remove_problem, df_chain_create_bb_process_use,
1187         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
1188         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
1189         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
1190         df_byte_lr_simulate_artificial_refs_at_top,
1191         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
1192         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
1193         df_simulate_uses, df_simulate_artificial_refs_at_end,
1194         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
1195         df_ref.
1196         (df_chain_dump): Use macros to hide references to df_refs.
1197         * config/mips/mips.c (r10k_simplify_address): Replaced struct
1198         df_ref * with df_ref.
1199         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
1200         mark_artificial_uses, mark_reg_dependencies,
1201         byte_dce_process_block): Replaced struct df_ref * with df_ref.
1202
1203 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
1204
1205         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
1206         head comment.
1207         (array_ref_element_size): Likewise.
1208         (array_ref_low_bound): Likewise.
1209         (array_ref_up_bound): Likewise.
1210         * expr.c (contains_packed_reference): Likewise.
1211         (array_ref_element_size): Likewise.
1212         (array_ref_low_bound): Likewise.
1213         (array_ref_up_bound): Likewise.
1214         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
1215         with ARRAY_RANGE_REF.
1216         (idx_find_step): Likewise.
1217         (idx_record_use): Likewise.
1218         (strip_offset_1): Likewise.
1219         (idx_remove_ssa_names): Likewise.
1220
1221 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
1222             Andi Kleen  <ak@linux.intel.com>
1223
1224         * config/i386/cpuid.h (__cpuid_count): New defines.
1225         * config/i386/driver-i386.c (struct cache_desc): New structure.
1226         (describe_cache): Use struct cache_desc to pass cache descriptions.
1227         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
1228         (detect_caches_amd): Use struct cache_desc to describe caches.
1229         (decode_caches_intel): Use struct cache_desc to pass cache
1230         descriptions.  Update descriptions to match latest (rev -032,
1231         December 2007) CPUID documentation.  Do not check valid bit here.
1232         Check for Xeon MP value 0x49 problems.
1233         (detect_caches_cpuid2): New function, split from detect_caches_intel.
1234         Check valid bit before calling decode_caches_intel.  Detect number
1235         of times to repeat CPUID instruction.
1236         (detect_caches_cpuid4): New function.
1237         (detect_caches_intel): Depending on max_level, call
1238         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
1239         only when other methods fail to provide valid L2 cache description.
1240
1241 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1242
1243         PR middle-end/37608
1244         * pa.md (call, call_value): Generate an rtx for register r4 and pass
1245         it to PIC call patterns.
1246         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
1247         code generation and attributes from pattern.  Change peephole2 to split
1248         for noreturn case.  Revise split pattern for non noreturn case.
1249         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
1250         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
1251         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
1252         asserts.
1253
1254 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
1255
1256         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
1257         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
1258         and fp_type.
1259         (divdf3): Reformat long line.
1260
1261 2008-10-11  Michael J. Eager  <eager@eagercon.com>
1262
1263         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
1264         -mfpu options.
1265         (rs6000_handle_option): Process -mfpu options.
1266         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
1267         (enum fpu_type_t): New.
1268         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
1269         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
1270         fp_type.
1271         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
1272         (floatdidf2): Add TARGET_SINGLE_FPU condition.
1273         * config/rs6000/rs6000.opt (-mfpu): New.
1274         (-mxilinx-fpu): New.
1275         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
1276         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
1277         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
1278         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
1279         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
1280
1281 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
1282
1283         PR target/35760
1284         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
1285         LO_SUM on Darwin if mode has just one unit.
1286
1287 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
1288
1289         PR debug/37002
1290         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
1291         has been optimized out.
1292
1293 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
1294
1295         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
1296         instead of PIC_DIRECT_ADDR_P.
1297         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1298         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
1299         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
1300         (PIC_OFFSET_P): Rename to...
1301         (PCREL_SYMOFF_P): ...this.
1302         (PIC_DIRECT_ADDR_P): Delete.
1303         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
1304         PIC_OFFSET_P.
1305         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
1306         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
1307         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
1308         * config/sh/sh.c (print_operand): Remove CONST handling.
1309         (unspec_caller_rtx_p): Rewrite to use split_const and check
1310         the operands of UNSPEC bases.
1311         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
1312         with (unspec [A B] UNSPEC_SYMOFF).
1313         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
1314         UNSPEC_PCREL_SYMOFF.
1315         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1316         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
1317         (UNSPEC_EXTRACT_U16): Likewise.
1318         (UNSPEC_SYMOFF): Likewise.
1319         (UNSPEC_PCREL_SYMOFF): Likewise.
1320         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
1321         of constants.
1322         (movsi_const_16bit): Likewise.
1323         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
1324         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
1325         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
1326         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
1327         with (unspec [A B] UNSPEC_SYMOFF).
1328         (symPLT_label2reg): Replace (minus A (minus B pc)) with
1329          (unspec [A B] PCREL_UNSPEC_SYMOFF).
1330         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
1331         (Csu): Likewise UNSPEC_EXTRACT_U16.
1332         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1333         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
1334
1335 2008-10-10  Stepan Kasal  <skasal@redhat.com>
1336
1337         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
1338         for loop strip mining and loop blocking.
1339
1340 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1341
1342         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
1343         vary types depending on debug info.
1344
1345 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1346
1347         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
1348         before ensuring it's already computed.
1349
1350 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
1351
1352         * rtl.h (locator_eq): New decl.
1353         * cfglayout.c (locator_scope): New function.
1354         (insn_scope): Use it.
1355         (locator_eq): New function.
1356         (fixup_reorder_chain): Search for last insn in src bb
1357         that has locator set or first insn in dest bb.  Use
1358         locator_eq instead of == to compare locators.
1359         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
1360         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
1361         == to compare locators.
1362
1363         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
1364         as used.
1365         * gimple-low.c (lower_function_body, lower_gimple_return,
1366         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
1367         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
1368         goto_block on edges if goto_locus is known.
1369
1370         PR middle-end/37774
1371         * tree.h (get_object_alignment): Declare.
1372         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
1373         get_object_alignment if needed.
1374         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand handling
1375         to ...
1376         (get_object_alignment): ... here.  New function.  Try harder to
1377         determine alignment from get_inner_reference returned offset.
1378
1379 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1380
1381         * graphite.c (gloog): Don't call find_unreachable_blocks
1382         before delte_unreachable_blocks.
1383
1384         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
1385         goto_locus of true_edge into RTL locator.
1386
1387 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
1388
1389         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
1390         (*jcc_btdi_mask_rex64): Ditto.
1391         (*jcc_btsi): Ditto.
1392         (*jcc_btsi_mask): Ditto.
1393         (*jcc_btsi_1): Ditto.
1394         (*jcc_btsi_mask_1): Ditto.
1395
1396 2008-10-08  Paul Brook  <paul@codesourcery.com>
1397
1398         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
1399         compatible profiler (__gnu_mcount_nc).
1400         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
1401
1402 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1403
1404         * config/i386/i386.c (initial_ix86_tune_features): Add
1405         X86_TUNE_USE_VECTOR_FP_CONVERTS.
1406         * config/i386/i386.h (ix86_tune_indices): Likewise.
1407         (TARGET_USE_VECTOR_FP_CONVERTS): New.
1408
1409         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
1410         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
1411         for FP to FP splitters.
1412
1413 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1414
1415         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
1416         splitter.
1417
1418 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1419
1420         PR target/36635
1421         PR target/37290
1422         PR rtl-optimization/37341
1423         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
1424         to ORIG_BB, pass through ORIG_BB recursively.
1425         (cse_condition_code_reg): Adjust caller.
1426
1427 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
1428
1429         * sdbout.c (sdbout_one_type): Treat the value type
1430         CONST_DECL for enumerals.
1431
1432 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1433
1434         * config/i386/i386.md: Remove trailing white spaces.
1435
1436 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1437
1438         PR rtl-optimization/37448
1439         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
1440         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
1441         Make unsigned long.
1442         (struct output_info) [count]: Renamed total_created and made
1443         unsigned long.
1444         (struct output_info) [size]: Renamed total_allocated and made
1445         unsigned long.
1446         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
1447         Properly keep track of desc->size.
1448         (print_statistics, dump_alloc_pool_statistics): Enhance the
1449         printing of statistics to print the number of elements and to use
1450         unsigned longs.
1451         
1452 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1453
1454         PR middle-end/37576
1455         * opts.h (CL_SAVE): Move up to flags range.
1456         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
1457         CL_COMMON): Renumber.
1458         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
1459         * opts.c (common_handle_option): Revert last change.
1460
1461 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1462
1463         * config/i386/i386-protos.h (ix86_schedule): New.
1464
1465         * config/i386/i386.c (ix86_schedule): New.
1466         (override_options): Add schedule to processor_alias_table.  Set
1467         ix86_schedule from the schedule field in processor_alias_table.
1468         (ix86_function_specific_save): Save ix86_schedule.
1469         (ix86_function_specific_restore): Restore ix86_schedule.
1470
1471         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
1472         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
1473         and generic32.
1474
1475         * config/i386/i386.opt: Add schedule.
1476
1477         * config/i386/ppro.md: Remove generic32.
1478
1479 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
1480
1481         PR c/35437
1482         * expr.c (count_type_elements): Handle ERROR_MARK.
1483
1484 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1485
1486         PR debug/29609
1487         PR debug/36690
1488         PR debug/37616
1489         * basic-block.h (struct edge_def): Add goto_block field.
1490         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
1491         one insn with locus corresponding to edge's goto_locus if !optimize.
1492         * profile.c (branch_prob): Copy edge's goto_block.
1493         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
1494         emitted jumps.
1495         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
1496         locator in between the merged basic blocks if !optimize and needed.
1497         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
1498         goto_locus into RTL locator.  For unconditional jump use that
1499         locator for the jump insn.
1500         (expand_gimple_cond): Convert goto_block and goto_locus into
1501         RTL locator for all remaining edges.  For unconditional jump
1502         use that locator for the jump insn.
1503         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
1504         there is more than one edge or insn locator along the forwarding
1505         edges and !optimize.  If there is just one, set e->goto_locus.
1506         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
1507         edge's goto_block.
1508         (move_block_to_fn): Adjust edge's goto_block.
1509
1510 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1511
1512         PR middle-end/37731
1513         * expmed.c (expand_mult): Properly check DImode constant in
1514         CONST_DOUBLE.
1515
1516 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1517
1518         PR debug/37738
1519         * dwarf2out.c (common_block_die_table): New variable.
1520         (common_block_die_table_hash, common_block_die_table_eq): New
1521         functions.
1522         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
1523         COMMON block in the current scope rather than globally.  Optimize
1524         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
1525         DW_OP_addr SYMBOL_REF+off.
1526
1527 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
1528
1529         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
1530         Return true for non-addressable GIMPLE operands.
1531
1532 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1533
1534         PR target/24765
1535         * config/i386/i386.c (initial_ix86_tune_features): Remove
1536         X86_TUNE_USE_BIT_TEST.
1537         * config/i386/i386.h (ix86_tune_indices): Likewise.
1538         (TARGET_USE_BIT_TEST): Removed.
1539
1540 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1541
1542         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
1543
1544 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
1545
1546         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
1547         (mul<mode>3_mul3): ... into this new template.
1548
1549 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1550
1551         * gimplify.c (gimplify_arg): Add location argument.  Use it.
1552         (gimplify_call_expr): Pass location to gimplify_arg.
1553         (gimplify_modify_expr_to_memcpy): Same.
1554         (gimplify_modify_expr_to_memset): Same.
1555
1556 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1557
1558         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1559         Update calls to build_unary_op and build_indirect_ref for location
1560         changes.
1561
1562 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1563
1564         build_modify_expr.
1565         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
1566         * c-typeck.c (array_to_pointer_conversion): Pass location to
1567         build_unary_op.
1568         (function_to_pointer_conversion): Use error_at and warning_at.
1569         (build_indirect_ref): Same.
1570         (build_array_ref): Pass location to build_binary_op.
1571         (parser_build_unary_op): Do not set location after calling
1572         build_unary_op.
1573         (build_unary_op): Add location argument.  Use it throughout.  Set
1574         EXPR_LOCATION before returning new tree.
1575         (build_modify_expr): Same.
1576         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
1577         returning node.
1578         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
1579         build_indirect_ref, build_modify_expr.
1580         (c_finish_omp_for): Same.  Use error_at instead of error.
1581         * c-common.c (c_common_truthvalue_conversion): Pass location to
1582         build_unary_op.
1583         (warn_for_div_by_zero): Add location argument.
1584         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
1585         build_unary_op, warn_for_div_by_zero.
1586         * c-parser.c (c_parser_typeof_specifier): Use
1587         protected_set_expr_location.
1588         (c_parser_statement_after_labels): Same.
1589         (c_parser_condition): Same.
1590         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
1591         (c_parser_conditional_expression): Use protected_set_expr_location.
1592         (c_parser_unary_expression): Pass location to build_indirect_ref.
1593         (c_parser_postfix_expression_after_primary): Pass location to
1594         build_indirect_ref, build_unary_op.
1595         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
1596
1597 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
1598
1599         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
1600         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
1601         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
1602         r14000 and r16000.
1603         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
1604         (mips_issue_rate): Handle PROCESSOR_R10000.
1605         * config/mips/mips.md (cpu): Add r10000.
1606         Include r10000.md.
1607         * config/mips/10000.md: New file.
1608
1609 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1610
1611         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
1612         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
1613         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
1614
1615 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1616
1617         * config/darwin-protos.h (machopic_function_base_name): Delete.
1618         (machopic_function_base_sym): Likewise.
1619         (machopic_gen_offset): Declare.
1620         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
1621         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
1622         * config/darwin.c (machopic_function_base_name): Delete.
1623         (machopic_function_base_sym): Likewise.
1624         (gen_pic_offset): Rename to...
1625         (machopic_gen_offset): ...this and remove the pic_base argument.
1626         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
1627         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
1628         crtl->uses_pic_offset_table.
1629         (machopic_indirect_data_reference): Use new machopic_gen_offset
1630         interface.
1631         (machopic_legitimize_pic_address): Likewise.
1632         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
1633
1634         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
1635         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
1636         * config/i386/i386.c (output_set_got): Likewise.
1637         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
1638         instead of a MINUS.
1639         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
1640         (legitimate_address_p): Likewise.
1641         (output_pic_addr_const): Likewise.
1642         (output_addr_const_extra): Likewise.
1643         (ix86_delegitimize_address): Expect darwin_local_data_pic to
1644         match an UNSPEC rather than a MINUS.
1645         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
1646         (builtin_setjmp_receiver): Use machopic_gen_offset.
1647         * config/i386/predicates.md (pic_symbolic_operand): Handle
1648         UNSPEC_MACHOPIC_OFFSET.
1649
1650         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
1651         Use machopic_gen_offset and machopic_operand_p.
1652         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
1653         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
1654         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
1655         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
1656         Set crtl->uses_pic_offset_table.
1657
1658 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1659
1660         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
1661         Declare.
1662         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
1663         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
1664         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
1665         (constant_pool_expr_p): Use split_const and check the base.
1666         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
1667         instead of a MINUS.
1668         (legitimate_constant_pool_address_p): Check toc_relative_p
1669         instead of constant_pool_expr_p.
1670         (print_operand_address): Always use output_addr_const for
1671         constant pool addresses.
1672         (rs6000_output_addr_const_extra): New function.
1673         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
1674
1675 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
1676
1677         PR middle-end/37535
1678
1679         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1680         (mark_ref_live, mark_ref_dead): Use them.
1681         (def_conflicts_with_inputs_p): Remove.
1682         (mark_early_clobbers): New function.
1683         (process_bb_node_lives): Call preprocess_constraints and
1684         mark_early_clobbers.
1685
1686         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
1687
1688 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
1689
1690         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
1691         lib with -mthread switch.
1692
1693 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
1694
1695         PR c++/37410
1696         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
1697         function in two, making it call a new and reusable
1698         dwarf2out_imported_module_or_decl() that takes the containing
1699         BLOCK of the declaration in argument.
1700         (dwarf2out_imported_module_or_decl_real): New function.
1701         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
1702         IMPORTED_DECL in account.
1703         * tree.def: Added IMPORTED_DECL node type.
1704         * tree.h: Added accessors for IMPORTED_DECL nodes.
1705         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
1706
1707 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1708
1709         * doc/gimple.texi: Fix some typos, wrap some long lines,
1710         fix some broken wraps with continuations.
1711         * tree-ssa-reassoc.c: Fix comment typos.
1712
1713 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1714
1715         PR target/37603
1716         * pa.c (legitimize_pic_address): Force function labels to memory in
1717         word mode.
1718
1719 2008-10-04  Anton Blanchard  <anton@samba.org>
1720
1721         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
1722         (rs6000_split_atomic_op): Same.
1723         (rs6000_split_compare_and_swap): Same.
1724         (rs6000_split_compare_and_swapqhi): Same.
1725
1726 2008-10-04  Richard Guenther  <rguenther@suse.de>
1727
1728         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
1729         instead of pointer equality.
1730         (vn_nary_op_eq): Likewise.
1731
1732 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1733
1734         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
1735         condition.
1736         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
1737         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
1738
1739 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
1740
1741         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1742         Revert previous change.
1743
1744 2008-10-03  Tom Tromey  <tromey@redhat.com>
1745
1746         * stringpool.c (ggc_alloc_string): Terminate string.
1747
1748 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
1749
1750         * gimplify.c (gimplify_function_tree): For -finstrument-functions
1751         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
1752         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
1753
1754         PR debug/37726
1755         * gimplify.c (declare_vars): Use gimple_bind_block instead of
1756         gimple_block.
1757
1758 2008-10-03  Pascal Obry  <obry@adacore.com>
1759
1760         * gcov.c (create_file_names): Properly handle UNIX and DOS
1761         directory separators.
1762         (make_gcov_file_name): Likewise + convert the ':' DOS drive
1763         separator to '~' to ensure clean filenames on Windows.
1764
1765 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
1766
1767         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1768         Add a null terminator to the stripped name.
1769
1770 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
1771
1772         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
1773         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1774         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
1775         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
1776         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1777         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
1778         TARGET_SINGLE_FLOAT.
1779
1780 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
1781
1782         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
1783
1784 2008-10-02  Richard Guenther  <rguenther@suse.de>
1785
1786         PR middle-end/37713
1787         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
1788         and VECTOR_TYPE recurse with useless_type_conversion_p which
1789         properly handles void pointer conversion.
1790
1791 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
1792
1793         PR target/37528
1794         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
1795         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
1796
1797 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1798
1799         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1800         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
1801         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
1802         they translate to non builtins.
1803         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
1804         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
1805         __builtin_vec_promote, __builtin_vec_extract, and
1806         __builtin_vec_insert.
1807         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
1808         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
1809         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
1810         * config/rs6000/altivec.h (vec_extract): Define
1811         (vec_insert): Define.
1812         (vec_splats): Define.
1813         (vec_promote): Define.
1814
1815 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1816             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
1817             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
1818
1819         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
1820         Altivec intrinsics.
1821         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
1822         prototype.  Add new parameter, blk.
1823         Use BLKmode for the MEM if blk is true.
1824         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
1825         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
1826         ALTIVEC_BUILTIN_STVRXL.
1827         Update usage of altivec_expand_lv_builtin.
1828         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
1829         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
1830         (altivec_init_builtins): If compiling for the Cell, also define the
1831         cell VMX builtins.
1832         * config/rs6000/rs6000.h (rs6000_builtins): Define
1833         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
1834         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
1835         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
1836         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
1837         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
1838         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
1839         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
1840         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
1841         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
1842         UNSPEC_STVRX, and UNSPEC_STVRXL.
1843         (altivec_lvlx): New pattern.
1844         (altivec_lvlxl): New pattern.
1845         (altivec_lvrx): New pattern.
1846         (altivec_lvrxl): New pattern.
1847         (altivec_stvlx): New pattern.
1848         (altivec_stvlxl): New pattern.
1849         (altivec_stvrx): New pattern.
1850         (altivec_stvrxl): New pattern.
1851         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
1852         (vec_lvlxl): Likewise.
1853         (vec_lvrx): Define if PPU is defined.
1854         (vec_lvrxl): Likewise.
1855         (vec_stvlx): Define if PPU is defined.
1856         (vec_stvlxl): Likewise.
1857         (vec_stvrx): Define if PPU is defined.
1858         (vec_stvrxl): Likewise.
1859
1860 2008-10-01  Geert Bosch  <bosch@adacore.com>
1861
1862         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
1863
1864 2008-10-01  Richard Guenther  <rguenther@suse.de>
1865
1866         PR tree-optimization/37617
1867         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
1868         do not add to the NEW_SETS.
1869
1870 2008-10-01  Richard Guenther  <rguenther@suse.de>
1871
1872         PR middle-end/37285
1873         * tree-vrp.c (execute_vrp): If we optimized away the default
1874         case make sure to promote the label that got in place of it
1875         to a default case label.
1876
1877 2008-10-01  Richard Henderson  <rth@redhat.com>
1878
1879         PR tree-opt/35737
1880         * tree-complex.c (set_component_ssa_name): Don't optimize
1881         is_gimple_min_invariant values with ssa_names in abnormal phis.
1882
1883 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
1884
1885         PR tree-optimization/37662
1886         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
1887         commutative binary operation if they are in the wrong order and
1888         fold_build2 produces non-GIMPLE.
1889
1890 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
1891
1892         PR tree-optimization/37662
1893         PR tree-optimization/37663
1894         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
1895         get_value_range with non-SSA_NAME.  Don't assert operands have been
1896         folded, instead just bail out.
1897
1898 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1899
1900         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
1901
1902 2008-09-30  Richard Guenther  <rguenther@suse.de>
1903
1904         PR middle-end/37491
1905         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
1906         build restrict-qualified pointers.
1907         (vectorizable_store): Move alias check later.
1908         (vectorizable_load): Likewise.
1909
1910 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
1911
1912         * c-common.c (empty_if_body_warning): Remove.
1913         * c-common.h (empty_if_body_warning): Remove.
1914         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
1915         here the -Wempty-body warning for `if' and `else' statements.
1916         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
1917
1918 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
1919
1920         * config/i386/i386.opt: Add msse2avx.
1921
1922         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
1923         * config/i386/linux64.h (ASM_SPEC): Likewise.
1924
1925         * doc/invoke.texi: Document -msse2avx.
1926
1927 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1928
1929         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
1930
1931 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
1932
1933         * ifcvt.c (noce_emit_store_flag): If using condition from original
1934         jump, reverse it if if_info->cond was reversed.
1935
1936 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1937
1938         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
1939         non-constant memory if it cannot be forced to constant memory.
1940         Overhaul surrounding code and factor out common condition.
1941
1942 2008-09-29  Jeff Law <law@redhat.com>
1943
1944         * reload1.c (alter_reg): Add missing curly braces.
1945
1946 2008-09-29  Michael J. Eager  <eager@eagercon.com>
1947
1948         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1949         are easy.
1950         * config/rs6000/rs6000.c (rs6000_override_options): Move
1951         rs6000_init_hard_regno_mode_ok after all options changed.
1952         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1953         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1954         -msimple-fpu flags.  Add warning messages if single FP not configured.
1955         (rs6000_file_start): Output gnu_attribute for single-float.
1956         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1957         (rs6000_legitimize_address): Likewise.
1958         (rs6000_legitimize_reload_address): Likewise.
1959         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1960         TARGET_SINGLE_FLOAT.
1961         (function_arg_advance): Likewise (partial conversion).
1962         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1963         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1964         TARGET_SINGLE_FLOAT.
1965         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1966         (rs6000_emit_prologue): Likewise.
1967         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1968         TARGET_SINGLE_FLOAT.
1969         (rs6000_libcall_value): Likewise.
1970         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1971         (TARGET_DOUBLE_FLOAT): New default to 1
1972         (TARGET_SIMPLE_FPU): New default to 0
1973         (TARGET_SINGLE_FPU): New default to 0
1974         (TARGET_SINGLE_FLOAT_MODE): New.
1975         (TARGET_DOUBLE_FLOAT_MODE): New.
1976         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1977         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1978         UNITS_PER_FP_WORD
1979         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1980         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1981         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1982         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1983         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1984         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1985         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1986         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1987         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1988         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1989         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1990         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1991         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1992         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1993         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1994         cmptf_internal1, *cmptf_internal2): Condition on
1995         TARGET_DOUBLE_FLOAT.
1996         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
1997         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
1998         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
1999         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2000         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2001         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2002         TARGET_SINGLE_FLOAT.
2003         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2004         * config/rs6000/rs6000.opt (-msingle-float): New.
2005         (-mdouble-float): New.
2006         (-msimple-fpu): New.
2007         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2008         -msingle-float, -mdouble-float, -msimple-fpu options.
2009         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2010         _SOFT_DOUBLE for -msingle-float.
2011         * config.gcc: New config for target=powerpc-xilinx-eabi.
2012
2013 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
2014
2015         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
2016         have exit and entry.
2017         (new_scop): Take entry and exit edge to define new SCoP.
2018         (sd_region_p): New structure used during SCoP detection.
2019         (move_scops): Delete.
2020         (move_sd_regions): New.
2021         (scopdet_info): Change the definition from edges back to basic_blocks.
2022         (scopdet_edge_info):  Work on basic_blocks and rename to
2023         scopdet_basic_block_info.
2024         (split_difficult_bb): At the moment removed. We should later
2025         add it at another place.
2026         (build_scops_1): Work on basic_blocks.
2027         (bb_in_sd_region): New.
2028         (find_single_entry_edge): New.
2029         (find_single_exit_edge): New.
2030         (create_single_entry_edge): New.
2031         (sd_region_without_exit): New.
2032         (create_single_exit_edge): New.
2033         (unmark_exit_edges): New.
2034         (mark_exit_edges): New.
2035         (create_sese_edges): New.
2036         (build_graphite_scops): New.
2037         (build_scops): Make SCoPs SESE.
2038         (limit_scops): Use the new functions.
2039
2040 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
2041
2042         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
2043
2044 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2045
2046         PR target/37640
2047         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
2048         address to a register before taking the lower part.
2049
2050 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2051
2052         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
2053         for SHmedia.
2054
2055 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2056             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
2057
2058         PR tree-opt/36891
2059         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
2060         the newly created variable.
2061         Create a VECTOR_CST of all 1s for vector types.
2062
2063 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2064
2065         PR middle-end/36575
2066         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
2067
2068 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2069
2070         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
2071         order to convert between modes.
2072         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
2073
2074 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2075
2076         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
2077         if needed.
2078
2079 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2080
2081         Revert:
2082         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2083         * ira-lives.c:...
2084         * doc/rtl.texi:...
2085
2086 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
2087
2088         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
2089         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
2090         them to yield false with MIPS16.
2091
2092 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
2093
2094         PR middle-end/37275
2095         * dwarf2out.c (tls_mem_loc_descriptor): New function.
2096         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
2097         mem_loc_descriptor failed.  Accept UNSPEC.
2098         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
2099         fail if one of the loc_descriptor calls for pieces failed.
2100         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
2101         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
2102         if loc_descriptor_from_tree_1 on offset failed.
2103
2104         PR middle-end/37576
2105         * opts.c (common_handle_option): Don't call print_specific_help with
2106         CL_SAVE as first argument.
2107
2108 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
2109             Steve Ellcey  <sje@cup.hp.com>
2110
2111         * configure: Regenerate for new libtool.
2112         * aclocal.m4: Ditto.
2113
2114 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
2115
2116         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
2117         alias set on MEM when saving stack pointer.
2118         * config/rs6000/rs6000.md (allocate_stack): Likewise
2119
2120 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
2121
2122         PR tree-optimization/37574
2123         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
2124         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
2125         instead of vector_type for constants. Take computation out of loop.
2126         (vect_get_vec_def_for_operand): Use only vectype for constant case,
2127         and use only vector_type for invariant case.
2128         (get_initial_def_for_reduction): Use vectype instead of vector_type.
2129
2130 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
2131
2132         PR c/37645
2133         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
2134         the decl is a VAR_DECL or FUNCTION_DECL.
2135
2136 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2137
2138         PR middle-end/37535
2139         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2140         (mark_ref_live, mark_ref_dead): Use them.
2141         (def_conflicts_with_inputs_p): Remove.
2142         (mark_early_clobbers): New function.
2143         (process_bb_node_lives): Call preprocess_constraints and
2144         mark_early_clobbers.
2145
2146         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
2147
2148 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2149
2150         PR middle-end/37448
2151         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
2152         (ira_compress_allocno_live_ranges): New prototype.
2153
2154         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
2155         (coalesced_allocnos_living_at_program_points): New.
2156         (coalesced_allocnos_live_at_points_p,
2157         set_coalesced_allocnos_live_points): New functions.
2158         (coalesce_spill_slots): Rewrite.
2159         
2160         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
2161         ira_compress_allocno_live_ranges): New functions.
2162
2163         * ira-build.c (ira_flattening): Call
2164         ira_compress_allocno_live_ranges.
2165         (ira_build): Ditto.
2166
2167 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
2168
2169         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
2170         optimization.
2171
2172 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
2173
2174         * combine.c (make_compound_operation): Handle the 'E' format.
2175         (count_rtxs): Likewise.
2176         (update_table_tick): Likewise.
2177         (get_last_value_validate): Likewise.
2178
2179 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
2180
2181         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
2182
2183 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
2184
2185         * matrix-reorg.c (transform_allocation_sites): Initializers 
2186         added to avoid the warning.
2187
2188 2008-09-25  Martin Jambor  <mjambor@suse.cz>
2189
2190         * cgraph.c (free_nodes): New variable.
2191         (NEXT_FREE_NODE): New macro.
2192         (cgraph_create_node): Reuse nodes from the free list.  Do not
2193         update uid if doing so.
2194         (cgraph_remove_node): Add the node to the free list.
2195
2196 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
2197
2198         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2199
2200 2008-09-24  Richard Henderson  <rth@redhat.com>
2201
2202         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
2203         * unwind-dw2.c (execute_stack_op): Handle it.
2204
2205 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
2206
2207         Revert:
2208         2008-09-24  Michael J. Eager  <eager@eagercon.com>
2209
2210 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
2211
2212         * c-common.c (fname_decl): New location argument.
2213         * c-common.h (fname_decl): Same.
2214         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
2215         {warning,error}.
2216         (c_parser_typeof_specifier): Same.
2217         (c_parser_parms_list_declarator): Same.
2218         (c_parser_asm_string_literal): Same.
2219         (c_parser_compound_statement_nostart): Same.
2220         (c_parser_label): Same.
2221         (c_parser_do_statement): Same.
2222         (c_parser_asm_statement): Same.
2223         (c_parser_unary_expression): Same.
2224         (c_parser_sizeof_expression): Same.
2225         (c_parser_postfix_expression): Same.
2226         (c_parser_pragma): Same.
2227         (c_parser_omp_clause_collapse): Same.
2228         (c_parser_omp_clause_num_threads): Same.
2229         (c_parser_omp_clause_schedule): Same.
2230         (c_parser_omp_all_clauses): Same.
2231         (c_parser_omp_sections_scope): Same.
2232         (c_parser_omp_for_loop): Same.  Pass condition's location to
2233         c_objc_common_truthvalue_conversion.
2234         (c_parser_enum_specifier): Remove comment.
2235
2236 2008-09-24  Michael J. Eager  <eager@eagercon.com>
2237
2238         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2239         are easy.
2240         * config/rs6000/rs6000.c (rs6000_override_options): Move
2241         rs6000_init_hard_regno_mode_ok after all options changed.
2242         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2243         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2244         -msimple-fpu flags.  Add warning messages if single FP not configured.
2245         (rs6000_file_start): Output gnu_attribute for single-float.
2246         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2247         (rs6000_legitimize_address): Likewise.
2248         (rs6000_legitimize_reload_address): Likewise.
2249         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2250         TARGET_SINGLE_FLOAT.
2251         (function_arg_advance): Likewise.
2252         (function_arg): Likewise.
2253         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2254         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2255         TARGET_SINGLE_FLOAT.
2256         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2257         (rs6000_emit_prologue): Likewise.
2258         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2259         TARGET_SINGLE_FLOAT.
2260         (rs6000_libcall_value): Likewise.
2261         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2262         (TARGET_DOUBLE_FLOAT): New default to 1
2263         (TARGET_SIMPLE_FPU): New default to 0
2264         (TARGET_SINGLE_FPU): New default to 0
2265         (TARGET_SINGLE_FLOAT_MODE): New.
2266         (TARGET_DOUBLE_FLOAT_MODE): New.
2267         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2268         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2269         UNITS_PER_FP_WORD
2270         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2271         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2272         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2273         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2274         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2275         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2276         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2277         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2278         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2279         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2280         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2281         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2282         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2283         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2284         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2285         cmptf_internal1, *cmptf_internal2): Condition on
2286         TARGET_DOUBLE_FLOAT.
2287         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2288         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2289         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2290         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2291         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2292         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2293         TARGET_SINGLE_FLOAT.
2294         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2295         * config/rs6000/rs6000.opt (-msingle-float): New.
2296         (-mdouble-float): New.
2297         (-msimple-fpu): New.
2298         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2299         -msingle-float, -mdouble-float, -msimple-fpu options.
2300         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2301         _SOFT_DOUBLE for -msingle-float.
2302         * config.gcc: New config for target=powerpc-xilinx-eabi.
2303
2304 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2305
2306         * config/sparc/constraints.md: New file.
2307         * config/sparc/sparc.md: Include it.
2308         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
2309         (sparc_extra_constraint_check): Delete.
2310         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
2311         (memory_ok_for_ldd): New predicate.
2312         (sparc_extra_constraint_check): Delete.
2313         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
2314         (CONST_OK_FOR_LETTER_P): Likewise.
2315         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2316         (EXTRA_CONSTRAINT): Likewise.
2317
2318 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
2319
2320         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
2321
2322 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2323
2324         * alias.c (find_base_value): Use FIND_BASE_TERM.
2325         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
2326
2327 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2328
2329         * config/i386/i386.c: Include cselib.h.
2330         (ix86_pic_register_p): New function.
2331         (ix86_delegitimize_address): Use it to check for the PIC register.
2332
2333 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2334
2335         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
2336         * config/i386/i386.c (ix86_find_base_term): Don't check for
2337         SYMBOL_REF and LABEL_REF.
2338
2339 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2340
2341         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
2342         constant PLUS in a CONST.
2343
2344 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
2345
2346         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
2347         check for sibcall support for w64.
2348
2349 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2350
2351         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
2352
2353 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2354
2355         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
2356         parser_build_binary_op.
2357         * c-decl.c (build_enumerator): Pass location to build_binary_op.
2358         * c-typeck.c (build_array_ref): Same.
2359         (parser_build_unary_op): New location argument.
2360         (pointer_diff): Pass location to build_binary_op,
2361         c_objc_common_truthvalue_conversion.
2362         (build_modify_expr): Same.
2363         (build_unary_op): New location argument.
2364         (build_binary_op): New location argument.
2365         (c_objc_common_truthvalue_conversion): Pass location to
2366         c_*common_truthvalue_conversion.
2367         * c-convert.c (convert): Same.
2368         * c-common.c (binary_op_error): New location argument.
2369         (pointer_int_sum): Pass location to build_binary_op.
2370         (c_common_truthvalue_conversion): New location argument.
2371         (warn_for_sign_compare): Same.
2372         * c-common.h: Add location argument to c_common_truthvalue_conversion,
2373         binary_op_error, build_binary_op, warn_for_sign_compare.
2374         * c-parser.c (c_parser_condition): Pass location to
2375         c_*common_truthvalue_conversion.
2376         (c_parser_conditional_expression): Save condition's location and pass
2377         it on down.
2378         (c_parser_binary_expression): Same, but for the binary operator's
2379         location.
2380         (c_parser_omp_for_loop): Pass location to
2381         c_objc_common_truthvalue_conversion.
2382
2383 2008-09-23  Martin Jambor  <mjambor@suse.cz>
2384
2385         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
2386         (cgraph_node_remove_callees): New temporary f.  Hold the next item
2387         in f when looping.
2388         (cgraph_node_remove_callers): Likewise.
2389
2390         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
2391         (ipa_node_removal_hook): Likewise.
2392
2393         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
2394         gimple_call_copy_skip_args and moved to the gimple_call section.
2395         * gimple.c (gimple_copy_call_skip_args): Renamed to
2396         gimple_call_copy_skip_args.  Changed al users.
2397
2398 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
2399
2400         * ira-color.c (start_allocno_priorities): Rename to
2401         setup_allocno_priorities.  Use costs and
2402         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
2403         range lengths.  Get rid off doubles.
2404         (ira_fast_allocations): Call start_allocno_priorities.
2405         
2406 2008-09-22  David Daney  <ddaney@avtrex.com>
2407
2408         PR target/37593
2409         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
2410         register if TARGET_LONG_CALLS.
2411
2412 2008-09-22  Richard Guenther  <rguenther@suse.de>
2413
2414         PR tree-optimization/37145
2415         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
2416         value-numbering union accesses with their offset and size only.
2417         (visit_reference_op_load): Fix simplification of inserted conversions.
2418         * tree-ssa-pre.c (find_or_generate_expression): Do not
2419         recursively generate expressions if running FRE.
2420
2421 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
2422
2423         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
2424         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
2425         New patterns.
2426
2427 2008-09-22  Richard Guenther  <rguenther@suse.de>
2428
2429         PR tree-optimization/37145
2430         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
2431         (phi_translate_1): Constant fold references.
2432
2433 2008-09-22  Ira Rosen  <irar@il.ibm.com>
2434
2435         PR tree-optimization/37482
2436         * tree-vectorizer.h (struct _slp_instance): Add new field.
2437         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
2438         (get_earlier_stmt): New function.
2439         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
2440         function.
2441         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
2442         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
2443         asserts that GSI points to the scalar statement being vectorized.
2444         Set new statement location according to GSI.
2445         (vect_schedule_slp_instance): Use GSI of
2446         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
2447
2448 2008-09-21  Jan Hubicka  <jh@suse.cz>
2449
2450         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
2451         (ipcp_insert_stage): Update dead_nodes bitmap.
2452
2453 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
2454
2455         PR target/37528 
2456         * config/i386/t-cygming (SHLIB_LC): Remove.
2457         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
2458         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
2459
2460 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
2461
2462         PR middle-end/37170
2463         PR middle-end/37280
2464         * final.c (mark_symbol_ref_as_used): New helper function.
2465         (output_operand): Instead of just looking inside MEMs for
2466         SYMBOL_REFs, use new helper function and for_each_rtx.
2467         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
2468         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
2469         Make head comment more general.
2470         * config/darwin.c (machopic_output_indirection): Handle weak
2471         references here, like in assemble_external.
2472
2473 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
2474
2475         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
2476         (sparc_emit_float_lib_cmp): Change return type.
2477         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
2478         (gen_compare_operator): New function.
2479         (sparc_emit_float_lib_cmp): Return the new operator to be used in
2480         the comparison sequence.  Minor tweaks.
2481         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
2482         that the final operator and the result of sparc_emit_float_lib_cmp
2483         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
2484         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
2485         buneq, bunge, bunle, bltgt): Assert that the final operator and the
2486         result of sparc_emit_float_lib_cmp match for software TFmode.
2487         (movqicc, movhicc, movsicc, movdicc): Merge into...
2488         (mov<I:mode>cc): ...this.
2489         (movsfcc, movdfcc, movtfcc): Merge into...
2490         (mov<F:mode>cc): ...this.
2491         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
2492         into...
2493         (mov<I:mode>_cc_v9): ...this.
2494         (movdi_cc_sp64_trunc): Delete.
2495         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
2496         movdi_cc_reg_sp64): Merge into...
2497         (mov<I:mode>_cc_reg_sp64): ...this.
2498         (movsf_cc_sp64): Rename into...
2499         (movsf_cc_v9): ...this.
2500         (movdf_cc_sp64): Rename into...
2501         (movdf_cc_v9): ...this.
2502         (movtf_cc_hq_sp64): Rename into...
2503         (movtf_cc_hq_v9): ...this.
2504         (movtf_cc_sp64): Rename into...
2505         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
2506
2507 2008-09-21  Diego Novillo  <dnovillo@google.com>
2508
2509         * doc/gccint.texi: Include generic.texi and gimple.texi.
2510         Re-order index.
2511         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
2512         (GIMPLE): Move to gimple.texi.
2513         (Annotations): Remove references to to stmt_ann_t and
2514         ssa_name_ann_t.
2515         (SSA Operands): Rename from 'Statement Operands'.
2516         * doc/generic.texi: New.
2517         * doc/gimple.texi: New.
2518         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
2519         * Makefile.in (TEXI_GCCINT_FILES):
2520         * gimple.c (gimple_copy_call_skip_args): Rename from
2521         giple_copy_call_skip_args.  Update all users.
2522         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
2523
2524 2008-09-21  Ira Rosen  <irar@il.ibm.com>
2525
2526         PR tree-optimization/37539
2527         * tree-vect-transform.c (vect_transform_strided_load): Save vector
2528         statement in related statement field only for the first load of the
2529         group of loads with the same data reference.
2530
2531 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
2532
2533         * config/mips/mips.h (TUNE_OCTEON): New macro.
2534         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
2535         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
2536         * config/mips/octeon.md: New file.
2537         * config/mips/mips.md: Include octeon.md.  Restore
2538         semi-alphabetical order of include files.
2539
2540 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
2541
2542         PR target/37571
2543         * config/i386/i386.md (*jcc_fused_1): Removed.
2544         (*jcc_fused_2): Likewise.
2545         (*jcc_fused_3): Likewise.
2546         (*jcc_fused_4): Likewise.
2547
2548 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
2549
2550         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
2551         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
2552         * target.h (gcc_target): Add ira_cover_classes.
2553         * ira.c: Remove IRA_COVER_CLASSES guards.
2554         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
2555         instead of IRA_COVER_CLASSES.
2556         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
2557         (setup_class_translate): Likewise.
2558         (setup_reg_class_intersect_union): Likewise.
2559         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
2560         test of targetm.ira_cover_classes.
2561         * opts.c (decode_options): Use targetm.ira_cover_classes instead
2562         of IRA_COVER_CLASSES.
2563         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
2564         (TARGET_INITIALIZER): Include it.
2565         * targhooks.h (default_ira_cover_classes): Declare.
2566         * targhooks.c (default_ira_cover_classes): New function.
2567
2568 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
2569         
2570         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
2571         
2572 2008-09-19  Ian Lance Taylor  <iant@google.com>
2573
2574         * varasm.c (narrowing_initializer_constant_valid_p): Return
2575         NULL_TREE if ENDTYPE is not an integer.
2576
2577 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2578
2579         PR tree-opt/30930
2580         * tree-ssa.c (execute_update_addresses_taken): Also update
2581         DECL_GIMPLE_REG_P for vector and complex types.
2582
2583 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
2584             Jan Hubicka  <jh@suse.cz>
2585
2586         PR middle-end/37567
2587         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
2588         empty before freeing them.
2589         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
2590
2591 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
2592
2593         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
2594         * config/xtensa/predicates.md (tls_symbol_operand): New.
2595         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
2596         (TARGET_CANNOT_FORCE_MEM): Define.
2597         (xtensa_tls_symbol_p): New.
2598         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
2599         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
2600         (xtensa_tls_module_base): New.
2601         (xtensa_call_tls_desc): New.
2602         (xtensa_legitimize_tls_address): New.
2603         (xtensa_legitimize_address): Handle TLS symbols.
2604         (xtensa_tls_referenced_p_1): New.
2605         (xtensa_tls_referenced_p): New.
2606         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
2607         UNSPEC_DTPOFF.
2608         (XTENSA_BUILTIN_THREAD_POINTER): New.
2609         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
2610         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
2611         builtin.  Add declarations for __builtin_thread_pointer and
2612         __builtin_set_thread_pointer.
2613         (xtensa_fold_builtin): Recognize new builtins.
2614         (xtensa_expand_builtin): Expand new builtins.
2615         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
2616         (TARGET_THREADPTR): Define.
2617         (HAVE_AS_TLS): Define default value.
2618         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
2619         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
2620         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
2621         (UNSPECV_SET_TP): New.
2622         (sym_TPOFF, sym_DTPOFF): New.
2623         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
2624         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
2625         * configure: Regenerated.
2626         
2627 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
2628
2629         PR target/37394
2630         * config/ia64/ia64.c (ia64_optimization_options): Move
2631         checking and setting flag_schedule_insns_after_reload and
2632         ia64_flag_schedule_insns2 back to ...
2633         (ia64_override_options): Here.
2634
2635 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2636
2637         PR rtl-opt/37451
2638         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2639         zero extend count after the correction to it is done.
2640         (doloop_optimize): Update call to doloop_modify, don't zero extend
2641         count before call.
2642
2643 2008-09-18  Martin Jambor  <mjambor@suse.cz>
2644
2645         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
2646
2647         * ipa-prop.c: Correct comments.
2648         * ipa-prop.h: Likewise.
2649
2650 2008-09-18  Jan Hubicka  <jh@suse.cz>
2651
2652         PR middle-end/37448
2653         * ipa-reference.c (ipa_reference_local_vars_info_d,
2654         ipa_reference_global_vars_info_d,
2655         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2656         ipa_reference_vars_info_t): Move here from ipa-reference.h
2657         (node_duplication_hook_holder, node_removal_hook_holder): New.
2658         (get_reference_vars_info_from_cgraph): Rename to ...
2659         (get_reference_vars_info): ... this one, use cgraph uids.
2660         (get_local_reference_vars_info, get_global_reference_vars_info):
2661         Use cgraph instead of decl.
2662         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2663         Remove.
2664         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
2665         ipa_reference_get_written_global,
2666         ipa_reference_get_not_written_global): Use cgraph argument.
2667         (check_call): Simplify avail check.
2668         (scan_stmt_for_static_refs): Update.
2669         (propagate_bits): Update.
2670         (merge_callee_local_info): Remove.
2671         (init_function_info): Use cgraph nodes.
2672         (clean_function_local_data): Break out from ...
2673         (clean_function): ... here.
2674         (copy_local_bitmap, copy_global_bitmap): New functions.
2675         (duplicate_node_data, remove_node_data): New functions.
2676         (generate_summary): Register hooks; use visibility instead of
2677         master clones.
2678         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
2679         * ipa-reference.h (ipa_reference_local_vars_info_d,
2680         ipa_reference_global_vars_info_d,
2681         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2682         ipa_reference_vars_info_t): Move to ipa-reference.c
2683         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2684         Remove.
2685         (ipa_reference_get_read_global, ipa_reference_get_written_global,
2686         ipa_reference_get_not_read_global,
2687         ipa_reference_get_not_written_global): Update prototype.
2688         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
2689         (init_state): Remove.
2690         (node_duplication_hook_holder, node_removal_hook_holder): New.
2691         (get_function_state, set_function_state): Use VECtor.
2692         (analyze_function): Check body availability.
2693         (add_new_function): Likewise.
2694         (duplicate_node_data, remove_node_data): New.
2695         (generate_summary): Register hooks; do not care about clones.
2696         (propafate): Do not care about clones; recursive functions are
2697         not looping.
2698         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
2699         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
2700         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
2701         static.
2702         * tree-flow.h (function_ann_d): Remove reference_vars_info.
2703         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
2704         Update call of ipa-reference accesors.
2705
2706 2008-09-18  Simon Baldwin  <simonb@google.com>
2707
2708         * c-opts.c (c_common_handle_option): Add handling for
2709         -Wbuiltin-macro-redefined command line option.
2710         * c.opt: Added builtin-macro-redefined option.
2711         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
2712         documentation.
2713
2714 2008-09-18  Richard Guenther  <rguenther@suse.de>
2715
2716         PR tree-optimization/37258
2717         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
2718         and signedness for integral types.
2719         (vn_phi_eq): Require compatible types.
2720
2721 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
2722
2723         PR debug/34037
2724         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
2725         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
2726         VAR_DECL.
2727         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
2728         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
2729         ggc_free other TREE_LIST nodes from that chain.
2730         * function.c (instantiate_decls): Instantiate also DECL_RTL
2731         of vars in cfun->local_decls, free that list afterwards.
2732
2733 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
2734
2735         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
2736         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
2737
2738 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2739
2740         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
2741         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
2742
2743 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2744
2745         PR tree-optimization/37102
2746         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
2747         from a node. Check to see if another PHI is dead.
2748         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
2749         remove real PHIs which have no uses.
2750         (rewrite_out_of_ssa): Call eliminate_useless_phis.
2751
2752 2008-09-18  Richard Guenther  <rguenther@suse.de>
2753
2754         PR middle-end/37284
2755         * tree-cfg.c (remove_useless_stmts_1): Remove
2756         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
2757
2758 2008-09-18  Nick Clifton  <nickc@redhat.com>
2759
2760         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
2761         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
2762         to frv_secondary_reload_class.
2763         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
2764         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
2765         (frv_secondary_reload_class): Omit unused parameter.
2766         (frv_secondary_reload): New function.  Handle the case when
2767         secondary_reload_class() is called before the reload_(in|out)
2768         _optabs have been initialised.
2769         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
2770         unused parameter.
2771         * config/frv/frv.md: Define an exclusion set between fr550_m0
2772         and fr550_f0.
2773
2774 2008-09-18  Richard Guenther  <rguenther@suse.de>
2775
2776         PR tree-optimization/37456
2777         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
2778         want to insert after ends a BB insert on the single fallthru
2779         outgoing edge.
2780
2781 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2782
2783         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
2784         Mention -march=z9-109, z9-ec and z10.
2785
2786 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
2787
2788         PR rtl-optimization/37544
2789         * regrename.c (maybe_mode_change): Exit early when copy_mode
2790         is narrower than orig_mode and narrower than new_mode.
2791
2792 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
2793
2794         PR middle-end/37499
2795         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
2796
2797         * sched-rgn.c (ref_counts): Remove.
2798         (insn_referenced): New static variable.
2799         (INSN_REF_COUNT): Remove.
2800         (sched_run_compute_dependencies): Use insn_referenced instead of
2801         INSN_REF_COUNT.
2802         (add_branch_dependences): Likewise.  Delete dead assignment.
2803
2804 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
2805
2806         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
2807         consumer is an asm.  Add comment why this is important.
2808         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
2809         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
2810
2811 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
2812
2813         * expr.c (emit_group_store): Do not shift before moving via a
2814         stack slot.
2815
2816 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
2817
2818         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
2819         from aggregate to non-aggregate type if the bit pattern is not fully
2820         preserved afterwards.
2821
2822 2008-09-17  Richard Guenther  <rguenther@suse.de>
2823
2824         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
2825         (verify_gimple_assign): ... this.  Split into ...
2826         (verify_gimple_assign_unary): ... this,
2827         (verify_gimple_assign_binary): ... that,
2828         (verify_gimple_assign_single): ... and this.
2829         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
2830         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
2831         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
2832         (verify_types_in_gimple_reference): Be forgiving with
2833         VIEW_CONVERT_EXPRs.
2834         (verify_gimple_phi): Deal with virtual operands.
2835
2836         * tree.def (PREDICT_EXPR): Change to tcc_expression.
2837
2838 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2839
2840         * tree.c (get_callee_fndecl): Don't call the language hook.
2841         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
2842         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
2843         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
2844
2845 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
2846
2847         * tree.c (protected_set_expr_location): Don't unnecessarily
2848         check for error_mark_node.
2849
2850 2008-09-17  Art Haas  <ahaas@impactweather.com>
2851
2852         * ipa-reference.c (analyze_function): Declare step only if
2853         ENABLE_CHECKING is defined.
2854
2855 2008-09-17  Jan Hubicka  <jh@suse.cz>
2856
2857         PR c++/18071
2858         * tree.h (DECL_INLINE): remove.
2859         (DECL_DECLARED_INLINE_P): Update docs.
2860         (DECL_NO_INLINE_WARNING_P): new.
2861         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
2862         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
2863
2864 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
2865             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2866
2867         PR bootstrap/37441
2868         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
2869         false.
2870
2871 2008-09-17  Jan Hubicka  <jh@suse.cz>
2872
2873         * ipa-reference.c (ipa_obstack): Remove.
2874         (local_info_obstack, global_info_obstack): New.
2875         (add_static_var): We now handle variables only.
2876         (mark_address_taken, mark_load, mark_store): New functions based on ...
2877         (check_operand): ... remove.
2878         (get_asm_stmt_operands): Rename to ...
2879         (check_asm_memory_clobber): ... this. Look only for memory clobber.
2880         (scan_stmt_for_static_refs): Rewrite.
2881         (scan_op_for_static_refs): Rename to ...
2882         (scan_initializer_for_static_refs): do not look for VAR_DECL
2883         initializers; stop recursion on types and decls.
2884         (ipa_init): Use proper obstacks.
2885         (analyze_variable): Use scan_initializer_for_static_refs.
2886         (init_function_info): Use local obstack.
2887         (analyze_function): Simplify.
2888         (add_new_function): We don't need visited_nodes obstack.
2889         (generate_summary): Use proper obstacks; cleanup after propagation.
2890
2891 2008-09-17  Richard Guenther  <rguenther@suse.de>
2892
2893         PR middle-end/37385
2894         PR tree-optimization/37491
2895         * alias.c (get_alias_set): Use the canonical type.
2896         * tree-vect-transform.c (vectorizable_store): Use the type of
2897         the lhs for the vector type.  Adjust checking.
2898         (vectorizable_load): Adjust checking.
2899
2900 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
2901             Adam Nemet  <anemet@caviumnetworks.com>
2902
2903         PR rtl-optimization/37483
2904         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
2905         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
2906         Rearrange code to better match the original comment.  Check
2907         t_unconditional first.  Improve comment.
2908
2909 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
2910
2911         PR c/37529
2912         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
2913         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
2914
2915         PR c++/37530
2916         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
2917         GIMPLE_TRY if cleanup sequence is empty.
2918
2919 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2920
2921         PR middle-end/37263
2922         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
2923         eliminate IV if the cost are the same.
2924
2925 2008-09-16  Richard Guenther  <rguenther@suse.de>
2926
2927         PR middle-end/37380
2928         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
2929         if not necessary.
2930
2931 2008-09-16  Richard Guenther  <rguenther@suse.de>
2932
2933         PR tree-optimization/37508
2934         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
2935
2936 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
2937
2938         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
2939
2940 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2941
2942         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
2943         use gen_floatdidf2 directly.
2944         (floatunssidf2): Likewise.
2945         (floatsidf_ppc64_mfpgpr): Remove.
2946         (floatsidf_ppc64): Remove.
2947         (floatunssidf_ppc64): Remove.
2948
2949 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
2950
2951         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
2952         rather than update_cost_queue.
2953
2954         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
2955         in every call starting with the second one, instead of only when
2956         alias_bitmap_obstack.elements != NULL.
2957
2958         * tree-predcom.c (filter_suitable_components): Free all refs in
2959         act->refs vector before calling release_component.
2960         (add_ref_to_chain): Free ref if not adding it to chain->refs.
2961
2962         * tree-data-ref.c (free_subscripts): Free all subscript objects.
2963
2964         * tree-loop-linear.c (linear_transform_loops): Initialize
2965         lambda_obstack only after calling perfect_loop_nest_depth.
2966         Goto free_and_continue instead of just continue for later failures.
2967
2968         PR middle-end/37479
2969         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
2970
2971         PR libmudflap/36397
2972         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
2973
2974 2008-09-14  Andreas Schwab  <schwab@suse.de>
2975
2976         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
2977
2978 2008-09-14  Jan Hubicka  <jh@suse.cz>
2979
2980         * invoke.texi (-fconserve-stack): Document.
2981         * opts.c (decode_options): Handle conserve_stack.
2982         * common.opt (fconvserve_stack): New.
2983
2984 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
2985
2986         * config.host: Add x-aix to host_xmake_file.
2987         * config/rs6000/t-aix52: Do not override LDFLAGS.
2988         * config/rs6000/x-aix: New file.
2989
2990 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
2991
2992         PR target/19636
2993         PR target/24894
2994         PR target/31644
2995         PR target/31786
2996         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
2997         is not recognized as a valid register usage. Allow REG_X to be used
2998         as a base pointer.
2999         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
3000         forces a reload when using a base register.
3001
3002 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
3003
3004         * config/i386/cygming-crtend.c (register_frame_ctor): If
3005         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
3006         directly with atexit.
3007         (deregister_frame_ctor): Rename to ...
3008         (deregister_frame_dtor): Use to call __gcc_deregister_frame
3009         if !DEFAULT_USE_CXA_ATEXIT.
3010
3011 2008-09-13  Jan Hubicka  <jh@suse.cz>
3012
3013         * cgraph.c: Include value-prof.h
3014         * Makefile.in (cgraph.o): Add value-prof.h dependency.
3015
3016 2008-09-13  Jan Hubicka  <jh@suse.cz>
3017
3018         PR middle-end/32581
3019         * tree-profile.c (add_abnormal_goto_call_edges): New function.
3020         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
3021         tree_gen_one_value_profiler, tree_gen_average_profiler,
3022         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
3023
3024 2008-09-13  Jan Hubicka  <jh@suse.cz>
3025
3026         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
3027         too many bytes on misalligned blocks.
3028
3029 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3030
3031         * doc/cfg.texi: Fix some typos.
3032         * doc/extend.texi: Likewise.
3033         * doc/install.texi: Likewise.
3034         * doc/invoke.texi: Likewise.
3035         * doc/rtl.texi: Likewise.
3036         * doc/tree-ssa.texi: Likewise.
3037
3038 2008-09-13  Richard Guenther  <rguenther@suse.de>
3039
3040         PR middle-end/30141
3041         * tree-nested.c (finalize_nesting_tree_1): Generate valid
3042         gimple stores for memory rhs.
3043
3044 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3045
3046         PR rtl-optimization/37489
3047         * cse.c (fold_rtx): Don't return const_true_rtx for float
3048         compare if FLOAT_STORE_FLAG_VALUE is undefined.
3049
3050 2008-09-13  Jan Hubicka  <jh@suse.cz>
3051
3052         PR tree-optimization/37392
3053         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
3054
3055 2008-09-13  Martin Jambor  <mjambor@suse.cz>
3056             Jan Hubicka  <jh@suse.cz>
3057
3058         * cgraph.c (free_edges): New variable.
3059         (NEXT_FREE_EDGE): New macro.
3060         (cgraph_free_edge): New function.
3061         (cgraph_remove_edge): Call cgraph_remove_edge_1.
3062         (cgraph_node_remove_callees): Likewise.
3063         (cgraph_node_remove_callers): Likewise.
3064         (cgraph_create_edge): Reuse edges from the free list.  Do not
3065         update uid if doing so.
3066         (cgraph_remove_*_hook): Add free call.
3067
3068 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3069
3070         * ira-color.c (conflict_allocno_vec): Delete.
3071         (update_cost_queue_elem): New structure.
3072         (update_cost_queue): New variable.
3073         (update_cost_queue_tail): Likewise.
3074         (update_cost_queue_elems): Likewise.
3075         (allocno_update_cost_check): Delete.
3076         (initiate_cost_update): Allocate update_cost_queue_elems
3077         instead of allocno_update_cost_check.
3078         (finish_cost_update): Update the free()s accordingly.
3079         (start_update_cost): New function.
3080         (queue_update_cost): Likewise.
3081         (get_next_update_cost): Likewise.
3082         (update_copy_costs_1): Inline into...
3083         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
3084         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
3085         once we've established they are equal.  Don't allocate update
3086         costs if there is nothing to add to them.
3087         (update_conflict_hard_regno_costs): Remove ALLOCNO and
3088         DIVISOR arguments.  Use a queue instead of recursive calls;
3089         process all the allocnos in the initial queue, rather than
3090         a single allocno.
3091         (assign_hard_reg): Use queue_update_cost instead of
3092         conflict_allocno_vec.  Queue coalesced allocnos instead
3093         of calling update_conflict_hard_regno_costs for each one.
3094         Just call update_conflict_hard_regno_costs once for the
3095         entire queue.
3096         (ira_color): Remove conflict_allocno_vec handling.
3097
3098 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3099
3100         PR tree-optimization/37484
3101         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
3102         (save_var_name): Same.
3103         (initialize_cloog_names): Same.
3104         (initialize_cloog_names): Same.
3105
3106 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3107
3108         * tree-scalar-evolution.c (set_instantiated_value): Set
3109         instantiated_below.
3110
3111 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
3112
3113         PR rtl-opt/37377
3114
3115         * ira-build.c (common_loop_tree_node_dominator): Remove.
3116         (copy_live_ranges_to_removed_store_destinations): New function.
3117         (regno_top_level_allocno_map): Move to top level from ...
3118         (ira_flattening): ... here.  Use
3119         copy_live_ranges_to_removed_store_destinations.
3120
3121         * ira-emit.c (generate_edge_moves): Fix a comment.
3122
3123 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
3124
3125         PR target/37466
3126         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
3127         scratch register after 'set' pattern.
3128
3129 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3130
3131         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
3132         information passed to mark_reg_pointer.
3133         * explow.c (force_reg): Likewise.
3134
3135 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3136
3137         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
3138         when building for the celledp architecture.
3139
3140 2008-09-12  Richard Guenther  <rguenther@suse.de>
3141
3142         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
3143
3144 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
3145
3146         PR rtl-optimization/37424
3147         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
3148         the regnos instead of the addresses.
3149
3150 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
3151
3152         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
3153
3154 2008-09-11  Richard Guenther  <rguenther@suse.de>
3155
3156         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
3157         entering the weaker equivalence recording.
3158
3159         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
3160
3161 2008-09-11  Jeff Law <law@redhat.com>
3162
3163         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
3164         by assign_stack_local on the IRA path for stack slot sharing
3165         as well as the non-IRA path.
3166
3167 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
3168
3169         * config/i386/i386.h: Fix whitespace issues.
3170
3171 2008-09-11  Martin Jambor  <mjambor@suse.cz>
3172
3173         * ipa-prop.h (struct ipa_param_flags): Removed.
3174         (struct ipa_param_descriptor): New structure.
3175         (struct ipa_node_params): ipcp_lattices, param_decls and
3176         param_flags moved to ipa_param_description.
3177         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
3178         descriptors.  Renamed all users.
3179         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
3180         changed to access descriptors.  Renamed all users.
3181         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
3182         to access descriptors. Renamed all users.
3183         * ipa-cp.c (ipcp_init_cloned_node): Call
3184         ipa_initialize_node_params instead of ipa_count_formal_params and
3185         ipa_create_param_decls_array.
3186         (ipcp_analyze_node): Likewise.
3187         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
3188         descriptors.  Renamed all users.
3189         (ipcp_initialize_node_lattices): Remove allocation.
3190         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
3191         ipa_initialize_node_params instead of ipa_count_formal_params and
3192         ipa_create_param_decls_array.
3193         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
3194         ipa_populate_param_decls, made static, added parameter info,
3195         renamed mt to node, removed allocation, changed to use
3196         descriptors.
3197         (ipa_count_formal_params): Made static, added parameter info,
3198         renamed mt to node.
3199         (ipa_initialize_node_params): New function.
3200         (ipa_check_stmt_modifications): Changed to use descriptors.
3201         (ipa_detect_param_modifications): Removed allocation, changed to
3202         use descriptors.
3203         (ipa_note_param_call): Changed to use descriptors.
3204         (ipa_analyze_params_uses): Removed allocation.
3205         (ipa_free_node_params_substructures): Changed to use descriptors.
3206         (ipa_edge_duplication_hook): Use the unused attribute.
3207         (ipa_node_duplication_hook): Use the unused attribute, changed to
3208         use descriptors, changed to duplicate descriptors.
3209
3210         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
3211         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
3212         indirect inlining.  Made static.
3213         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
3214         functions called only once.
3215         (cgraph_decide_recursive_inlining): Don't call
3216         ipa_propagate_indirect_call_infos, pass new_edges to
3217         cgraph_mark_inline_edge instead.
3218         (cgraph_decide_inlining_of_small_functions): Don't call
3219         ipa_propagate_indirect_call_infos, pass new_edges to
3220         cgraph_mark_inline_edge instead.
3221         (cgraph_decide_inlining): Don't call
3222         ipa_propagate_indirect_call_infos.
3223         * ipa-prop.c: Check that vectors are allocated.
3224
3225         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
3226         iff a new cgraph edges have been created.
3227         (cgraph_decide_inlining): New variable redo_always_inline.
3228         Flattening and always_inlining loop until callgraph stabilizes.
3229         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
3230         true iff new cgraph edges have been created.
3231         (propagate_info_to_inlined_callees): Likewise.
3232         (ipa_propagate_indirect_call_infos): Likewise.
3233
3234 2008-09-11  Richard Guenther  <rguenther@suse.de>
3235
3236         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
3237         (set_prologue_iterations): Likewise.
3238         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
3239         Likewise.
3240         (vect_update_init_of_dr): Likewise.
3241         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
3242         type verification.
3243         * fold-const.c (fold_unary): Do not generate calculations
3244         in sub-types.
3245
3246 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
3247
3248         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
3249         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
3250         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
3251
3252         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
3253         a bool.
3254         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
3255         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
3256         before finalizing the changes.
3257         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
3258         for BIT_IOR_EXPR.
3259         (simplify_truth_ops_using_ranges): New.
3260         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
3261         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
3262         whether a simplification was made.
3263         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
3264         use a switch statement and also call simplify_truth_ops_using_ranges.
3265
3266 2008-09-11  Jan Hubicka  <jh@suse.cz>
3267
3268         * ggc-common.c (loc_array): Make static.
3269         * dce.c (rest_of_handle_ud_dce): Free worklist.
3270
3271 2008-09-11  Jan Hubicka  <jh@suse.cz>
3272
3273         * cgraph.c (cgraph_release_function_body): Plug memory leak on
3274         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
3275         function so we are sure we do not dangle it forever.
3276         * function.c (outer_function_chain, find_function_data): Remove.
3277         (function_context_stack): New.
3278         (push_function_context, pop_function_context): Update.
3279         * function.h (struct function): Remove pointer outer.
3280         (outer_function_chain, find_function_data): Remove.
3281         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
3282
3283 2008-09-11  Jan Hubicka  <jh@suse.cz>
3284
3285         PR middle-end/37448
3286         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
3287
3288 2008-09-11  Jan Hubicka  <jh@suse.cz>
3289
3290         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
3291
3292 2008-09-11  Jan Hubicka  <jh@suse.cz>
3293
3294         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
3295         (free_var_map_entry): New function.
3296         (redirect_edge_var_map_destroy): Use it.
3297
3298 2008-09-11  Jan Hubicka  <jh@suse.cz>
3299
3300         PR middle-end/37448
3301         * tree-inline.c (add_lexical_block): Replace with ...
3302         (prepend_lexical_block): ... prepend at begginig.
3303         (remap_blocks): Use it and reverse later.
3304         (expand_call_inline): Use prepend_lexical_block.
3305
3306 2008-09-11  Jan Hubicka  <jh@suse.cz>
3307
3308         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
3309
3310 2008-09-11  Jan Hubicka  <jh@suse.cz>
3311
3312         * function.c (free_after_compilation): Call insn_locators_free.
3313         * cfglayout.c (insn_locators_free): New function.
3314         * rtl.h (insn_locators_free): Declare.
3315
3316 2008-09-11  Jan Hubicka  <jh@suse.cz>
3317
3318         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
3319         vector pointer.
3320         (cond_move_process_if_block): Update call.
3321
3322 2008-09-11  Jan Hubicka  <jh@suse.cz>
3323
3324         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
3325         * vec.c: Include hashtab.h
3326         (vec_descriptor, ptr_hash_entry): New structures.
3327         (vec_desc_hash, vec_ptr_map): New static variables.
3328         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
3329         register_overhead, free_overhead, vec_heap_free): New functions.
3330         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
3331         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
3332         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
3333         New functions.
3334
3335 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3336
3337         PR tree-optimization/37474
3338         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
3339         length of load permutation.
3340
3341 2008-09-11  Andreas Schwab  <schwab@suse.de>
3342
3343         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
3344
3345 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
3346
3347         PR target/37382
3348         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
3349         * dse.c (find_shift_sequence): Use extract_low_bits instead of
3350         simplify_gen_subreg.
3351
3352 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3353
3354         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
3355         for alias check.
3356
3357 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3358
3359         PR middle-end/37338
3360         * gimplify.c (gimplify_body): Call default_rtl_profile.
3361
3362         PR target/36904
3363         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
3364         instead of tok->val.node if not expanding to something else.  Handle
3365         intervening CPP_PADDING tokens.
3366         (altivec_categorize_keyword): Remove unneeded comparisons.
3367
3368 2008-09-10  Richard Guenther  <rguenther@suse.de>
3369
3370         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
3371
3372 2008-09-10  Richard Guenther  <rguenther@suse.de>
3373
3374         PR middle-end/37432
3375         * tree-inline.c (insert_init_stmt): Make sure to not
3376         insert invalid gimple stores.
3377
3378 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
3379
3380         PR tree-optimization/37388
3381         * toplev.c (process_options): Fail and warn when graphite
3382         flags are used, but the compiler has not been configured
3383         with graphite libraries.
3384         * graphite.c (graphite_transform_loops): Remove printfs
3385         to dump_file for the case when graphite is not available.
3386
3387 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
3388
3389         PR target/37434:
3390         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
3391         the even element into register.
3392         (ix86_expand_vector_init_general): Don't use
3393         ix86_expand_vector_init_interleave on V16QImode and V8HImode
3394         if we can't move from GPR to SSE register directly.
3395
3396 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
3397
3398         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
3399         not lose track of the number of NOPs needed.  Number of NOPs needed
3400         for sync vs. loads workaround was switched; corrected.  Run second
3401         pass for all workarounds.  No NOPs needed after call insns.  Change
3402         second pass to use find_next_insn_start and find_load helpers in order
3403         to properly detect parallel insns.
3404         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
3405
3406 2008-09-10  Jan Hubicka  <jh@suse.cz>
3407
3408         * value-prof.c (gimple_ic): Fix tuplification bug.
3409         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
3410         var warning.
3411
3412 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3413
3414         PR tree-optimization/37353
3415         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
3416         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
3417         calls instead of cond_dead_built_in_calls.
3418         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
3419         initalize the vector only before adding first entry.  Use VEC_safe_push
3420         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
3421         shrink_wrap_conditional_dead_built_in_calls call.
3422
3423 2008-09-10  Ira Rosen  <irar@il.ibm.com>
3424
3425         PR tree-optimization/37385
3426         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
3427         argument, and use it as a vector type if not NULL.
3428         (vectorizable_store): Call vect_create_data_ref_ptr with the typ