OSDN Git Service

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