OSDN Git Service

* g++.dg/ipa/iinline-1.C: Remove -c flag, add -fpie for PIC
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
2
3         * reg-stack.c (reg_to_stack): Add missing braces in memset
4         size calculation.
5
6 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
7
8         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
9         (NO_PROFILE_COUNTERS): New define.
10
11 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
12
13         PR target/26397
14         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
15         
16 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
17
18         PR target/35574
19         * config/sparc/constraints.md (D): New.
20         * config/sparc/predicates.md (const_double_or_vector_operand): New.
21         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
22         'D' constraint.
23         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
24         Use the 'D' constraint in addition to 'F' in some alternatives.
25         (DF splitter): Generalize for V64mode.
26         * doc/md.texi (SPARC): Document the 'D' constraint.
27
28 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
29
30         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
31
32 2008-11-06  Ben Elliston  <bje@au.ibm.com>
33
34         * gcc.c: Remove ancient comment about a bug in Sun cc.
35
36 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
37
38         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
39
40 2008-11-06  Ben Elliston  <bje@au.ibm.com>      
41
42         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
43
44 2008-11-06  Ben Elliston  <bje@au.ibm.com>
45
46         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
47         description.
48
49 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
50
51         PR target/38016
52         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
53         just MEM_P.
54
55 2008-11-05  Martin Jambor  <mjambor@suse.cz>
56
57         PR middle-end/37861
58         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
59         pointer arithmetics into array_ref if the array is accessed
60         through an indirect_ref.
61
62 2008-11-05  Richard Guenther  <rguenther@suse.de>
63
64         PR middle-end/37742
65         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
66         qualified pointer conversion before stripping qualifiers.
67         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
68         * tree-flow.h (may_propagate_address_into_dereference): Declare.
69         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
70         function.
71         (ccp_fold): Use it.
72         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
73         properly canonicalize binary ops.
74         (forward_propagate_addr_expr_1): Use
75         may_propagate_address_into_dereference.
76
77 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
78
79         PR middle-end/37286
80         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
81         Initialize uninitialized input registers with a NaN.
82
83 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
84
85         PR middle-end/37833
86
87         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
88
89 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
90
91         PR middle-end/37943
92
93         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
94         exits and conditions.
95         * testsuite/gcc.dg/graphite/pr37943.c: New.
96
97 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
98             Andrew Pinski  <andrew_pinski@playstation.sony.com>
99
100         PR c/35430
101         * c-common.c (warn_for_sign_compare): For complex result_type
102         use component's type.
103
104 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
105
106         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
107
108         * print-tree.c (print_node): Don't print DECL_INITIAL
109         for PARM_DECL.
110
111         PR c/37106
112         * c-common.c (parse_optimize_options): Save and restore
113         flag_strict_aliasing around decode_options call.
114
115 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
116
117         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
118         (host_detect_local_cpu): Use it instead of casted strings to
119         compare vendor signatures.
120
121 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
122
123         PR target/37989
124         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
125         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
126
127 2008-11-03  Catherine Moore  <clm@codesourcery.com>
128
129         * config/mips.c (mips_conditional_register_usage):  Handle the
130         DSP control register.
131         * doc/extend.texi: Document the DSP control register.
132
133 2008-11-03  Steve Ellcey <sje@cup.hp.com>
134             Jakub Jelinek  <jakub@redhat.com>
135
136         * omp-low.c (expand_omp_for_generic): If iter_type has different
137         precision than type and type is a pointer type, cast n1 and n2
138         first to an integer type with the same precision as pointers
139         and only afterwards to iter_type.
140
141 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
142
143         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
144         (UNSPEC_GOTSYM_OFF): New unspec.
145         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
146         (pic_add_dot_plus_eight): Likewise.
147         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
148         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
149         UNSPEC_PIC_BASE operands.
150         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
151         (arm_output_addr_const_extra): Handle it.
152
153 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
154
155         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
156         integer class to full integer class if the offset is not word-aligned.
157
158 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
159
160         PR rtl-opt/37782
161         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
162         mode count is in.
163         (doloop_optimize): Update call to doloop_modify.
164
165 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
166
167         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
168
169 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
170
171         PR other/37463
172         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
173         gcc_cv_as_cfi_directive.
174         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
175         merging read-only and read-write sections or assembler emits
176         read-write .eh_frame sections.
177         * configure: Regenerate.
178         
179 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
180
181         Revert:
182         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
183
184         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
185         problem.
186         (rs6000_emit_prologue): Invert logic.
187         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
188         (reg:P 11) instead of match_operand.
189         (*save_fpregs_<mode>): Likewise.
190         (*restore_gpregs_<mode>): Likewise.
191         (*return_and_restore_gpregs_<mode>): Likewise.
192         (*return_and_restore_fpregs_<mode>): Likewise.
193         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
194         (reg:P 11) insted of match_operand.
195         (*restore_gpregs_spe): Likewise.
196         (*return_and_restore_gpregs_spe): Likewise.
197
198 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
199
200         PR tree-optimization/37684
201         * gcc.dg/graphite/pr37684.c: New.
202         * graphite.c (exclude_component_ref): New.
203         (is_simple_operand): Call exclude_component_ref.
204
205 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
206
207         PR tree-optimization/36908
208         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
209         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
210         (number_of_rw_in_partition): New.
211         (partition_contains_all_rw): New.
212         (ldist_gen): Do not distribute when one of the partitions
213         contains all the memory operations.
214
215 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
216
217         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
218         EDGE_IRREDUCIBLE_LOOP.
219
220 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
221
222         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
223         where we have one entry point in the loop which isn't the head.
224
225 2008-11-03  Richard Guenther  <rguenther@suse.de>
226
227         PR middle-end/37573
228         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
229
230 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
231
232         PR middle-end/37858
233         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
234         for ipa and simple ipa passes.
235
236 2008-11-02  Richard Guenther  <rguenther@suse.de>
237
238         PR tree-optimization/37542
239         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
240         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
241         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
242         (vn_nary_op_insert_stmt): Likewise.
243         (visit_use): Likewise.
244
245 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
246
247         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
248         (*swap): Remove.
249         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
250         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
251         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
252         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
253         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
254         peephole2's): Replace unspec with rotate.
255         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
256
257 2008-11-02  Richard Guenther  <rguenther@suse.de>
258
259         PR tree-optimization/37991
260         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
261         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
262         (set_ssa_val_to): Print if the value changed.
263         (simplify_binary_expression): Strip useless conversions.
264
265 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
266
267         PR target/37939
268         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
269         operand.
270
271 2008-11-01  Richard Guenther  <rguenther@suse.de>
272
273         PR middle-end/37976
274         * builtins.c (fold_builtin_strspn): Return a size_t.
275         (fold_builtin_strcspn): Likewise.
276
277 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
278
279         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
280         attribute for struct return convention.
281
282 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
283
284         * config/rs6000/crtsavres.asm: Really, really delete.
285
286 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
287
288         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
289         problem.
290         (rs6000_emit_prologue): Invert logic.
291         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
292         (reg:P 11) instead of match_operand.
293         (*save_fpregs_<mode>): Likewise.
294         (*restore_gpregs_<mode>): Likewise.
295         (*return_and_restore_gpregs_<mode>): Likewise.
296         (*return_and_restore_fpregs_<mode>): Likewise.
297         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
298         (reg:P 11) insted of match_operand.
299         (*restore_gpregs_spe): Likewise.
300         (*return_and_restore_gpregs_spe): Likewise.
301
302 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
303
304         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
305         list of word switches that take args.
306
307 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
308
309         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
310         (s390_output_pool_entry): Call it through for_each_rtx.
311
312         PR middle-end/37730
313         * expr.c (store_constructor): For vectors, if target is a MEM, use
314         target's MEM_ALIAS_SET instead of elttype alias set.
315
316 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
317
318         PR target/37909
319         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
320         no address.
321
322 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
323
324         PR target/37878
325         * config/rs6000/predicates.md (word_offset_memref_operand):
326         Restructure code and look inside auto-inc/dec addresses.
327         
328 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
329
330         PR target/32277
331         * libgcov.c ( __gcov_indirect_call_profiler): Check
332         TARGET_VTABLE_USES_DESCRIPTORS.
333
334 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
335
336         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
337         (INITIAL_FRAME_POINTER_OFFSET): Remove.
338         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
339         offset if eliminating soft frame pointer.
340         * config/spu/spu.md (stack_protect_set, stack_protect_test)
341         (stack_protect_test_si): Add initial machine description
342         for Stack Smashing Protector
343
344 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
345
346         PR 11492
347         * c-common.c (min_precision): Move to...
348         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
349         * tree.h (tree_int_cst_min_precision): Declare.
350         * c-common.h (min_precision): Delete declaration.
351         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
352         multiplication of non-negative integer constants.
353         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
354         tree_int_cst_min_precision.
355         (finish_enum): Likewise.
356
357 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
358
359         PR middle-end/36578
360         * convert.c (convert_to_real): Do not optimize conversions of
361         binary arithmetic operations between binary and decimal
362         floating-point types.  Consider mode of target type in determining
363         decimal type for arithmetic.  Unless
364         flag_unsafe_math_optimizations, do not optimize binary conversions
365         where this may change rounding behavior.
366         * real.c (real_can_shorten_arithmetic): New.
367         * real.h (real_can_shorten_arithmetic): Declare.
368
369 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
370         
371         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
372         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
373         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
374         appropriate.
375         (must_save_p): For some workarounds, interrupts need to clobber a
376         P register.
377         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
378         and LC1 for WA_05000257.
379         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
380         WA_05000283 and WA_05000315.
381         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
382         (movbi): Add alternative to set CC to 1; improve code for setting
383         CC to 0.
384         (dummy_load): New pattern.
385
386 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
387
388         PR middle-end/37870
389         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
390         BLKmode for non-memory, convert using a wider MODE_INT mode
391         or through memory.
392
393         PR middle-end/37913
394         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
395         that haven't been removed yet.
396
397 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
398
399         * config/bfin/bfin.c (struct machine_function): New member
400         has_loopreg_clobber.
401         (bfin_expand_movmem): Set it when generating memcpy insns.
402         (n_regs_saved_by_prologue, expand_prologue_reg_save,
403         expand_epilogue_reg_restore): If we have hardware loops,
404         memcpy insns (indicated by has_loopreg_clobber) or function
405         calls, we need to save the loop registers.
406
407 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
408
409         * config/i386/i386.c (core2_cost): Fix typos in comments.
410
411 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
412
413         PR c/37924
414         * combine.c (make_compound_operation): Don't call make_extraction with
415         non-positive length.
416         (simplify_shift_const_1): Canonicalize count even if complement_p.
417
418 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
419
420         * convert.c (strip_float_extensions): Do not remove or introduce
421         conversions between binary and decimal floating-point types.
422
423 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
424
425         PR middle-end/37931
426         * fold-const.c (distribute_bit_expr): Convert common, left and
427         right arguments to type.
428
429 2008-10-28  Nick Clifton  <nickc@redhat.com>
430
431         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
432         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
433         call_really_used_regs array rather than the call_used_regs array.
434         (mn10300_get_live_callee_saved_regs, expand_prologue,
435         expand_epilogue, output_tst): Likewise.
436
437 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
438
439         PR target/37378
440         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
441         (df_get_entry_block_def_set): Neither here.
442         (df_get_regular_block_artificial_uses): Add EH_USES registers.
443
444         PR tree-optimization/37879
445         * predict.c (tree_estimate_probability): Check if last_stmt is
446         non-NULL before dereferencing it.
447
448 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
449
450         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
451         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
452         (ira_fast_allocation): Remove the prototype.
453         
454         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
455         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
456         (color_pass): Modify the updated costs.
457         (ira_color): Rename to color.  Make it static.
458         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
459         (ira_color): New function.
460         
461         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
462         change.
463
464         * ira-lives.c (last_call_num, allocno_saved_at_call): New
465         variables.
466         (set_allocno_live, clear_allocno_live, mark_ref_live,
467         mark_ref_dead): Invalidate corresponding element of
468         allocno_saved_at_call.
469         (process_bb_node_lives): Increment last_call_num.  Setup
470         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
471         allocno was already saved.
472         (ira_create_allocno_live_ranges): Initiate last_call_num and
473         allocno_saved_at_call.
474
475         * ira-build.c (ira_create_allocno): Initiate
476         ALLOCNO_UPDATED_COVER_CLASS_COST.
477         (create_cap_allocno, propagate_allocno_info,
478         remove_unnecessary_allocnos): Remove setting updated costs.
479         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
480
481         * ira.c (ira):  Don't call ira_fast_allocation.
482
483         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
484         updated costs.
485         
486 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
487
488         PR middle-end/37813
489         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
490
491         * ira-int.h (ira_hard_regno_cover_class): New.
492
493         * ira-lives.c (mark_reg_live, mark_reg_dead,
494         process_bb_node_lives): Use ira_hard_regno_cover_class.
495
496         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
497         (setup_hard_regno_cover_class): New function.
498         (ira_init): Call setup_hard_regno_cover_class.
499
500         * ira-costs.c (cost_class_nums): Add comment.
501         (find_allocno_class_costs): Initiate cost_class_nums.
502         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
503
504 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
505
506         PR middle-end/37884
507         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
508         Rename to copy_info_to_removed_store_destinations.  Propagate
509         conflict hard regs and register stack attribute.
510
511 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
512
513         PR middle-end/37316
514         * pa.c (function_arg_padding):  Pad complex and vector types
515         upward in 64-bit runtime.
516         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
517
518 2008-10-26  Matthias Klose  <doko@ubuntu.com>
519
520         * doc/install.texi: Document requirements on antlr.
521
522 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
523
524         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
525         first.
526
527 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
528
529         PR target/37841
530         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
531         is defined, use it to modify the constant offset.
532
533         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
534
535         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
536         and short arguments to the correct location as mandated by the ABI.
537
538 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
539
540         PR rtl-optimization/37769
541         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
542
543 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
544
545         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
546         unwind-dw2-Os-4-200.o.
547
548 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
549
550         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
551         (convert_for_assignment): Remove ic_argpass_nonproto cases.
552
553 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
554
555         PR tree-optimization/36038
556         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
557         add sizetype IV with initial value zero instead of pointer type.
558
559 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
560
561         PR c/7543
562         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
563         around bit operation.
564         * profile.c (is_edge_inconsistent): Likewise.
565         * fold-const.c (truth_value_p): Move from here...
566         * tree.h (truth_value_p): ... to here.
567         * c-tree.h (c_expr): Update description of original_code.
568         * c-typeck.c (parser_build_unary_op): Set original_code.
569         (parser_build_binary_op): Update call to warn_about_parentheses.
570         * c-common.c (warn_about_parentheses): Take two additional
571         arguments of the operands. Use a switch. Quote operators
572         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
573         Add warning about !x | y and !x & y.
574         * c-common.h (warn_about_parentheses): Update declaration.
575
576 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
577
578         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
579         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
580         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
581         New variables.
582         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
583         (check-%): For test targets listed in lang_checks_parallelized
584         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
585         run the testing in multiple make goals, possibly parallel, and
586         afterwards run dg-extract-results.sh to merge the sum and log files.
587
588 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
589
590         * config/mips/mips.c (mips_canonicalize_move_class): New function.
591         (mips_move_to_gpr_cost): Likewise.
592         (mips_move_from_gpr_cost): Likewise.
593         (mips_register_move_cost): Make more fine-grained.
594
595 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
596
597         * graphite.c (graphite_apply_transformations): Check for
598         -fgraphite-identity.
599         * toplev.c (process_options): Add graphite_identity.
600         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
601
602 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
603
604         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
605         mulhisihl and mulhisihh builtins.
606
607         From Jie Zhang  <jie.zhang@analog.com>
608         * config/bfin/bfin.md (composev2hi): Put operands into vector
609         with correct order.
610         
611 2008-10-22  Chao-ying Fu  <fu@mips.com>
612
613         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
614
615 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
616
617         From Mike Frysinger  <michael.frysinger@analog.com>
618         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
619         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
620         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
621         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
622         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
623         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
624         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
625         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
626         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
627         __ADSPBF51x__ for all of them.
628         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
629         -mcpu bf512, bf514, bf516, and bf518.
630         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
631         bf512-none, bf514-none, bf516-none, and bf518-none.
632         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
633         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
634         * doc/invoke.texi (Blackfin Options): Document that
635         -mcpu now accepts bf512, bf514, bf516, and bf518.
636
637 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
638
639         PR middle-end/37882
640         * fold-const.c (build_range_type): For 1 .. signed_max
641         range call build_nonstandard_inter_type if signed_type_for
642         returned a type with bigger precision.
643
644 2008-10-22  Richard Guenther  <rguenther@suse.de>
645
646         * tree.def (COMPLEX_TYPE): Constrain element type.
647         * tree.c (build_complex_type): Assert that.
648         * tree-ssa-structalias.c (could_have_pointers): Complex types
649         cannot have pointers.
650
651 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
652
653         PR c/30949
654         * c-typeck.c (convert_for_assignment): Do not give declaration's
655         location for builtins. Spell out which type was expected and which
656         was given.
657
658 2008-10-22  Nick Clifton  <nickc@redhat.com>
659
660         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
661         the fdpic register to be a target when running in fdpic mode.
662
663 2008-10-22 Rafael Espindola  <espindola@google.com>
664
665         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
666         newly created statements.
667
668 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
669
670         PR target/37633
671         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
672         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
673         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
674
675 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
676
677         PR target/37880
678         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
679         Adjust -mcmodel=medium description for 2005-07-31 changes.
680
681 2008-10-22  Jan Hubicka  <jh@suse.cz>
682             Jakub Jelinek  <jakub@redhat.com>
683
684         PR middle-end/35853
685         * doc/invoke.texi: Remove references to obsoleted -d dumps.
686
687 2008-10-21  Richard Henderson  <rth@redhat.com>
688
689         PR 37815
690         * emit-rtl.c (get_spill_slot_decl): Export.
691         * emit-rtl.h (get_spill_slot_decl): Declare.
692         * var-tracking.c (vt_add_function_parameters): Relax assertion
693         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
694
695 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
696
697         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
698         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
699         of from insn.
700
701 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
702
703         PR middle-end/37669
704         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
705         processed by get_maxval_strlen.
706
707 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
708
709         PR target/35485
710         * tree.c (get_file_function_name): Copy first_global_object_name.
711         Centralize call to clean_symbol_name.
712
713 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
714
715         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
716         * config/svr4.h (SVR4_ASM_SPEC): New.
717         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
718         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
719
720         * doc/invoke.texi (Option Summary): Add -T to linker options.
721         (Link Options): Document -T.
722         
723 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
724
725         * tree-inline.c (tree_inlinable_function_p): Remove tuples
726         debugging hack.
727
728         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
729
730         PR debug/37020
731         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
732
733 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
734
735         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
736         part of expression.
737
738 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
739
740         * doc/install.texi: Fix typos in previous patch.
741
742 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
743
744         * doc/install.texi: Document in-tree building of gcc and mpfr.
745
746 2008-10-19  Richard Guenther  <rguenther@suse.de>
747
748         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
749
750 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
751
752         PR c/30260
753         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
754         (build_enumerator): Convert enumerators that fit in integer to
755         integer type.
756
757 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
758
759         * config/i386/i386.md (unnamed peephole2): Do not force memory
760         operands of arith or logical instructions into registers for
761         non-TARGET_READ_MODIFY targets.
762
763         (ffs_cmove): Change operand 0 predicate to register_operand.
764         Change operand 1 predicate to nonimmediate_operand.
765         (ffsdi2): Ditto.
766         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
767
768 2008-10-18  Richard Guenther  <rguenther@suse.de>
769
770         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
771         VIEW_CONVERT_EXPR case against invalid gimple.
772
773 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
774
775         * c-parser.c (c_parser_binary_expression): Silence the
776         uninitialized variable warning emitted for binary_loc.
777
778 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
779
780         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
781         translation cache.
782
783 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
784
785         PR c/33192
786         * c-typeck.c (build_unary_op): Use omit_one_operand for
787         IMAGPART_EXPR of real argument.
788
789 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
790
791         PR tree-optimization/37664
792         * fold-const.c (fold_binary): When optimizing comparison with
793         highest or lowest type's value, don't consider TREE_OVERFLOW.
794
795 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
796
797         PR target/35483
798         * Makefile.in (coverage.o): Depend on $(TM_P_H).
799         * coverage.c: Include tm_p.h.
800         * config/rs6000/x-aix (jc1): Override LDFLAGS.
801         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
802         dollar signs from PREFIX.
803         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
804         instead of manual strip_name_encoding.
805
806 2008-10-16  Richard Guenther  <rguenther@suse.de>
807
808         PR middle-end/37418
809         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
810         volatile qualified functions or methods as relevant.
811
812 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
813
814         PR tree-optimization/37525
815         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
816         sizetype unsigned constants, both in the case of C and bounds.
817
818 2008-10-15  Jan Hubicka  <jh@suse.cz>
819
820         * ira-emit.c (change_regs): Return false when replacing reg by itself.
821
822 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
823
824         PR target/37633
825         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
826         HARD_REGNO_CALL_PART_CLOBBERED.
827
828 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
829
830         PR middle-end/37535
831         * ira-lives.c (mark_early_clobbers): Remove.
832         (make_pseudo_conflict, check_and_make_def_use_conflicts,
833         check_and_make_def_conflicts,
834         make_early_clobber_and_input_conflicts,
835         mark_hard_reg_early_clobbers): New functions.
836         (process_bb_node_lives): Call
837         make_early_clobber_and_input_conflicts and
838         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
839
840         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
841         early clobbers of pseudo-registers.
842         
843 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
844
845         PR middle-end/37674
846         * ira-build.c (ira_flattening): Recalculate
847         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
848         from the scratch instead of the propagation.
849         
850 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
851
852         * doc/rtl.texi (const_double): Remove the "addr" operand.
853         Describe CONST_DOUBLE_* macros under const_double rather
854         than const_vector.
855         (const_fixed): Fix the operand description.
856         (const): Add an @findex directive.
857         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
858         after the constant rtl table.
859         (fix): Combine floating-point and fixed-point descriptions.
860         Fix hyphenation.
861         * sched-deps.c (sched_analyze_2): Remove reference to
862         CONST_DOUBLE_CHAIN.
863
864 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
865
866         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
867         UNSPEC_GOTSYM_OFFs.
868         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
869         for UNSPEC_GOTSYM_OFFs.
870         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
871         (add_GOT_to_pic_reg): Use it.
872         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
873
874 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
875             Harsha Jagasia  <harsha.jagasia@amd.com>
876
877         PR tree-optimization/37485
878         * graphite.c (gmp_cst_to_tree): Moved.
879         (iv_stack_entry_is_constant): New.
880         (iv_stack_entry_is_iv): New.
881         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
882         (loop_iv_stack_insert_constant): New.
883         (loop_iv_stack_pop): Use new datatpype.
884         (loop_iv_stack_get_iv): Same.
885         (loop_iv_stack_get_iv_from_name): Same.
886         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
887         (loop_iv_stack_patch_for_consts): New.
888         (loop_iv_stack_remove_constants): New.
889         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
890         (translate_clast): Call loop_iv_stack_patch_for_consts and
891         loop_iv_stack_remove_constants.
892         (gloog): Use new datatype.  Redirect construction edge to end
893         block to avoid accidental deletion.
894         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
895         iv stack entry.
896         (union iv_stack_entry_data): New.  Data in iv stack entry.
897         (struct iv_stack_entry): New.  Datatype for iv stack entries.
898
899 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
900
901         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
902         * graphite.c (free_scop): Same.
903         (build_scops): Same.
904         (free_scattering): New.
905         (build_cloog_prog): Call free_scattering.
906         (patch_phis_for_virtual_defs): Fix memleak.
907         (graphite_trans_bb_strip_mine): Same.
908         (limit_scops): Same.
909
910 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
911             Harsha Jagasia  <harsha.jagasia@amd.com>
912
913         PR tree-optimization/37828
914         * graphite.c (graphite_trans_loop_block): Do not loop block
915         single nested loops.
916
917 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
918
919         PR tree-optimization/37686
920         * tree-loop-linear.c (linear_transform_loops): Build a
921         loop nest vector.  Pass it to lambda_compute_access_matrices.
922         * tree-data-ref.h (struct access_matrix): Store the loop nest
923         relative to which it encodes the information.
924         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
925         (am_vector_index_for_loop): Reimplemented: iterate over the
926         loop nest for finding the loop index in the access matrix.
927         (lambda_compute_access_matrices): Update declaration.
928         * lambda-code.c (build_access_matrix): Pass the loop nest and
929         record it.
930         (lambda_compute_access_matrices): Same.
931
932 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
933
934         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
935         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
936         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
937         already implies hard float.  Also fix several insn condition
938         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
939
940 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
941
942         PR target/35483
943         Based on patches by Laurent Vivier.
944         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
945         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
946         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
947         dollar sign to underscore.
948         (ASM_OUTPUT_EXTERNAL): Same.
949         (ASM_OUTPUT_LABELREF): New.
950         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
951
952         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
953         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
954         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
955         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
956
957 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
958
959         PR tree-optimization/36881
960         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
961         that each value doesn't need runtime relocations, for !flag_pic
962         check that each value is just a valid initializer constant.
963
964 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
965
966         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
967         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
968         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
969         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
970         GR_AND_ACC_REGS.
971         (REG_CLASS_NAMES): Update accordingly.
972         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
973         rather than an unpredictable descriptive string.
974         * config/mips/mips.c (mips_register_move_cost): Remove comment.
975         (mips_register_move_cost): Check for specific COP*_REGS classes,
976         instead of ALL_COP_AND_GR_REGS.
977         (mips_ira_cover_classes): New function.
978         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
979         (TARGET_IRA_COVER_CLASSES): Define.
980
981 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
982
983         PR c++/37553
984         * tree.c (build_type_attribute_qual_variant): Hash on the
985         unqualified type, and don't overwrite an existing
986         (type_hash_eq): Make the TYPE_NAME of the types significant, to
987         allow distinguishing between wchar_t and its underlying type. This
988         also means that we'll retain a little more typedef information.
989
990 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
991             Dmitry Melnik  <dm@ispras.ru>
992             Dmitry Zhurikhin  <zhur@ispras.ru>
993             Alexander Monakov  <amonakov@ispras.ru>
994             Maxim Kuvyrkov  <maxim@codesourcery.com>
995
996         * target.h (struct gcc_target): Update prototypes of needs_block_p
997         and gen_spec_check.
998         * haifa-sched.c (create_check_block_twin): Update calls to the above.
999         * sel-sched.c (create_speculation_check): Likewise.
1000         * doc/tm.texi: Provide documentation for new target hooks.
1001                 
1002         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
1003         (ia64_gen_spec_insn): Removed.
1004         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
1005         ia64_gen_spec_check): New static functions.
1006         (ia64_alloc_sched_context, ia64_init_sched_context,
1007         ia64_set_sched_context, ia64_clear_sched_context,
1008         ia64_free_sched_context, ia64_get_insn_spec_ds,
1009         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
1010         (ia64_needs_block_p): Change prototype.
1011         (ia64_gen_check): Rename to ia64_gen_spec_check.
1012         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
1013         into declaration, add special memory dependencies handling.
1014         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1015         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1016         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
1017         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
1018         Define new target hooks.
1019         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1020         (ia64_optimization_options): Turn on selective scheduling with -O3,
1021         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
1022         default with selective scheduling.
1023         (ia64_override_options): Initialize align_loops and align_functions
1024         to 32 and 64, respectively.  Set global selective scheduling flags
1025         according to target-dependent flags.
1026         (rtx_needs_barrier): Support UNSPEC_LDS_A.
1027         (group_barrier_needed): Use new mstop-bit-before-check flag.
1028         Add heuristic.
1029         (dfa_state_size): Make global.
1030         (spec_check_no, max_uid): Remove.
1031         (mem_ops_in_group, current_cycle): New variables.
1032         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
1033         Initialize new variables.
1034         (is_load_p, record_memory_reference): New functions.
1035         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
1036         reached.
1037         (ia64_variable_issue): Change use of current_sched_info to
1038         sched_deps_info.  Update comment.  Note if a load or a store is issued.
1039         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
1040         advance if maximal number of loads or stores was issued on current
1041         cycle.
1042         (scheduled_good_insn): New static helper function.
1043         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
1044         a group barrier is needed.  Fix vertical spacing.  Guard the code
1045         doing state transition with last_scheduled_insn check.
1046         Mark that a stop bit should be before current insn if there was a 
1047         cycle advance.  Update current_cycle and mem_ops_in_group.
1048         (ia64_h_i_d_extended): Change use of current_sched_info to
1049         sched_deps_info. Reallocate stops_p by larger chunks.
1050         (struct _ia64_sched_context): New structure.
1051         (ia64_sched_context_t): New typedef.
1052         (ia64_alloc_sched_context, ia64_init_sched_context,
1053         ia64_set_sched_context, ia64_clear_sched_context,
1054         ia64_free_sched_context): New static functions.
1055         (gen_func_t): New typedef.
1056         (get_spec_load_gen_function): New function.
1057         (SPEC_GEN_EXTEND_OFFSET): Declare.      
1058         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
1059         (get_mode_no_for_insn): Change the condition that prevents use of
1060         special hardware registers so it can now handle pseudos.
1061         (get_spec_unspec_code): New function.
1062         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
1063         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
1064         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
1065         during selective scheduling.
1066         (ia64_speculate_insn): Use ds_get_speculation_types when
1067         determining whether we need to change the pattern.
1068         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
1069         (ia64_spec_check_src_p): Support new speculation/check codes.
1070         (struct bundle_state): New field.
1071         (issue_nops_and_insn): Initialize it.
1072         (insert_bundle_state): Minimize mid-bundle stop bits.
1073         (important_for_bundling_p): New function.
1074         (get_next_important_insn): Use important_for_bundling_p.
1075         (bundling): When shifting TImode from unimportant insns, ignore
1076         also group barriers.  Assert that best state is found before
1077         the backward bundling pass.  Print number of mid-bundle stop bits.
1078         Minimize mid-bundle stop bits.  Check correct calculation of
1079         mid-bundle stop bits.
1080         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
1081         (final_emit_insn_group_barriers): Emit stop bits before insns starting
1082         a new cycle.
1083         (sel2_run): New variable.
1084         (ia64_reorg): When flag_selective_scheduling2 is set, run the
1085         selective scheduling pass instead of schedule_ebbs.
1086         
1087         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
1088         (UNSPEC_LDS_A): New UNSPEC.
1089         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
1090         movti_internal, movsf_internal, movdf_internal,
1091         movxf_internal): Make visible.  Add speculable* attributes.
1092         (output_c_nc): New mode attribute.
1093         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
1094         mov<mode>_nc, zero_extend<mode>di2_nc,
1095         advanced_load_check_nc_<mode>): New insns.
1096         (zero_extend*): Add speculable* attributes.
1097
1098         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
1099         (msched-stop-bits-after-every-cycle): Likewise.
1100         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
1101         Likewise.
1102         (msched-spec-verbose): Remove.
1103         (msched-prefer-non-data-spec-insns,
1104         msched-prefer-non-control-spec-insns,
1105         msched-count-spec-in-critical-path,
1106         msel-sched-dont-check-control-spec): Use Target  Report Var
1107         instead of Common Report Var.
1108
1109         * config/ia64/itanium2.md: Remove incorrect bypass.
1110         
1111         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
1112
1113 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
1114
1115         PR middle-end/37805
1116         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
1117         and -fhelp=separate.
1118
1119 2008-10-14  Ben Elliston  <bje@au.ibm.com>
1120
1121         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
1122
1123 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
1124
1125         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
1126         non-integer modes.
1127
1128 2008-10-13  Matthias Klose  <doko@ubuntu.com>
1129
1130         * config/pa/linux-atomic.c: Work around missing header file
1131         for hppa64-linux-gnu targets.
1132
1133 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1134             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
1135             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
1136             Grace Cao  <grace_cao@playstation.sony.com>
1137
1138         * doc/invoke.texi (-mgen-cell-microcode): Document.
1139         (-mwarn-cell-microcode): Document.
1140         * cfglayout.c (locator_location): Export.
1141         * rtl.h (locator_location): Define prototype.
1142         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
1143         New predicate.
1144         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
1145         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
1146         (mwarn-cell-microcode): New option.
1147         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
1148         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
1149         cell and not already set.
1150         Turn off string instructions if not generating cell microcode.
1151         (rs6000_final_prescan_insn): New function that warns about microcoded
1152         instructions.
1153         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
1154         * config/rs6000/rs6000.md
1155         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
1156         the instruction would have been microcoded on the Cell.  Set
1157         cell_micro to always on unnamed patterns for the string instructions.
1158         (cell_micro): Update definition, remove load/store conditional
1159         microcoded.
1160         (sign_extend:DI): Define new pattern for non microcoded version.
1161         (sign_extend:SI): Likewise.
1162         (compare (div:P)): Set cell_micro to not.
1163         (andsi3): Define as an expand.
1164         (andsi3_mc): New pattern.
1165         (andsi3_nomc): New pattern.
1166         (andsi3_internal0_nomc): New pattern.
1167         (andsi3_internal2): Rename to ...
1168         (andsi3_internal2_mc): this and enable iff generating microcode.
1169         (andsi3_internal3): Rename to ...
1170         (andsi3_internal3_mc): this and enable iff generating microcode.
1171         (andsi3_internal4): Enable iif generating microcode.
1172         (andsi3_internal5): Rename to ..
1173         (andsi3_internal5_mc): this and enable iff generating microcode.
1174         (andsi3_internal5_nomc): New pattern.
1175         (extzvdi_internal1): Enable iff generating microcode.
1176         (extzvdi_internal2): Likewise.
1177         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
1178         (anddi3): Change to expand.
1179         (anddi3_mc): Rename from anddi3.
1180         (anddi3_no_mc): New pattern.
1181         (anddi3_internal2): Rename to ..
1182         (anddi3_internal2_mc): this and enable iff generating microcode.
1183         (anddi3_internal2_nomc): New pattern.
1184         (anddi3_internal3): Rename to ..
1185         (anddi3_internal3_mc): this and enable iff generating microcode.
1186         (anddi3_internal3_nomc): New pattern.
1187         (movti_string): Set cell_micro to always if TARGET_STRING.
1188         (stmsi8): Set cell_micro to always.
1189         (stmsi7): Likewise.
1190         (stmsi6): Likewise.
1191         (stmsi5): Likewise.
1192         (stmsi4): Likewise.
1193         (stmsi3): Likewise.
1194         (stmsi8_power): Likewise.
1195         (stmsi7_power): Likewise.
1196         (stmsi6_power): Likewise.
1197         (stmsi5_power): Likewise.
1198         (stmsi4_power): Likewise.
1199         (stmsi3_power): Likewise.
1200         (movsi_update2): Enable iff generating microcode.
1201         (movhi_update3): Likewise.
1202         (lmw): Set cell_micro to always.
1203
1204 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
1205
1206         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
1207         * config/s390/s390.c (machine_function): Remove
1208         decomposed_literal_pool_addresses_ok_p.
1209         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
1210         the difference of two labels.
1211         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
1212         (s390_pool_offset): New function.
1213         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
1214         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
1215
1216 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
1217
1218         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
1219         (powerpc*-*-linux-gnu*): Describe.
1220         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
1221         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
1222         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
1223         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
1224         config/rs6000/e500crtres32gpr.asm,
1225         config/rs6000/e500crtres64gpr.asm,
1226         config/rs6000/e500crtres64gprctr.asm,
1227         config/rs6000/e500crtrest32gpr.asm,
1228         config/rs6000/e500crtrest64gpr.asm,
1229         config/rs6000/e500crtresx32gpr.asm,
1230         config/rs6000/e500crtresx64gpr.asm,
1231         config/rs6000/e500crtsav32gpr.asm,
1232         config/rs6000/e500crtsav64gpr.asm,
1233         config/rs6000/e500crtsav64gprctr.asm,
1234         config/rs6000/e500crtsavg32gpr.asm,
1235         config/rs6000/e500crtsavg64gpr.asm,
1236         config/rs6000/e500crtsavg64gprctr.asm: Use it.
1237         * config/rs6000/crtsavres.asm: Really remove.
1238
1239 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
1240
1241         Fix PR/25502
1242         * c-format.c (convert_format_name_to_system_name): Use
1243         TARGET_OVERRIDES_FORMAT_INIT.
1244         * config.gcc (extra_options): Add for mingw targets mingw.opt.
1245         * config/i386/mingw.opt: New.
1246         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
1247         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
1248         (ms_printf_length_specs): Removed const specifier.
1249         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
1250         * doc/invoke.texi (Wno-pedantic-ms-format): New.
1251
1252 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1253
1254         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
1255         * doc/install.texi: Bump recommended MPFR to 2.3.2.
1256
1257 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1258
1259         PR middle-end/37808
1260         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
1261         sure that ref has valid bb.
1262         
1263 2008-10-12  Richard Henderson  <rth@redhat.com>
1264
1265         PR middle-end/37447
1266         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
1267         * alias.c (value_addr_p, stack_addr_p): Remove.
1268         (nonoverlapping_memrefs_p): Remove IRA special case.
1269         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
1270         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
1271         * reload1.c (alter_reg): Use it.
1272
1273 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
1274
1275         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
1276         of registers instead of eax, ebx, ecx and edx.  Use for loop
1277         and check register for non-zero value before the call
1278         to decode_caches_intel.
1279
1280 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1281
1282         PR rtl-optimization/37448
1283         * df.h: (df_ref_class): New enum.
1284         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
1285         (struct df_ref): Replaced with union df_ref_d.
1286         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
1287         New members of df_ref_d union.
1288         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
1289         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
1290         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
1291         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
1292         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
1293         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
1294         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
1295         (df_scan_bb_info, df_bb_regno_first_def_find,
1296         df_bb_regno_last_def_find, df_find_def, df_find_use,
1297         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1298         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
1299         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
1300         df_get_artificial_defs, df_get_artificial_uses, union_defs)
1301         Replaced struct df_ref * with df_ref.
1302         * df-scan.c (df_collection_rec, df_null_ref_rec,
1303         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
1304         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
1305         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
1306         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
1307         df_reorganize_refs_by_reg_by_reg,
1308         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
1309         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
1310         df_sort_and_compress_refs, df_install_ref, df_install_refs,
1311         df_ref_record, df_get_conditional_uses, df_get_call_refs,
1312         df_bb_refs_record, df_exit_block_uses_collect,
1313         df_record_exit_block_uses, df_reg_chain_mark,
1314         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
1315         df_ref * with df_ref.
1316         (df_ref_record, df_uses_record, df_ref_create_structure): Added
1317         df_ref_class parameter.
1318         (df_scan_problem_data): Added new pools for different types of refs.
1319         (df_scan_free_internal, df_scan_alloc, df_free_ref,
1320         df_ref_create_structure): Processed new ref pools.
1321         (df_scan_start_dump): Added counts of refs and insns.
1322         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
1323         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
1324         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
1325         code to pass df_ref_class down to ref creation functions.
1326         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
1327         df_reg_chain_mark): Use macros to hide references to df_refs.
1328         (df_ref_chain_change_bb): Removed.
1329         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
1330         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
1331         Enhanced to understand df_ref union structure.
1332         * fwprop.c (local_ref_killed_between_p, use_killed_between,
1333         all_uses_available_at, update_df, try_fwprop_subst,
1334         forward_propagate_subreg, forward_propagate_and_simplify,
1335         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
1336         df_ref * with df_ref.
1337         (use_killed_between, all_uses_available_at): Use macros to hide
1338         references to df_refs.
1339         * regstat.c (regstat_bb_compute_ri,
1340         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
1341         df_ref.
1342         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
1343         see_handle_relevant_refs, see_analyze_one_def,
1344         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
1345         struct df_ref * with df_ref.
1346         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
1347         global_conflicts): Replaced struct df_ref * with df_ref.
1348         * ddg.c (create_ddg_dep_from_intra_loop_link,
1349         add_cross_iteration_register_deps, build_inter_loop_deps):
1350         Replaced struct df_ref * with df_ref.
1351         (create_ddg_dep_from_intra_loop_link,
1352         add_cross_iteration_register_deps): Use macros to hide references
1353         to df_refs.
1354         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
1355         df_ref * with df_ref.
1356         * df-core.c (df_bb_regno_first_def_find,
1357         df_bb_regno_last_def_find, df_find_def, df_find_use,
1358         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1359         debug_df_ref): Replaced struct df_ref * with df_ref.
1360         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
1361         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
1362         df_ref.
1363         * web.c (union_defs, entry_register, replace_ref, web_main):
1364         Replaced struct df_ref * with df_ref.
1365         (union_defs, replace_ref): Use macros to hide references to df_refs.
1366         * global.c (compute_regs_asm_clobbered, build_insn_chain):
1367         Replaced struct df_ref * with df_ref.
1368         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
1369         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
1370         Replaced struct df_ref * with df_ref.
1371         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
1372         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
1373         with df_ref.
1374         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
1375         * df-byte-scan.c (df_compute_accessed_bytes_extract,
1376         df_compute_accessed_bytes_strict_low_part,
1377         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
1378         Replaced struct df_ref * with df_ref.
1379         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
1380         * init-regs.c (initialize_uninitialized_regs): Replaced struct
1381         df_ref * with df_ref.
1382         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
1383         check_dependency, check_dependencies, record_uses): Replaced
1384         struct df_ref * with df_ref.
1385         (invariant_for_use, check_dependency): Use macros to hide
1386         references to df_refs.
1387         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
1388         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
1389         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
1390         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
1391         references to df_refs.
1392         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
1393         with df_ref.
1394         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
1395         * df-problems.c (df_rd_bb_local_compute_process_def,
1396         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
1397         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
1398         df_chain_remove_problem, df_chain_create_bb_process_use,
1399         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
1400         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
1401         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
1402         df_byte_lr_simulate_artificial_refs_at_top,
1403         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
1404         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
1405         df_simulate_uses, df_simulate_artificial_refs_at_end,
1406         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
1407         df_ref.
1408         (df_chain_dump): Use macros to hide references to df_refs.
1409         * config/mips/mips.c (r10k_simplify_address): Replaced struct
1410         df_ref * with df_ref.
1411         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
1412         mark_artificial_uses, mark_reg_dependencies,
1413         byte_dce_process_block): Replaced struct df_ref * with df_ref.
1414
1415 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
1416
1417         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
1418         head comment.
1419         (array_ref_element_size): Likewise.
1420         (array_ref_low_bound): Likewise.
1421         (array_ref_up_bound): Likewise.
1422         * expr.c (contains_packed_reference): Likewise.
1423         (array_ref_element_size): Likewise.
1424         (array_ref_low_bound): Likewise.
1425         (array_ref_up_bound): Likewise.
1426         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
1427         with ARRAY_RANGE_REF.
1428         (idx_find_step): Likewise.
1429         (idx_record_use): Likewise.
1430         (strip_offset_1): Likewise.
1431         (idx_remove_ssa_names): Likewise.
1432
1433 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
1434             Andi Kleen  <ak@linux.intel.com>
1435
1436         * config/i386/cpuid.h (__cpuid_count): New defines.
1437         * config/i386/driver-i386.c (struct cache_desc): New structure.
1438         (describe_cache): Use struct cache_desc to pass cache descriptions.
1439         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
1440         (detect_caches_amd): Use struct cache_desc to describe caches.
1441         (decode_caches_intel): Use struct cache_desc to pass cache
1442         descriptions.  Update descriptions to match latest (rev -032,
1443         December 2007) CPUID documentation.  Do not check valid bit here.
1444         Check for Xeon MP value 0x49 problems.
1445         (detect_caches_cpuid2): New function, split from detect_caches_intel.
1446         Check valid bit before calling decode_caches_intel.  Detect number
1447         of times to repeat CPUID instruction.
1448         (detect_caches_cpuid4): New function.
1449         (detect_caches_intel): Depending on max_level, call
1450         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
1451         only when other methods fail to provide valid L2 cache description.
1452
1453 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1454
1455         PR middle-end/37608
1456         * pa.md (call, call_value): Generate an rtx for register r4 and pass
1457         it to PIC call patterns.
1458         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
1459         code generation and attributes from pattern.  Change peephole2 to
1460         split for noreturn case.  Revise split pattern for non noreturn case.
1461         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
1462         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
1463         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
1464         asserts.
1465
1466 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
1467
1468         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
1469         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
1470         and fp_type.
1471         (divdf3): Reformat long line.
1472
1473 2008-10-11  Michael J. Eager  <eager@eagercon.com>
1474
1475         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
1476         -mfpu options.
1477         (rs6000_handle_option): Process -mfpu options.
1478         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
1479         (enum fpu_type_t): New.
1480         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
1481         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
1482         fp_type.
1483         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
1484         (floatdidf2): Add TARGET_SINGLE_FPU condition.
1485         * config/rs6000/rs6000.opt (-mfpu): New.
1486         (-mxilinx-fpu): New.
1487         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
1488         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
1489         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
1490         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
1491         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
1492
1493 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
1494
1495         PR target/35760
1496         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
1497         LO_SUM on Darwin if mode has just one unit.
1498
1499 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
1500
1501         PR debug/37002
1502         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
1503         has been optimized out.
1504
1505 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
1506
1507         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
1508         instead of PIC_DIRECT_ADDR_P.
1509         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1510         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
1511         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
1512         (PIC_OFFSET_P): Rename to...
1513         (PCREL_SYMOFF_P): ...this.
1514         (PIC_DIRECT_ADDR_P): Delete.
1515         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
1516         PIC_OFFSET_P.
1517         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
1518         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
1519         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
1520         * config/sh/sh.c (print_operand): Remove CONST handling.
1521         (unspec_caller_rtx_p): Rewrite to use split_const and check
1522         the operands of UNSPEC bases.
1523         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
1524         with (unspec [A B] UNSPEC_SYMOFF).
1525         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
1526         UNSPEC_PCREL_SYMOFF.
1527         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1528         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
1529         (UNSPEC_EXTRACT_U16): Likewise.
1530         (UNSPEC_SYMOFF): Likewise.
1531         (UNSPEC_PCREL_SYMOFF): Likewise.
1532         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
1533         of constants.
1534         (movsi_const_16bit): Likewise.
1535         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
1536         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
1537         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
1538         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
1539         with (unspec [A B] UNSPEC_SYMOFF).
1540         (symPLT_label2reg): Replace (minus A (minus B pc)) with
1541          (unspec [A B] PCREL_UNSPEC_SYMOFF).
1542         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
1543         (Csu): Likewise UNSPEC_EXTRACT_U16.
1544         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1545         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
1546
1547 2008-10-10  Stepan Kasal  <skasal@redhat.com>
1548
1549         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
1550         for loop strip mining and loop blocking.
1551
1552 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1553
1554         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
1555         vary types depending on debug info.
1556
1557 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1558
1559         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
1560         before ensuring it's already computed.
1561
1562 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
1563
1564         * rtl.h (locator_eq): New decl.
1565         * cfglayout.c (locator_scope): New function.
1566         (insn_scope): Use it.
1567         (locator_eq): New function.
1568         (fixup_reorder_chain): Search for last insn in src bb
1569         that has locator set or first insn in dest bb.  Use
1570         locator_eq instead of == to compare locators.
1571         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
1572         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
1573         == to compare locators.
1574
1575         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
1576         as used.
1577         * gimple-low.c (lower_function_body, lower_gimple_return,
1578         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
1579         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
1580         goto_block on edges if goto_locus is known.
1581
1582         PR middle-end/37774
1583         * tree.h (get_object_alignment): Declare.
1584         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
1585         get_object_alignment if needed.
1586         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
1587         handling to ...
1588         (get_object_alignment): ... here.  New function.  Try harder to
1589         determine alignment from get_inner_reference returned offset.
1590
1591 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1592
1593         * graphite.c (gloog): Don't call find_unreachable_blocks
1594         before delte_unreachable_blocks.
1595
1596         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
1597         goto_locus of true_edge into RTL locator.
1598
1599 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
1600
1601         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
1602         (*jcc_btdi_mask_rex64): Ditto.
1603         (*jcc_btsi): Ditto.
1604         (*jcc_btsi_mask): Ditto.
1605         (*jcc_btsi_1): Ditto.
1606         (*jcc_btsi_mask_1): Ditto.
1607
1608 2008-10-08  Paul Brook  <paul@codesourcery.com>
1609
1610         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
1611         compatible profiler (__gnu_mcount_nc).
1612         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
1613
1614 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1615
1616         * config/i386/i386.c (initial_ix86_tune_features): Add
1617         X86_TUNE_USE_VECTOR_FP_CONVERTS.
1618         * config/i386/i386.h (ix86_tune_indices): Likewise.
1619         (TARGET_USE_VECTOR_FP_CONVERTS): New.
1620
1621         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
1622         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
1623         for FP to FP splitters.
1624
1625 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1626
1627         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
1628         splitter.
1629
1630 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1631
1632         PR target/36635
1633         PR target/37290
1634         PR rtl-optimization/37341
1635         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
1636         to ORIG_BB, pass through ORIG_BB recursively.
1637         (cse_condition_code_reg): Adjust caller.
1638
1639 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
1640
1641         * sdbout.c (sdbout_one_type): Treat the value type
1642         CONST_DECL for enumerals.
1643
1644 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1645
1646         * config/i386/i386.md: Remove trailing white spaces.
1647
1648 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1649
1650         PR rtl-optimization/37448
1651         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
1652         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
1653         Make unsigned long.
1654         (struct output_info) [count]: Renamed total_created and made
1655         unsigned long.
1656         (struct output_info) [size]: Renamed total_allocated and made
1657         unsigned long.
1658         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
1659         Properly keep track of desc->size.
1660         (print_statistics, dump_alloc_pool_statistics): Enhance the
1661         printing of statistics to print the number of elements and to use
1662         unsigned longs.
1663         
1664 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1665
1666         PR middle-end/37576
1667         * opts.h (CL_SAVE): Move up to flags range.
1668         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
1669         CL_COMMON): Renumber.
1670         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
1671         * opts.c (common_handle_option): Revert last change.
1672
1673 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1674
1675         * config/i386/i386-protos.h (ix86_schedule): New.
1676
1677         * config/i386/i386.c (ix86_schedule): New.
1678         (override_options): Add schedule to processor_alias_table.  Set
1679         ix86_schedule from the schedule field in processor_alias_table.
1680         (ix86_function_specific_save): Save ix86_schedule.
1681         (ix86_function_specific_restore): Restore ix86_schedule.
1682
1683         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
1684         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
1685         and generic32.
1686
1687         * config/i386/i386.opt: Add schedule.
1688
1689         * config/i386/ppro.md: Remove generic32.
1690
1691 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
1692
1693         PR c/35437
1694         * expr.c (count_type_elements): Handle ERROR_MARK.
1695
1696 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1697
1698         PR debug/29609
1699         PR debug/36690
1700         PR debug/37616
1701         * basic-block.h (struct edge_def): Add goto_block field.
1702         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
1703         one insn with locus corresponding to edge's goto_locus if !optimize.
1704         * profile.c (branch_prob): Copy edge's goto_block.
1705         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
1706         emitted jumps.
1707         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
1708         locator in between the merged basic blocks if !optimize and needed.
1709         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
1710         goto_locus into RTL locator.  For unconditional jump use that
1711         locator for the jump insn.
1712         (expand_gimple_cond): Convert goto_block and goto_locus into
1713         RTL locator for all remaining edges.  For unconditional jump
1714         use that locator for the jump insn.
1715         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
1716         there is more than one edge or insn locator along the forwarding
1717         edges and !optimize.  If there is just one, set e->goto_locus.
1718         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
1719         edge's goto_block.
1720         (move_block_to_fn): Adjust edge's goto_block.
1721
1722 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1723
1724         PR middle-end/37731
1725         * expmed.c (expand_mult): Properly check DImode constant in
1726         CONST_DOUBLE.
1727
1728 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1729
1730         PR debug/37738
1731         * dwarf2out.c (common_block_die_table): New variable.
1732         (common_block_die_table_hash, common_block_die_table_eq): New
1733         functions.
1734         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
1735         COMMON block in the current scope rather than globally.  Optimize
1736         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
1737         DW_OP_addr SYMBOL_REF+off.
1738
1739 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
1740
1741         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
1742         Return true for non-addressable GIMPLE operands.
1743
1744 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1745
1746         PR target/24765
1747         * config/i386/i386.c (initial_ix86_tune_features): Remove
1748         X86_TUNE_USE_BIT_TEST.
1749         * config/i386/i386.h (ix86_tune_indices): Likewise.
1750         (TARGET_USE_BIT_TEST): Removed.
1751
1752 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1753
1754         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
1755
1756 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
1757
1758         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
1759         (mul<mode>3_mul3): ... into this new template.
1760
1761 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1762
1763         * gimplify.c (gimplify_arg): Add location argument.  Use it.
1764         (gimplify_call_expr): Pass location to gimplify_arg.
1765         (gimplify_modify_expr_to_memcpy): Same.
1766         (gimplify_modify_expr_to_memset): Same.
1767
1768 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1769
1770         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1771         Update calls to build_unary_op and build_indirect_ref for location
1772         changes.
1773
1774 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1775
1776         build_modify_expr.
1777         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
1778         * c-typeck.c (array_to_pointer_conversion): Pass location to
1779         build_unary_op.
1780         (function_to_pointer_conversion): Use error_at and warning_at.
1781         (build_indirect_ref): Same.
1782         (build_array_ref): Pass location to build_binary_op.
1783         (parser_build_unary_op): Do not set location after calling
1784         build_unary_op.
1785         (build_unary_op): Add location argument.  Use it throughout.  Set
1786         EXPR_LOCATION before returning new tree.
1787         (build_modify_expr): Same.
1788         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
1789         returning node.
1790         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
1791         build_indirect_ref, build_modify_expr.
1792         (c_finish_omp_for): Same.  Use error_at instead of error.
1793         * c-common.c (c_common_truthvalue_conversion): Pass location to
1794         build_unary_op.
1795         (warn_for_div_by_zero): Add location argument.
1796         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
1797         build_unary_op, warn_for_div_by_zero.
1798         * c-parser.c (c_parser_typeof_specifier): Use
1799         protected_set_expr_location.
1800         (c_parser_statement_after_labels): Same.
1801         (c_parser_condition): Same.
1802         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
1803         (c_parser_conditional_expression): Use protected_set_expr_location.
1804         (c_parser_unary_expression): Pass location to build_indirect_ref.
1805         (c_parser_postfix_expression_after_primary): Pass location to
1806         build_indirect_ref, build_unary_op.
1807         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
1808
1809 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
1810
1811         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
1812         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
1813         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
1814         r14000 and r16000.
1815         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
1816         (mips_issue_rate): Handle PROCESSOR_R10000.
1817         * config/mips/mips.md (cpu): Add r10000.
1818         Include r10000.md.
1819         * config/mips/10000.md: New file.
1820
1821 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1822
1823         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
1824         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
1825         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
1826
1827 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1828
1829         * config/darwin-protos.h (machopic_function_base_name): Delete.
1830         (machopic_function_base_sym): Likewise.
1831         (machopic_gen_offset): Declare.
1832         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
1833         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
1834         * config/darwin.c (machopic_function_base_name): Delete.
1835         (machopic_function_base_sym): Likewise.
1836         (gen_pic_offset): Rename to...
1837         (machopic_gen_offset): ...this and remove the pic_base argument.
1838         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
1839         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
1840         crtl->uses_pic_offset_table.
1841         (machopic_indirect_data_reference): Use new machopic_gen_offset
1842         interface.
1843         (machopic_legitimize_pic_address): Likewise.
1844         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
1845
1846         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
1847         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
1848         * config/i386/i386.c (output_set_got): Likewise.
1849         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
1850         instead of a MINUS.
1851         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
1852         (legitimate_address_p): Likewise.
1853         (output_pic_addr_const): Likewise.
1854         (output_addr_const_extra): Likewise.
1855         (ix86_delegitimize_address): Expect darwin_local_data_pic to
1856         match an UNSPEC rather than a MINUS.
1857         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
1858         (builtin_setjmp_receiver): Use machopic_gen_offset.
1859         * config/i386/predicates.md (pic_symbolic_operand): Handle
1860         UNSPEC_MACHOPIC_OFFSET.
1861
1862         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
1863         Use machopic_gen_offset and machopic_operand_p.
1864         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
1865         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
1866         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
1867         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
1868         Set crtl->uses_pic_offset_table.
1869
1870 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1871
1872         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
1873         Declare.
1874         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
1875         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
1876         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
1877         (constant_pool_expr_p): Use split_const and check the base.
1878         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
1879         instead of a MINUS.
1880         (legitimate_constant_pool_address_p): Check toc_relative_p
1881         instead of constant_pool_expr_p.
1882         (print_operand_address): Always use output_addr_const for
1883         constant pool addresses.
1884         (rs6000_output_addr_const_extra): New function.
1885         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
1886
1887 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
1888
1889         PR middle-end/37535
1890
1891         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1892         (mark_ref_live, mark_ref_dead): Use them.
1893         (def_conflicts_with_inputs_p): Remove.
1894         (mark_early_clobbers): New function.
1895         (process_bb_node_lives): Call preprocess_constraints and
1896         mark_early_clobbers.
1897
1898         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
1899
1900 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
1901
1902         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
1903         lib with -mthread switch.
1904
1905 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
1906
1907         PR c++/37410
1908         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
1909         function in two, making it call a new and reusable
1910         dwarf2out_imported_module_or_decl() that takes the containing
1911         BLOCK of the declaration in argument.
1912         (dwarf2out_imported_module_or_decl_real): New function.
1913         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
1914         IMPORTED_DECL in account.
1915         * tree.def: Added IMPORTED_DECL node type.
1916         * tree.h: Added accessors for IMPORTED_DECL nodes.
1917         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
1918
1919 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1920
1921         * doc/gimple.texi: Fix some typos, wrap some long lines,
1922         fix some broken wraps with continuations.
1923         * tree-ssa-reassoc.c: Fix comment typos.
1924
1925 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1926
1927         PR target/37603
1928         * pa.c (legitimize_pic_address): Force function labels to memory in
1929         word mode.
1930
1931 2008-10-04  Anton Blanchard  <anton@samba.org>
1932
1933         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
1934         (rs6000_split_atomic_op): Same.
1935         (rs6000_split_compare_and_swap): Same.
1936         (rs6000_split_compare_and_swapqhi): Same.
1937
1938 2008-10-04  Richard Guenther  <rguenther@suse.de>
1939
1940         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
1941         instead of pointer equality.
1942         (vn_nary_op_eq): Likewise.
1943
1944 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1945
1946         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
1947         condition.
1948         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
1949         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
1950
1951 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
1952
1953         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1954         Revert previous change.
1955
1956 2008-10-03  Tom Tromey  <tromey@redhat.com>
1957
1958         * stringpool.c (ggc_alloc_string): Terminate string.
1959
1960 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
1961
1962         * gimplify.c (gimplify_function_tree): For -finstrument-functions
1963         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
1964         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
1965
1966         PR debug/37726
1967         * gimplify.c (declare_vars): Use gimple_bind_block instead of
1968         gimple_block.
1969
1970 2008-10-03  Pascal Obry  <obry@adacore.com>
1971
1972         * gcov.c (create_file_names): Properly handle UNIX and DOS
1973         directory separators.
1974         (make_gcov_file_name): Likewise + convert the ':' DOS drive
1975         separator to '~' to ensure clean filenames on Windows.
1976
1977 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
1978
1979         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1980         Add a null terminator to the stripped name.
1981
1982 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
1983
1984         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
1985         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1986         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
1987         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
1988         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1989         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
1990         TARGET_SINGLE_FLOAT.
1991
1992 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
1993
1994         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
1995
1996 2008-10-02  Richard Guenther  <rguenther@suse.de>
1997
1998         PR middle-end/37713
1999         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
2000         and VECTOR_TYPE recurse with useless_type_conversion_p which
2001         properly handles void pointer conversion.
2002
2003 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
2004
2005         PR target/37528
2006         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
2007         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
2008
2009 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2010
2011         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2012         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
2013         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
2014         they translate to non builtins.
2015         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
2016         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
2017         __builtin_vec_promote, __builtin_vec_extract, and
2018         __builtin_vec_insert.
2019         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
2020         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
2021         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
2022         * config/rs6000/altivec.h (vec_extract): Define
2023         (vec_insert): Define.
2024         (vec_splats): Define.
2025         (vec_promote): Define.
2026
2027 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2028             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
2029             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2030
2031         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
2032         Altivec intrinsics.
2033         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
2034         prototype.  Add new parameter, blk.
2035         Use BLKmode for the MEM if blk is true.
2036         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
2037         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
2038         ALTIVEC_BUILTIN_STVRXL.
2039         Update usage of altivec_expand_lv_builtin.
2040         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
2041         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
2042         (altivec_init_builtins): If compiling for the Cell, also define the
2043         cell VMX builtins.
2044         * config/rs6000/rs6000.h (rs6000_builtins): Define
2045         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
2046         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
2047         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
2048         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
2049         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
2050         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
2051         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
2052         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
2053         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
2054         UNSPEC_STVRX, and UNSPEC_STVRXL.
2055         (altivec_lvlx): New pattern.
2056         (altivec_lvlxl): New pattern.
2057         (altivec_lvrx): New pattern.
2058         (altivec_lvrxl): New pattern.
2059         (altivec_stvlx): New pattern.
2060         (altivec_stvlxl): New pattern.
2061         (altivec_stvrx): New pattern.
2062         (altivec_stvrxl): New pattern.
2063         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
2064         (vec_lvlxl): Likewise.
2065         (vec_lvrx): Define if PPU is defined.
2066         (vec_lvrxl): Likewise.
2067         (vec_stvlx): Define if PPU is defined.
2068         (vec_stvlxl): Likewise.
2069         (vec_stvrx): Define if PPU is defined.
2070         (vec_stvrxl): Likewise.
2071
2072 2008-10-01  Geert Bosch  <bosch@adacore.com>
2073
2074         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
2075
2076 2008-10-01  Richard Guenther  <rguenther@suse.de>
2077
2078         PR tree-optimization/37617
2079         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
2080         do not add to the NEW_SETS.
2081
2082 2008-10-01  Richard Guenther  <rguenther@suse.de>
2083
2084         PR middle-end/37285
2085         * tree-vrp.c (execute_vrp): If we optimized away the default
2086         case make sure to promote the label that got in place of it
2087         to a default case label.
2088
2089 2008-10-01  Richard Henderson  <rth@redhat.com>
2090
2091         PR tree-opt/35737
2092         * tree-complex.c (set_component_ssa_name): Don't optimize
2093         is_gimple_min_invariant values with ssa_names in abnormal phis.
2094
2095 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2096
2097         PR tree-optimization/37662
2098         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
2099         commutative binary operation if they are in the wrong order and
2100         fold_build2 produces non-GIMPLE.
2101
2102 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
2103
2104         PR tree-optimization/37662
2105         PR tree-optimization/37663
2106         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
2107         get_value_range with non-SSA_NAME.  Don't assert operands have been
2108         folded, instead just bail out.
2109
2110 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2111
2112         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
2113
2114 2008-09-30  Richard Guenther  <rguenther@suse.de>
2115
2116         PR middle-end/37491
2117         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
2118         build restrict-qualified pointers.
2119         (vectorizable_store): Move alias check later.
2120         (vectorizable_load): Likewise.
2121
2122 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2123
2124         * c-common.c (empty_if_body_warning): Remove.
2125         * c-common.h (empty_if_body_warning): Remove.
2126         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
2127         here the -Wempty-body warning for `if' and `else' statements.
2128         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
2129
2130 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
2131
2132         * config/i386/i386.opt: Add msse2avx.
2133
2134         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
2135         * config/i386/linux64.h (ASM_SPEC): Likewise.
2136
2137         * doc/invoke.texi: Document -msse2avx.
2138
2139 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2140
2141         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
2142
2143 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
2144
2145         * ifcvt.c (noce_emit_store_flag): If using condition from original
2146         jump, reverse it if if_info->cond was reversed.
2147
2148 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2149
2150         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
2151         non-constant memory if it cannot be forced to constant memory.
2152         Overhaul surrounding code and factor out common condition.
2153
2154 2008-09-29  Jeff Law <law@redhat.com>
2155
2156         * reload1.c (alter_reg): Add missing curly braces.
2157
2158 2008-09-29  Michael J. Eager  <eager@eagercon.com>
2159
2160         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2161         are easy.
2162         * config/rs6000/rs6000.c (rs6000_override_options): Move
2163         rs6000_init_hard_regno_mode_ok after all options changed.
2164         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2165         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2166         -msimple-fpu flags.  Add warning messages if single FP not configured.
2167         (rs6000_file_start): Output gnu_attribute for single-float.
2168         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2169         (rs6000_legitimize_address): Likewise.
2170         (rs6000_legitimize_reload_address): Likewise.
2171         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2172         TARGET_SINGLE_FLOAT.
2173         (function_arg_advance): Likewise (partial conversion).
2174         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2175         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2176         TARGET_SINGLE_FLOAT.
2177         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2178         (rs6000_emit_prologue): Likewise.
2179         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2180         TARGET_SINGLE_FLOAT.
2181         (rs6000_libcall_value): Likewise.
2182         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2183         (TARGET_DOUBLE_FLOAT): New default to 1
2184         (TARGET_SIMPLE_FPU): New default to 0
2185         (TARGET_SINGLE_FPU): New default to 0
2186         (TARGET_SINGLE_FLOAT_MODE): New.
2187         (TARGET_DOUBLE_FLOAT_MODE): New.
2188         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2189         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2190         UNITS_PER_FP_WORD
2191         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2192         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2193         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2194         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2195         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2196         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2197         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2198         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2199         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2200         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2201         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2202         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2203         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2204         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2205         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2206         cmptf_internal1, *cmptf_internal2): Condition on
2207         TARGET_DOUBLE_FLOAT.
2208         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2209         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2210         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2211         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2212         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2213         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2214         TARGET_SINGLE_FLOAT.
2215         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2216         * config/rs6000/rs6000.opt (-msingle-float): New.
2217         (-mdouble-float): New.
2218         (-msimple-fpu): New.
2219         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2220         -msingle-float, -mdouble-float, -msimple-fpu options.
2221         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2222         _SOFT_DOUBLE for -msingle-float.
2223         * config.gcc: New config for target=powerpc-xilinx-eabi.
2224
2225 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
2226
2227         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
2228         have exit and entry.
2229         (new_scop): Take entry and exit edge to define new SCoP.
2230         (sd_region_p): New structure used during SCoP detection.
2231         (move_scops): Delete.
2232         (move_sd_regions): New.
2233         (scopdet_info): Change the definition from edges back to basic_blocks.
2234         (scopdet_edge_info):  Work on basic_blocks and rename to
2235         scopdet_basic_block_info.
2236         (split_difficult_bb): At the moment removed. We should later
2237         add it at another place.
2238         (build_scops_1): Work on basic_blocks.
2239         (bb_in_sd_region): New.
2240         (find_single_entry_edge): New.
2241         (find_single_exit_edge): New.
2242         (create_single_entry_edge): New.
2243         (sd_region_without_exit): New.
2244         (create_single_exit_edge): New.
2245         (unmark_exit_edges): New.
2246         (mark_exit_edges): New.
2247         (create_sese_edges): New.
2248         (build_graphite_scops): New.
2249         (build_scops): Make SCoPs SESE.
2250         (limit_scops): Use the new functions.
2251
2252 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
2253
2254         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
2255
2256 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2257
2258         PR target/37640
2259         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
2260         address to a register before taking the lower part.
2261
2262 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2263
2264         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
2265         for SHmedia.
2266
2267 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2268             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
2269
2270         PR tree-opt/36891
2271         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
2272         the newly created variable.
2273         Create a VECTOR_CST of all 1s for vector types.
2274
2275 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2276
2277         PR middle-end/36575
2278         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
2279
2280 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2281
2282         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
2283         order to convert between modes.
2284         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
2285
2286 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2287
2288         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
2289         if needed.
2290
2291 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2292
2293         Revert:
2294         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2295         * ira-lives.c:...
2296         * doc/rtl.texi:...
2297
2298 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
2299
2300         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
2301         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
2302         them to yield false with MIPS16.
2303
2304 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
2305
2306         PR middle-end/37275
2307         * dwarf2out.c (tls_mem_loc_descriptor): New function.
2308         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
2309         mem_loc_descriptor failed.  Accept UNSPEC.
2310         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
2311         fail if one of the loc_descriptor calls for pieces failed.
2312         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
2313         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
2314         if loc_descriptor_from_tree_1 on offset failed.
2315
2316         PR middle-end/37576
2317         * opts.c (common_handle_option): Don't call print_specific_help with
2318         CL_SAVE as first argument.
2319
2320 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
2321             Steve Ellcey  <sje@cup.hp.com>
2322
2323         * configure: Regenerate for new libtool.
2324         * aclocal.m4: Ditto.
2325
2326 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
2327
2328         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
2329         alias set on MEM when saving stack pointer.
2330         * config/rs6000/rs6000.md (allocate_stack): Likewise
2331
2332 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
2333
2334         PR tree-optimization/37574
2335         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
2336         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
2337         instead of vector_type for constants. Take computation out of loop.
2338         (vect_get_vec_def_for_operand): Use only vectype for constant case,
2339         and use only vector_type for invariant case.
2340         (get_initial_def_for_reduction): Use vectype instead of vector_type.
2341
2342 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
2343
2344         PR c/37645
2345         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
2346         the decl is a VAR_DECL or FUNCTION_DECL.
2347
2348 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2349
2350         PR middle-end/37535
2351         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2352         (mark_ref_live, mark_ref_dead): Use them.
2353         (def_conflicts_with_inputs_p): Remove.
2354         (mark_early_clobbers): New function.
2355         (process_bb_node_lives): Call preprocess_constraints and
2356         mark_early_clobbers.
2357
2358         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
2359
2360 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2361
2362         PR middle-end/37448
2363         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
2364         (ira_compress_allocno_live_ranges): New prototype.
2365
2366         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
2367         (coalesced_allocnos_living_at_program_points): New.
2368         (coalesced_allocnos_live_at_points_p,
2369         set_coalesced_allocnos_live_points): New functions.
2370         (coalesce_spill_slots): Rewrite.
2371         
2372         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
2373         ira_compress_allocno_live_ranges): New functions.
2374
2375         * ira-build.c (ira_flattening): Call
2376         ira_compress_allocno_live_ranges.
2377         (ira_build): Ditto.
2378
2379 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
2380
2381         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
2382         optimization.
2383
2384 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
2385
2386         * combine.c (make_compound_operation): Handle the 'E' format.
2387         (count_rtxs): Likewise.
2388         (update_table_tick): Likewise.
2389         (get_last_value_validate): Likewise.
2390
2391 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
2392
2393         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
2394
2395 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
2396
2397         * matrix-reorg.c (transform_allocation_sites): Initializers 
2398         added to avoid the warning.
2399
2400 2008-09-25  Martin Jambor  <mjambor@suse.cz>
2401
2402         * cgraph.c (free_nodes): New variable.
2403         (NEXT_FREE_NODE): New macro.
2404         (cgraph_create_node): Reuse nodes from the free list.  Do not
2405         update uid if doing so.
2406         (cgraph_remove_node): Add the node to the free list.
2407
2408 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
2409
2410         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2411
2412 2008-09-24  Richard Henderson  <rth@redhat.com>
2413
2414         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
2415         * unwind-dw2.c (execute_stack_op): Handle it.
2416
2417 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
2418
2419         Revert:
2420         2008-09-24  Michael J. Eager  <eager@eagercon.com>
2421
2422 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
2423
2424         * c-common.c (fname_decl): New location argument.
2425         * c-common.h (fname_decl): Same.
2426         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
2427         {warning,error}.
2428         (c_parser_typeof_specifier): Same.
2429         (c_parser_parms_list_declarator): Same.
2430         (c_parser_asm_string_literal): Same.
2431         (c_parser_compound_statement_nostart): Same.
2432         (c_parser_label): Same.
2433         (c_parser_do_statement): Same.
2434         (c_parser_asm_statement): Same.
2435         (c_parser_unary_expression): Same.
2436         (c_parser_sizeof_expression): Same.
2437         (c_parser_postfix_expression): Same.
2438         (c_parser_pragma): Same.
2439         (c_parser_omp_clause_collapse): Same.
2440         (c_parser_omp_clause_num_threads): Same.
2441         (c_parser_omp_clause_schedule): Same.
2442         (c_parser_omp_all_clauses): Same.
2443         (c_parser_omp_sections_scope): Same.
2444         (c_parser_omp_for_loop): Same.  Pass condition's location to
2445         c_objc_common_truthvalue_conversion.
2446         (c_parser_enum_specifier): Remove comment.
2447
2448 2008-09-24  Michael J. Eager  <eager@eagercon.com>
2449
2450         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2451         are easy.
2452         * config/rs6000/rs6000.c (rs6000_override_options): Move
2453         rs6000_init_hard_regno_mode_ok after all options changed.
2454         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2455         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2456         -msimple-fpu flags.  Add warning messages if single FP not configured.
2457         (rs6000_file_start): Output gnu_attribute for single-float.
2458         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2459         (rs6000_legitimize_address): Likewise.
2460         (rs6000_legitimize_reload_address): Likewise.
2461         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2462         TARGET_SINGLE_FLOAT.
2463         (function_arg_advance): Likewise.
2464         (function_arg): Likewise.
2465         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2466         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2467         TARGET_SINGLE_FLOAT.
2468         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2469         (rs6000_emit_prologue): Likewise.
2470         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2471         TARGET_SINGLE_FLOAT.
2472         (rs6000_libcall_value): Likewise.
2473         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2474         (TARGET_DOUBLE_FLOAT): New default to 1
2475         (TARGET_SIMPLE_FPU): New default to 0
2476         (TARGET_SINGLE_FPU): New default to 0
2477         (TARGET_SINGLE_FLOAT_MODE): New.
2478         (TARGET_DOUBLE_FLOAT_MODE): New.
2479         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2480         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2481         UNITS_PER_FP_WORD
2482         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2483         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2484         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2485         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2486         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2487         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2488         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2489         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2490         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2491         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2492         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2493         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2494         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2495         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2496         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2497         cmptf_internal1, *cmptf_internal2): Condition on
2498         TARGET_DOUBLE_FLOAT.
2499         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2500         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2501         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2502         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2503         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2504         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2505         TARGET_SINGLE_FLOAT.
2506         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2507         * config/rs6000/rs6000.opt (-msingle-float): New.
2508         (-mdouble-float): New.
2509         (-msimple-fpu): New.
2510         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2511         -msingle-float, -mdouble-float, -msimple-fpu options.
2512         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2513         _SOFT_DOUBLE for -msingle-float.
2514         * config.gcc: New config for target=powerpc-xilinx-eabi.
2515
2516 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2517
2518         * config/sparc/constraints.md: New file.
2519         * config/sparc/sparc.md: Include it.
2520         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
2521         (sparc_extra_constraint_check): Delete.
2522         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
2523         (memory_ok_for_ldd): New predicate.
2524         (sparc_extra_constraint_check): Delete.
2525         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
2526         (CONST_OK_FOR_LETTER_P): Likewise.
2527         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2528         (EXTRA_CONSTRAINT): Likewise.
2529
2530 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
2531
2532         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
2533
2534 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2535
2536         * alias.c (find_base_value): Use FIND_BASE_TERM.
2537         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
2538
2539 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2540
2541         * config/i386/i386.c: Include cselib.h.
2542         (ix86_pic_register_p): New function.
2543         (ix86_delegitimize_address): Use it to check for the PIC register.
2544
2545 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2546
2547         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
2548         * config/i386/i386.c (ix86_find_base_term): Don't check for
2549         SYMBOL_REF and LABEL_REF.
2550
2551 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2552
2553         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
2554         constant PLUS in a CONST.
2555
2556 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
2557
2558         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
2559         check for sibcall support for w64.
2560
2561 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2562
2563         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
2564
2565 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2566
2567         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
2568         parser_build_binary_op.
2569         * c-decl.c (build_enumerator): Pass location to build_binary_op.
2570         * c-typeck.c (build_array_ref): Same.
2571         (parser_build_unary_op): New location argument.
2572         (pointer_diff): Pass location to build_binary_op,
2573         c_objc_common_truthvalue_conversion.
2574         (build_modify_expr): Same.
2575         (build_unary_op): New location argument.
2576         (build_binary_op): New location argument.
2577         (c_objc_common_truthvalue_conversion): Pass location to
2578         c_*common_truthvalue_conversion.
2579         * c-convert.c (convert): Same.
2580         * c-common.c (binary_op_error): New location argument.
2581         (pointer_int_sum): Pass location to build_binary_op.
2582         (c_common_truthvalue_conversion): New location argument.
2583         (warn_for_sign_compare): Same.
2584         * c-common.h: Add location argument to c_common_truthvalue_conversion,
2585         binary_op_error, build_binary_op, warn_for_sign_compare.
2586         * c-parser.c (c_parser_condition): Pass location to
2587         c_*common_truthvalue_conversion.
2588         (c_parser_conditional_expression): Save condition's location and pass
2589         it on down.
2590         (c_parser_binary_expression): Same, but for the binary operator's
2591         location.
2592         (c_parser_omp_for_loop): Pass location to
2593         c_objc_common_truthvalue_conversion.
2594
2595 2008-09-23  Martin Jambor  <mjambor@suse.cz>
2596
2597         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
2598         (cgraph_node_remove_callees): New temporary f.  Hold the next item
2599         in f when looping.
2600         (cgraph_node_remove_callers): Likewise.
2601
2602         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
2603         (ipa_node_removal_hook): Likewise.
2604
2605         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
2606         gimple_call_copy_skip_args and moved to the gimple_call section.
2607         * gimple.c (gimple_copy_call_skip_args): Renamed to
2608         gimple_call_copy_skip_args.  Changed al users.
2609
2610 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
2611
2612         * ira-color.c (start_allocno_priorities): Rename to
2613         setup_allocno_priorities.  Use costs and
2614         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
2615         range lengths.  Get rid off doubles.
2616         (ira_fast_allocations): Call start_allocno_priorities.
2617         
2618 2008-09-22  David Daney  <ddaney@avtrex.com>
2619
2620         PR target/37593
2621         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
2622         register if TARGET_LONG_CALLS.
2623
2624 2008-09-22  Richard Guenther  <rguenther@suse.de>
2625
2626         PR tree-optimization/37145
2627         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
2628         value-numbering union accesses with their offset and size only.
2629         (visit_reference_op_load): Fix simplification of inserted conversions.
2630         * tree-ssa-pre.c (find_or_generate_expression): Do not
2631         recursively generate expressions if running FRE.
2632
2633 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
2634
2635         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
2636         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
2637         New patterns.
2638
2639 2008-09-22  Richard Guenther  <rguenther@suse.de>
2640
2641         PR tree-optimization/37145
2642         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
2643         (phi_translate_1): Constant fold references.
2644
2645 2008-09-22  Ira Rosen  <irar@il.ibm.com>
2646
2647         PR tree-optimization/37482
2648         * tree-vectorizer.h (struct _slp_instance): Add new field.
2649         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
2650         (get_earlier_stmt): New function.
2651         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
2652         function.
2653         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
2654         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
2655         asserts that GSI points to the scalar statement being vectorized.
2656         Set new statement location according to GSI.
2657         (vect_schedule_slp_instance): Use GSI of
2658         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
2659
2660 2008-09-21  Jan Hubicka  <jh@suse.cz>
2661
2662         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
2663         (ipcp_insert_stage): Update dead_nodes bitmap.
2664
2665 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
2666
2667         PR target/37528 
2668         * config/i386/t-cygming (SHLIB_LC): Remove.
2669         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
2670         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
2671
2672 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
2673
2674         PR middle-end/37170
2675         PR middle-end/37280
2676         * final.c (mark_symbol_ref_as_used): New helper function.
2677         (output_operand): Instead of just looking inside MEMs for
2678         SYMBOL_REFs, use new helper function and for_each_rtx.
2679         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
2680         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
2681         Make head comment more general.
2682         * config/darwin.c (machopic_output_indirection): Handle weak
2683         references here, like in assemble_external.
2684
2685 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
2686
2687         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
2688         (sparc_emit_float_lib_cmp): Change return type.
2689         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
2690         (gen_compare_operator): New function.
2691         (sparc_emit_float_lib_cmp): Return the new operator to be used in
2692         the comparison sequence.  Minor tweaks.
2693         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
2694         that the final operator and the result of sparc_emit_float_lib_cmp
2695         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
2696         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
2697         buneq, bunge, bunle, bltgt): Assert that the final operator and the
2698         result of sparc_emit_float_lib_cmp match for software TFmode.
2699         (movqicc, movhicc, movsicc, movdicc): Merge into...
2700         (mov<I:mode>cc): ...this.
2701         (movsfcc, movdfcc, movtfcc): Merge into...
2702         (mov<F:mode>cc): ...this.
2703         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
2704         into...
2705         (mov<I:mode>_cc_v9): ...this.
2706         (movdi_cc_sp64_trunc): Delete.
2707         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
2708         movdi_cc_reg_sp64): Merge into...
2709         (mov<I:mode>_cc_reg_sp64): ...this.
2710         (movsf_cc_sp64): Rename into...
2711         (movsf_cc_v9): ...this.
2712         (movdf_cc_sp64): Rename into...
2713         (movdf_cc_v9): ...this.
2714         (movtf_cc_hq_sp64): Rename into...
2715         (movtf_cc_hq_v9): ...this.
2716         (movtf_cc_sp64): Rename into...
2717         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
2718
2719 2008-09-21  Diego Novillo  <dnovillo@google.com>
2720
2721         * doc/gccint.texi: Include generic.texi and gimple.texi.
2722         Re-order index.
2723         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
2724         (GIMPLE): Move to gimple.texi.
2725         (Annotations): Remove references to to stmt_ann_t and
2726         ssa_name_ann_t.
2727         (SSA Operands): Rename from 'Statement Operands'.
2728         * doc/generic.texi: New.
2729         * doc/gimple.texi: New.
2730         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
2731         * Makefile.in (TEXI_GCCINT_FILES):
2732         * gimple.c (gimple_copy_call_skip_args): Rename from
2733         giple_copy_call_skip_args.  Update all users.
2734         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
2735
2736 2008-09-21  Ira Rosen  <irar@il.ibm.com>
2737
2738         PR tree-optimization/37539
2739         * tree-vect-transform.c (vect_transform_strided_load): Save vector
2740         statement in related statement field only for the first load of the
2741         group of loads with the same data reference.
2742
2743 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
2744
2745         * config/mips/mips.h (TUNE_OCTEON): New macro.
2746         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
2747         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
2748         * config/mips/octeon.md: New file.
2749         * config/mips/mips.md: Include octeon.md.  Restore
2750         semi-alphabetical order of include files.
2751
2752 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
2753
2754         PR target/37571
2755         * config/i386/i386.md (*jcc_fused_1): Removed.
2756         (*jcc_fused_2): Likewise.
2757         (*jcc_fused_3): Likewise.
2758         (*jcc_fused_4): Likewise.
2759
2760 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
2761
2762         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
2763         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
2764         * target.h (gcc_target): Add ira_cover_classes.
2765         * ira.c: Remove IRA_COVER_CLASSES guards.
2766         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
2767         instead of IRA_COVER_CLASSES.
2768         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
2769         (setup_class_translate): Likewise.
2770         (setup_reg_class_intersect_union): Likewise.
2771         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
2772         test of targetm.ira_cover_classes.
2773         * opts.c (decode_options): Use targetm.ira_cover_classes instead
2774         of IRA_COVER_CLASSES.
2775         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
2776         (TARGET_INITIALIZER): Include it.
2777         * targhooks.h (default_ira_cover_classes): Declare.
2778         * targhooks.c (default_ira_cover_classes): New function.
2779
2780 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
2781         
2782         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
2783         
2784 2008-09-19  Ian Lance Taylor  <iant@google.com>
2785
2786         * varasm.c (narrowing_initializer_constant_valid_p): Return
2787         NULL_TREE if ENDTYPE is not an integer.
2788
2789 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2790
2791         PR tree-opt/30930
2792         * tree-ssa.c (execute_update_addresses_taken): Also update
2793         DECL_GIMPLE_REG_P for vector and complex types.
2794
2795 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
2796             Jan Hubicka  <jh@suse.cz>
2797
2798         PR middle-end/37567
2799         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
2800         empty before freeing them.
2801         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
2802
2803 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
2804
2805         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
2806         * config/xtensa/predicates.md (tls_symbol_operand): New.
2807         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
2808         (TARGET_CANNOT_FORCE_MEM): Define.
2809         (xtensa_tls_symbol_p): New.
2810         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
2811         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
2812         (xtensa_tls_module_base): New.
2813         (xtensa_call_tls_desc): New.
2814         (xtensa_legitimize_tls_address): New.
2815         (xtensa_legitimize_address): Handle TLS symbols.
2816         (xtensa_tls_referenced_p_1): New.
2817         (xtensa_tls_referenced_p): New.
2818         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
2819         UNSPEC_DTPOFF.
2820         (XTENSA_BUILTIN_THREAD_POINTER): New.
2821         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
2822         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
2823         builtin.  Add declarations for __builtin_thread_pointer and
2824         __builtin_set_thread_pointer.
2825         (xtensa_fold_builtin): Recognize new builtins.
2826         (xtensa_expand_builtin): Expand new builtins.
2827         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
2828         (TARGET_THREADPTR): Define.
2829         (HAVE_AS_TLS): Define default value.
2830         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
2831         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
2832         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
2833         (UNSPECV_SET_TP): New.
2834         (sym_TPOFF, sym_DTPOFF): New.
2835         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
2836         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
2837         * configure: Regenerated.
2838         
2839 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
2840
2841         PR target/37394
2842         * config/ia64/ia64.c (ia64_optimization_options): Move
2843         checking and setting flag_schedule_insns_after_reload and
2844         ia64_flag_schedule_insns2 back to ...
2845         (ia64_override_options): Here.
2846
2847 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2848
2849         PR rtl-opt/37451
2850         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2851         zero extend count after the correction to it is done.
2852         (doloop_optimize): Update call to doloop_modify, don't zero extend
2853         count before call.
2854
2855 2008-09-18  Martin Jambor  <mjambor@suse.cz>
2856
2857         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
2858
2859         * ipa-prop.c: Correct comments.
2860         * ipa-prop.h: Likewise.
2861
2862 2008-09-18  Jan Hubicka  <jh@suse.cz>
2863
2864         PR middle-end/37448
2865         * ipa-reference.c (ipa_reference_local_vars_info_d,
2866         ipa_reference_global_vars_info_d,
2867         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2868         ipa_reference_vars_info_t): Move here from ipa-reference.h
2869         (node_duplication_hook_holder, node_removal_hook_holder): New.
2870         (get_reference_vars_info_from_cgraph): Rename to ...
2871         (get_reference_vars_info): ... this one, use cgraph uids.
2872         (get_local_reference_vars_info, get_global_reference_vars_info):
2873         Use cgraph instead of decl.
2874         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2875         Remove.
2876         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
2877         ipa_reference_get_written_global,
2878         ipa_reference_get_not_written_global): Use cgraph argument.
2879         (check_call): Simplify avail check.
2880         (scan_stmt_for_static_refs): Update.
2881         (propagate_bits): Update.
2882         (merge_callee_local_info): Remove.
2883         (init_function_info): Use cgraph nodes.
2884         (clean_function_local_data): Break out from ...
2885         (clean_function): ... here.
2886         (copy_local_bitmap, copy_global_bitmap): New functions.
2887         (duplicate_node_data, remove_node_data): New functions.
2888         (generate_summary): Register hooks; use visibility instead of
2889         master clones.
2890         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
2891         * ipa-reference.h (ipa_reference_local_vars_info_d,
2892         ipa_reference_global_vars_info_d,
2893         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2894         ipa_reference_vars_info_t): Move to ipa-reference.c
2895         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2896         Remove.
2897         (ipa_reference_get_read_global, ipa_reference_get_written_global,
2898         ipa_reference_get_not_read_global,
2899         ipa_reference_get_not_written_global): Update prototype.
2900         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
2901         (init_state): Remove.
2902         (node_duplication_hook_holder, node_removal_hook_holder): New.
2903         (get_function_state, set_function_state): Use VECtor.
2904         (analyze_function): Check body availability.
2905         (add_new_function): Likewise.
2906         (duplicate_node_data, remove_node_data): New.
2907         (generate_summary): Register hooks; do not care about clones.
2908         (propafate): Do not care about clones; recursive functions are
2909         not looping.
2910         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
2911         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
2912         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
2913         static.
2914         * tree-flow.h (function_ann_d): Remove reference_vars_info.
2915         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
2916         Update call of ipa-reference accesors.
2917
2918 2008-09-18  Simon Baldwin  <simonb@google.com>
2919
2920         * c-opts.c (c_common_handle_option): Add handling for
2921         -Wbuiltin-macro-redefined command line option.
2922         * c.opt: Added builtin-macro-redefined option.
2923         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
2924         documentation.
2925
2926 2008-09-18  Richard Guenther  <rguenther@suse.de>
2927
2928         PR tree-optimization/37258
2929         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
2930         and signedness for integral types.
2931         (vn_phi_eq): Require compatible types.
2932
2933 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
2934
2935         PR debug/34037
2936         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
2937         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
2938         VAR_DECL.
2939         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
2940         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
2941         ggc_free other TREE_LIST nodes from that chain.
2942         * function.c (instantiate_decls): Instantiate also DECL_RTL
2943         of vars in cfun->local_decls, free that list afterwards.
2944
2945 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
2946
2947         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
2948         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
2949
2950 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2951
2952         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
2953         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
2954
2955 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2956
2957         PR tree-optimization/37102
2958         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
2959         from a node. Check to see if another PHI is dead.
2960         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
2961         remove real PHIs which have no uses.
2962         (rewrite_out_of_ssa): Call eliminate_useless_phis.
2963
2964 2008-09-18  Richard Guenther  <rguenther@suse.de>
2965
2966         PR middle-end/37284
2967         * tree-cfg.c (remove_useless_stmts_1): Remove
2968         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
2969
2970 2008-09-18  Nick Clifton  <nickc@redhat.com>
2971
2972         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
2973         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
2974         to frv_secondary_reload_class.
2975         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
2976         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
2977         (frv_secondary_reload_class): Omit unused parameter.
2978         (frv_secondary_reload): New function.  Handle the case when
2979         secondary_reload_class() is called before the reload_(in|out)
2980         _optabs have been initialised.
2981         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
2982         unused parameter.
2983         * config/frv/frv.md: Define an exclusion set between fr550_m0
2984         and fr550_f0.
2985
2986 2008-09-18  Richard Guenther  <rguenther@suse.de>
2987
2988         PR tree-optimization/37456
2989         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
2990         want to insert after ends a BB insert on the single fallthru
2991         outgoing edge.
2992
2993 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2994
2995         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
2996         Mention -march=z9-109, z9-ec and z10.
2997
2998 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
2999
3000         PR rtl-optimization/37544
3001         * regrename.c (maybe_mode_change): Exit early when copy_mode
3002         is narrower than orig_mode and narrower than new_mode.
3003
3004 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
3005
3006         PR middle-end/37499
3007         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
3008
3009         * sched-rgn.c (ref_counts): Remove.
3010         (insn_referenced): New static variable.
3011         (INSN_REF_COUNT): Remove.
3012         (sched_run_compute_dependencies): Use insn_referenced instead of
3013         INSN_REF_COUNT.
3014         (add_branch_dependences): Likewise.  Delete dead assignment.
3015
3016 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
3017
3018         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
3019         consumer is an asm.  Add comment why this is important.
3020         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
3021         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
3022
3023 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
3024
3025         * expr.c (emit_group_store): Do not shift before moving via a
3026         stack slot.
3027
3028 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3029
3030         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
3031         from aggregate to non-aggregate type if the bit pattern is not fully
3032         preserved afterwards.
3033
3034 2008-09-17  Richard Guenther  <rguenther@suse.de>
3035
3036         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
3037         (verify_gimple_assign): ... this.  Split into ...
3038         (verify_gimple_assign_unary): ... this,
3039         (verify_gimple_assign_binary): ... that,
3040         (verify_gimple_assign_single): ... and this.
3041         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
3042         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
3043         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
3044         (verify_types_in_gimple_reference): Be forgiving with
3045         VIEW_CONVERT_EXPRs.
3046         (verify_gimple_phi): Deal with virtual operands.
3047
3048         * tree.def (PREDICT_EXPR): Change to tcc_expression.
3049
3050 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3051
3052         * tree.c (get_callee_fndecl): Don't call the language hook.
3053         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
3054         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
3055         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
3056
3057 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3058
3059         * tree.c (protected_set_expr_location): Don't unnecessarily
3060         check for error_mark_node.
3061
3062 2008-09-17  Art Haas  <ahaas@impactweather.com>
3063
3064         * ipa-reference.c (analyze_function): Declare step only if
3065         ENABLE_CHECKING is defined.
3066
3067 2008-09-17  Jan Hubicka  <jh@suse.cz>
3068
3069         PR c++/18071
3070         * tree.h (DECL_INLINE): remove.
3071         (DECL_DECLARED_INLINE_P): Update docs.
3072         (DECL_NO_INLINE_WARNING_P): new.
3073         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
3074         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
3075
3076 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3077             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3078
3079         PR bootstrap/37441
3080         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
3081         false.
3082
3083 2008-09-17  Jan Hubicka  <jh@suse.cz>
3084
3085         * ipa-reference.c (ipa_obstack): Remove.
3086         (local_info_obstack, global_info_obstack): New.
3087         (add_static_var): We now handle variables only.
3088         (mark_address_taken, mark_load, mark_store): New functions based on ...
3089         (check_operand): ... remove.
3090         (get_asm_stmt_operands): Rename to ...
3091         (check_asm_memory_clobber): ... this. Look only for memory clobber.
3092         (scan_stmt_for_static_refs): Rewrite.
3093         (scan_op_for_static_refs): Rename to ...
3094         (scan_initializer_for_static_refs): do not look for VAR_DECL
3095         initializers; stop recursion on types and decls.
3096         (ipa_init): Use proper obstacks.
3097         (analyze_variable): Use scan_initializer_for_static_refs.
3098         (init_function_info): Use local obstack.
3099         (analyze_function): Simplify.
3100         (add_new_function): We don't need visited_nodes obstack.
3101         (generate_summary): Use proper obstacks; cleanup after propagation.
3102
3103 2008-09-17  Richard Guenther  <rguenther@suse.de>
3104
3105         PR middle-end/37385
3106         PR tree-optimization/37491
3107         * alias.c (get_alias_set): Use the canonical type.
3108         * tree-vect-transform.c (vectorizable_store): Use the type of
3109         the lhs for the vector type.  Adjust checking.
3110         (vectorizable_load): Adjust checking.
3111
3112 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3113             Adam Nemet  <anemet@caviumnetworks.com>
3114
3115         PR rtl-optimization/37483
3116         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
3117         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
3118         Rearrange code to better match the original comment.  Check
3119         t_unconditional first.  Improve comment.
3120
3121 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3122
3123         PR c/37529
3124         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
3125         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
3126
3127         PR c++/37530
3128         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
3129         GIMPLE_TRY if cleanup sequence is empty.
3130
3131 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3132
3133         PR middle-end/37263
3134         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
3135         eliminate IV if the cost are the same.
3136
3137 2008-09-16  Richard Guenther  <rguenther@suse.de>
3138
3139         PR middle-end/37380
3140         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
3141         if not necessary.
3142
3143 2008-09-16  Richard Guenther  <rguenther@suse.de>
3144
3145         PR tree-optimization/37508
3146         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
3147
3148 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
3149
3150         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
3151
3152 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3153
3154         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
3155         use gen_floatdidf2 directly.
3156         (floatunssidf2): Likewise.
3157         (floatsidf_ppc64_mfpgpr): Remove.
3158         (floatsidf_ppc64): Remove.
3159         (floatunssidf_ppc64): Remove.
3160
3161 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
3162
3163         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
3164         rather than update_cost_queue.
3165
3166         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
3167         in every call starting with the second one, instead of only when
3168         alias_bitmap_obstack.elements != NULL.
3169
3170         * tree-predcom.c (filter_suitable_components): Free all refs in
3171         act->refs vector before calling release_component.
3172         (add_ref_to_chain): Free ref if not adding it to chain->refs.
3173
3174         * tree-data-ref.c (free_subscripts): Free all subscript objects.
3175
3176         * tree-loop-linear.c (linear_transform_loops): Initialize
3177         lambda_obstack only after calling perfect_loop_nest_depth.
3178         Goto free_and_continue instead of just continue for later failures.
3179
3180         PR middle-end/37479
3181         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
3182
3183         PR libmudflap/36397
3184         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
3185
3186 2008-09-14  Andreas Schwab  <schwab@suse.de>
3187
3188         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
3189
3190 2008-09-14  Jan Hubicka  <jh@suse.cz>
3191
3192         * invoke.texi (-fconserve-stack): Document.
3193         * opts.c (decode_options): Handle conserve_stack.
3194         * common.opt (fconvserve_stack): New.
3195
3196 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
3197
3198         * config.host: Add x-aix to host_xmake_file.
3199         * config/rs6000/t-aix52: Do not override LDFLAGS.
3200         * config/rs6000/x-aix: New file.
3201
3202 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
3203
3204         PR target/19636
3205         PR target/24894
3206         PR target/31644
3207         PR target/31786
3208         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
3209         is not recognized as a valid register usage. Allow REG_X to be used
3210         as a base pointer.
3211         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
3212         forces a reload when using a base register.
3213
3214 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
3215
3216         * config/i386/cygming-crtend.c (register_frame_ctor): If
3217         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
3218         directly with atexit.
3219         (deregister_frame_ctor): Rename to ...
3220         (deregister_frame_dtor): Use to call __gcc_deregister_frame
3221         if !DEFAULT_USE_CXA_ATEXIT.
3222
3223 2008-09-13  Jan Hubicka  <jh@suse.cz>
3224
3225         * cgraph.c: Include value-prof.h
3226         * Makefile.in (cgraph.o): Add value-prof.h dependency.
3227
3228 2008-09-13  Jan Hubicka  <jh@suse.cz>
3229
3230         PR middle-end/32581
3231         * tree-profile.c (add_abnormal_goto_call_edges): New function.
3232         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
3233         tree_gen_one_value_profiler, tree_gen_average_profiler,
3234         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
3235
3236 2008-09-13  Jan Hubicka  <jh@suse.cz>
3237
3238         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
3239         too many bytes on misalligned blocks.
3240
3241 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3242
3243         * doc/cfg.texi: Fix some typos.
3244         * doc/extend.texi: Likewise.
3245         * doc/install.texi: Likewise.
3246         * doc/invoke.texi: Likewise.
3247         * doc/rtl.texi: Likewise.
3248         * doc/tree-ssa.texi: Likewise.
3249
3250 2008-09-13  Richard Guenther  <rguenther@suse.de>
3251
3252         PR middle-end/30141
3253         * tree-nested.c (finalize_nesting_tree_1): Generate valid
3254         gimple stores for memory rhs.
3255
3256 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3257
3258         PR rtl-optimization/37489
3259         * cse.c (fold_rtx): Don't return const_true_rtx for float
3260         compare if FLOAT_STORE_FLAG_VALUE is undefined.
3261
3262 2008-09-13  Jan Hubicka  <jh@suse.cz>
3263
3264         PR tree-optimization/37392
3265         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
3266
3267 2008-09-13  Martin Jambor  <mjambor@suse.cz>
3268             Jan Hubicka  <jh@suse.cz>
3269
3270         * cgraph.c (free_edges): New variable.
3271         (NEXT_FREE_EDGE): New macro.
3272         (cgraph_free_edge): New function.
3273         (cgraph_remove_edge): Call cgraph_remove_edge_1.
3274         (cgraph_node_remove_callees): Likewise.
3275         (cgraph_node_remove_callers): Likewise.
3276         (cgraph_create_edge): Reuse edges from the free list.  Do not
3277         update uid if doing so.
3278         (cgraph_remove_*_hook): Add free call.
3279
3280 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3281
3282         * ira-color.c (conflict_allocno_vec): Delete.
3283         (update_cost_queue_elem): New structure.
3284         (update_cost_queue): New variable.
3285         (update_cost_queue_tail): Likewise.
3286         (update_cost_queue_elems): Likewise.
3287         (allocno_update_cost_check): Delete.
3288         (initiate_cost_update): Allocate update_cost_queue_elems
3289         instead of allocno_update_cost_check.
3290         (finish_cost_update): Update the free()s accordingly.
3291         (start_update_cost): New function.
3292         (queue_update_cost): Likewise.
3293         (get_next_update_cost): Likewise.
3294         (update_copy_costs_1): Inline into...
3295         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
3296         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
3297         once we've established they are equal.  Don't allocate update
3298         costs if there is nothing to add to them.
3299         (update_conflict_hard_regno_costs): Remove ALLOCNO and
3300         DIVISOR arguments.  Use a queue instead of recursive calls;
3301         process all the allocnos in the initial queue, rather than
3302         a single allocno.
3303         (assign_hard_reg): Use queue_update_cost instead of
3304         conflict_allocno_vec.  Queue coalesced allocnos instead
3305         of calling update_conflict_hard_regno_costs for each one.
3306         Just call update_conflict_hard_regno_costs once for the
3307         entire queue.
3308         (ira_color): Remove conflict_allocno_vec handling.
3309
3310 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3311
3312         PR tree-optimization/37484
3313         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
3314         (save_var_name): Same.
3315         (initialize_cloog_names): Same.
3316         (initialize_cloog_names): Same.
3317
3318 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3319
3320         * tree-scalar-evolution.c (set_instantiated_value): Set
3321         instantiated_below.
3322
3323 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
3324
3325         PR rtl-opt/37377
3326
3327         * ira-build.c (common_loop_tree_node_dominator): Remove.
3328         (copy_live_ranges_to_removed_store_destinations): New function.
3329         (regno_top_level_allocno_map): Move to top level from ...
3330         (ira_flattening): ... here.  Use
3331         copy_live_ranges_to_removed_store_destinations.
3332
3333         * ira-emit.c (generate_edge_moves): Fix a comment.
3334
3335 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
3336
3337         PR target/37466
3338         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
3339         scratch register after 'set' pattern.
3340
3341 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3342
3343         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
3344         information passed to mark_reg_pointer.
3345         * explow.c (force_reg): Likewise.
3346
3347 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3348
3349         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
3350         when building for the celledp architecture.
3351
3352 2008-09-12  Richard Guenther  <rguenther@suse.de>
3353
3354         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
3355
3356 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
3357
3358         PR rtl-optimization/37424
3359         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
3360         the regnos instead of the addresses.
3361
3362 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
3363
3364         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
3365
3366 2008-09-11  Richard Guenther  <rguenther@suse.de>
3367
3368         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
3369         entering the weaker equivalence recording.
3370
3371         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
3372
3373 2008-09-11  Jeff Law <law@redhat.com>
3374
3375         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
3376         by assign_stack_local on the IRA path for stack slot sharing
3377         as well as the non-IRA path.
3378
3379 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
3380
3381         * config/i386/i386.h: Fix whitespace issues.
3382
3383 2008-09-11  Martin Jambor  <mjambor@suse.cz>
3384
3385         * ipa-prop.h (struct ipa_param_flags): Removed.
3386         (struct ipa_param_descriptor): New structure.
3387         (struct ipa_node_params): ipcp_lattices, param_decls and
3388         param_flags moved to ipa_param_description.
3389         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
3390         descriptors.  Renamed all users.
3391         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
3392         changed to access descriptors.  Renamed all users.
3393         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
3394         to access descriptors. Renamed all users.
3395         * ipa-cp.c (ipcp_init_cloned_node): Call
3396         ipa_initialize_node_params instead of ipa_count_formal_params and
3397         ipa_create_param_decls_array.
3398         (ipcp_analyze_node): Likewise.
3399         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
3400         descriptors.  Renamed all users.
3401         (ipcp_initialize_node_lattices): Remove allocation.
3402         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
3403         ipa_initialize_node_params instead of ipa_count_formal_params and
3404         ipa_create_param_decls_array.
3405         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
3406         ipa_populate_param_decls, made static, added parameter info,
3407         renamed mt to node, removed allocation, changed to use
3408         descriptors.
3409         (ipa_count_formal_params): Made static, added parameter info,
3410         renamed mt to node.
3411         (ipa_initialize_node_params): New function.
3412         (ipa_check_stmt_modifications): Changed to use descriptors.
3413         (ipa_detect_param_modifications): Removed allocation, changed to
3414         use descriptors.
3415         (ipa_note_param_call): Changed to use descriptors.
3416         (ipa_analyze_params_uses): Removed allocation.
3417         (ipa_free_node_params_substructures): Changed to use descriptors.
3418         (ipa_edge_duplication_hook): Use the unused attribute.
3419         (ipa_node_duplication_hook): Use the unused attribute, changed to
3420         use descriptors, changed to duplicate descriptors.
3421
3422         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
3423         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
3424         indirect inlining.  Made static.
3425         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
3426         functions called only once.
3427         (cgraph_decide_recursive_inlining): Don't call
3428         ipa_propagate_indirect_call_infos, pass new_edges to
3429         cgraph_mark_inline_edge instead.
3430         (cgraph_decide_inlining_of_small_functions): Don't call
3431         ipa_propagate_indirect_call_infos, pass new_edges to
3432         cgraph_mark_inline_edge instead.
3433         (cgraph_decide_inlining): Don't call
3434         ipa_propagate_indirect_call_infos.
3435         * ipa-prop.c: Check that vectors are allocated.
3436
3437         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
3438         iff a new cgraph edges have been created.
3439         (cgraph_decide_inlining): New variable redo_always_inline.
3440         Flattening and always_inlining loop until callgraph stabilizes.
3441         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
3442         true iff new cgraph edges have been created.
3443         (propagate_info_to_inlined_callees): Likewise.
3444         (ipa_propagate_indirect_call_infos): Likewise.
3445
3446 2008-09-11  Richard Guenther  <rguenther@suse.de>
3447
3448         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
3449         (set_prologue_iterations): Likewise.
3450         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
3451         Likewise.
3452         (vect_update_init_of_dr): Likewise.
3453         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
3454         type verification.
3455         * fold-const.c (fold_unary): Do not generate calculations
3456         in sub-types.
3457
3458 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
3459
3460         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
3461         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
3462         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
3463
3464         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
3465         a bool.
3466         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
3467         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
3468         before finalizing the changes.
3469         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
3470         for BIT_IOR_EXPR.
3471         (simplify_truth_ops_using_ranges): New.
3472         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
3473         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
3474         whether a simplification was made.
3475         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
3476         use a switch statement and also call simplify_truth_ops_using_ranges.
3477
3478 2008-09-11  Jan Hubicka  <jh@suse.cz>
3479
3480         * ggc-common.c (loc_array): Make static.
3481         * dce.c (rest_of_handle_ud_dce): Free worklist.
3482
3483 2008-09-11  Jan Hubicka  <jh@suse.cz>
3484
3485         * cgraph.c (cgraph_release_function_body): Plug memory leak on
3486         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
3487         function so we are sure we do not dangle it forever.
3488         * function.c (outer_function_chain, find_function_data): Remove.
3489         (function_context_stack): New.
3490         (push_function_context, pop_function_context): Update.
3491         * function.h (struct function): Remove pointer outer.
3492         (outer_function_chain, find_function_data): Remove.
3493         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
3494
3495 2008-09-11  Jan Hubicka  <jh@suse.cz>
3496
3497         PR middle-end/37448
3498         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
3499
3500 2008-09-11  Jan Hubicka  <jh@suse.cz>
3501
3502         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
3503
3504 2008-09-11  Jan Hubicka  <jh@suse.cz>
3505
3506         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
3507         (free_var_map_entry): New function.
3508         (redirect_edge_var_map_destroy): Use it.
3509
3510 2008-09-11  Jan Hubicka  <jh@suse.cz>
3511
3512         PR middle-end/37448
3513         * tree-inline.c (add_lexical_block): Replace with ...
3514         (prepend_lexical_block): ... prepend at begginig.
3515         (remap_blocks): Use it and reverse later.
3516         (expand_call_inline): Use prepend_lexical_block.
3517
3518 2008-09-11  Jan Hubicka  <jh@suse.cz>
3519
3520         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
3521
3522 2008-09-11  Jan Hubicka  <jh@suse.cz>
3523
3524         * function.c (free_after_compilation): Call insn_locators_free.
3525         * cfglayout.c (insn_locators_free): New function.
3526         * rtl.h (insn_locators_free): Declare.
3527
3528 2008-09-11  Jan Hubicka  <jh@suse.cz>
3529
3530         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
3531         vector pointer.
3532         (cond_move_process_if_block): Update call.
3533
3534 2008-09-11  Jan Hubicka  <jh@suse.cz>
3535
3536         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
3537         * vec.c: Include hashtab.h
3538         (vec_descriptor, ptr_hash_entry): New structures.
3539         (vec_desc_hash, vec_ptr_map): New static variables.
3540         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
3541         register_overhead, free_overhead, vec_heap_free): New functions.
3542         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
3543         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
3544         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
3545         New functions.
3546
3547 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3548
3549         PR tree-optimization/37474
3550         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
3551         length of load permutation.
3552
3553 2008-09-11  Andreas Schwab  <schwab@suse.de>
3554
3555         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
3556
3557 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
3558
3559         PR target/37382
3560         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
3561         * dse.c (find_shift_sequence): Use extract_low_bits instead of
3562         simplify_gen_subreg.
3563
3564 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3565
3566         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
3567         for alias check.
3568
3569 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3570
3571         PR middle-end/37338
3572         * gimplify.c (gimplify_body): Call default_rtl_profile.
3573
3574         PR target/36904
3575         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
3576         instead of tok->val.node if not expanding to something else.  Handle
3577         intervening CPP_PADDING tokens.
3578         (altivec_categorize_keyword): Remove unneeded comparisons.
3579
3580 2008-09-10  Richard Guenther  <rguenther@suse.de>
3581
3582         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
3583
3584 2008-09-10  Richard Guenther  <rguenther@suse.de>
3585
3586         PR middle-end/37432
3587         * tree-inline.c (insert_init_stmt): Make sure to not
3588         insert invalid gimple stores.
3589
3590 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
3591
3592         PR tree-optimization/37388
3593         * toplev.c (process_options): Fail and warn when graphite
3594         flags are used, but the compiler has not been configured
3595         with graphite libraries.
3596         * graphite.c (graphite_transform_loops): Remove printfs
3597         to dump_file for the case when graphite is not available.
3598
3599 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
3600
3601         PR target/37434:
3602         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
3603         the even element into register.
3604         (ix86_expand_vector_init_general): Don't use
3605         ix86_expand_vector_init_interleave on V16QImode and V8HImode
3606         if we can't move from GPR to SSE register directly.
3607
3608 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
3609
3610         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
3611         not lose track of the number of NOPs needed.  Number of NOPs needed
3612         for sync vs. loads workaround was switched; corrected.  Run second
3613         pass for all workarounds.  No NOPs needed after call insns.  Change
3614         second pass to use find_next_insn_start and find_load helpers in order
3615         to properly detect parallel insns.
3616         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
3617
3618 2008-09-10  Jan Hubicka  <jh@suse.cz>
3619
3620         * value-prof.c (gimple_ic): Fix tuplification bug.
3621         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
3622         var warning.
3623
3624 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3625
3626         PR tree-optimization/37353
3627         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
3628         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
3629         calls instead of cond_dead_built_in_calls.
3630         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
3631         initalize the vector only before adding first entry.  Use VEC_safe_push
3632         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
3633         shrink_wrap_conditional_dead_built_in_calls call.
3634
3635 2008-09-10  Ira Rosen  <irar@il.ibm.com>
3636
3637         PR tree-optimization/37385
3638         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
3639         argument, and use it as a vector type if not NULL.
3640         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
3641         vectorized rhs.
3642         (vect_setup_realignment): Call vect_create_data_ref_ptr with
3643         additional argument.
3644         (vectorizable_load): Likewise.
3645
3646 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3647
3648         * config/i386/i386.md (SWI32): New mode iterator.
3649         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
3650         of SWI.
3651
3652 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3653
3654         PR rtl-optimization/37435
3655         * caller-save.c (insert_restore, insert_save): Check the mode by
3656         reg_save_code.
3657
3658 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3659
3660         PR other/37265
3661         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
3662         splay tree lookup.
3663         (dw2_output_indirect_constant_1): Use unstripped name in symbol
3664         reference.
3665
3666 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3667
3668         * doc/invoke.texi (ARM Options): Correct errors in discussion
3669         of -mfloat-abi, -mhard-float, and -msoft-float.
3670
3671 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
3672             Jan Hubicka  <jh@suse.cz>
3673
3674         PR middle-end/37356
3675         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
3676         calling gimple_regimplify_operands on it.  Iterate over all newly
3677         added statements, not just the last one.
3678         (insert_init_stmt): Insert stmt into seq first, then call
3679         gimple_regimplify_operands on it.  Don't create new gimplification
3680         context, nor find referenced vars.
3681
3682 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
3683
3684         PR other/37419
3685         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
3686         to pointer to vector pointer.
3687         * ipa-prop.c (ipa_propagate_indirect_call_infos,
3688         propagate_info_to_inlined_callees): Likewise.
3689         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
3690         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
3691         ipa_check_create_edge_args.
3692         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
3693         argument to pointer to vector pointer.
3694         (cgraph_decide_inlining_of_small_function): Adjust
3695         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
3696         calls.
3697
3698         PR target/37438
3699         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
3700         optimizing for size, not speed.
3701
3702         PR rtl-optimization/37408
3703         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
3704         if parm is promoted.
3705
3706 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
3707
3708         PR tree-optimization/37375
3709         * tree-scalar-evolution.c (scev_info_str): Add field
3710         instantiated_below.
3711         (new_scev_info_str, eq_scev_info, find_var_scev_info,
3712         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
3713         set_instantiated_value): Pass instantiated_below.
3714         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
3715         to above functions.
3716         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
3717         the definitions are not instantiated.
3718
3719         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
3720         (block_before_loop): New.
3721         * tree-data-ref.c (dr_analyze_indices): Update uses of
3722         instantiate_scev.
3723         * graphite.c (block_before_scop): New.
3724         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
3725         basic block, not a loop for determining the parameters.
3726         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
3727         scop.
3728         (idx_record_params, find_params_in_bb, find_scop_parameters,
3729         build_loop_iteration_domains, add_conditions_to_domain): Update calls
3730         to instantiate_scev.
3731
3732         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
3733
3734 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3735
3736         PR rtl-opt/37333
3737
3738         * ira-build.c (ira_create_allocno): Setup frequency to 0.
3739
3740         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
3741         Check zero freq and increase if necessary.
3742
3743 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3744
3745         * ira-conflicts.c (process_regs_for_copy): Check that the hard
3746         regno is in the right range.  Add comments.
3747
3748 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3749
3750         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
3751         warnings.
3752         * mips-tfile.c (copy_object): Cast alloca result to int *.
3753         * mips-tdump.c (print_symbol): Cast xmalloc return values to
3754         proper types.
3755         Rename class to sclass.
3756         (read_tfile): Cast read_seek return values to proper types.
3757         Cast xcalloc return value to proper type.
3758
3759 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3760
3761         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
3762         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
3763         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
3764
3765 2008-09-09  Jan Hubicka  <jh@suse.cz>
3766
3767         * profile.c (is_edge_inconsistent): Add debug output; ignore
3768         negative count on fake edges.
3769         (is_inconsistent): Add debug output.
3770
3771 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
3772
3773         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
3774         dump message.
3775         (choose_ready): When first insn is chosen from the ready list, also
3776         dump it.
3777
3778 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
3779
3780         PR rtl-optimization/37360
3781         * haifa-sched.c (max_issue): Do not assert that we never issue more
3782         insns than issue_rate.  Add comment.
3783
3784 2008-09-09  Richard Guenther  <rguenther@suse.de>
3785
3786         * tree-cfg.c (verify_types_in_gimple_op): Remove.
3787         (verify_types_in_gimple_call): Rename to ...
3788         (verify_gimple_call): ... this.  Enhance.
3789         (verify_types_in_gimple_cond): Remove.
3790         (verify_gimple_comparison): New function ...
3791         (verify_types_in_gimple_assign): ... split out from here.
3792         (verify_types_in_gimple_return): Rename to ...
3793         (verify_gimple_return): ... this.  Enhance.
3794         (verify_types_in_gimple_switch): Rename to ...
3795         (verify_gimple_switch): ... this.  Enhance.
3796         (verify_gimple_goto): New function.
3797         (verify_types_in_gimple_phi): Rename to ...
3798         (verify_gimple_phi): ... this.  Enhance.
3799         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
3800         Fold in single-statement cases from verify_types_in_gimple_seq_2.
3801         (verify_types_in_gimple_seq_2): Remove cases handled in
3802         verify_types_in_gimple_stmt.
3803
3804 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
3805
3806         * config/bfin/bfin.c (n_regs_to_save): New static variable.
3807         (push_multiple_operation, pop_multiple_operation): Set it.
3808         (workaround_rts_anomaly): New function.
3809         (workaround_speculation): New function, broken out of bfin_reorg.
3810         (bfin_reorg): Call the new functions.
3811
3812 2008-09-09  Richard Guenther  <rguenther@suse.de>
3813
3814         PR middle-end/37354
3815         PR middle-end/30165
3816         * gimplify.c (gimplify_conversion): Change conversions of
3817         non-register type to VIEW_CONVERT_EXPRs.
3818         (gimplify_addr_expr): If we need to make the operand
3819         addressable make sure to use a properly initialized
3820         temporary for that so it gets a valid gimple store.
3821
3822 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
3823
3824         * function.h (struct function): Add function_start_locus.
3825         * cfgexpand.c (gimple_expand_cfg): Use it.
3826         * c-parser.c (c_parser_declaration_or_fndef): Set it.
3827
3828 2008-09-09  Richard Guenther  <rguenther@suse.de>
3829
3830         PR tree-optimization/37433
3831         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
3832         function calls.
3833
3834 2008-09-09  Richard Guenther  <rguenther@suse.de>
3835
3836         PR tree-optimization/37387
3837         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
3838         and bits to a common type.
3839
3840 2008-09-09  Nick Clifton  <nickc@redhat.com>
3841
3842         * config/v850/v850.md (return): Restore frame size restriction.
3843
3844 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
3845
3846         * c-common.c (c_expand_decl): Remove.
3847         * c-common.h (anon_aggr_type_p): Remove prototype.
3848         (DECL_ANON_UNION_ELEMS): Remove.
3849         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
3850         * c-decl.c (anon_aggr_type_p): Remove.
3851         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
3852         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
3853         * langhooks.h (struct lang_hooks): Remove expand_decl.
3854         * langhooks.c (lhd_expand_decl): Remove.
3855         * stmt.c (expand_anon_union_decl): Remove.
3856         * tree.h (expand_anon_union_decl): Remove prototype.
3857
3858 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
3859
3860         PR target/36609
3861         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
3862         zero.
3863         * config/avr/avr.md  (QISI) : Define mode iterator.
3864         (negated_tst<mode>) : Redefine as split using mode macro.
3865         (reversed_tstqi): Define insn as reversed compare with zero.
3866         (reversed_tsthi): Ditto.
3867         (reversed_tstsi): Ditto.
3868
3869 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3870
3871         PR middle-end/37393
3872         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
3873         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
3874
3875         PR middle-end/37414
3876         * predict.c (optimize_function_for_size_p): Don't segfault if
3877         FUN is NULL.
3878         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
3879         tree_swap_operands_p): Don't test cfun != NULL before calling
3880         optimize_function_for_s*_p.
3881
3882 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
3883
3884         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
3885         end of the search.
3886
3887 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
3888
3889         * crx/crx.h (IRA_COVER_CLASSES): Define.
3890
3891 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3892
3893         PR middle-end/37337
3894         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
3895         even when a stmt has been gimple_modified_p, but after fold_stmt is
3896         not any longer.  Remove unneeded may_have_exposed_new_symbols
3897         initializations.
3898
3899 2008-09-08  Richard Guenther  <rguenther@suse.de>
3900
3901         PR tree-optimization/37421
3902         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
3903         valueize the RHS.
3904
3905 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3906
3907         PR middle-end/37415
3908         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
3909
3910 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3911
3912         PR driver/37409
3913         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
3914         * pa-hpux10.h (LINK_SPEC): Likewise.
3915         * pa-hpux11.h (LINK_SPEC): Likewise.
3916
3917 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3918
3919         * pa32-regs.h (IRA_COVER_CLASSES): Define.
3920         * pa64-regs.h (IRA_COVER_CLASSES): Define.
3921
3922 2008-09-07  Helge Deller  <deller@gmx.de>
3923
3924         * pa/linux-atomic.c: New file.
3925         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
3926         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
3927
3928 2008-09-07  Richard Guenther  <rguenther@suse.de>
3929             Ira Rosen  <irar@il.ibm.com>
3930
3931         PR tree-optimization/36630
3932         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
3933         Call STRIP_NOPS before calling evolution_part_in_loop_num.
3934
3935 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3936             Ira Rosen  <irar@il.ibm.com>
3937
3938         PR tree-optimization/35642
3939         * config/rs6000/altivec.md (mulv8hi3): Implement.
3940
3941 2008-09-06  Jeff Law <law@redhat.com>
3942
3943         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
3944
3945 2008-09-06  Jan Hubicka  <jh@suse.cz>
3946
3947         PR tree-optimization/14703
3948         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
3949         declarations.
3950         * passes.c (init_optimization_passes): Recompute inline parameters.
3951
3952 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
3953
3954         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
3955         DECL being null.
3956
3957 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
3958             Peter Fuerst  <post@pfrst.de>
3959
3960         * doc/invoke.texi: Document -mr10k-cache-barrier=.
3961         * doc/extend.texi: Document __builtin_mips_cache.
3962         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
3963         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
3964         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
3965         __GCC_HAVE_BUILTIN_MIPS_CACHE.
3966         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
3967         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
3968         (set_push_mips_isas): New variable.
3969         (mips_r10k_cache_barrier): New variable.
3970         (cache): New availability predicate.
3971         (mips_builtins): Add an entry for __builtin_mips_cache.
3972         (mips_build_cvpointer_type): New function.
3973         (MIPS_ATYPE_CVPOINTER): New macro.
3974         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
3975         mode is VOIDmode.
3976         (r10k_simplified_address_p, r10k_simplify_address)
3977         (r10k_uncached_address_p, r10k_safe_address_p)
3978         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
3979         (r10k_needs_protection_p_call, r10k_needs_protection_p)
3980         (r10k_insert_cache_barriers): New functions.
3981         (mips_reorg_process_insns): Delete cache barriers after a
3982         branch-likely instruction.
3983         (mips_reorg): Call r10k_insert_cache_barriers.
3984         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
3985         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
3986         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
3987         (mips_cache, r10k_cache_barrier): New define_insns.
3988
3989 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
3990
3991         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
3992         * ira-color.c (setup_allocno_left_conflicts_num): Use
3993         hard_reg_set_equal_p instead of a comparison with
3994         ira_zero_hard_reg_set.
3995         * ira.c (setup_reg_subclasses): Likewise.
3996         (setup_cover_and_important_classes): Likewise.
3997         (setup_class_translate): Likewise.
3998         (setup_reg_class_intersect_union): Likewise.
3999         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4000         (ira_init_once): Don't initialize them.
4001
4002 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4003
4004         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
4005
4006 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4007
4008         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
4009
4010 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
4011
4012         Improved branch hints, safe hints, and scheduling.
4013
4014         * haifa-sched.c (sched_emit_insn) : Define.
4015         * sched-int.h (sched_emit_insn) : Add prototype.
4016         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
4017         -mhint-max-distance -msafe-hints) : Document.
4018         * config/spu/spu.c (spu_flag_var_tracking): New.
4019         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
4020         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
4021         TARGET_ASM_FILE_START): Define.
4022         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
4023         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
4024         (spu_emit_branch_hint): Add blocks argument.
4025         (insert_branch_hints, insert_nops): Remove.
4026         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
4027         uses_ls_unit, spu_sched_init_global, spu_sched_init,
4028         spu_sched_reorder, asm_file_start): New functions.
4029         (clock_var, spu_sched_length, pipe0_clock,
4030         pipe1_clock, prev_clock_var, prev_priority,
4031         spu_ls_first, prev_ls_clock): New static variables.
4032         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
4033         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
4034         (nopn_nv): Add a non-volatile version of nop.
4035         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
4036         -mhint-max-distance, -msafe-hints): New options.
4037
4038 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
4039             Samuel Tardieu  <sam@rfc1149.net>
4040
4041         * opts.c (decode_options): Combine nested if statements.
4042
4043         PR target/37283
4044         * opts.c (decode_options): Handle more relationships among
4045         unit-at-a-time, toplevel-reorder, and section-anchors.
4046
4047 2008-09-05  David Daney  <ddaney@avtrex.com>
4048
4049         * doc/install.texi (--enable-reduced-reflection): Document new option.
4050
4051 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
4052
4053         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
4054         constantpool_mem_p.
4055         (constantpool_operand): New.
4056         (move_operand): Disallow sub-word modes for the constant pool.
4057         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
4058         (xtensa_secondary_reload_class): Replace with....
4059         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
4060         Set icode for sub-word reloads from the constant pool.
4061         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
4062         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
4063         * config/xtensa/xtensa.md (reload<mode>_literal): New.
4064         * config/xtensa/xtensa-protos.h: Update prototypes.
4065
4066 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
4067
4068         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
4069         (REG_CLASS_NAMES): Update.
4070         (REG_CLASS_CONTENTS): Update.
4071         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
4072         of ALL_REGS for regs 77 and 78.
4073         * function.c (instantiate_virtual_regs_in_insn): Assert that
4074         return value of simplify_gen_subreg is not NULL.
4075
4076 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
4077
4078         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
4079         (gen_rtvec_v): Fix coding standards.
4080
4081 2008-09-04  Jan Hubicka  <jh@suse.cz>
4082
4083         * i386.c (decide_alg): Be more conservative about optimizing for size.
4084
4085 2008-09-04  Ian Lance Taylor  <iant@google.com>
4086
4087         * varasm.c (narrowing_initializer_constant_valid_p): New
4088         static function.
4089         (initializer_constant_valid_p): Call it.
4090
4091 2008-09-04  Jeff Law  <law@redhat.com>
4092
4093         * fold-const.c (native_encode_real): Fix computation of WORDS.
4094         (native_interpret_real): Likewise.
4095
4096 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
4097
4098         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
4099
4100 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4101
4102         * ira-conflicts.c (process_regs_for_copy): Check insn to check
4103         that the cost is already taken into account in ira-costs.c
4104
4105         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
4106
4107         * ira-build.c (print_copy, print_copies, ira_debug_copy,
4108         ira_debug_copies): New.
4109         (ira_bulid): Call print_copies.
4110
4111         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
4112
4113 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
4114
4115         PR target/32783
4116         * config/rs6000/rs6000.c (optimization_options): Remove check of
4117         flag_toplevel_order.
4118
4119 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4120
4121         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
4122         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
4123         second operand is a reg_imm10_operand.
4124         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
4125         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
4126         (*seq_<GPR:mode><GPR2:mode>): Rename to
4127         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
4128         ISA_HAS_SEQ_SNE.
4129         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
4130         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
4131         ISA_HAS_SEQ_SNE.
4132         (*sne_<GPR:mode><GPR2:mode>): Rename to
4133         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
4134         ISA_HAS_SEQ_SNE.
4135
4136 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4137
4138         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
4139         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
4140         combining an arithmetic right shift by more than 31 and a
4141         trunction.  Don't match for out-of-range shift amounts.  Set
4142         attribute mode to <MODE>.
4143         (*lshr32_trunc<mode>): Name the pattern combining a logical right
4144         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
4145         (*<optab>_trunc<mode>_exts): New pattern for truncated right
4146         shifts by less than 32.
4147         (extv): Change predicate on first operand to accept registers.
4148         Change predicate of the other operands from immediate_operand to
4149         const_int_operand.  Expand exts when source is a register.
4150         (extzv): Change predicate of the constant operands from
4151         immediate_operand to const_int_operand.
4152         (extzv<mode>): Change predicate of the constant operands from
4153         immediate_operand to const_int_operand and no constraint. Also
4154         remove mode.
4155         (*extzv_trunc<mode>_exts): New pattern.
4156
4157 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4158
4159         * config/mips/mips.h (ISA_HAS_CINS): New macro.
4160         * config/mips/mips-protos.h (mask_low_and_shift_p,
4161         mask_low_and_shift_len): Declare.
4162         * config/mips/mips.c (mask_low_and_shift_p,
4163         mask_low_and_shift_len): New functions.
4164         (mips_print_operand): Handle new operand prefix "m".
4165         * config/mips/mips.md (*cins<mode>): New pattern.
4166
4167 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4168
4169         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
4170         optimizing for size.
4171
4172 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4173
4174         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
4175         regardless of epilogue_completed.
4176
4177 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4178
4179         PR middle-end/37359
4180         * ira-lives.c (process_bb_node_lives): Check setjmp.
4181
4182 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4183
4184         PR middle-end/37243
4185         * ira-build.c (form_loop_tree): Reverse BB walk.
4186         (create_bb_allocnos): Likewise.
4187         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
4188         (mark_reg_store): Rename to...
4189         (mark_ref_live): ...this and take a df_ref argument instead of
4190         note_stores arguments.  Assert that we have a register.
4191         (mark_reg_clobber): Delete.
4192         (def_conflicts_with_inputs_p): New function.
4193         (mark_reg_conflicts): Delete.
4194         (mark_reg_death): Rename to...
4195         (mark_ref_dead): ...this and take a df_ref argument instead of
4196         a register.  Assert that we have a register.
4197         (process_bb_node_lives): Hoist frequency calculation out of
4198         instruction walk.  Convert from a forwards scan to a backwards scan.
4199         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
4200         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
4201         (create_allocno_live_ranges): Don't create regs_set.
4202
4203 2008-09-04  Ian Lance Taylor  <iant@google.com>
4204
4205         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
4206         or REG_LABEL_TARGET.
4207         * calls.c (emit_library_call_value_1): Use MEM_P rather than
4208         comparing MODE with MEM.
4209         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
4210         comparing with GF_PREDICT_TAKEN.
4211         (gimple_get_lhs): Change code to enum gimple_code.
4212         (gimple_set_lhs): Likewise.
4213         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
4214         * omp-low.c (find_omp_clause): Change kind parameter to enum
4215         omp_clause_code.
4216         * tree-flow.h (find_omp_clause): Update declaration.
4217         * regrename.c (clear_dead_regs): Change kind parameter to enum
4218         reg_note.
4219         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
4220         GET_MODE.
4221         * see.c (see_get_extension_data): Change return type to enum
4222         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
4223         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
4224         (see_gen_normalized_extension): Change extension_code parameter to
4225         enum entry_type.
4226         (see_seek_pre_extension_expr): Change extension_code to enum
4227         entry_type.
4228         (see_merge_one_def_extension): Likewise.
4229         (see_handle_relevant_defs): Likewise.
4230         (see_handle_relevant_uses): Likewise.
4231         (see_analyze_one_def): Likewise.
4232         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
4233         GIMPLE_ASM rather than ASM_EXPR.
4234         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
4235         GIMPLE_RETURN rather than RETURN_EXPR.
4236         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
4237         (evaluate_stmt): Likewise.
4238         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
4239         to enum vect_relevant.
4240         (vect_mark_stmts_to_be_vectorized): Change assertion to not
4241         compare gimple codes with tree codes.
4242
4243 2008-09-04  Paul Brook  <paul@codesourcery.com>
4244
4245         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
4246
4247 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4248
4249         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
4250         pointer check lost in the recent no-unit-at-a-time patch.
4251
4252 2008-09-04  Jan Hubicka  <jh@suse.cz>
4253
4254         PR middle-end/37343
4255         * tree-switch-conversion.c (check_final_bb): Accept only IP
4256         invariants.
4257
4258 2008-09-04  Jan Hubicka  <jh@suse.cz>
4259
4260         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
4261         Break out from ...
4262         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
4263         using_ranges argument.
4264         (vrp_evaluate_conditional): Avoid bogus warning for type range.
4265         (vrp_visit_cond_stmt): Update call of
4266         vrp_evaluate_conditional_warnv_with_ops
4267
4268 2008-09-04  Jan Hubicka  <jh@suse.cz>
4269
4270         PR tree-optimization/37345
4271         PR tree-optimization/37358
4272         PR tree-optimization/37357
4273         * tree.c (build_function_type_skip_args): Build distinct type copy;
4274         set TYPE_CONTEXT.
4275         (build_function_decl_skip_args): Set type of new decl not orig decl;
4276         clear DECL_VINDEX for methods turned into functions.
4277
4278 2008-09-04  Nick Clifton  <nickc@redhat.com>
4279
4280         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
4281         * configure: Regenerate.
4282         * config.in: Regenerate.
4283         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
4284         alignment field, if it is supported.
4285
4286 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
4287
4288         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
4289         libraries.
4290
4291 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
4292
4293         * config/rs6000/rs6000.c (processor_target_table): Do not
4294         enable VMX for POWER6.
4295
4296 2008-09-03  Anton Blanchard  <anton@samba.org>
4297
4298         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
4299         emit memory barrier before operation.
4300
4301 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
4302
4303         PR testsuite/37325
4304         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
4305         default_elf_asm_output_external.
4306
4307 2008-09-03  Jeff Law  <law@redhat.com>
4308
4309         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
4310
4311 2008-09-03  Richard Henderson  <rth@redhat.com>
4312
4313         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
4314         memory barrier to below the test-and-set.
4315         (alpha_split_lock_test_and_set_12): Likewise.
4316
4317 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4318
4319         PR rtl-opt/37243
4320
4321         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
4322         all_allocnos.
4323
4324         * ira-color.c (print_loop_title): Use all_allocnos.
4325         (color_pass): Ditto.  Don't add border_allocnos.  Check that
4326         subloop allocno in the correspdoning bitmap all_allocnos.
4327
4328         * ira-emit.c (change_loop): Use all_allocnos.
4329
4330         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
4331         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
4332         (create_cap_allocno): Remove setting mentioned_allocnos.
4333         (create_insn_allocnos): Ditto.
4334         (remove_unnecessary_allocnos): Use all_allocnos.
4335         (check_allocno_creation): Check that allocnos are in the
4336         corresponding bitmap all_allocnos.
4337
4338 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4339
4340         PR rtl-opt/37243
4341
4342         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
4343         (process_regs_for_copy): Process subregs.  Refine check when cost
4344         is taken into account in ira-costs.c.
4345         (process_reg_shuffles): Use REG_SUBREG_P.
4346         (add_insn_allocno_copies): Ditto.  Ignore modes.
4347
4348         * ira-color.c (conflict_allocno_vec): New.
4349         (COST_HOP_DIVISOR): New macro.
4350         (update_copy_costs_1): Use it.
4351         (update_conflict_hard_regno_costs): New function.
4352         (assign_hard_reg): Use it.
4353         (ira_color): Allocate and free conflict_allocno_vec.
4354
4355 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4356
4357         PR rtl-opt/37296
4358
4359         * ira-int.h (ira_sort_insn_chain): Remove.
4360
4361         * ira.c (basic_block_order_nums, chain_insn_order,
4362         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
4363         (ira): Don't call ira_sort_insn_chain.
4364
4365         * reload1.c (reload): Don't call ira_sort_insn_chain.
4366
4367 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4368
4369         PR middle-end/37293
4370         * cgraphunit.c (update_call_expr): Remove eh regions from statements
4371         which become non throw.
4372         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
4373         update_call_expr after updating the flags on the decl.
4374
4375 2008-09-03  Jan Hubicka  <jh@suse.cz>
4376
4377         PR tree-optimization/37315
4378         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
4379         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
4380         (cgraph_analyze_functions): Use node->analyzed
4381         (cgraph_mark_functions_to_output): Likewise.
4382         (cgraph_expand_function): All functions can be released after
4383         expanding.
4384         (cgraph_optimize): Use gimple_has_body_p.
4385         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
4386         (cgraph_decide_inlining_incrementally): Likewise.
4387         (inline_transform): Inline transform.
4388         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
4389         copy fields needed.
4390         (inlinable_function_p): Drop gimple_body check.
4391         (expand_call_inline): Use gimple_has_body_p.
4392         * gimple.c (gimple_has_body_p): New.
4393         * gimple.h (gimple_has_body_p): Add prototype.
4394         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
4395         (dump_function_to_file): Use gimple_has_body_p check.
4396
4397 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
4398
4399         PR c++/37346
4400         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
4401         substatements.
4402         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
4403
4404 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4405
4406         From Michael Frysinger  <michael.frysinger@analog.com>
4407         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
4408         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
4409         for bf538.
4410
4411 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
4412
4413         Add picoChip port.
4414         * doc/extend.texi: Document picoChip builtin functions.
4415         * doc/invoke.texi: Document picoChip options.
4416         * doc/contrib.texi: Add picoChip contribution.
4417         * doc/md.texi: Document picoChip constraints.
4418         * config.gcc: Add picochip-*-*.
4419         * config/picochip/: Add new port.
4420
4421 2008-09-03  Richard Guenther  <rguenther@suse.de>
4422
4423         PR tree-optimization/37328
4424         * tree-sra.c (sra_build_assignment): Gimplify properly.
4425         (generate_copy_inout): Take the correct stmt as definition,
4426         remove bogus assert.
4427
4428 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4429
4430         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
4431         attributes.
4432
4433         From Michael Frysinger  <michael.frysinger@analog.com>
4434         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
4435
4436 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
4437
4438         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
4439         (__gthread_setspecific): Revert 2008-08-31 change to
4440         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
4441
4442 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
4443
4444         * diagnostic.c (error_at): New.
4445         * toplev.h (error_at): New prototype.
4446         * c-typeck.c (build_array_ref): Call error_at instead of error.
4447         Pass location to pedwarn.
4448
4449 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
4450
4451         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
4452
4453 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4454
4455         * dwarf2out.c (tree_add_const_value_attribute): Only handle
4456         VAR_DECL and CONST_DECL.
4457
4458 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
4459             Jakub Jelinek  <jakub@redhat.com>
4460
4461         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
4462         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
4463         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
4464         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
4465         Don't set ix86_save_varrargs_registers.
4466         (ix86_setup_incoming_varargs): Assume cum != NULL.
4467         (ix86_va_start): Check ix86_varargs_gpr_size and
4468         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
4469         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
4470         from frame pointer if ix86_varargs_gpr_size == 0.
4471         (ix86_compute_frame_layout): Updated.
4472         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
4473         (ix86_varargs_gpr_size): Define.
4474         (ix86_varargs_fpr_size): Likewise.
4475         (machine_function): Remove save_varrargs_registers.
4476         Add varargs_gpr_size and varargs_fpr_size.
4477
4478 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4479
4480         * config/alpha/alpha.c (va_list_skip_additions,
4481         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
4482         (alpha_gimplify_va_arg): Call unshare_expr on second use of
4483         offset_field.
4484
4485         PR tree-optimization/36766
4486         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
4487         for already removed basic blocks.
4488
4489         PR target/36332
4490         * real.c (real_maxval): Clear a lower bit to make real_maxval
4491         match get_max_float for IBM long double format.
4492
4493 2008-09-02  Andreas Schwab  <schwab@suse.de>
4494
4495         * configure.ac: Use m4_quote to quote the expansion of m4_do.
4496         * configure: Regenerate.
4497
4498 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
4499
4500         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
4501         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
4502         checking for a non-VOID CONSTANT_P.
4503
4504 2008-09-02  Jan Hubicka  <jh@suse.cz>
4505
4506         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
4507         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
4508         sdiv_pow2_cheap
4509
4510 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
4511
4512         * expr.c (emit_group_store): Don't assert stack temp mode size.
4513
4514 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
4515             Tobias Grosser  <grosser@fim.uni-passau.de>
4516             Jan Sjodin  <jan.sjodin@amd.com>
4517             Harsha Jagasia  <harsha.jagasia@amd.com>
4518             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4519             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
4520             Adrien Eliche  <aeliche@isty.uvsq.fr>
4521
4522         Merge from graphite branch.
4523         * graphite.c: New.
4524         * graphite.h: New.
4525         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
4526         * doc/invoke.texi (-floop-block, -floop-interchange,
4527         -floop-strip-mine): Document new flags.
4528         * tree-into-ssa.c (gimple_vec): Moved...
4529         * tree-loop-distribution.c (rdg_component): Moved...
4530         * cfgloopmanip.c: Include tree-flow.h.
4531         (update_dominators_in_loop): New.
4532         (create_empty_if_region_on_edge): New.
4533         (create_empty_loop_on_edge): New.
4534         (loopify): Use update_dominators_in_loop.
4535         * tree-pass.h (pass_graphite_transforms): Declared.
4536         * configure: Regenerate.
4537         * tree-phinodes.c (make_phi_node): Export.
4538         (add_phi_node_to_bb): New, split from create_phi_node.
4539         * tree-chrec.c (for_each_scev_op): New.
4540         * tree-chrec.h (for_each_scev_op): Declared.
4541         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
4542         (remove_statement): Call get_phi_with_result.
4543         * config.in (HAVE_cloog): Undef.
4544         * gdbinit.in (pgg): New.
4545         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
4546         * tree-ssa-loop.c (graphite_transforms): New.
4547         (gate_graphite_transforms): New.
4548         (pass_graphite_transforms): New.
4549         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
4550         HAVE_cloog): Defined.
4551         * tree-vectorizer.c (rename_variables_in_bb): Export.
4552         * tree-data-ref.c (dr_may_alias_p): Export.
4553         (stmt_simple_memref_p): New.
4554         (find_data_references_in_stmt): Export.
4555         (find_data_references_in_loop): Export.
4556         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
4557         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
4558         (create_rdg_vertices): Export.
4559         (build_empty_rdg): New.
4560         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
4561         * tree-data-ref.h (rdg_component): ... here.
4562         (scop_p): New.
4563         (struct data_reference): Add a field scop.
4564         (DR_SCOP): New.
4565         (find_data_references_in_loop): Declared.
4566         (find_data_references_in_stmt): Declared.
4567         (create_rdg_vertices): Declared.
4568         (dr_may_alias_p): Declared.
4569         (stmt_simple_memref_p): Declared.
4570         (struct rdg_edge): Add a field ddr_p relation.
4571         (build_empty_rdg): Declared.
4572         * lambda.h (lambda_matrix): Declare a VEC of.
4573         (find_induction_var_from_exit_cond): Declared.
4574         (lambda_vector_compare): New.
4575         * common.opt (fgraphite, floop-strip-mine,
4576         floop-interchange, floop-block): New flags.
4577         * lambda-code.c (find_induction_var_from_exit_cond): Export.
4578         * cfgloop.c (is_loop_exit): New.
4579         * cfgloop.h (is_loop_exit): Declared.
4580         (create_empty_if_region_on_edge): Declared.
4581         (create_empty_loop_on_edge): Declared.
4582         * tree-flow.h (add_phi_node_to_bb): Declared.
4583         (make_phi_node): Declared.
4584         (rename_variables_in_bb): Declared.
4585         (perfect_loop_nest_depth): Declared.
4586         (graphite_transform_loops): Declared.
4587         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
4588         (graphite.o-warn): Add -Wno-error.
4589         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
4590         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
4591         (INCLUDES): Add PPLINC, CLOOGINC.
4592         (OBJS-common): Add graphite.o.
4593         (graphite.o): Add rule.
4594         * gimple.h (gimple_vec): ... here.
4595         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
4596         * passes.c (init_optimization_passes): Schedule
4597         pass_graphite_transforms.
4598
4599 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
4600
4601         PR target/37283
4602         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
4603         and -fno-toplevel-reorder after handle_options.
4604
4605 2008-09-02  Paul Brook  <paul@codesourcery.com>
4606
4607         * config/arm/arm.c (arm_tune_cortex_a9): Define.
4608         (arm_override_options): Set arm_tune_cortex_a9.
4609         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
4610         (arm_issue_rate): Handle cortexa9.
4611         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
4612         * config/arm/arm-cores.def: Add cortex-a9.
4613         * config/arm/arm-tune.md: Regenerate.
4614         * config/arm/arm.md: Include cortex-a9.md.
4615         (generic_sched, generic_vfp): Add cortexa9.
4616         * config/arm/cortex-a9.md: New file.
4617
4618 2008-09-02  Richard Guenther  <rguenther@suse.de>
4619
4620         PR tree-optimization/37327
4621         * tree-vrp.c (register_new_assert_for): Make sure to not have
4622         TREE_OVERFLOW set on the bound.
4623
4624 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
4625
4626         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
4627
4628         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
4629         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
4630         spec_info->mask.
4631
4632 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
4633
4634         * gcc/config/spu/spu.md (divdf3): Removed.
4635
4636 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4637
4638         PR tree-optimization/37095
4639         * cgraph.c (cgraph_node): When creating new cgraph node after
4640         assembler_name_hash has been populated, record it in the hash
4641         table.
4642
4643 2008-09-01  Paul Brook  <paul@codesourcery.com>
4644
4645         * doc/invoke.texi: Document -mword-relocations.
4646         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4647         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4648         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4649         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
4650         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
4651         (arm_emit_movpair): New function.
4652         (arm_print_operand <c>): Handle sybolic addresses.
4653         * config/arm/arm.h (TARGET_USE_MOVT): Define.
4654         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4655         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
4656         * config/arm/arm.opt: Add -mword-relocations.
4657         * config/arm/arm.md (movsi): Use arm_emit_movpair.
4658         (arm_movt, arm_movw): New.
4659
4660 2008-09-01  Paul Brook  <paul@codesourcery.com>
4661
4662         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
4663         Allow Interworking on ARMv4 EABI based targets.
4664         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
4665         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
4666
4667 2008-09-01  Paul Brook  <paul@codesourcery.com>
4668
4669         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
4670         optimized LT0 test.  Remove optimization for GT.
4671
4672 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4673
4674         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
4675         openmp applications.
4676         * pa-hpux11.h (LIB_SPEC): Likewise.
4677
4678         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
4679         is defined.
4680
4681 2008-09-01  Jan Hubicka  <jh@suse.cz>
4682
4683         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
4684         present, use only counts; when guessed use only frequencies.
4685         (estimate_bb_frequencies): Use function_frequency.
4686         * profile.c (compute_branch_probabilities): Exit early when
4687         profile reading failed. Set profile_status.
4688         (branch_prob): Do not set profile_status.
4689
4690 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
4691
4692         * tree.c (protected_set_expr_location): New.
4693         * tree.h (protected_set_expr_location): New prototype.
4694         * c-tree.h (build_array_ref): Add argument.
4695         (parser_build_unary_op): Same.
4696         * c-typeck.c (build_indirect_ref): Handle new location argument.
4697         (build_array_ref): Same.
4698         (parser_build_unary_op): Same.
4699         * gimplify.c (gimplify_asm_expr): Set input_location before calling
4700         error.
4701         * c-omp.c (c_finish_omp_atomic): Pass location when calling
4702         build_indirect_ref.
4703         * c-common.c (finish_label_address_expr): Handle new location argument.
4704         * c-common.h (build_indirect_ref): Add argument.
4705         (finish_label_address_expr): Same.
4706         * c-parser.c (c_parser_unary_expression): Pass location to build
4707         functions.
4708         (c_parser_postfix_expression): Same.
4709
4710 2008-09-01  Paul Brook  <paul@codesourcery.com>
4711
4712         * config/arm/arm.md: Include cortex-r4f.md.
4713         (attr fpu): Update type list.
4714         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
4715         fconstd, fcmps and fcmpd.
4716         (attr tune_cortexr4): Define.
4717         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
4718         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
4719         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
4720         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
4721         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
4722         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
4723         cortex_a8_vfp_farith: Ditto.
4724         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
4725         * config/arm/cortex-r4.md: Use tune_cortexr4.
4726         * config/arm/cortex-r4f.md: New file.
4727
4728 2008-09-01  Richard Guenther  <rguenther@suse.de>
4729
4730         PR tree-optimization/37305
4731         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
4732         the result of constant conversions.
4733         (fold_gimple_assign): Likewise.
4734
4735 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
4736
4737         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
4738         #ifdef ENABLE_CHECKING.
4739
4740 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
4741
4742         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
4743         * sched-int.h (print_insn, print_pattern, print_value): Declare also
4744         when !INSN_SCHEDULING.
4745
4746 2008-09-01  Andreas Schwab  <schwab@suse.de>
4747
4748         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
4749
4750 2008-09-01  Paul Brook  <paul@codesourcery.com>
4751
4752         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
4753
4754 2008-09-01  Jan Hubicka  <jh@suse.cz>
4755
4756         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
4757
4758         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
4759         Pass speed operand.
4760         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
4761         * gimplify.c (gimplify_init_constructor): Add speed operand.
4762         * tree-sra.c (decide_block_copy): Likewise.
4763         * tree-inline.c (estimate_move_cost): Likewise.
4764         * config/alpha/alpha.h (MOVE_RATIO): Update.
4765         * config/frv/frv.c (MOVE_RATIO): Update.
4766         * config/spu/spu.h (MOVE_RATIO): Update.
4767         * config/sparc/sparc.h (MOVE_RATIO): Update.
4768         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
4769         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
4770         * config/cris/cris.h (MOVE_RATIO): Update.
4771         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
4772         * config/arm/arm.h (MOVE_RATIO): Update.
4773         * config/pa/pa.md: Update uses of MOVE_RATIO
4774         * config/pa/pa.h (MOVE_RATIO): Update.
4775         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
4776         CLEAR_RATIO, SET_RATIO): Update.
4777         * config/h8300/h8300.h (MOVE_RATIO): Update.
4778         * config/v850/v850.h (MOVE_RATIO): Update.
4779         * config/bfin/bfin.h (MOVE_RATIO): Update.
4780
4781 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
4782             Dmitry Melnik  <dm@ispras.ru>
4783             Dmitry Zhurikhin  <zhur@ispras.ru>
4784             Alexander Monakov  <amonakov@ispras.ru>
4785             Maxim Kuvyrkov  <maxim@codesourcery.com>
4786
4787         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
4788         sel-sched-dump.c, sel-sched-ir.c: New files.
4789         * Makefile.in (OBJS-common): Add selective scheduling object files.
4790         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
4791         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
4792         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
4793         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
4794         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
4795         (make_forwarder_block): Update loop latch if we have redirected
4796         the loop latch edge.
4797         * cfgloop.c (get_loop_body_in_custom_order): New function.
4798         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
4799         (CP_FALLTHRU_PREHEADERS): Likewise.
4800         (get_loop_body_in_custom_order): Declare.
4801         * cfgloopmanip.c (has_preds_from_loop): New.
4802         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
4803         Assert that the preheader edge will be fall thru when it is set.
4804         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
4805         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
4806         fsel-sched-substitution, fselective-scheduling): New flags.
4807         * cse.c (hash_rtx_cb): New.
4808         (hash_rtx): Use it.
4809         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
4810         sel_sched_insn_cnt): New counters.
4811         * final.c (compute_alignments): Export.  Free dominance
4812         info after loop_optimizer_finalize.
4813         * genattr.c (main): Output maximal_insn_latency prototype.
4814         * genautomata.c (output_default_latencies): New.
4815         Factor its code from ...
4816         (output_internal_insn_latency_func): ... here.
4817         (output_internal_maximal_insn_latency_func): New.
4818         (output_maximal_insn_latency_func): New.
4819         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
4820         (struct hard_reg_set_iterator): New.
4821         (hard_reg_set_iter_init, hard_reg_set_iter_set,
4822         hard_reg_set_iter_next): New functions.
4823         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
4824         * lists.c (remove_free_INSN_LIST_node,
4825         remove_free_EXPR_LIST_node): New functions.
4826         * loop-init.c (loop_optimizer_init): When
4827         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
4828         calling create_preheaders.
4829         (loop_optimizer_finalize): Do not verify flow info after reload.
4830         * recog.c (validate_replace_rtx_1): New parameter simplify.
4831         Default it to true.  Update all uses.  Factor out simplifying
4832         code to ...
4833         (simplify_while_replacing): ... this new function.
4834         (validate_replace_rtx_part,
4835         validate_replace_rtx_part_nosimplify): New.
4836         * recog.h (validate_replace_rtx_part,
4837         validate_replace_rtx_part_nosimplify): Declare.
4838         * rtl.c (rtx_equal_p_cb): New.
4839         (rtx_equal_p): Use it.
4840         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
4841         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
4842         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
4843         * vecprim.h: Add a vector type for unsigned int.
4844         * haifa-sched.c: Include vecprim.h and cfgloop.h.
4845         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
4846         ready_try, cycle_issued_insns, spec_info): Make global.
4847         (readyp): Initialize.
4848         (dfa_lookahead): New global variable.
4849         (old_max_uid, old_last_basic_block): Remove.
4850         (h_i_d): Make it a vector.
4851         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
4852         through HID macro.
4853         (after_recovery, adding_bb_to_current_region_p):
4854         New variables to handle correct insertion of the recovery code.
4855         (struct ready_list): Move declaration to sched-int.h.
4856         (rgn_n_insns): Removed.
4857         (rtx_vec_t): Move to sched-int.h.
4858         (find_insn_reg_weight): Remove.
4859         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
4860         (haifa_init_h_i_d, haifa_finish_h_i_d):
4861         New functions to initialize / finalize haifa instruction data.
4862         (extend_h_i_d, init_h_i_d): Rewrite.
4863         (unlink_other_notes): Move logic to add_to_note_list.  Handle
4864         selective scheduler.
4865         (ready_lastpos, ready_element, ready_sort, reemit_notes,
4866         find_fallthru_edge): Make global, remove static prototypes.
4867         (max_issue): Make global.  Add privileged_n and state parameters.  Use
4868         them.
4869         (extend_global, extend_all): Removed.
4870         (init_before_recovery): Add new param.  Fix the handling of the case
4871         when we insert a recovery code before the EXIT which has a predecessor
4872         with a fallthrough edge to it.
4873         (create_recovery_block): Make global.  Rename to
4874         sched_create_recovery_block.  Update.
4875         (change_pattern): Rename to sched_change_pattern.  Make global.
4876         (speculate_insn): Rename to sched_speculate_insn.  Make global.
4877         Split haifa-specific functionality into ...
4878         (haifa_change_pattern): New static function.
4879         (sched_extend_bb): New static function.
4880         (sched_init_bbs): New function.
4881         (current_sched_info): Change type to struct haifa_sched_info.
4882         (insn_cost): Adjust for selective scheduling.
4883         (dep_cost_1): New function.  Move logic from ...
4884         (dep_cost): ... here.
4885         (dep_cost): Use dep_cost_1.
4886         (contributes_to_priority_p): Use sched_deps_info instead of
4887         current_sched_info.
4888         (priority): Adjust to work with selective scheduling.  Process the
4889         corner case when all dependencies don't contribute to priority.
4890         (rank_for_schedule): Use ds_weak instead of dep_weak.
4891         (advance_state): New function.  Move logic from ...
4892         (advance_one_cycle): ... here.
4893         (add_to_note_list, concat_note_lists): New functions.
4894         (rm_other_notes): Make static.  Adjust for selective scheduling.
4895         (remove_notes, restore_other_notes): New functions.
4896         (move_insn): Add two arguments.  Update assert.  Don't call
4897         reemit_notes.
4898         (choose_ready): Remove lookahead variable, use dfa_lookahead.
4899         Remove more_issue, max_points.  Move the code to initialize
4900         max_lookahead_tries to max_issue.
4901         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
4902         ready.  Adjust use of move_insn.  Call restore_other_notes.
4903         (luid): Remove.
4904         (sched_init, sched_finish): Move Haifa-specific initialization/
4905         finalization to ...
4906         (haifa_sched_init, haifa_sched_finish): ... respectively.
4907         New functions.
4908         (setup_sched_dump): New function.
4909         (haifa_init_only_bb): New static function.
4910         (haifa_speculate_insn): New static function.
4911         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
4912         (extend_ready, extend_all): Remove.
4913         (sched_extend_ready_list, sched_finish_ready_list): New functions.
4914         (create_check_block_twin, add_to_speculative_block): Use
4915         haifa_insns_init instead of extend_global.  Update to use new
4916         initialization functions.  Change parameter.  Factor out code from
4917         create_check_block_twin to ...
4918         (sched_create_recovery_edges) ... this new function.
4919         (add_block): Remove.
4920         (sched_scan_info): New.
4921         (extend_bb): Use sched_scan_info.
4922         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
4923         static functions for walking through scheduling region.
4924         (sched_luids): New vector variable to replace uid_to_luid.
4925         (luids_extend_insn): New function.
4926         (sched_max_luid): New variable.
4927         (luids_init_insn): New function.
4928         (sched_init_luids, sched_finish_luids): New functions.
4929         (insn_luid): New debug function.
4930         (sched_extend_target): New function.
4931         (haifa_init_insn): New static function.
4932         (sched_init_only_bb): New hook.
4933         (sched_split_block): New hook.
4934         (sched_split_block_1): New function.
4935         (sched_create_empty_bb): New hook.
4936         (sched_create_empty_bb_1): New function.
4937         (common_sched_info, ready): New global variables.
4938         (current_sched_info_var): Remove.
4939         (move_block_after_check): Use common_sched_info.
4940         (haifa_luid_for_non_insn): New static function.
4941         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
4942         (increase_insn_priority): New.
4943         * modulo-sched.c: (issue_rate): Remove static declaration.
4944         (sms_sched_info): Change type to haifa_sched_info.
4945         (sms_sched_deps_info, sms_common_sched_info): New variables.
4946         (setup_sched_infos): New.
4947         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
4948         Do not call regstat_free_calls_crossed.
4949         (sms_print_insn): Use const_rtx.
4950         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
4951         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
4952         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
4953         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
4954         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
4955         current_sched_info to use it.
4956         (enum reg_pending_barrier_mode): Move to sched-int.h.
4957         (h_d_i_d): New variable. Initialize to NULL.
4958         ({true, output, anti, spec, forward}_dependency_cache): Initialize
4959         to NULL.
4960         (estimate_dep_weak): Remove static declaration.
4961         (sched_has_condition_p): New function.  Adjust users of
4962         sched_get_condition to use it instead.
4963         (conditions_mutex_p): Add arguments indicating which conditions are
4964         reversed.  Use them.
4965         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
4966         argument to indicate whether returned condition is reversed.  Do not
4967         generate new rtx when condition should be reversed; indicate it by
4968         setting new argument instead.
4969         (add_dependence_list_and_free): Add deps parameter.
4970         Update all users.  Do not free dependence list when
4971         deps context is readonly.
4972         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
4973         contexts.
4974         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
4975         (remove_from_deps): New. Use the above functions.
4976         (cur_insn, can_start_lhs_rhs_p): New static variables.
4977         (add_or_update_back_dep_1): Initialize present_dep_type.
4978         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
4979         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
4980         haifa_note_dep): New functions implementing dependence hooks for
4981         the Haifa scheduler.
4982         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
4983         note_dep): New functions.
4984         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
4985         functions.
4986         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
4987         (free_deps): Initialize deps->reg_last.
4988         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
4989         sched_analyze_insn): Update to use dependency hooks infrastructure
4990         and readonly contexts.
4991         (deps_analyze_insn): New function.  Move part of logic from ...
4992         (sched_analyze): ... here.  Also move some logic to ...
4993         (deps_start_bb): ... here.  New function.
4994         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
4995         sel_sched_p.
4996         (sched_deps_init): New function.  Move code from ...
4997         (init_dependency_caches): ... here.  Remove.
4998         (init_deps_data_vector): New.
4999         (sched_deps_finish): New function.  Move code from ...
5000         (free_dependency_caches): ... here.  Remove.
5001         (init_deps_global, finish_deps_global): Adjust for use with
5002         selective scheduling.
5003         (get_dep_weak): Move logic to ...
5004         (get_dep_weak_1): New function.
5005         (ds_merge): Move logic to ...
5006         (ds_merge_1): New static function.
5007         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
5008         (ds_get_max_dep_weak): New function.
5009         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
5010         (n_insns): Rename to rgn_n_insns.
5011         (debug_ebb_dependencies): New function.
5012         (init_ready_list): Use it.
5013         (begin_schedule_ready): Use sched_init_only_bb.
5014         (ebb_print_insn): Indicate when an insn starts a new cycle.
5015         (contributes_to_priority, compute_jump_reg_dependencies,
5016         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
5017         (add_block1): Remove to ebb_add_block.
5018         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
5019         (schedule_ebb): Initialize them.  Use remove_notes instead of
5020         rm_other_notes.  Use haifa_local_init/finish.
5021         (schedule_ebbs): Use haifa_sched_init/finish.
5022         * sched-int.h: Include vecprim.h, remove rtl.h.
5023         (struct ready_list): Delete declaration.
5024         (sched_verbose_param, enum sched_pass_id_t,
5025         bb_vec_t, insn_vec_t, rtx_vec_t): New.
5026         (struct sched_scan_info_def): New structure.
5027         (sched_scan_info, sched_scan, sched_init_bbs,
5028         sched_init_luids, sched_finish_luids, sched_extend_target,
5029         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
5030         (struct common_sched_info_def): New.
5031         (common_sched_info, haifa_common_sched_info,
5032         sched_emulate_haifa_p): Declare.
5033         (sel_sched_p): New.
5034         (sched_luids): Declare.
5035         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
5036         (sched_max_luid, insn_luid): Declare.
5037         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
5038         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
5039         print_insn, print_pattern, print_value, haifa_classify_insn,
5040         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
5041         setup_sched_dump, sched_init, sched_finish,
5042         sel_insn_is_speculation_check): Export.
5043         (struct ready_list): Move from haifa-sched.c.
5044         (ready_try, ready, max_issue): Export.
5045         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
5046         sched_init_only_bb, sched_split_block, sched_split_block_1,
5047         sched_create_empty_bb, sched_create_empty_bb_1,
5048         sched_create_recovery_block, sched_create_recovery_edges): Export.
5049         (enum reg_pending_barrier_mode): Export.
5050         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
5051         (deps_t): New.
5052         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
5053         print_insn field.  Move add_block and fix_recovery_cfg to
5054         common_sched_info_def.  Move compute_jump_reg_dependencies,
5055         use_cselib  ...
5056         (struct sched_deps_info_def): ... this new structure.
5057         (sched_deps_info): Declare.
5058         (struct spec_info_def): Remove weakness_cutoff, add
5059         data_weakness_cutoff and control_weakness_cutoff.
5060         (spec_info): Declare.
5061         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
5062         dep_count field.
5063         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
5064         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
5065         (current_sched_info): Change type to struct haifa_sched_info.
5066         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
5067         (h_d_i_d): New variable.
5068         (HDID): New accessor macro.
5069         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
5070         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
5071         and HDID.
5072         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
5073         (enum SCHED_FLAGS): Update for selective scheduler.
5074         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
5075         (init_dependency_caches, free_dependency_caches): Delete declarations.
5076         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
5077         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
5078         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
5079         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
5080         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
5081         ds_to_dt): Export.
5082         (rm_other_notes): Delete declaration.
5083         (schedule_block): Remove one argument.
5084         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
5085         ready_element, ready_lastpos, sched_extend_ready_list,
5086         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
5087         concat_note_lists): Export.
5088         (struct region): Move from sched-rgn.h.
5089         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5090         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5091         BLOCK_TO_BB, CONTAINING_RGN): Export.
5092         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
5093         (current_nr_blocks, current_blocks, target_bb): Likewise.
5094         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
5095         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
5096         sched_rgn_local_init, extend_regions,
5097         rgn_make_new_region_out_of_new_block, compute_priorities,
5098         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
5099         extend_rgns, deps_join rgn_setup_common_sched_info,
5100         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
5101         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
5102         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
5103         increase_insn_priority): Likewise.
5104         * sched-rgn.c: Include sel-sched.h.
5105         (ref_counts): New static variable.  Use it ...
5106         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
5107         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
5108         (sched_is_disabled_for_current_region_p): Delete static declaration.
5109         (struct region): Move to sched-int.h.
5110         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5111         ebb_head): Define and initialize.
5112         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5113         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
5114         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
5115         sched-int.h.
5116         (find_single_block_region): Add new argument to indicate that EBB
5117         regions should be constructed.
5118         (debug_live): Delete declaration.
5119         (current_nr_blocks, current_blocks, target_bb):
5120         Remove static qualifiers.
5121         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
5122         declaration.
5123         (init_regions): Delete declaration.
5124         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
5125         rgn_estimate_number_of_insns): New.
5126         (too_large): Use estimate_number_of_insns.
5127         (haifa_find_rgns): New. Move the code from ...
5128         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
5129         (free_trg_info): New.
5130         (compute_trg_info): Allocate candidate tables here instead of ...
5131         (init_ready_list): ... here.
5132         (rgn_print_insn): Use const_rtx.
5133         (contributes_to_priority, extend_regions): Delete static declaration.
5134         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
5135         (add_block1): Rename to rgn_add_block.
5136         (debug_rgn_dependencies): Delete static qualifier.
5137         (new_ready): Use sched_deps_info.  Simplify.
5138         (rgn_common_sched_info, rgn_const_sched_deps_info,
5139         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
5140         New.
5141         (region_sched_info): Rename to rgn_const_sched_info.
5142         (deps_join): New, extracted from ...
5143         (propagate_deps): ... here.
5144         (compute_block_dependences, debug_dependencies): Update for selective
5145         scheduling.
5146         (free_rgn_deps, compute_priorities): New functions.
5147         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
5148         sched_rgn_compute_dependencies): New functions.
5149         (schedule_region): Use them.
5150         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
5151         rgn_setup_common_sched_info, rgn_setup_sched_infos):
5152         New functions.
5153         (schedule_insns): Call new functions that were split out.
5154         (rgn_make_new_region_out_of_new_block): New.
5155         (get_rgn_sched_max_insns_priority): New.
5156         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
5157         scheduling when appropriate.
5158         * sched-vis.c: Include insn-attr.h.
5159         (print_value, print_pattern): Make global.
5160         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
5161         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
5162         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
5163         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
5164         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
5165         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
5166         hooks.  Initialize them to 0.
5167         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
5168         * target.h (struct gcc_target): Add them.  Rename gen_check field to
5169         gen_spec_check.
5170         * flags.h (sel_sched_switch_set): Declare.
5171         * opts.c (sel_sched_switch_set): New variable.
5172         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
5173         pipelining is disabled from command line.
5174         (common_handle_option): Record whether selective scheduling is
5175         requested from command line.
5176         * doc/invoke.texi: Document new flags and parameters.
5177         * doc/tm.texi: Document new target hooks.
5178         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
5179         ia64_gen_check.
5180         (dfa_state_size): Do not declare locally.
5181         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
5182         * config/rs6000/rs6000.c (rs6000_init_sched_context,
5183         rs6000_alloc_sched_context, rs6000_set_sched_context,
5184         rs6000_free_sched_context): New functions.
5185         (struct _rs6000_sched_context): New.
5186         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
5187         scheduling.
5188         (rs6000_sched_finish): Do not run for selective scheduling.
5189
5190 2008-08-31  Jan Hubicka  <jh@suse.cz>
5191
5192         * frv.c (frv_rtx_costs): Update forward declaration.
5193         * spu.c (spu_rtx_costs): Likewise.
5194         * pdp11.c: Include df.h
5195         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
5196         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
5197         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
5198         * iq2000.c (iq2000_address_cost): Add speed argument.
5199         (iq2000_rtx_costs): Likewise.
5200         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
5201         update call of mn10300_address_cost.
5202         * mcore.c: Include df.h
5203         (mcore_rtx_costs): Update prototype.
5204         * score3.c: Include df.h
5205         (score3_rtx_costs): Remove speed argument.
5206         * score7.c: Include df.h
5207         (score7_address_cost): Remove speed argument.
5208         * score-protos.h (score_address_cost): Update prototype.
5209         * score.c: Include df.h
5210         (score_rtx_costs): Update call of costs functions.
5211         * v850.c (v850_rtx_costs): Add bool argument.
5212
5213 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
5214
5215         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
5216
5217 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5218
5219         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
5220         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
5221
5222 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5223
5224         * mkmap-flat.awk: Add option pe_dll.
5225         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
5226         * config/i386/t-cygwin (SHLIB_LC): Add.
5227         * config/i386/t-mingw32 (SHLIB_LC): Add.
5228         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
5229         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
5230         (LINK_SPEC): Support libgcc_s.
5231         (LIBGCC_SPEC): Support libgcc_s.
5232         (LIBGCC_SONAME): New.
5233
5234 2008-08-31  Jan Hubicka  <jh@suse.cz>
5235
5236         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
5237         mistakely had old version of patch.
5238
5239         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
5240         (ipcp_estimate_growth): New.
5241         (ipcp_insert_stage): Use ipcp_estimate_growth.
5242         * profile.c (branch_prob): When reading failed, do not consider
5243         profile as read.
5244
5245 2008-08-31  Jan Hubicka  <jh@suse.cz>
5246
5247         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
5248         loop is optimized for speed.
5249
5250 2008-08-31  Richard Guenther  <rguenther@suse.de>
5251
5252         PR middle-end/37289
5253         * fold-const.c (fold_binary): Retain conversions in folding
5254         ~A + 1 to -A.
5255
5256 2008-08-31  Jan Hubicka  <jh@suse.cz>
5257
5258         * postreload-gcse.c (eliminate_partially_redundant_loads):
5259         Use optimize_bb_for_size_p.
5260         * predict.c (maybe_hot_frequency_p): Make inline.
5261         (maybe_hot_count_p): Break out from ...
5262         (maybe_hot_bb_p): ... this one.
5263         (maybe_hot_edge_p): Simplify.
5264         * basic-block.h (probably_cold_bb_p): Remove.
5265
5266 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5267
5268         PR target/37168
5269         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
5270         prototype.
5271         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
5272         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
5273         Also split V4SFmode.
5274         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
5275         vector float modes.
5276
5277 2008-08-31  Jan Hubicka  <jh@suse.cz>
5278
5279         * predict.c (PROB_VERY_LIKELY): Make small enough so things
5280         become cold.
5281         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
5282
5283 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5284
5285         PR debug/37287
5286         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
5287         add source coords.
5288
5289         * dwarf2out.c (native_encode_initializer): Subtract min_index for
5290         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
5291
5292 2008-08-31  Jan Hubicka  <jh@suse.cz>
5293
5294         * sparc.h (BRANCH_COST): Fix macro definition.
5295         * avr.c (avr_operand_rtx_cost): Add speed argument.
5296         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
5297
5298 2008-08-31  Richard Guenther  <rguenther@suse.de>
5299
5300         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
5301         types instead of operands.  Re-instantiate verifying of
5302         binary expression operands.
5303
5304 2008-08-30  Jan Hubicka  <jh@suse.cz>
5305
5306         * fwprop.c (should_replace_address): Add speed attribute.
5307         (PR_OPTIMIZE_FOR_SPEED): New flag.
5308         (propagate_rtx_1): Use it.
5309         (propagate_rtx): Set it.
5310         (try_fwprop_subst): Update call of rtx_costs.
5311         (forward_propagate_and_simplify): LIkewise.
5312         * hooks.c (hook_int_rtx_bool_0): New
5313         (hook_bool_rtx_int_int_intp_false): Replace by ...
5314         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5315         * hooks.h (hook_int_rtx_bool_0): New
5316         (hook_bool_rtx_int_int_intp_false): Replace by ...
5317         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5318         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
5319         (prepare_cmp_insn): UPdate call of rtx_cost.
5320         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
5321         (reload_cse_simplify_operands): Update call of rtx_cost.
5322         (reload_cse_move2add): call of rtx_cost.
5323         * target.h (struct gcc_target): Update rtx_costs and address_costs.
5324         * rtlanal.c (rtx_cost): Add speed argument.
5325         (address_cost): Add speed argument
5326         (default_address_cost): Likewise.
5327         (insn_rtx_cost): Likewise.
5328         * cfgloopanal.c (seq_cost): Add speed argument.
5329         (target_reg_cost, target_spill_cost): Turn to array.
5330         (init_set_costs): Update for speed.
5331         (estimate_reg_pressure_cost): Add speed argument.
5332         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
5333         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
5334         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
5335         (seq_cost): Add speed argument.
5336         (computation_cost): Add speed arugment.
5337         (add_cost, multiply_by_const, get_address_cost): add speed argument.
5338         (force_expr_to_var_cost): Update for profile info.
5339         (force_var_cost): Likewise.
5340         (split_address_cost): Likewise.
5341         (ptr_difference_cost): Likewise.
5342         (difference_cost): Likewise.
5343         (get_computation_cost_at): Likewise.
5344         (determine_iv_cost): Likewise.
5345         (ivopts_global_cost_for_size): Likewise.
5346         (rewrite_use_address): Likewise.
5347         (tree_ssa_iv_optimize_loop): Initialize speed field.
5348         * cse.c (optimize_this_for_speed_p): New static var.
5349         (notreg_cost): Update call of rtx_cost.
5350         (cse_extended_basic_block): set optimize_this_for_speed_p.
5351         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
5352         (noce_try_cmove_arith): Likewise.
5353         (noce_try_sign_mask): LIkewise.
5354         * expr.c (compress_float_constant): Update rtx_cost calls.
5355         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
5356         argument.
5357         (addr_to_parts): Likewise.
5358         (create_mem_ref): Likewise.
5359         * dse.c (find_shift_sequence): Add speed argument.
5360         (replace_read): Update call.
5361         * calls.c (precompute_register_parameters): Update call of rtx_cost.
5362         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
5363         * neg_cost, shift_cost, shiftadd_cost,
5364         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
5365         mul_highpart_cost): Increase dimension.
5366         (init_expmed): Initialize for both size and speed.
5367         (expand_shift): Use profile.
5368         (synth_mult): Use profile.
5369         (choose_mult_variant): Use profile.
5370         (expand_mult): Use profile.
5371         (expand_mult_highpart_optab): Use profile.
5372         (expand_mult_highpart): Use profile.
5373         (expand_smod_pow2): Use profile.
5374         (expand_divmod): Use profile.
5375         * simplify-rtx.c (simplify_binary_operation_1): Update call of
5376         rtx_cost.
5377         * loop-invariant.c (create_new_invariant): Use profile.
5378         (gain_for_invariant): Add speed parameter.
5379         (best_gain_for_invariant): Likewise.
5380         (find_invariants_to_move): Likewise.
5381         (move_single_loop_invariants): Set it.
5382         * target-def.h (TARGET_RTX_COSTS): Use hook.
5383         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
5384         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
5385         * output.h (default_address_cost): Update prototype.
5386         * combine.c (optimize_this_for_speed_p): New static var.
5387         (combine_validate_cost): Update call of rtx_cost.
5388         (combine_instructions): Set optimize_this_for_speed_p.
5389         (expand_compound_operation): Update call of rtx_cost.
5390         (make_extraction):Update call of rtx_cost.
5391         (force_to_mode):Update call of rtx_cost.
5392         (distribute_and_simplify_rtx):Update call of rtx_cost.
5393         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
5394         (estimate_reg_pressure_cost): Update prototype.
5395         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
5396         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
5397         Remove.
5398         * config/alpha/alpha.c (alpha_rtx_costs): Update.
5399         (alpha_rtx_costs): Update.
5400         * config/frv/frv.c (frv_rtx_costs): Update.
5401         * config/s390/s390.c (s390_rtx_costs): Update.
5402         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
5403         (m32c_rtx_costs): Update.
5404         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
5405         (spu_rtx_costs): Update.
5406         * config/sparc/sparc.c (sparc_rtx_costs): Update.
5407         * config/m32r/m32r.c (m32r_rtx_costs): Update.
5408         * config/i386/i386.c (:ix86_address_cost): Update.
5409         (ix86_rtx_costs): Update.
5410         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
5411         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
5412         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
5413         * config/crx/crx.c (crx_address_cost): Update.
5414         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
5415         * config/stormy16/stormy16.c
5416         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
5417         * config/m68hc11/m68hc11.c
5418         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
5419         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
5420         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
5421         Update.
5422         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
5423         Update
5424         * config/ia64/ia64.c (ia64_rtx_costs): Update.
5425         * config/m68k/m68k.c (m68k_rtx_costs): Update.
5426         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
5427         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
5428         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
5429         (mcore_rtx_costs): update.
5430         * config/score/score3.c (score3_rtx_costs): Update.
5431         * config/score/score7.c (score7_rtx_costs): Update.
5432         * config/score/score3.h (score3_rtx_costs):Update.
5433         * config/score/score7.h (score7_rtx_costs): Update.
5434         * config/score/score.c (score_rtx_costs): Update.
5435         * config/arm/arm.c (arm_address_cost): Update.
5436         (arm_rtx_costs_1): Update.
5437         (arm_rtx_costs_1): Update.
5438         (arm_size_rtx_costs): Update.
5439         (arm_size_rtx_costs): Update.
5440         (arm_size_rtx_costs): Update.
5441         (arm_xscale_rtx_costs): Update.
5442         (arm_thumb_address_cost): Update.
5443         * config/pa/pa.c (hppa_address_cost): Update.
5444         * config/mips/mips.c (mips_rtx_costs): Update.
5445         * config/vax/vax.c (vax_address_cost): Update.
5446         * config/h8300/h8300.c (h8300_shift_costs): Update.
5447         (h8300_rtx_costs): Update.
5448         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
5449         (v850_rtx_costs): Update.
5450         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
5451         * config/bfin/bfin.c
5452         (bfin_address_cost): Update.
5453         (bfin_rtx_costs): Update.
5454         * stmt.c (lshift_cheap_p): Update.
5455
5456 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5457
5458         PR middle-end/36444
5459         * expmed.c (extract_bit_field_1): Check the mode size to make
5460         sure the vector modes have the same size.
5461
5462 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
5463
5464         * dojump.c (top level): Include basic-block.h to declare
5465         optimize_insn_for_speed_p
5466
5467         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
5468
5469         * opts.h (CL_SAVE): New option class for marking options that are
5470         target specific options usable in the target attribute.
5471         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
5472
5473         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
5474         can easily find the target specific options that are safe to use
5475         in the attribute or pragma.
5476
5477         * attribs.c (decl_attributes): Change #pragma GCC option to
5478         #pragma GCC target, and attribute((option(...))) to
5479         attribute((target(...))).
5480
5481         * doc/extend.texi (target attribute): Change from option
5482         attribute.  Delete push/pop/reset.
5483         (#pragma GCC target): Change from #pragma GCC option.  Delete
5484         push/pop/reset.
5485         (#pragma GCC push_options): Document new pragma.
5486         (#pragma GCC pop_options): Document new pragma.
5487         (#pragma GCC reset_options): Document new pragma.
5488
5489         * targhooks.c (default_target_option_valid_attribute_p): Add
5490         warning about port not supporting target attributes.
5491         (default_target_option_pragma_parse): New function, warn about
5492         #pragma GCC target not being supported.
5493
5494         * targhooks.h (default_target_option_pragma_parse): Add
5495         declaration.
5496
5497         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
5498         TI_CURRENT_OPTION_PRAGMA.
5499         (current_target_pragma): Rename from current_option_pragma.
5500
5501         * target.h: (struct target_option): Delete booleans for changing
5502         the optimization level on hot/cold functions.  Change signature of
5503         pragma_parse hook to take a second tree.
5504
5505         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
5506
5507         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
5508         that the declaration is done at global scope.
5509
5510         * langhooks.c (add_builtin_function_common): Move most of the code
5511         from add_builtin_function here, calling the hook passed in.
5512         (add_builtin_function): Call add_builtin_function_common with
5513         standard builtin hook.
5514         (add_builtin_function_ext_scope): New function to add builtins to
5515         global scope.
5516
5517         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
5518         hook.
5519         (add_builtin_function_ext_scope): Add declaration.
5520
5521         * c-pragma.c (handle_pragma_target): Rename from
5522         handle_pragma_option, #pragma GCC option is now #pragma GCC
5523         target.  Move warning about port not supporting target options to
5524         default pragma parse hook.  Remove push/pop/reset from this
5525         pragma.
5526         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
5527         (option_stack): Delete static variable.
5528         (optimize_stack): Ditto.
5529         (optons_stack): New stack of saved target and optimization
5530         options.
5531         (handle_pragma_push_options): New function to handle pushing both
5532         target and optimization options.
5533         (handle_pragma_pop_options): New function to handle popping both
5534         target and optimization options.
5535         (handle_pragma_reset_options): New function to handle resetting
5536         both target and optimization options to their initial state.
5537         (init_pragma): Rename handle_pragma_option to
5538         handle_pragma_target.  Add support for push_options, pop_options,
5539         and reset_options pragmas.
5540
5541         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
5542         default_target_option_pragma_parse.
5543         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
5544         default_target_option_valid_attribute_p.
5545         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5546         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5547         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
5548         optimization level on hot/cold functions.
5549
5550         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
5551         if the caller and callee have different optimization levels.
5552
5553         * c-common.c (handle_target_attribute): Rename from
5554         handle_option_attribute, attribute((option(...))) is now
5555         attribute((target(...))).  Move warning if the port does not
5556         support target attributes to the default hook.
5557         (handle_hot_attribute): Delete code to change the optimization
5558         level of hot functions.
5559         (handle_cold_attribute): Ditto.
5560
5561         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
5562         argument that is the binary tree options to use if there are no
5563         arguments.  Call ix86_valid_target_attribute_tree instead of
5564         ix86_valid_option_attribute_tree.
5565         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
5566         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
5567         ix86_pragma_option_parse.
5568
5569         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
5570         Rename from ix86_valid_option_attribute_tree.
5571
5572         * config/i386/i386.c (ix86_add_new_builtins): New function to add
5573         new builtins when the ISA changes.
5574         (ix86_valid_target_attribute_tree): Rename from
5575         ix86_valid_option_attribute_tree.  Change callers.  If the
5576         function specified optimization options, use those as the starting
5577         point before setting up the target attributes.  If the
5578         optimization options were changed in the course of setting the
5579         target attributes, record the new optimization options.
5580         (ix86_valid_target_attribute_tree_inner_p): Rename from
5581         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
5582         ix86_add_new_builtins if the ISA changed.
5583         (ix86_valid_target_attribute_p): Rename from
5584         ix86_valid_option_attribute_p.  Change callers.
5585         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
5586         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
5587         as delayed builtin functions.
5588         (struct builtin_isa): New structure to record builtin functions
5589         that should be delayed until the ISA for that function is used.
5590         (ix86_builtins_isa): Change from int to struct to track builtin
5591         functions we want to declare at some point.
5592         (def_builtin): If the front end can delay defining the builtin
5593         functions, don't create builtins for ISAs not part of the default
5594         options.
5595         (def_builtin_const): Ditto.
5596         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
5597         __builtin_ia32_pcmov_v2di to be different builtin functions.
5598         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
5599         a structure instead of an int.
5600         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
5601         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
5602         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5603         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5604
5605         * config/ia64/ia64.h
5606         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5607         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5608
5609         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
5610         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
5611         (LANG_HOOKS_INITIALIZER): Add
5612         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
5613
5614 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
5615
5616         PR target/37270
5617         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
5618         the reload address with the index register for SFmode
5619         access with a displacement.
5620
5621 2008-08-30  Jan Hubicka  <jh@suse.cz>
5622
5623         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
5624         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
5625         * dojump.c (do_jump): Likewise.
5626         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
5627         (note-if_info): Add BRANCH_COST.
5628         (noce_try_store_flag_constants, noce_try_addcc,
5629         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
5630         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
5631         find_if_case_2): Use computed branch cost.
5632         * expr.h (BRANCH_COST): Update default.
5633         * predict.c (predictable_edge_p): New function.
5634         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
5635         Update BRANCH_COST call.
5636         * basic-block.h (predictable_edge_p): Declare.
5637         * config/alpha/alpha.h (BRANCH_COST): Update.
5638         * config/frv/frv.h (BRANCH_COST): Update.
5639         * config/s390/s390.h (BRANCH_COST): Update.
5640         * config/spu/spu.h (BRANCH_COST): Update.
5641         * config/sparc/sparc.h (BRANCH_COST): Update.
5642         * config/m32r/m32r.h (BRANCH_COST): Update.
5643         * config/i386/i386.h (BRANCH_COST): Update.
5644         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
5645         BRANCH_COST.
5646         * config/sh/sh.h (BRANCH_COST): Update.
5647         * config/pdp11/pdp11.h (BRANCH_COST): Update.
5648         * config/avr/avr.h (BRANCH_COST): Update.
5649         * config/crx/crx.h (BRANCH_COST): Update.
5650         * config/xtensa/xtensa.h (BRANCH_COST): Update.
5651         * config/stormy16/stormy16.h (BRANCH_COST): Update.
5652         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
5653         * config/iq2000/iq2000.h (BRANCH_COST): Update.
5654         * config/ia64/ia64.h (BRANCH_COST): Update.
5655         * config/rs6000/rs6000.h (BRANCH_COST): Update.
5656         * config/arc/arc.h (BRANCH_COST): Update.
5657         * config/score/score.h (BRANCH_COST): Update.
5658         * config/arm/arm.h (BRANCH_COST): Update.
5659         * config/pa/pa.h (BRANCH_COST): Update.
5660         * config/mips/mips.h (BRANCH_COST): Update.
5661         * config/vax/vax.h (BRANCH_COST): Update.
5662         * config/h8300/h8300.h (BRANCH_COST): Update.
5663         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
5664         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
5665         * doc/tm.texi (BRANCH_COST): Update.
5666
5667 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
5668
5669         PR target/37283
5670         * config/arm/arm.c (arm_optimization_options): Set
5671         flag_section_anchors to 2 instead of 1 to distinguish it from
5672         -fsection-anchors given explicitely on the command line.
5673
5674 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
5675
5676         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
5677         final insn of a split.
5678
5679 2008-08-30  Jan Hubicka  <jh@suse.cz>
5680
5681         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
5682         optimized for speed.
5683         * final.c (compute_alignments): Use optimize_bb_for_size_p.
5684         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
5685         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
5686         flag_gcse_after_reload_set): New static vars.
5687         (common_handle_option): Enable those flags for profile-use.
5688         (decode_options): Remove optimize_size flags that are handled
5689         on higher granuality.
5690         * tree-vectorizer.c (vectorize_loops): Use
5691         optimize_loop_nest_for_speed_p.
5692         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
5693         * tree-predcom.c (tree_predictive_commoning): Use
5694         optimize_loop_for_speed_p.
5695         * varasm.c (assemble_start_function): Use
5696         optimize_function_for_speed_p.
5697         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
5698         * predict.c (optimize_loop_for_speed_p): Fix walk.
5699
5700 2008-08-30  Jan Hubicka  <jh@suse.cz>
5701
5702         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
5703         functions.
5704         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
5705         profile presence locally.
5706
5707 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
5708
5709         PR bootstrap/37086
5710         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
5711         versions before 4.0.
5712
5713 2008-08-29  Jan Hubicka  <jh@suse.cz>
5714
5715         * tree-inline.c (insert_init_stmt): Insert sequence even when
5716         not in SSA form.
5717
5718 2008-08-29  Jeff Law  <law@redhat.com>
5719
5720         * mn10300.c (mn10300_secondary_reload_class): We need secondary
5721         reloads for AM33-2 if IN is a pseudo with an equivalent memory
5722         location and class is an FP register.
5723
5724 2008-08-29  Jan Hubicka  <jh@suse.cz>
5725
5726         * see.c (see_merge_one_def_extension): Silence used uninitialized
5727         warning.
5728         * matrix-reorg.c (check_allocation_function): Likewise.
5729         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
5730
5731 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
5732
5733         PR c/37261
5734         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
5735         compute new & and | in type rather than TREE_TYPE (arg0).
5736
5737         * dwarf2out.c (fortran_common): Update comment.
5738         (gen_variable_die): Swap com_die and var_die variables in Fortran
5739         COMMON block handling code.
5740
5741         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
5742
5743         * dwarf2out.c (gen_const_die): New function.
5744         (size_of_die, value_format, output_die): Output larger
5745         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
5746         (native_encode_initializer): New function.
5747         (tree_add_const_value_attribute): Call it.
5748         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
5749
5750         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
5751         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
5752         TREE_THIS_VOLATILE to add_type_attribute.
5753
5754         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
5755         types.
5756         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
5757         types.
5758
5759         * dwarf2out.c (loc_by_reference): New function.
5760         (add_location_or_const_value_attribute): Use it.
5761
5762         PR fortran/23057
5763         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
5764         as DW_TAG_variable children of DW_TAG_common_block rather than
5765         DW_TAG_member children.  Put DW_AT_external to individual
5766         DW_TAG_variable DIEs, not to DW_TAG_common_block.
5767
5768         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
5769         loc_descriptor_from_tree_1.
5770
5771         PR fortran/29635
5772         PR fortran/23057
5773         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
5774         arguments to imported_module_or_decl.
5775         (debug_nothing_tree_tree): Removed.
5776         (debug_nothing_tree_tree_tree_bool): New prototype.
5777         * debug.c (do_nothing_debug_hooks): Adjust.
5778         (debug_nothing_tree_tree): Removed.
5779         (debug_nothing_tree_tree_tree_bool): New function.
5780         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
5781         (gen_variable_die): Put all common vars for the
5782         same COMMON block under one DW_TAG_common_block.
5783         (declare_in_namespace): Return new context_die, for Fortran
5784         return the module DIE instead of adding extra declarations into
5785         the namespace.
5786         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
5787         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
5788         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
5789         DW_AT_declaration.
5790         (dwarf2out_global_decl): Don't skip Fortran global vars.
5791         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
5792         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
5793         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
5794         DW_TAG_imported_declaration as child of previous
5795         DW_TAG_imported_module.
5796         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
5797         * sdbout.c (sdb_debug_hooks): Likewise.
5798         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5799
5800 2008-08-29  Jan Hubicka  <jh@suse.cz>
5801
5802         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
5803
5804         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
5805         * ipa-cp.c (n_cloning_candidates): New static variable.
5806         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
5807         (ipcp_print_all_lattices): Improve debug output.
5808         (ipcp_cloning_candidate_p): New function.
5809         (ipcp_initialize_node_lattices): Use it.
5810         (ipcp_init_stage): Do only analyzis here; prettier debug output.
5811         (ipcp_propagate_stage): Prettier debug output.
5812         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
5813         (ipcp_print_all_structures): Remove.
5814         (ipcp_need_redirect_p): Test !n_cloning_candidates.
5815         (ipcp_insert_stage): Prettier debug output; call
5816         cgraph_remove_unreachable_nodes before propagating.
5817         (pass_ipa_cp): Schedule function removal pass.
5818         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
5819         debug output.
5820         (cgraph_maybe_hot_edge_p): Move to ...
5821         * predict.c (cgraph_maybe_hot_edge_p) ... here.
5822         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
5823         (common_handle_option): Set them; enable ipa-cp when profiling.
5824         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
5825         (ipa_print_all_jump_functions): Likewise.
5826         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
5827         (ipa_print_node_params, ipa_print_all_params): New.
5828         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
5829         ipa_print_all_param_flags): Remove.
5830         (ipa_print_node_params, ipa_print_all_params): New.
5831
5832 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
5833
5834         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
5835         change from 2008-04-03.
5836         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
5837
5838 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
5839
5840         PR rtl-opt/37251
5841         * ira-color.c (push_allocnos_to_stack): Truncate
5842         removed_splay_allocno_vec.
5843
5844 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
5845
5846         PR rtl-opt/37243
5847         * ira-color (ira_fast_allocation): Don't assign hard registers to
5848         global allocnos.
5849
5850 2008-08-29  Jan Hubicka  <jh@suse.cz>
5851
5852         PR middle-end/37278
5853         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
5854         for cold internal loops.
5855
5856 2008-08-29  Richard Guenther  <rguenther@suse.de>
5857
5858         * tree-ssa-structalias.c (create_variable_info_for): Do not
5859         create fields for heap vars or vars with a noalias state.
5860         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
5861         from ESCAPED.
5862
5863 2008-08-29  Richard Guenther  <rguenther@suse.de>
5864
5865         * common.opt (ftree-store-ccp): Mark as preserved for
5866         backward compatibility.
5867         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
5868         * tree-pass.h (pass_store_ccp): Remove.
5869         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
5870         (first_vdef): Remove declaration.
5871         (get_value_loaded_by): Likewise.
5872         * tree-ssa-ccp.c (do_store_ccp): Remove.
5873         (get_default_value): Simplify as do_store_ccp is always false
5874         now.  Do not initialize mem_ref.
5875         (set_value_varying): Likewise.
5876         (canonicalize_float_value): Likewise.
5877         (set_lattice_value): Likewise.
5878         (likely_value): Likewise.
5879         (surely_varying_stmt_p): Likewise.
5880         (ccp_initialize): Likewise.
5881         (ccp_lattice_meet): Likewise.
5882         (ccp_visit_phi_node): Likewise.
5883         (ccp_fold): Likewise.
5884         (evaluate_stmt): Likewise.
5885         (visit_assignment): Likewise.
5886         (ccp_visit_stmt): Likewise.
5887         (execute_ssa_ccp): Fold into ...
5888         (do_ssa_ccp): ... this.
5889         (do_ssa_store_ccp): Remove.
5890         (gate_store_ccp): Likewise.
5891         (pass_store_ccp): Likewise.
5892         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
5893         initialize mem_ref.
5894         * tree-ssa-propagate.c (first_vdef): Remove.
5895         (get_value_loaded_by): Likewise.
5896         (replace_vuses_in): Likewise.
5897         (substitute_and_fold): Do not call replace_vuses_in.
5898         * opts.c (decode_options): Do not set flag_tree_store_ccp.
5899
5900 2008-08-29  Richard Guenther  <rguenther@suse.de>
5901
5902         PR middle-end/37236
5903         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
5904         PARAM_NOALIAS tags with is_heapvar.
5905         * tree-ssa-operands.c (access_can_touch_variable): Offset
5906         based tests do not apply for heapvars.  Fix offset test.
5907
5908 2008-08-29  Jan Hubicka  <jh@suse.cz>
5909
5910         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
5911         (-fipa-cp-clone): Enabled by default at -O3.
5912         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
5913         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
5914
5915 2008-08-29  Jan Hubicka  <jh@suse.cz>
5916
5917         * tree.c (build_function_type_skip_args,
5918         build_function_decl_skip_args): New functions.
5919         * tree.h (build_function_type_skip_args,
5920         build_function_decl_skip_args): Declare.
5921         * gimple.c (giple_copy_call_skip_args): New function.
5922         (giple_copy_call_skip_args): Declare.
5923
5924         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
5925         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
5926         (ipcp_node_modifiable_p): ... this one; use
5927         tree_versionable_function_p.
5928         (ipcp_create_replace_map): Improve debug output.
5929         (ipcp_need_redirect_p): Return false when not clonning.
5930         (ipcp_update_callgraph): Skip args.
5931         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
5932         skip args.
5933         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
5934         (save_inline_function_body): Update call of tree_function_versioning.
5935         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
5936         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
5937         argument.
5938         (tree_function_versioning): Likewise.
5939         * tree-inline.h (tree_function_versioning): Update prototype.
5940
5941 2008-08-29  Jan Hubicka  <jh@suse.cz>
5942
5943         * loop-unswitch.c (unswitch_single_loop): Use
5944         optimize_loop_for_speed_p.
5945         * tree-ssa-threadupdate.c (mark_threaded_blocks):
5946         Use optimize_function_for_size_p.
5947         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
5948         * postreload-gcse.c (eliminate_partially_redundant_load):
5949         Use optimize_bb_for_size_p.
5950         * value-prof.c (gimple_divmod_fixed_value_transform,
5951         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
5952         gimple_stringops_transform): Use optimize_bb_for_size_p.
5953         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
5954         * final.c (compute_alignments): Use optimize_function_for_size_p.
5955         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
5956         (fold_builtin_strcpy, fold_builtin_fputs): Use
5957         optimize_function_for_size_p.
5958         * fold-const.c (tree_swap_operands_p): Use
5959         optimize_function_for_size_p.
5960         * recog.c (relax_delay_slots): Likewise.
5961         * tree-ssa-math-opts.c (replace_reciprocal):
5962         Use optimize_bb_for_speed_p.
5963         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
5964         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
5965         optimize_function_for_size_p.
5966         (cgraph_decide_inlining_of_small_function): Use
5967         optimize_function_for_size_p.
5968         * global.c (find_reg): Use optimize_function_for_size_p.
5969         * opts.c (decode_options): Do not clear flag_tree_ch,
5970         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
5971         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
5972         work it out from profile.
5973         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
5974         optimize_loop_for_speed_p.
5975         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
5976         Constify argument.
5977         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
5978         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
5979         * tree-eh.c (decide_copy_try_finally): Use
5980         optimize_function_for_size_p.
5981         * local-alloc.c (block_alloc): Pass BB pointer.
5982         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
5983         * gcse.c (gcse_main): Use optimize_function_for_size_p.
5984         * loop-unroll.c (decide_unrolling_and_peeling):
5985         Use optimize_loop_for_size_p.
5986         (decide_peel_completely): Likewise.
5987         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
5988         optimize_loop_for_size_p.
5989         (vect_enhance_data_refs_alignment): Likewise.
5990         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
5991         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
5992         Update call.
5993         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
5994         (try_crossjump_bb): Use optimize_bb_for_size_p.
5995         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
5996         optimize_loop_for_speed_p.
5997         * bb-reorder.c (find_traces_1_round): Likewise.
5998         (copy_bb): Use optimize_bb_for_speed_p.
5999         (duplicate_computed_gotos): Likewise.
6000         * basic-block.h (optimize_loop_nest_for_size_p,
6001         optimize_loop_nest_for_speed_p): New.
6002         * stmt.c (expand_case): Use optimize_insn_for_size_p.
6003
6004 2008-08-29  Tristan Gingold  <gingold@adacore.com>
6005
6006         * gcov.c (main): Call expandargv.
6007
6008 2008-08-29  Jan Hubicka  <jh@suse.cz>
6009
6010         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
6011         is not cold.
6012         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6013         Constify arguments.
6014         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
6015         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6016         Constify.
6017         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
6018
6019 2008-08-29  Jan Hubicka  <jh@suse.cz>
6020
6021         * tree-pass.h (pass_strip_predict_hints): Declare.
6022         * predict.c (strip_builtin_expect): Rename to ...
6023         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
6024         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
6025         (tree_estimate_probability): Do not strip builtin_expect.
6026         (pass_strip_predict_hints): New pass.
6027         * tree-inline.c (expand_call_inline): When inlining cold function,
6028         predict it as unlikely.
6029         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
6030
6031 2008-08-29  Richard Guenther  <rguenther@suse.de>
6032
6033         PR tree-optimization/37207
6034         * tree-vrp.c (extract_range_from_binary_expr): Also try
6035         to constant fold if only one of the operands is a constant.
6036
6037 2008-08-29  Nick Clifton  <nickc@redhat.com>
6038
6039         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
6040         the same way as SYMBOL_REFs.
6041
6042 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
6043
6044         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
6045
6046 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6047
6048         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
6049         * config/mips/mips.md (branch_likely): Remove const.  Fix
6050         comment formatting.
6051         (define_delay for type "branch"): Change to only apply for branch
6052         with likely variant.
6053         (define_delay for type "branch" and "branch_likely" no).  New delay
6054         definition.
6055         (equality_op): New code iterator.
6056         (bbv, bbinv): New code attributes.
6057         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
6058         patterns.
6059
6060 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6061             Andrew Pinski  <pinskia@gcc.gnu.org>
6062
6063         PR 18050
6064         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
6065
6066 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
6067
6068         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
6069         rule that a symbolic constant must be defined and >= 0 for the
6070         corresponding facility to be present at compile-time.
6071         * gthr-posix.c: Likewise.
6072
6073 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6074
6075         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
6076         * config/mips/mips.md (D): New mode attribute.
6077         (mulsi3, muldi3): Merge it into ...
6078         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
6079         (muldi3_mul3): New pattern.
6080         (mulsi3_mult3): Rename to mulsi3_mul3.
6081
6082 2008-08-28  Jan Hubicka  <jh@suse.cz>
6083
6084         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
6085         to fail.
6086         * predict.c (always_optimize_for_size_p): Rename to ...
6087         (optimize_function_for_size): ... this one; make extern.
6088         (optimize_function_for_speed_p): New.
6089         (optimize_bb_for_size_p, optimize_bb_for_size_p,
6090         optimize_edge_for_size_p,optimize_edge_for_size_p,
6091         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
6092         * basic-block.h (optimize_function_for_size_p,
6093         optimize_function_for_speed_p): Declare.
6094         * i386.md (optimize_size checks): Replace them by appropriate
6095         predicate.
6096         (standard_80387_constant_p, ix86_compute_frame_layout,
6097         ix86_expand_epilogue, ix86_decompose_address,
6098         print_operand, emit_i387_cw_initialization,
6099         inline_memory_move_cost, ix86_pad_returns,
6100         ix86_reorg): Replace optimize_size checks.
6101
6102 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
6103
6104         * rtl.h (simplify_subreg_regno): Declare.
6105         * rtlanal.c (simplify_subreg_regno): New function, split out from...
6106         * simplify-rtx.c (simplify_subreg): ...here.
6107         * reload.c (find_reloads): Use simplify_subreg_regno instead of
6108         subreg_offset_representable_p.
6109
6110 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6111
6112         PR c/30949
6113         * c-typeck.c (convert_for_assignment): Give a note describing what
6114         was passed and what was expected.
6115
6116 2008-08-28  Joey Ye  <joey.ye@intel.com>
6117
6118         * doc/extend.texi: Document AVX built-in functions.
6119         * doc/invoke.texi: Document -mavx.
6120
6121 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
6122             Joey Ye  <joey.ye@intel.com>
6123             Xuepeng Guo  <xuepeng.guo@intel.com>
6124
6125         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
6126
6127         * config/i386/cpuid.h (bit_FMA): New.
6128         (bit_XSAVE): Likewise.
6129         (bit_OSXSAVE): Likewise.
6130         (bit_AVX): Likewise.
6131
6132         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
6133         define.  Use ASM_OUTPUT_AVX_PREFIX.
6134
6135         * config/i386/gmmintrin.h: New.
6136
6137         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
6138         (OPTION_MASK_ISA_AVX_SET): New.
6139         (OPTION_MASK_ISA_FMA_SET): Likewise.
6140         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
6141         (OPTION_MASK_ISA_FMA_SET): Likewise.
6142         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
6143         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
6144         (pta_flags): Add PTA_AVX and PTA_FMA.
6145         (override_options): Handle PTA_AVX and PTA_FMA.
6146         (init_cumulative_args): Handle warn_avx.
6147         (classify_argument): Return 0 for COImode and OImode.  Return
6148         1 and X86_64_AVX_CLASS for 256bit vector types.
6149         (examine_argument): Handle X86_64_AVX_CLASS.
6150         (construct_container): Likewise.
6151         (function_arg_advance_32): Pass OImode and 256bit vector types
6152         in AVX register.
6153         (function_arg_advance_64): Take a new argument to indicate if a
6154         parameter is named.  Handle 256bit vector types.  Return
6155         immediately for unnamed 256bit vector mode parameters.
6156         (function_arg_advance): Updated.
6157         (function_arg_32): Add comments for TImode.  Handle OImode
6158         and 256bit vector types.
6159         (function_arg_64): Take a new argument to indicate if a
6160         parameter is named.  Handle 256bit vector types.  Return NULL
6161         for unnamed 256bit vector mode parameters.
6162         (function_arg): Updated.
6163         (setup_incoming_varargs_64): Support
6164         AVX encoding for *sse_prologue_save_insn.
6165         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
6166         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
6167         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
6168         enabled, otherwise return -3.
6169         (standard_sse_constant_opcode): Handle AVX and 256bit vector
6170         modes.
6171         (print_reg): Support AVX registers.  Handle 'x' and 't'.
6172         Handle 'd' to duplicate the operand.
6173         (print_operand): Likewise.  Also support AVX vector compare
6174         instructions.
6175         (output_387_binary_op): Support AVX.
6176         (output_fp_compare): Likewise.
6177         (ix86_expand_vector_move_misalign): Likewise.
6178         (ix86_attr_length_vex_default): New.
6179         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6180         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6181         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6182         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6183         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
6184         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6185         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
6186         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
6187         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
6188         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
6189         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
6190         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
6191         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
6192         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
6193         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6194         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
6195         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
6196         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6197         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
6198         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
6199         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6200         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6201         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6202         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
6203         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
6204         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
6205         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
6206         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6207         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
6208         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
6209         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
6210         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
6211         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
6212         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6213         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6214         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6215         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
6216         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
6217         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
6218         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
6219         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
6220         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
6221         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
6222         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
6223         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
6224         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
6225         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6226         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6227         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6228         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6229         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6230         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6231         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6232         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6233         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6234         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6235         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6236         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6237         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6238         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6239         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6240         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6241         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6242         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
6243         and IX86_BUILTIN_MOVMSKPS256,
6244         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
6245         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
6246         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
6247         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
6248         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
6249         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
6250         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
6251         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
6252         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
6253         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
6254         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
6255         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
6256         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
6257         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
6258         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
6259         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
6260         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
6261         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
6262         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
6263         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
6264         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
6265         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
6266         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
6267         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
6268         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
6269         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
6270         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
6271         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
6272         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6273         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6274         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
6275         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
6276         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
6277         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
6278         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
6279         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
6280         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
6281         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
6282         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6283         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6284         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6285         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6286         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
6287         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
6288         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
6289         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
6290         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
6291         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
6292         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
6293         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
6294         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
6295         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
6296         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6297         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
6298         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6299         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
6300         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6301         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6302         IX86_BUILTIN_CMPPS,
6303         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
6304         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
6305         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
6306         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6307         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6308         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6309         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
6310         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6311         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
6312         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6313         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
6314         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6315         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
6316         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
6317         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
6318         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
6319         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6320         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6321         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6322         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6323         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6324         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6325         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6326         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6327         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6328         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6329         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6330         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6331         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6332         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6333         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6334         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6335         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6336         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
6337         IX86_BUILTIN_MOVMSKPS256.
6338         (ix86_init_mmx_sse_builtins): Support AVX builtins.
6339         (ix86_expand_args_builtin): Likewise.
6340         (ix86_expand_special_args_builtin): Likewise.
6341         (ix86_hard_regno_mode_ok): Handle AVX modes.
6342         (ix86_expand_vector_init_duplicate): Likewise.
6343         (ix86_expand_vector_init_one_nonzero): Likewise.
6344         (ix86_expand_vector_init_one_var): Likewise.
6345         (ix86_expand_vector_init_concat): Likewise.
6346         (ix86_expand_vector_init_general): Likewise.
6347         (ix86_expand_vector_set): Likewise.
6348         (ix86_vector_mode_supported_p): Likewise.
6349         (x86_extended_reg_mentioned_p): Check INSN_P before using
6350         PATTERN.
6351
6352         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6353         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
6354
6355         * config/i386/i386.h (TARGET_AVX): New.
6356         (TARGET_FMA): Likewise.
6357         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
6358         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
6359         (VALID_AVX256_REG_MODE): New.
6360         (AVX256_VEC_FLOAT_MODE_P): Likewise.
6361         (AVX_FLOAT_MODE_P): Likewise.
6362         (AVX128_VEC_FLOAT_MODE_P): Likewise.
6363         (AVX256_VEC_FLOAT_MODE_P): Likewise.
6364         (AVX_VEC_FLOAT_MODE_P): Likewise.
6365         (ASM_OUTPUT_AVX_PREFIX): Likewise.
6366         (ASM_OUTPUT_OPCODE): Likewise.
6367         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
6368         support.
6369         (SSE_REG_MODE_P): Allow 256bit vector modes.
6370         (ix86_args): Add a warn_avx field.
6371
6372         * config/i386/i386.md (UNSPEC_PCMP): New.
6373         (UNSPEC_VPERMIL): Likewise.
6374         (UNSPEC_VPERMIL2): Likewise.
6375         (UNSPEC_VPERMIL2F128): Likewise.
6376         (UNSPEC_MASKLOAD): Likewise.
6377         (UNSPEC_MASKSTORE): Likewise.
6378         (UNSPEC_CAST): Likewise.
6379         (UNSPEC_VTESTP): Likewise.
6380         (UNSPECV_VZEROALL): Likewise.
6381         (UNSPECV_VZEROUPPER): Likewise.
6382         (XMM0_REG): Likewise.
6383         (XMM1_REG): Likewise.
6384         (XMM2_REG): Likewise.
6385         (XMM3_REG): Likewise.
6386         (XMM4_REG): Likewise.
6387         (XMM5_REG): Likewise.
6388         (XMM6_REG): Likewise.
6389         (XMM8_REG): Likewise.
6390         (XMM9_REG): Likewise.
6391         (XMM10_REG): Likewise.
6392         (XMM11_REG): Likewise.
6393         (XMM12_REG): Likewise.
6394         (XMM13_REG): Likewise.
6395         (XMM14_REG): Likewise.
6396         (XMM15_REG): Likewise.
6397         (prefix): Likewise.
6398         (prefix_vex_imm8): Likewise.
6399         (prefix_vex_w): Likewise.
6400         (length_vex): Likewise.
6401         (maxmin): Likewise.
6402         (movoi): Likewise.
6403         (*avx_ashlti3): Likewise.
6404         (*avx_lshrti3): Likewise.
6405         (*avx_setcc<mode>): Likewise.
6406         (*fop_<mode>_comm_mixed_avx): Likewise.
6407         (*fop_<mode>_comm_avx): Likewise.
6408         (*fop_<mode>_1_mixed_avx): Likewise.
6409         (*fop_<mode>_1_avx): Likewise.
6410         (*avx_<code><mode>3): Likewise.
6411         (*avx_ieee_smin<mode>3): Likewise.
6412         (*avx_ieee_smax<mode>3): Likewise.
6413         (mode): Add OI, V8SF and V4DF.
6414         (length): Support VEX prefix.
6415         (*cmpfp_i_mixed): Set prefix attribute.
6416         (*cmpfp_i_sse): Likewise.
6417         (*cmpfp_iu_mixed): Likewise.
6418         (*cmpfp_iu_sse): Likewise.
6419         (*movsi_1): Support AVX.
6420         (*movdi_2): Likewise.
6421         (*movdi_1_rex64): Likewise.
6422         (*movti_internal): Likewise.
6423         (*movti_rex64): Likewise.
6424         (*movsf_1): Likewise.
6425         (*movdf_nointeger): Likewise.
6426         (*movdf_integer_rex64): Likewise.
6427         (*movtf_internal): Likewise.
6428         (zero_extendsidi2_32): Likewise.
6429         (zero_extendsidi2_rex64): Likewise.
6430         (*extendsfdf2_mixed): Likewise.
6431         (*extendsfdf2_sse): Likewise.
6432         (*truncdfsf_fast_mixed): Likewise.
6433         (*truncdfsf_fast_sse): Likewise.
6434         (*truncdfsf_mixed): Likewise.
6435         (fix_trunc<mode>di_sse): Likewise.
6436         (fix_trunc<mode>si_sse): Likewise.
6437         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
6438         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
6439         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
6440         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
6441         (*rcpsf2_sse): Likewise.
6442         (*rsqrtsf2_sse): Likewise.
6443         (*sqrt<mode>2_sse): Likewise.
6444         (sse4_1_round<mode>2): Likewise.
6445         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
6446         Support AVX.  Set length attribute properly for AVX.
6447
6448         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
6449         (VECTOR_MODES (FLOAT, 32)): Likewise.
6450         (VECTOR_MODE (INT, DI, 8)): Likewise.
6451         (VECTOR_MODE (INT, HI, 32)): Likewise.
6452         (VECTOR_MODE (INT, QI, 64)): Likewise.
6453         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
6454         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
6455         (VECTOR_MODE (INT, DI, 4)): Removed.
6456         (VECTOR_MODE (INT, SI, 8)): Likewise.
6457         (VECTOR_MODE (INT, HI, 16)): Likewise.
6458         (VECTOR_MODE (INT, QI, 32)): Likewise.
6459         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
6460         (INT_MODE (OI, 32)): Likewise.
6461
6462         * config/i386/i386.opt (mavx): New.
6463         (mfma): Likewise.
6464
6465         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
6466
6467         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
6468         (*mov<mode>_internal_avx): New.
6469         (*movv2sf_internal_rex64_avx): Likewise.
6470         (*movv2sf_internal_avx): Likewise.
6471
6472         * config/i386/predicates.md (const_4_to_5_operand): New.
6473         (const_6_to_7_operand): Likewise.
6474         (const_8_to_11_operand): Likewise.
6475         (const_12_to_15_operand): Likewise.
6476         (avx_comparison_float_operator): Likewise.
6477
6478         * config/i386/sse.md (AVX256MODEI): New.
6479         (AVX256MODE): Likewise.
6480         (AVXMODEQI): Likewise.
6481         (AVXMODE): Likewise.
6482         (AVX256MODEF2P): Likewise.
6483         (AVX256MODE2P): Likewise.
6484         (AVX256MODE4P): Likewise.
6485         (AVX256MODE8P): Likewise.
6486         (AVXMODEF2P): Likewise.
6487         (AVXMODEF4P): Likewise.
6488         (AVXMODEDCVTDQ2PS): Likewise.
6489         (AVXMODEDCVTPS2DQ): Likewise.
6490         (avxvecmode): Likewise.
6491         (avxvecpsmode): Likewise.
6492         (avxhalfvecmode): Likewise.
6493         (avxscalarmode): Likewise.
6494         (avxcvtvecmode): Likewise.
6495         (avxpermvecmode): Likewise.
6496         (avxmodesuffixf2c): Likewise.
6497         (avxmodesuffixp): Likewise.
6498         (avxmodesuffixs): Likewise.
6499         (avxmodesuffix): Likewise.
6500         (vpermilbits): Likewise.
6501         (pinsrbits): Likewise.
6502         (mov<mode>): Likewise.
6503         (*mov<mode>_internal): Likewise.
6504         (push<mode>1): Likewise.
6505         (movmisalign<mode>): Likewise.
6506         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6507         (avx_movdqu<avxmodesuffix>): Likewise.
6508         (avx_lddqu<avxmodesuffix>): Likewise.
6509         (<plusminus_insn><mode>3): Likewise.
6510         (*avx_<plusminus_insn><mode>3): Likewise.
6511         (*avx_vm<plusminus_insn><mode>3): Likewise.
6512         (mul<mode>3): Likewise.
6513         (*avx_mul<mode>3): Likewise.
6514         (*avx_vmmul<mode>3): Likewise.
6515         (divv8sf3): Likewise.
6516         (divv4df3): Likewise.
6517         (avx_div<mode>3): Likewise.
6518         (*avx_div<mode>3): Likewise.
6519         (*avx_vmdiv<mode>3): Likewise.
6520         (avx_rcpv8sf2): Likewise.
6521         (*avx_vmrcpv4sf2): Likewise.
6522         (sqrtv8sf2): Likewise.
6523         (avx_sqrtv8sf2): Likewise.
6524         (*avx_vmsqrt<mode>2): Likewise.
6525         (rsqrtv8sf2): Likewise.
6526         (avx_rsqrtv8sf2): Likewise.
6527         (*avx_vmrsqrtv4sf2): Likewise.
6528         (<code><mode>3): Likewise.
6529         (*avx_<code><mode>3_finite): Likewise.
6530         (*avx_<code><mode>3): Likewise.
6531         (*avx_vm<code><mode>3): Likewise.
6532         (*avx_ieee_smin<mode>3): Likewise.
6533         (*avx_ieee_smax<mode>3): Likewise.
6534         (avx_addsubv8sf3): Likewise.
6535         (avx_addsubv4df3): Likewise.
6536         (*avx_addsubv4sf3): Likewise.
6537         (*avx_addsubv2df3): Likewise.
6538         (avx_h<plusminus_insn>v4df3): Likewise.
6539         (avx_h<plusminus_insn>v8sf3): Likewise.
6540         (*avx_h<plusminus_insn>v4sf3): Likewise.
6541         (*avx_h<plusminus_insn>v2df3): Likewise.
6542         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
6543         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
6544         (*avx_maskcmp<mode>3): Likewise.
6545         (avx_nand<mode>3): Likewise.
6546         (*avx_<code><mode>3): Likewise.
6547         (*avx_nand<mode>3): Likewise.
6548         (*avx_<code><mode>3): Likewise.
6549         (*avx_cvtsi2ss): Likewise.
6550         (*avx_cvtsi2ssq): Likewise.
6551         (*avx_cvtsi2sd): Likewise.
6552         (*avx_cvtsi2sdq): Likewise.
6553         (*avx_cvtsd2ss): Likewise.
6554         (avx_cvtss2sd): Likewise.
6555         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
6556         (avx_cvtps2dq<avxmodesuffix>): Likewise.
6557         (avx_cvttps2dq<avxmodesuffix>): Likewise.
6558         (*avx_cvtsi2sd): Likewise.
6559         (*avx_cvtsi2sdq): Likewise.
6560         (avx_cvtdq2pd256): Likewise.
6561         (avx_cvtpd2dq256): Likewise.
6562         (avx_cvttpd2dq256): Likewise.
6563         (*avx_cvtsd2ss): Likewise.
6564         (*avx_cvtss2sd): Likewise.
6565         (avx_cvtpd2ps256): Likewise.
6566         (avx_cvtps2pd256): Likewise.
6567         (*avx_movhlps): Likewise.
6568         (*avx_movlhps): Likewise.
6569         (avx_unpckhps256): Likewise.
6570         (*avx_unpckhps): Likewise.
6571         (avx_unpcklps256): Likewise.
6572         (*avx_unpcklps): Likewise.
6573         (avx_movshdup256): Likewise.
6574         (avx_movsldup256): Likewise.
6575         (avx_shufps256): Likewise.
6576         (avx_shufps256_1): Likewise.
6577         (*avx_shufps_<mode>): Likewise.
6578         (*avx_loadhps): Likewise.
6579         (*avx_storelps): Likewise.
6580         (*avx_loadlps): Likewise.
6581         (*avx_movss): Likewise.
6582         (*vec_dupv4sf_avx): Likewise.
6583         (*vec_concatv2sf_avx): Likewise.
6584         (*vec_concatv4sf_avx): Likewise.
6585         (*vec_setv4sf_0_avx): Likewise.
6586         (*vec_setv4sf_avx): Likewise.
6587         (*avx_insertps): Likewise.
6588         (avx_vextractf128<mode>): Likewise.
6589         (vec_extract_lo_<mode>): Likewise.
6590         (vec_extract_hi_<mode>): Likewise.
6591         (vec_extract_lo_<mode>): Likewise.
6592         (vec_extract_hi_<mode>): Likewise.
6593         (vec_extract_lo_v16hi): Likewise.
6594         (vec_extract_hi_v16hi): Likewise.
6595         (vec_extract_lo_v32qi): Likewise.
6596         (vec_extract_hi_v32qi): Likewise.
6597         (avx_unpckhpd256): Likewise.
6598         (*avx_unpckhpd): Likewise.
6599         (avx_movddup256): Likewise.
6600         (*avx_movddup): Likewise.
6601         (avx_unpcklpd256): Likewise.
6602         (*avx_unpcklpd): Likewise.
6603         (avx_shufpd256): Likewise.
6604         (avx_shufpd256_1): Likewise.
6605         (*avx_punpckhqdq): Likewise.
6606         (*avx_punpcklqdq): Likewise.
6607         (*avx_shufpd_<mode>): Likewise.
6608         (*avx_storehpd): Likewise.
6609         (*avx_loadhpd): Likewise.
6610         (*avx_loadlpd): Likewise.
6611         (*avx_movsd): Likewise.
6612         (*vec_concatv2df_avx): Likewise.
6613         (*avx_<plusminus_insn><mode>3): Likewise.
6614         (*avx_<plusminus_insn><mode>3): Likewise.
6615         (*avx_mulv8hi3): Likewise.
6616         (*avxv8hi3_highpart): Likewise.
6617         (*avx_umulv8hi3_highpart): Likewise.
6618         (*avx_umulv2siv2di3): Likewise.
6619         (*avx_mulv2siv2di3): Likewise.
6620         (*avx_pmaddwd): Likewise.
6621         (*avx_mulv4si3): Likewise.
6622         (*avx_ashr<mode>3): Likewise.
6623         (*avx_lshr<mode>3): Likewise.
6624         (*avx_ashl<mode>3): Likewise.
6625         (*avx_<code><mode>3): Likewise.
6626         (*avx_eq<mode>3): Likewise.
6627         (*avx_gt<mode>3): Likewise.
6628         (*avx_nand<mode>3): Likewise.
6629         (*avx_nand<mode>3): Likewise.
6630         (*avx_<code><mode>3): Likewise.
6631         (*avx_<code><mode>3): Likewise.
6632         (*avx_packsswb): Likewise.
6633         (*avx_packssdw): Likewise.
6634         (*avx_packuswb): Likewise.
6635         (*avx_punpckhbw): Likewise.
6636         (*avx_punpcklbw): Likewise.
6637         (*avx_punpckhwd): Likewise.
6638         (*avx_punpcklwd): Likewise.
6639         (*avx_punpckhdq): Likewise.
6640         (*avx_punpckldq): Likewise.
6641         (*avx_pinsr<avxmodesuffixs>): Likewise.
6642         (*avx_pinsrq): Likewise.
6643         (*avx_loadld): Likewise.
6644         (*vec_extractv2di_1_rex64_avx): Likewise.
6645         (*vec_extractv2di_1_avx): Likewise.
6646         (*vec_dupv2di_avx): Likewise.
6647         (*vec_concatv2si_avx): Likewise.
6648         (*vec_concatv4si_1_avx): Likewise.
6649         (*vec_concatv2di_avx): Likewise.
6650         (*vec_concatv2di_rex64_avx): Likewise.
6651         (*avx_uavgv16qi3): Likewise.
6652         (*avx_uavgv8hi3): Likewise.
6653         (*avx_psadbw): Likewise.
6654         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
6655         (*avx_phaddwv8hi3): Likewise.
6656         (*avx_phadddv4si3): Likewise.
6657         (*avx_phaddswv8hi3): Likewise.
6658         (*avx_phsubwv8hi3): Likewise.
6659         (*avx_phsubdv4si3): Likewise.
6660         (*avx_phsubswv8hi3): Likewise.
6661         (*avx_pmaddubsw128): Likewise.
6662         (*avx_pmulhrswv8hi3): Likewise.
6663         (*avx_pshufbv16qi3): Likewise.
6664         (*avx_psign<mode>3): Likewise.
6665         (*avx_palignrti): Likewise.
6666         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6667         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6668         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6669         (*avx_mpsadbw): Likewise.
6670         (*avx_packusdw): Likewise.
6671         (*avx_pblendvb): Likewise.
6672         (*avx_pblendw): Likewise.
6673         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6674         (avx_ptest256): Likewise.
6675         (avx_roundp<avxmodesuffixf2c>256): Likewise.
6676         (*avx_rounds<ssemodesuffixf2c>): Likewise.
6677         (*avx_aesenc): Likewise.
6678         (*avx_aesenclast): Likewise.
6679         (*avx_aesdec): Likewise.
6680         (*avx_aesdeclast): Likewise.
6681         (avx_vzeroupper): Likewise.
6682         (avx_vzeroupper_rex64): Likewise.
6683         (avx_vpermil<mode>): Likewise.
6684         (avx_vpermilvar<mode>3): Likewise.
6685         (avx_vpermil2<mode>3): Likewise.
6686         (avx_vperm2f128<mode>3): Likewise.
6687         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6688         (avx_vbroadcastss256): Likewise.
6689         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
6690         (avx_vinsertf128<mode>): Likewise.
6691         (vec_set_lo_<mode>): Likewise.
6692         (vec_set_hi_<mode>): Likewise.
6693         (vec_set_lo_<mode>): Likewise.
6694         (vec_set_hi_<mode>): Likewise.
6695         (vec_set_lo_v16hi): Likewise.
6696         (vec_set_hi_v16hi): Likewise.
6697         (vec_set_lo_v32qi): Likewise.
6698         (vec_set_hi_v32qi): Likewise.
6699         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6700         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6701         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
6702         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
6703         (vec_init<mode>): Likewise.
6704         (*vec_concat<mode>_avx): Likewise.
6705         (blendbits): Support V8SF and V4DF.
6706         (sse2_movq128): Support AVX.
6707         (<sse>_movnt<mode>): Likewise.
6708         (sse2_movntv2di): Likewise.
6709         (sse_rcpv4sf2): Likewise.
6710         (sse_sqrtv4sf2): Likewise.
6711         (sse_rsqrtv4sf2): Likewise.
6712         (<sse>_comi): Likewise.
6713         (<sse>_ucomi): Likewise.
6714         (sse_cvtss2si): Likewise.
6715         (sse_cvtss2si_2): Likewise.
6716         (sse_cvtss2siq): Likewise.
6717         (sse_cvtss2siq_2): Likewise.
6718         (sse_cvttss2si): Likewise.
6719         (sse_cvttss2siq): Likewise.
6720         (sse2_cvtsd2si): Likewise.
6721         (sse2_cvtsd2si_2): Likewise.
6722         (sse2_cvtsd2siq): Likewise.
6723         (sse2_cvtsd2siq_2): Likewise.
6724         (sse2_cvttsd2si): Likewise.
6725         (sse2_cvttsd2siq): Likewise.
6726         (sse2_cvtdq2pd): Likewise.
6727         (*sse2_cvtpd2dq): Likewise.
6728         (*sse2_cvttpd2dq): Likewise.
6729         (*sse2_cvtpd2ps): Likewise.
6730         (sse2_cvtps2pd): Likewise.
6731         (sse3_movshdup): Likewise.
6732         (sse3_movsldup): Likewise.
6733         (sse_storehps): Likewise.
6734         (*sse4_1_extractps): Likewise.
6735         (sse2_storelpd): Likewise.
6736         (vec_dupv2df_sse3): Likewise.
6737         (*vec_concatv2df_sse3): Likewise.
6738         (*sse4_1_pextrb): Likewise.
6739         (*sse4_1_pextrb_memory): Likewise.
6740         (*sse2_pextrw): Likewise.
6741         (*sse4_1_pextrw_memory): Likewise.
6742         (*sse4_1_pextrd): Likewise.
6743         (*sse4_1_pextrq): Likewise.
6744         (sse2_pshufd_1): Likewise.
6745         (sse2_pshuflw_1): Likewise.
6746         (sse2_pshufhw_1): Likewise.
6747         (*sse2_storeq_rex64): Likewise.
6748         (*vec_dupv4si): Likewise.
6749         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
6750         (sse2_pmovmskb): Likewise.
6751         (*sse2_maskmovdqu): Likewise.
6752         (*sse2_maskmovdqu_rex64): Likewise.
6753         (sse_ldmxcsr): Likewise.
6754         (sse_stmxcsr): Likewise.
6755         (abs<mode>2): Likewise.
6756         (sse4_1_movntdqa): Likewise.
6757         (sse4_1_phminposuw): Likewise.
6758         (sse4_1_extendv8qiv8hi2): Likewise.
6759         (*sse4_1_extendv8qiv8hi2): Likewise.
6760         (sse4_1_extendv4qiv4si2): Likewise.
6761         (*sse4_1_extendv4qiv4si2): Likewise.
6762         (sse4_1_extendv2qiv2di2): Likewise.
6763         (*sse4_1_extendv2qiv2di2): Likewise.
6764         (sse4_1_extendv4hiv4si2): Likewise.
6765         (*sse4_1_extendv4hiv4si2): Likewise.
6766         (sse4_1_extendv2hiv2di2): Likewise.
6767         (*sse4_1_extendv2hiv2di2): Likewise.
6768         (sse4_1_extendv2siv2di2): Likewise.
6769         (*sse4_1_extendv2siv2di2): Likewise.
6770         (sse4_1_zero_extendv8qiv8hi2): Likewise.
6771         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
6772         (sse4_1_zero_extendv4qiv4si2): Likewise.
6773         (*sse4_1_zero_extendv4qiv4si2): Likewise.
6774         (sse4_1_zero_extendv2qiv2di2): Likewise.
6775         (*sse4_1_zero_extendv2qiv2di2): Likewise.
6776         (sse4_1_zero_extendv4hiv4si2): Likewise.
6777         (*sse4_1_zero_extendv4hiv4si2): Likewise.
6778         (sse4_1_zero_extendv2hiv2di2): Likewise.
6779         (*sse4_1_zero_extendv2hiv2di2): Likewise.
6780         (sse4_1_zero_extendv2siv2di2): Likewise.
6781         (*sse4_1_zero_extendv2siv2di2): Likewise.
6782         (sse4_1_ptest): Likewise.
6783         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
6784         (sse4_2_pcmpestri): Likewise.
6785         (sse4_2_pcmpestrm): Likewise.
6786         (sse4_2_pcmpistri): Likewise.
6787         (sse4_2_pcmpistrm): Likewise.
6788         (aesimc): Likewise.
6789         (aeskeygenassist): Likewise.
6790
6791 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
6792
6793         * config/i386/predicates.md (vzeroall_operation): New.
6794
6795         * config/i386/sse.md (avx_vzeroall): New.
6796         (*avx_vzeroall): Likewise.
6797
6798 2008-08-28  Paul Brook  <paul@codesourcery.com>
6799             Mark Shinwell  <shinwell@codesourcery.com>
6800             Richard Earnshaw  <richard.earnshaw@arm.com>
6801
6802         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
6803         (TARGET_MIN_ANCHOR_OFFSET): New.
6804         (arm_override_options): Set correct anchor ranges for Thumb-1
6805         and Thumb-2 if required.
6806         (legitimize_pic_address): Handle case involving a TLS symbol
6807         reference with an addend.
6808         (arm_optimization_options): Enable section anchors at -O1 and
6809         above.
6810         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
6811         * config/arm/arm-protos.h (arm_optimization_options): New.
6812
6813 2008-08-28  Nick Clifton  <nickc@redhat.com>
6814
6815         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
6816         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
6817         attribute.
6818
6819         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
6820         * config/v850/v850.md (return): Remove frame size restriction.
6821
6822         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
6823
6824         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
6825
6826         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
6827
6828         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
6829
6830 2008-08-28  Paul Brook  <paul@codesourcery.com>
6831
6832         * config/arm/vfp11.md: Update license notice.
6833         * config/arm/cortex-r4.md: Ditto.
6834
6835 2008-08-28  Richard Guenther  <rguenther@suse.de>
6836
6837         PR tree-optimization/37207
6838         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
6839         tuplification bug.
6840
6841 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
6842
6843         PR c++/36741
6844         * tree.c (int_fits_type_p): Don't forget unsigned integers
6845           of type sizetype which higher end word equals -1.
6846
6847 2008-08-28  Ira Rosen  <irar@il.ibm.com>
6848
6849         * target.h (struct vectorize): Add new target builtin.
6850         * tree-vectorizer.c (destroy_loop_vec_info): Call
6851         vect_free_slp_instance instead of vect_free_slp_node.
6852         * tree-vectorizer.h (enum slp_load_perm_type): New.
6853         (struct _slp_instance): Add new fields.
6854         (SLP_INSTANCE_LOAD_PERMUTATION): New.
6855         (SLP_INSTANCE_LOADS): New.
6856         (vect_free_slp_tree): Remove.
6857         (vect_free_slp_instance): Declare.
6858         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
6859         (vectorizable_load): Add argument.
6860         (vect_transform_slp_perm_load): New.
6861         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
6862         vectorizable_load.
6863         (vect_get_place_in_interleaving_chain): New function.
6864         (vect_free_slp_tree): Make static.
6865         (vect_free_slp_instance): New function.
6866         (vect_build_slp_tree): Add new arguments. Allow load permutations and
6867         collect the load location in the interleaving chain.
6868         (vect_supported_slp_permutation_p): New function.
6869         (vect_supported_load_permutation_p): Likewise.
6870         (vect_analyze_slp_instance): In case of loads permutation, call
6871         vect_supported_load_permutation_p to check that the permutation is
6872         supported.
6873         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
6874         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
6875         (vect_create_mask_and_perm): New function.
6876         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
6877         (vectorizable_load): Add an argument. Don't keep the created vectors
6878         statements in the node if permutation is required. Call
6879         vect_transform_slp_perm_load to generate the permutation.
6880         (vect_transform_stmt): Add new argument. Call vectorizable_load with
6881         additional argument.
6882         (vect_schedule_slp_instance): In case of loads permutation, allocate
6883         vectorized statements structure for all the related SLP nodes. Call
6884         vect_transform_stmt with addditional argument.
6885         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
6886         * config/spu/spu.c (spu_builtin_vec_perm): New.
6887         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
6888         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
6889         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
6890         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
6891
6892 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
6893
6894         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
6895         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
6896         __gthread_cond_signal, __gthread_cond_timedwait,
6897         __gthread_cond_timedwait_recursive): New functions.
6898         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
6899         Likewise.
6900         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
6901         thread interfaces.
6902
6903 2008-08-28  Richard Guenther  <rguenther@suse.de>
6904
6905         PR middle-end/37005
6906         * fold-const.c (maybe_canonicalize_comparison_1): Require
6907         undefined overflow only for canonicalizing A +- CST cmp CST.
6908         Make sure to not generate new constants that are not inside
6909         their TYPE_MIN/MAX_VALUE range.
6910         (maybe_canonicalize_comparison): Remove undefined overflow
6911         checking from here.
6912         (fold_binary): Remove now duplicate folding.
6913
6914 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
6915
6916         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
6917         use not updated in the last change.
6918
6919 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
6920
6921         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
6922         (IRA_COVER_CLASSES): Add FPUL_REGS.
6923
6924 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6925
6926         PR 37217
6927         * c-common.c (conversion_warning): Check for null operands.
6928
6929 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6930
6931         PR c/31673
6932         * c-decl.c (check_for_loop_decls): Improve error message. Give
6933         hint.
6934
6935 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6936
6937         PR c/37186
6938         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
6939         (convert_for_assignment): Pass corrent OPT_W* parameter to
6940         WARN_FOR_ASSIGNMENT.
6941
6942 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
6943
6944         PR c++/35321
6945         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
6946
6947 2008-08-27  Paul Brook  <paul@codesourcery.com>
6948
6949         * config.gcc: Loosen checks for arm uclinux eabi targets.
6950
6951 2008-08-27  Paul Brook  <paul@codesourcery.com>
6952
6953         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
6954         _clzsi2.
6955         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
6956
6957 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
6958
6959         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
6960         the enumerators of an ENUMERAL_TYPE.
6961         * dbxout.c (dbxout_type): Ditto.
6962
6963 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6964
6965         PR rtl-opt/37219
6966         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
6967         (fwprop_addr): Check that the loop_father is not the outer loop.
6968
6969 2008-08-26  Paul Brook  <paul@codesourcery.com>
6970
6971         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
6972         Remove documentation entry for fmul type.
6973         Use fmuls to annotate single-precision multiplication patterns,
6974         fmuld to annotate double-precision multiplication patterns,
6975         fmacs to annotate single-precision multiply-accumulate patterns
6976         and fmacd to annotate double-precision multiply-accumulate patterns.
6977         * config/arm/vfp11.md: Update reservations accordingly.
6978         * config/arm/arm.md: Note that certain values of the "type"
6979         attribute are documented in vfp.md.
6980         * config/arm/arm1020e.md: Remove out of date duplicate comment.
6981         (v10_cvt): Use new fmul types.
6982
6983 2008-08-26  Paul Brook  <paul@codesourcery.com>
6984
6985         * config/arm/vfp.md: Move pipeline description for VFP11 to...
6986         * config/arm/vfp11.md: ...here.  New.
6987         * config/arm/arm.md: Include vfp11.md.
6988
6989 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
6990
6991         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
6992         parameter to inform call.
6993
6994 2008-08-26  Jeff Law  <law@redhat.com>
6995
6996         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
6997         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
6998         preferred class when copying a constant into a partial word register.
6999
7000 2008-08-26  Ben Elliston  <bje@au.ibm.com>
7001
7002         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
7003         * cp/typeck.c: Likewise.
7004         * cp/tree.c: Likewise.
7005         * gimple-low.c: Likewise.
7006         * jump.c: Likewise.
7007
7008 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
7009
7010         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
7011         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
7012
7013         * doc/passes.texi: Describe IRA.
7014
7015         * doc/tm.texi (IRA_COVER_CLASSES,
7016         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
7017
7018         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
7019         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
7020         -fira-propagate-cost, -fno-ira-share-save-slots,
7021         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
7022
7023         * flags.h (ira_algorithm): New enumeration.
7024         (flag_ira_algorithm, flag_ira_verbose): New external variable
7025         declarations.
7026
7027         * postreload.c (gate_handle_postreload): Don't do post reload
7028         optimizations unless the reload is completed.
7029
7030         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
7031         IRA.
7032
7033         * tree-pass.h (pass_ira): New external variable declaration.
7034
7035         * reload.h: Add 2008 to the Copyright.
7036
7037         * cfgloopanal.c: Include params.h.
7038         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
7039         mode.
7040
7041         * params.h (IRA_MAX_LOOPS_NUM): New macro.
7042
7043         * toplev.c (ira.h): New include.
7044         (flag_ira_algorithm, flag_ira_verbose): New external variables.
7045         (backend_init_target): Call ira_init.
7046         (backend_init): Call ira_init_once.
7047         (finalize): Call finish_ira_once.
7048
7049         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
7050         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
7051         external variables.
7052
7053         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
7054         may_move_out_cost): New external variable declarations.
7055         (move_table): New typedef.
7056
7057         * caller-save.c: Include headers output.h and ira.h.
7058         (no_caller_save_reg_set): New global variable.
7059         (save_slots_num, save_slots): New variables.
7060         (reg_save_code, reg_restore_code, add_stored_regs): Add
7061         prototypes.
7062         (init_caller_save): Set up no_caller_save_reg_set.
7063         (init_save_areas): Reset save_slots_num.
7064         (saved_hard_reg): New structure.
7065         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
7066         (initiate_saved_hard_regs, new_saved_hard_reg,
7067         finish_saved_hard_regs, saved_hard_reg_compare_func): New
7068         functions.
7069         (setup_save_areas): Add code for sharing stack slots.
7070         (all_blocks): New variable.
7071         (save_call_clobbered_regs): Process pseudo-register too.
7072         (mark_set_regs): Process pseudo-register too.
7073         (insert_one_insn): Put the insn after bb note in a empty basic
7074         block.  Add insn check.
7075
7076         * global.c (eliminable_regset): Make it external.
7077         (mark_elimination): Use DF_LR_IN for IRA.
7078         (pseudo_for_reload_consideration_p): New.
7079         (build_insn_chain): Make it external.  Don't ignore spilled
7080         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
7081         (gate_handle_global_alloc): New function.
7082         (pass_global_alloc): Add the gate function.
7083
7084         * opts.c (decode_options): Set up flag_ira.  Print the warning for
7085         -fira.
7086         (common_handle_option): Process -fira-algorithm and -fira-verbose.
7087
7088         * timevar.def (TV_IRA, TV_RELOAD): New passes.
7089
7090         * regmove.c (regmove_optimize): Don't do replacement of output for
7091         IRA.
7092
7093         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
7094         New external variable declarations.
7095
7096         * local-alloc.c (update_equiv_regs): Make it external.  Return
7097         true if jump label rebuilding should be done.  Rescan new_insn for
7098         notes.
7099         (gate_handle_local_alloc): New function.
7100         (pass_local_alloc): Add the gate function.
7101
7102         * alias.c (value_addr_p, stack_addr_p): New functions.
7103         (nonoverlapping_memrefs_p): Use them for IRA.
7104
7105         * common.opt (fira, fira-algorithm, fira-coalesce,
7106         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
7107         fira-verbose): New options.
7108
7109         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
7110         move_cost, may_move_in_cost, may_move_out_cost): Make the
7111         variables external.
7112         (move_table): Remove typedef.
7113         (init_move_cost): Make it external.
7114         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
7115         functions.
7116
7117         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
7118         setup_reg_classes): New function prototypes.
7119         (eliminable_regset): New external variable declaration.
7120         (build_insn_chain, update_equiv_regs): New function prototypes.
7121
7122         * Makefile.in (IRA_INT_H): New definition.
7123         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
7124         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
7125         (reload1.o, toplev.o): Add dependence on ira.h.
7126         (cfgloopanal.o): Add PARAMS_H.
7127         (caller-save.o): Add dependence on output.h and ira.h.
7128         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
7129         ira-emit.o, ira-lives.o): New entries.
7130
7131         * passes.c (pass_ira): New pass.
7132
7133         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
7134
7135         * reload1.c (ira.h): Include the header.
7136         (changed_allocation_pseudos): New bitmap.
7137         (init_reload): Initiate the bitmap.
7138         (compute_use_by_pseudos): Permits spilled registers in FROM.
7139         (temp_pseudo_reg_arr): New variable.
7140         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
7141         IRA.  Call alter_reg with the additional parameter.  Don't clear
7142         spilled_pseudos for IRA.  Restore original insn chain for IRA.
7143         Clear changed_allocation_pseudos at the end of reload.
7144         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
7145         (hard_regno_to_pseudo_regno): New variable.
7146         (count_pseudo): Check spilled pseudos.  Set up
7147         hard_regno_to_pseudo_regno.
7148         (count_spilled_pseudo): Check spilled pseudos. Update
7149         hard_regno_to_pseudo_regno.
7150         (find_reg): Use better_spill_reload_regno_p.  Check
7151         hard_regno_to_pseudo_regno.
7152         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
7153         code for IRA.
7154         (eliminate_regs_1): Use additional parameter for alter_reg.
7155         (finish_spills): Set up pseudo_previous_regs only for spilled
7156         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
7157         more arguments.  Don't clear live_throughout and dead_or_set for
7158         spilled pseudos.  Use additional parameter for alter_reg.  Call
7159         mark_allocation_change.  Set up changed_allocation_pseudos.
7160         Remove sanity check.
7161         (emit_input_reload_insns, delete_output_reload): Use additional
7162         parameter for alter_reg.  Call mark_allocation_change.
7163         (substitute, gen_reload_chain_without_interm_reg_p): New
7164         functions.
7165         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
7166
7167         * testsuite/gcc.dg/20080410-1.c: New file.
7168
7169         * config/s390/s390.h (IRA_COVER_CLASSES,
7170         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
7171
7172         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
7173
7174         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
7175
7176         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
7177
7178         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
7179
7180         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
7181
7182         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
7183
7184         2008-08-24  Jeff Law  <law@redhat.com>
7185         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
7186         when ignoring unavailable registers.
7187
7188         2008-08-24  Jeff Law  <law@redhat.com>
7189         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
7190         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
7191         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
7192         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
7193
7194         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
7195         * ira-build.c (allocno_range_compare_func): Stabilize sort.
7196
7197         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
7198         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
7199         * reload1.c (find_reg): Process registers in register allocation order.
7200
7201         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7202         * toplev.c (backend_init_target): Move ira_init call from
7203         here...
7204         (lang_dependent_init_target): ...to here.
7205
7206         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7207         * ira.c (setup_class_subset_and_memory_move_costs): Don't
7208         calculate memory move costs for NO_REGS.
7209
7210         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
7211         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
7212         STACK_REGS is defined.
7213
7214         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
7215         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
7216
7217         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
7218         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
7219
7220         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
7221         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
7222         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
7223         barrier.
7224
7225 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
7226             Dorit Nuzman  <dorit@il.ibm.com>
7227
7228         * gcc/config/spu/spu.md (vec_extract_evenv4si,
7229         vec_extract_evenv4sf, vec_extract_evenv8hi,
7230         vec_extract_evenv16qi, vec_extract_oddv4si,
7231         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
7232         vec_interleave_highv4sf, vec_interleave_lowv4sf,
7233         vec_interleave_highv4si, vec_interleave_lowv4si,
7234         vec_interleave_highv8hi, vec_interleave_lowv8hi,
7235         vec_interleave_highv16qi, vec_interleave_lowv16qi,
7236         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
7237
7238 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
7239
7240         PR target/36756
7241         * config/rs6000/rs6000.c (optimization_options): Don't default to
7242         section anchors without toplevel reorder.
7243
7244 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7245
7246         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
7247         (mfc_end_critical_section): Likewise.
7248
7249 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7250
7251         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
7252         all type qualifiers from element type to vector type.
7253
7254 2008-08-25  David Daney  <ddaney@avtrex.com>
7255
7256         * config/mips/mips.md (immediate_insn): Move up in file, fix
7257         comment typo, reformat.
7258         (fetchop_bit, atomic_hiqi_op memory_barrier,
7259         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
7260         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
7261         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
7262         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
7263         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
7264         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
7265         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
7266         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
7267         sync_old_nand<mode>, sync_new_nand<mode>,
7268         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
7269         test_and_set_12): Moved to sync.md.
7270         (sync.md): Include.
7271         * config/mips/sync.md: New file.
7272
7273 2008-08-25  Richard Henderson  <rth@redhat.com>
7274
7275         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
7276         (regsave): Likewise.
7277         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
7278         (output_cfi_directive): Likewise.
7279         (div_data_align): New.
7280         (output_cfi): Use it.
7281
7282 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
7283
7284         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
7285         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
7286         (TARGET_OCTEON): New macro.
7287         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
7288         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
7289         (ISA_HAS_POP): New macro.
7290         * config/mips/driver-native.c (host_detect_local_cpu): Handle
7291         Octeon.
7292         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7293         Handle Octeon.
7294         * config/mips/mips.md (cpu): Add octeon.
7295         (type): Add pop attribute value.
7296         (popcount<mode>2): New pattern.
7297         * doc/invoke.texi (-march=@var{arch}): Add octeon.
7298
7299 2008-08-24  Jan Hubicka  <jh@suse.cz>
7300
7301         * doc/invoke.texi (-fipa-cp-clone): New option.
7302         (-fipa-cp): Update docs.
7303         (--param ipcp-unit-growth):New.
7304         * ipa-cp.c: Include fibheap.h, params.h
7305         (ipcp_initialize_node_lattices): When not cloning, all externally
7306         visible functions are bottom.
7307         (ipcp_need_redirect_p): Accept clones.
7308         (ipcp_insert_stage): Use cost driven heuristics.
7309         (max_count, dead_nodes): New static vars.
7310         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
7311         ipcp_const_param_count): New functions.
7312         * common.opt (ipa-cp-clone): New command line option.
7313         * params.def (ipcp-unit-growth): New.
7314
7315 2008-08-24  Jan Hubicka  <jh@suse.cz>
7316
7317         * tree-inline.c (tree_function_versioning): Look harder
7318         for referenced vars.
7319
7320 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
7321
7322         PR tree-optimization/37185
7323         * matrix-reorg.c (transform_access_sites): Update changed stmt.
7324
7325 2008-08-23  Jan Hubicka  <jh@suse.cz>
7326
7327         * ipa-cp.c (ipcp_analyze_node): New function.
7328         (ipcp_update_cloned_node): Use it.
7329         (ipcp_init_stage): Likewise.
7330         * ipa-inline.c (function_insertion_hook_holder): New static var.
7331         (analyze_function): Break out from ....
7332         (inline_generate_summary): Here; register insertion hook.
7333         (cgraph_decide_inlining): Remove hook.
7334         (add_new_function): New function.
7335
7336 2008-08-23  Jan Hubicka  <jh@suse.cz>
7337
7338         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
7339
7340 2008-08-23  Jan Hubicka  <jh@suse.cz>
7341
7342         * ipa-cp.c (constant_val_insert): Remove.
7343         (ipcp_propagate_one_const): Remove.
7344         (ipcp_create_replace_map): Always insert replacements to the map.
7345         (ipcp_insert_stage): Do not try to insert statements by hand.
7346         * tree-inline.c (insert_init_stmt): Break out from ...
7347         (setup_one_parameter): ... here; allow NULL BB pointer.
7348         (tree_function_versioning): Use setup_one_parameter to process
7349         replacement map.
7350
7351 2008-08-23  Jan Hubicka  <jh@suse.cz>
7352
7353         * tree.c (decl_address_ip_invariant_p): New function.
7354         * tree.h (decl_address_ip_invariant_p): Declare.
7355         * gimple.c (strip_invariant_refs): Break out from ...
7356         (is_gimple_invariant_address): ... here
7357         (is_gimple_ip_invariant_address): New function.
7358         (is_gimple_ip_invariant): New function.
7359         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
7360         Declare.
7361
7362         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
7363         (ipcp_lat_is_insertable): All constants are insertable.
7364         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
7365         IPA_CONST_VALUE_REF.
7366         (ipcp_initialize_node_lattices): Propagate all types of operands.
7367         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
7368         (ipcp_create_replace_map): Reformat.
7369         (ipcp_need_redirect_p): Simplify.
7370         (ipcp_insert_stage): Check that argument is used before clonning.
7371         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
7372         IPA_CONST_REF.
7373         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
7374         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
7375         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
7376         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
7377         (jump_func_type): Remove IPA_CONST_VALUE_REF.
7378         * tree-inline.c (tree_function_versioning): Add variables referenced
7379         by replacing trees.
7380
7381 2008-08-23  Jan Hubicka  <jh@suse.cz>
7382
7383         PR target/37094
7384         * i386.c (standard_80387_constant_p): Use optimize_size.
7385
7386 2008-08-23  Ira Rosen  <irar@il.ibm.com>
7387
7388         PR tree-optimization/37161
7389         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
7390         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
7391         (vect_determine_vectorization_factor): Move the scalar type
7392         retrieval to vect_get_smallest_scalar_type.
7393         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
7394         scalar type. Remove redundant computation.
7395         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
7396         (vect_get_slp_defs): Take the type of RHS into account if
7397         necessary by calling vect_get_smallest_scalar_type. Call
7398         vect_get_constant_vectors with additional argument.
7399
7400 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7401
7402         PR 35648
7403         * doc/invoke.texi (Wwrite-strings): Clarify description.
7404
7405 2008-08-23  Ira Rosen  <irar@il.ibm.com>
7406
7407         PR tree-optimization/37174
7408         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
7409         def stmt is a part of the loop before accessing its stmt_vec_info.
7410
7411 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
7412
7413         PR target/11259
7414         * config/avr/avr.md (UNSPEC_SWAP): New constants.
7415         (*swap): New insn pattern.
7416         (*ashlqi3): Rename from ashlqi3 insn pattern.
7417         (ashlqi3): New expanders.
7418         (*lshrqi3): Rename from lshrqi3 insn pattern.
7419         (lshrqi3): New expanders.
7420         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
7421         lshrqi3_const5, lshrqi3_const6): New splitters.
7422         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
7423         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
7424         peephole2 patterns.
7425
7426 2008-08-22  Richard Guenther  <rguenther@suse.de>
7427
7428         PR tree-optimization/37078
7429         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
7430         [+INF, +INF] ranges.
7431
7432 2008-08-22  Richard Guenther  <rguenther@suse.de>
7433
7434         PR tree-optimization/37143
7435         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
7436         a conversion statement instead of a copy.
7437
7438 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
7439
7440         PR target/37184
7441         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
7442         CCCmode, CCOmode and CCSmode destination modes.
7443
7444         PR target/37191
7445         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
7446         from different units in a single alternative.
7447         (*vec_extractv2sf_1): Ditto.
7448         (*vec_extractv2si_0): Ditto.
7449         (*vec_extractv2si_1): Ditto.
7450         * config/i386/sse.md (sse2_storehpd): Ditto.
7451         (sse2_storelpd): Ditto.
7452         (sse2_loadhpd): Ditto.
7453         (sse2_loadlpd): Ditto.
7454
7455         PR target/37197
7456         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
7457         (popcountsi2): Ditto.
7458         (clzdi2_abm): Ditto.
7459         (popcountdi2): Ditto.
7460         (clzhi2_abm): Ditto.
7461         (popcounthi2): Ditto.
7462
7463 2008-08-22  Richard Guenther  <rguenther@suse.de>
7464
7465         PR middle-end/36548
7466         PR middle-end/37125
7467         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
7468         if the multiplication does not overflow.
7469
7470 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
7471
7472         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
7473
7474 2008-08-21  Richard Henderson  <rth@redhat.com>
7475
7476         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
7477         spurrious comma from test.
7478         * configure: Rebuild.
7479
7480 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7481
7482         PR 30457
7483         * builtins.c (fold_builtin_next_arg): Add warning about undefined
7484         behaviour.
7485
7486 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
7487
7488         * c-tree.h (grokfield): New argument.
7489         * c-decl.c (grokfield): Handle new location argument.
7490         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
7491
7492 2008-08-21  Richard Guenther  <rguenther@suse.de>
7493
7494         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
7495
7496 2008-08-21  Jan Hubicka  <jh@suse.cz>
7497
7498         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
7499         (cgraph_add_function_insertion_hook,
7500         cgraph_remove_function_insertion_hook,
7501         cgraph_call_function_insertion_hooks): New functions.
7502         * cgraph.h (cgraph_add_function_insertion_hook,
7503         cgraph_remove_function_insertion_hook,
7504         cgraph_call_function_insertion_hooks): Declare.
7505         * ipa-reference.c (function_insertion_hook_holder): New variable.
7506         (check_operand, look_for_address_of): When checking late, do not care
7507         about module bitmaps.
7508         (add_new_function): New function.
7509         (generate_summary): Register hooks; zero module bitmaps.
7510         (propagate): Unregister hooks.
7511         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
7512         (add_new_function): New function.
7513         (generate_summary): Register hook.
7514         (propagate): Remove hook.
7515
7516         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
7517
7518         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
7519         * ipa-cp.c (ipcp_update_cloned_node): New function.
7520         (build_const_val): Handle functions correctly; bring type logic
7521         into sync with tree-inline.c
7522         (ipcp_init_stage):  Take care of computing stuff needed by
7523         indirect inlining; update clones.
7524         (ipcp_generate_summary): Break out of ipcp_driver.
7525         (ipcp_driver): Do only execution and transformation.
7526         (pass_ipa_cp): Make IPA_PASS.
7527         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
7528         offset to address.
7529         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
7530         ipcp, some info is already available.
7531         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
7532         * tree-inline.c (remap_ssa_name): Unshare expression.
7533
7534 2008-08-21  Richard Guenther  <rguenther@suse.de>
7535
7536         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
7537         a PHI ask VN if it is already available.
7538         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
7539         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
7540
7541 2008-08-21  Richard Guenther  <rguenther@suse.de>
7542
7543         PR middle-end/36817
7544         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
7545         makes sure to produce a result of the correct type.
7546
7547 2008-08-21  Jan Hubicka  <jh@suse.cz>
7548         Backport from LTO branch:
7549
7550         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
7551                     Jan Hubicka  <jh@suse.cz>
7552
7553         * ipa-pure-const.c
7554         (init_state, finish_state, set_function_state, generate_summary):
7555         New functions.
7556         (scan_stmt): Renamed from scan_function.  Changed to keep state in
7557         local static vars rather than cgraph aux field.
7558         (propagate): Renamed from static_execute. Changed to keep state in
7559         local static vars rather than cgraph aux field.
7560         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
7561         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
7562
7563         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
7564
7565         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
7566         * ipa-reference.c (init_function_info, generate_summary,
7567         propagate): New functions.
7568         (analyze_function):  Call init_function_info.
7569         (static_execute): Stripped into generate_summary and propagate.
7570         (pass_ipa_reference): Made into ipa_opt_pass.
7571
7572 2008-08-21  Richard Guenther  <rguenther@suse.de>
7573
7574         PR tree-optimization/37181
7575         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
7576         folding result.
7577         (extract_range_from_unary_expr): Likewise.
7578
7579 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7580
7581         * diagnostic.c (pedwarn_at): Rename as pedwarn.
7582         (pedwarn): Delete.
7583         * toplev.h (pedwarn_at): Likewise.
7584         * builtins.c: Update all calls to pedwarn.
7585         * c-lex.c: Likewise.
7586         * toplev.c: Likewise.
7587         * c-tree.h: Likewise.
7588         * c-decl.c: Likewise.
7589         * c-errors.c: Likewise.
7590         * c-typeck.c: Likewise.
7591         * c-common.c: Likewise.
7592         * c-parser.c: Likewise.
7593
7594 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
7595
7596         PR target/31070
7597         * config/sparc/sparc.c (function_arg_slotno): Handle structure
7598         with MODE_VECTOR_INT mode.
7599
7600 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7601
7602         PR middle-end/179
7603         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
7604         initialized outside the current module.
7605         (warn_uninitialized_var): Ignore left-hand side when walking the
7606         trees. Ignore address expressions. Examine VUSE operands in gimple
7607         statements with a variable declaration on the right-hand side.
7608
7609 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
7610
7611         PR bootstrap/37155
7612         * rtlanal.c (subreg_offset_representable_p): Revert last change.
7613
7614 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7615
7616         PR 35701
7617         * c-common.c (conversion_warning): Do not warn if applying bit-and
7618         operator to unsigned constant that fits in the target type.
7619
7620 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7621
7622         PR c++/35602
7623         * c-common.c (conversion_warning): Do not warn for artificial
7624         expressions.
7625
7626 2008-08-20  Richard Guenther  <rguenther@suse.de>
7627
7628         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
7629         (extract_range_from_binary_expr): Fall back to constant propagation.
7630         (extract_range_from_unary_expr): Likewise.
7631
7632 2008-08-20  Richard Guenther  <rguenther@suse.de>
7633
7634         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
7635         with TREE_THIS_VOLATILE on shared nodes.
7636         (fold_stmt_r): Likewise.
7637
7638 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
7639
7640         PR c/37171
7641         * c-parser.c (c_parser_attributes): For keywords use canonical
7642         spelling for attr_name.
7643
7644 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7645
7646         * value-prof.c (check_counter): Revert wrong call to error.
7647
7648 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7649
7650         * profile.c: Update calls to inform.
7651         * value-prof.c: Update calls to inform.
7652
7653 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7654
7655         * diagnostic.c (inform): Add an explicit location_t parameter.
7656         * toplev.h (inform): Update declaration.
7657         * builtins.c: Update all calls to inform.
7658         * c-common.c: Likewise.
7659         * c-decl.c: Likewise.
7660         * c-opts.c: Likewise.
7661         * c-pch.c: Likewise.
7662         * c-pragma.c: Likewise.
7663         * c-typeck.c: Likewise.
7664         * coverage.c: Likewise.
7665         * opts.c: Likewise.
7666         * toplev.c: Likewise.
7667         * tree-cfg.c: Likewise.
7668         * tree-ssa.c: Likewise.
7669
7670 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
7671
7672         PR target/37169
7673         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
7674         V2DI mode, for SSE4.1, use movq instead of vector set if the
7675         second element is zero and inter-unit moves are OK.
7676
7677 2008-08-20  Richard Guenther  <rguenther@suse.de>
7678
7679         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
7680         properly handle conversion/copy chains after tuplification.
7681
7682 2008-08-20  Richard Guenther  <rguenther@suse.de>
7683
7684         * passes.c (init_optimization_passes): Move the second
7685         forwprop pass before alias computation.  Remove the second
7686         DCE pass.  Remove the first dominator and phi copy/const
7687         prop passes.
7688
7689 2008-08-20  Nick Clifton  <nickc@redhat.com>
7690
7691         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
7692         support of this feature.  Do not assume that a sufficiently new
7693         assembler will support the feature regardless of the target type.
7694         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
7695         * configure: Regenerate.
7696
7697 2008-08-20  Richard Guenther  <rguenther@suse.de>
7698
7699         * tree-vrp.c (found_in_subgraph): Remove.
7700         (live): New global static.
7701         (live_on_edge): New function.
7702         (blocks_visited): Remove.
7703         (register_edge_assert_for_2): Use live_on_edge.
7704         (find_conditional_asserts): Remove code dealing with
7705         found_in_subgraph.  Do not walk the CFG.
7706         (find_switch_asserts): Likewise.
7707         (find_assert_locations_1): Renamed from find_assert_locations.
7708         Move finding assert locations for conditional and switch
7709         statements first.  Update live bitmap.  Do not walk the CFG.
7710         (find_assert_locations): New function.
7711         (insert_range_assertions): Remove entry of CFG walk.
7712         Adjust call to find_assert_locations.
7713         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
7714         that only can appear because of fake exit edges but assert we
7715         never try to insert on those.
7716         (fini_pre): Do not remove fake exit edges here...
7717         (execute_pre): ...but here, before committing edge inserts.
7718
7719 2008-08-19  Richard Guenther  <rguenther@suse.de>
7720
7721         * passes.c (init_optimization_passes): Exchange store-ccp
7722         with a ccp pass.
7723
7724 2008-08-19  Rafael Espíndola  <espindola@google.com>
7725
7726         * varasm.c (weak_decls): Move earlier in the file.
7727         (assemble_external): Add weak decls to the weak_decls list.
7728         (declare_weak): Don't add decls to the weak_decls list.
7729
7730 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
7731
7732         PR target/37157
7733         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
7734         before (sse2_shufpd_<mode>).
7735
7736 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
7737
7738         PR debug/37156
7739         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
7740         * tree.c (block_nonartificial_location): Likewise.
7741
7742 2008-08-19  Richard Guenther  <rguenther@suse.de>
7743
7744         PR tree-optimization/35972
7745         PR tree-optimization/23094
7746         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
7747         parameter.
7748         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
7749         handle MISALIGNED_INDIRECT_REF.
7750         (get_ref_from_reference_ops): New helper.
7751         (vn_reference_lookup_pieces): Walk the use-def chain using the
7752         alias-oracle if requested.
7753         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
7754         walking the use-def chain.
7755         (compute_avail): But not here.
7756         (create_component_ref_by_pieces_1): Properly handle
7757         MISALIGNED_INDIRECT_REF.
7758         (do_regular_insertion): Handle fully redundant
7759         expressions after PHI-translation also for SSA_NAME values, not
7760         only constants.  Correctly use edoubleprime for that.
7761
7762 2008-08-19  Ira Rosen  <irar@il.ibm.com>
7763
7764         * tree-vectorizer.c (supportable_widening_operation): Support
7765         multi-step conversion, return the number of steps in such conversion
7766         and the required intermediate types.
7767         (supportable_narrowing_operation): Likewise.
7768         * tree-vectorizer.h (vect_pow2): New function.
7769         (supportable_widening_operation): Change argument types.
7770         (supportable_narrowing_operation): Likewise.
7771         (vectorizable_type_promotion): Add an argument.
7772         (vectorizable_type_demotion): Likewise.
7773         * tree-vect-analyze.c (vect_analyze_operations): Call
7774         vectorizable_type_promotion and vectorizable_type_demotion with
7775         additional argument.
7776         (vect_get_and_check_slp_defs): Detect patterns.
7777         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
7778         types.
7779         (vect_analyze_slp_instance): Don't fail in case of multiple types.
7780         Call vect_build_slp_tree with correct arguments. Calculate unrolling
7781         factor according to the smallest type in the loop.
7782         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
7783         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
7784         supportable_widening_operation with correct arguments.
7785         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
7786         operands lists according to the number of vector statements in left
7787         or right node, if exists.
7788         (vect_gen_widened_results_half): Remove unused argument.
7789         (vectorizable_conversion): Call supportable_widening_operation,
7790         supportable_narrowing_operation, and vect_gen_widened_results_half
7791         with correct arguments.
7792         (vectorizable_assignment): Change documentation, support multiple
7793         types in SLP.
7794         (vectorizable_operation): Likewise.
7795         (vect_get_loop_based_defs): New function.
7796         (vect_create_vectorized_demotion_stmts): Likewise.
7797         (vectorizable_type_demotion): Support loop-aware SLP and general
7798         multi-step conversion. Call vect_get_loop_based_defs and
7799         vect_create_vectorized_demotion_stmts for transformation.
7800         (vect_create_vectorized_promotion_stmts): New function.
7801         (vectorizable_type_promotion): Support loop-aware SLP and general
7802         multi-step conversion. Call vect_create_vectorized_promotion_stmts
7803         for transformation.
7804         (vectorizable_store): Change documentation, support multiple
7805         types in SLP.
7806         (vectorizable_load): Likewise.
7807         (vect_transform_stmt): Pass SLP_NODE to
7808         vectorizable_type_promotion and vectorizable_type_demotion.
7809         (vect_schedule_slp_instance): Move here the calculation of number
7810         of vectorized statements for each node from...
7811         (vect_schedule_slp): ... here.
7812         (vect_transform_loop): Call vect_schedule_slp without the last
7813         argument.
7814
7815 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
7816
7817         PR bootstrap/37152
7818         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
7819         to == in assert statement.
7820         (vectorizable_reduction): Fix typo.
7821
7822 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7823
7824         PR bootstrap/37153
7825         * value-prof.c (check_counter): Dereference pointer to overall
7826         count when printing it.
7827
7828 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7829
7830         * profile.h: Really add it.
7831
7832 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7833
7834         * mcf.c: Really add it.
7835
7836 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
7837             Vinodha Ramasamy  <vinodha@google.com>
7838
7839         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
7840         count_scale.
7841         * value-prof.c (check_counter): Fix the counter if
7842         flag_profile_correction is true.
7843         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
7844         tree_mod_subtract_transform):
7845         Follow check_counter parameter change.
7846         * common.opt (fprofile-correction): New option.
7847         * mcf.c: New file.
7848         * profile.h: Likewise.
7849         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
7850         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
7851         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
7852         functions.
7853         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
7854         flag_profile_correction is set.
7855
7856 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
7857
7858         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
7859
7860 2008-08-18  Tomas Bily  <tbily@suse.cz>
7861
7862         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
7863         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
7864         CONVERT_EXPR_P.
7865         * tree-data-ref.c (split_constant_offset_1): Likewise.
7866         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
7867         * tree-sra.c (sra_walk_expr): Likewise.
7868         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
7869         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
7870         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
7871         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
7872         Likewise.
7873         * gimple.c (gimple_assign_unary_nop_p): Likewise.
7874         * tree-vect-transform.c (vectorizable_type_demotion)
7875         (vectorizable_type_promotion): Likewise.
7876         * tree-inline.c (expand_call_inline):
7877         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
7878         (forward_propagate_addr_expr_1, forward_propagate_comparison)
7879         (tree_ssa_forward_propagate_single_use_vars): Likewise.
7880         * expr.c (expand_expr_real_1): Likewise.
7881         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
7882         (gimple_assign_unary_useless_conversion_p): Likewise.
7883         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
7884         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
7885         * fold-const.c (fold_unary): Likewise.
7886         * tree.h (CONVERT_EXPR_P): Likewise.
7887         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
7888         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
7889         * tree-vrp.c:
7890         (register_edge_assert_for_2, extract_range_from_unary_expr)
7891         (register_edge_assert_for_1): Likewise.
7892
7893 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7894
7895         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
7896         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
7897         (enum real_value_const): Delete.
7898         (get_real_const): Delete.
7899         * real.c (get_real_const): Delete.
7900         (dconst_e_ptr): Define.
7901         (dconst_third_ptr): Define.
7902         (dconst_sqrt2_ptr): Define.
7903         * builtins.c: Update all callers.
7904
7905 2008-08-18  Richard Guenther  <rguenther@suse.de>
7906
7907         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
7908         statement iterator after statement removal.
7909
7910 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
7911
7912         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
7913         (detect_processor_freebsd): Likewise.
7914         (host_detect_local_cpu): Call newly added functions for FreeBSD.
7915
7916 2008-08-18  Richard Guenther  <rguenther@suse.de>
7917
7918         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
7919         and loads have the correct types.
7920
7921 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7922
7923         PR cpp/7263
7924         * c-opts.c (cpp_opts): Remove static.
7925         * c-parser.c (cpp_opts): Declare it extern.
7926         (disable_extension_diagnostics): Handle cpp options.
7927         (enable_extension_diagnostics): Likewise.
7928
7929 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7930
7931         * diagnostics.c (permerror_at): Rename as permerror.
7932         (permerror): Delete.
7933         * toplev.h: Likewise.
7934
7935 2008-08-18  Richard Guenther  <rguenther@suse.de>
7936
7937         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
7938         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
7939         Move call_cdce before build_alias.  Move copyrename2,
7940         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
7941         right after final inlining.
7942         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
7943         (pass_build_cfg): But instead via TODO_dump_func.
7944
7945 2008-08-18  Richard Guenther  <rguenther@suse.de>
7946
7947         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
7948         element index.
7949         (scalarize_init): If we failed to generate some initializers
7950         do not generate zeros for not instantiated members.  Instead
7951         rely on the copy out.
7952         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
7953         about missing flow-sensitive alias info only if we have
7954         aliases computed.
7955
7956 2008-08-17  Nick Clifton  <nickc@redhat.com>
7957
7958         * doc/extend.texi (Function Attributes): Fix typo in description
7959         if hot function attribute.
7960
7961 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
7962             Richard Sandiford  <rdsandiford@googlemail.com>
7963
7964         * doc/install.texi (--with-mips-plt): Document.
7965         * doc/invoke.texi (-mplt, -mno-plt): Document.
7966         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
7967         and handle ${with_mips_plt}.
7968         * config/mips/mips.opt (mplt): New option.
7969         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
7970         (TARGET_ABICALLS_PIC2): Likewise.
7971         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
7972         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
7973         (ASM_SPEC): Use !mabi=* instead of !mabi*.
7974         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
7975         to decide whether to output ".option picX" directives.
7976         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
7977         Pass -call_nonpic rather than -KPIC for -mplt.
7978         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
7979         on the command line.  Also remove it when -mabi=64 is used without
7980         -msym32.
7981         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
7982         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
7983         TARGET_ABICALLS_PIC0.
7984         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
7985         TARGET_ABICALLS.
7986         (mips16_build_function_stub): Only output ".option pic" directives
7987         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
7988         (mips16_build_call_stub): Fix comment and remove redundant
7989         ".set at"/"set .noat" directives.
7990         (mips_function_rodata_section): Use the default behaviour for
7991         TARGET_ABSOLUTE_ABICALLS.
7992         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
7993         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
7994         (mips_restore_gp): Do nothing if the current function doesn't use
7995         a global pointer.
7996         (mips_expand_prologue): Only save $gp if the current function uses it.
7997         Use a normal move for TARGET_ABICALLS_PIC0.
7998         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
7999
8000 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
8001
8002         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
8003         of function when handling GLOBAL_POINTER_REGNUM.
8004
8005 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
8006
8007         PR ada/20548
8008         * common.opt (-fstack-check): Do not declare the variable here.
8009         (-fstack-check=): New option variant.
8010         * doc/invoke.texi (Code Gen Options): Document it.
8011         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
8012         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
8013         (STACK_CHECK_STATIC_BUILTIN): New macro.
8014         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
8015         * opts.c: Include expr.h.
8016         (common_handle_option) <OPT_fold_stack_check_>: New case.
8017         <OPT_fstack_check>: Likewise.
8018         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
8019         consistently in the test for variable-sized types.  Adjust for
8020         new behaviour of flag_stack_check.
8021         * explow.c: Include except.h.
8022         (allocate_dynamic_stack_space): Do not take into account
8023         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
8024         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
8025         for variable-sized parameters.  Treat all parameters whose size is
8026         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
8027         stack checking is enabled.
8028         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
8029         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
8030         if generic stack checking is enabled.
8031         (expand_function_end): Adjust for new behaviour of flag_stack_check.
8032         * reload1.c (reload): Likewise.
8033         * stmt.c (expand_decl): Assert that all automatic variables have
8034         fixed size at this point and remove dead code.
8035         * flags.h (stack_check_type): New enumeration type.
8036         (flag_stack_check): Declare.
8037         * toplev.c (flag_stack_check): New global variable.
8038         * Makefile.in (opts.o): Add dependency on EXPR_H.
8039         (explow.o): Add dependency on except.h.
8040
8041 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
8042
8043         * config/avr/avr.c (avr_override_options): Reduce value of
8044         PARAM_INLINE_CALL_COST.
8045
8046 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
8047
8048         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
8049         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
8050         lieu of TYPE_MODE (type) throughout.
8051
8052 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
8053
8054         * config/arm/arm.c (add_minipool_backward_ref): Check for
8055         8-byte-aligned entries in second case of forcing insertion after a
8056         particular entry.  Change third case to avoid inserting
8057         non-8-byte-aligned entries before 8-byte-aligned ones.
8058
8059 2008-08-15  Richard Guenther  <rguenther@suse.de>
8060
8061         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
8062         strip components for unknown size accesses.
8063
8064 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
8065
8066         * config/s390/2097.md New file.
8067         * config/s390/s390.md ("z10prop" attribute): Define none,
8068         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
8069         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
8070         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
8071         possible values and apply them to insns as appropriate.
8072         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
8073         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
8074         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
8075         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
8076         ("bfp" mode attribute): Removed.  Every occurence replaced
8077         with <mode>.
8078         * config/s390/s390.c (struct "z10_cost"): Updated entries.
8079         * config/s390/2084.md (insn_reservation "x_itof"): Updated
8080         type attribute.
8081
8082 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8083
8084         PR c/28152
8085         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
8086         for keywords.
8087
8088 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
8089
8090         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
8091         additional argument. Support reduction when duplication is needed due
8092         to data-types of different sizes in the loop.
8093         (get_initial_def_for_induction): Fix printout.
8094         (vect_get_vec_def_for_stmt_copy): Support case where the
8095         vec_stmt_for_operand is a phi node.
8096         (vectorizable_reduction): Support reduction when duplication is needed
8097         due to data-types of different sizes in the loop.
8098         (vectorizable_call): Remove restriction to not vectorize in case we
8099         have data-types of different sizes in the loop.
8100         (vectorizable_conversion): Likewise.
8101         (vectorizable_operation): Likewise.
8102         (vectorizable_type_demotion): Likewise.
8103         (vectorizable_type_promotion): Likewise.
8104         (vectorizable_induction): Add restriction to not vectorize in case
8105         we have data-types of different sizes in the loop.
8106
8107 2008-08-14  Christophe Saout  <christophe@saout.de>
8108             Uros Bizjak  <ubizjak@gmail.com>
8109
8110         PR target/37101
8111         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
8112         (*vec_concatv2di_rex64_sse4_1): Ditto.
8113         (*vec_concatv2di_rex64_sse): Ditto.
8114
8115 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
8116
8117         PR middle-end/37103
8118         * fold-const.c (fold_widened_comparison): Do not allow
8119         sign changes that change the result even if shorter type
8120         is wider than arg1_unw's type.
8121
8122 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
8123
8124         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
8125         Skip if the multilib testing specifies -march that does not
8126         agree with the one specified in the testcase.
8127
8128 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8129
8130         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
8131         zero extend SImode values being converted to TFmode before passing
8132         to libcalls.
8133
8134 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8135
8136         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
8137         __PPU__ when targeting the Cell/B.E. PPU processor.
8138
8139 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
8140
8141         * gimple.h (gimple_call_set_chain): Accept SSA variables.
8142         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
8143         Rematerialize the static chain, if any.
8144         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
8145         static chain.
8146
8147 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8148
8149         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
8150         (new_loc_descr): Likewise.
8151         (add_loc_descr): Likewise.
8152         (size_of_loc_descr): Likewise.
8153         (size_of_locs): Likewise.
8154         (output_loc_operands): Likewise.
8155         (output_loc_sequence): Likewise.
8156         (new_reg_loc_descr): New.
8157         (build_cfa_loc): Use it.
8158         (build_cfa_aligned_loc): Likewise.
8159         (one_reg_loc_descriptor): Likewise.
8160         (based_loc_descr): Likewise.
8161
8162 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8163
8164         PR 30551
8165         * doc/invoke.texi (Wmain): Update.
8166         * c-decl.c (start_decl): warn_main is only 0 or 1.
8167         (start_function): Likewise. Fix formatting.
8168         (finish_function): Delete redundant warning.
8169         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
8170         * c-opts (c_common_handle_option): -Wall only has effect if
8171         warn_main is uninitialized. OPT_Wmain is automatically
8172         handled. -pedantic also enables Wmain.
8173         (c_common_post_options): Handle all logic for Wmain here.
8174         * c-common.c (warn_main): Delete.
8175         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
8176         * c-common.h (warn_main): Delete.
8177
8178 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8179
8180         PR middle-end/36701
8181         * expr.c (emit_group_store): Allocate stack temp with the
8182         largest alignment when copying from register to stack.
8183
8184 2008-08-13  Richard Guenther  <rguenther@suse.de>
8185
8186         * tree.h (maybe_fold_offset_to_address): Declare.
8187         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
8188         (ccp_fold): Handle pointer conversions the same as fold_stmt.
8189         Likewise for POINTER_PLUS_EXPR.
8190         (maybe_fold_offset_to_reference): Enable disabled code.
8191         (maybe_fold_offset_to_address): New function.
8192         (fold_stmt_r): Use it.
8193         (fold_gimple_assign): Likewise.
8194         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
8195         (gimplify_expr): Likewise.
8196
8197 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8198
8199         * toplev.h (pedwarn_at): Fix declaration.
8200
8201 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8202
8203         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
8204         LINK_SPEC): Use %R in -Y P argument.
8205
8206 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8207
8208         PR c/15236
8209         * diagnostic.c (pedwarn_at): New.
8210         * toplev.h (pedwarn_at): Declare.
8211         * c-tree.h (build_enumerator): Update declaration.
8212         * c-decl.c (finish_enum): Update comment.
8213         (build_enumerator): Take a location parameter. Give a pedwarn but do
8214         not perform any conversion.
8215         * c-parser.c (c_parser_enum_specifier): Set correct location for
8216         enumerator.
8217
8218 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8219
8220         PR 35635
8221         * c-common.c (conversion_warning): Use a switch. Ignore boolean
8222         expressions except for conversions to signed:1 bitfields. Handle
8223         COND_EXPR with constant operands.
8224
8225 2008-08-13  Richard Guenther  <rguenther@suse.de>
8226
8227         PR tree-optimization/15255
8228         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
8229         (struct oecount_s): New struct and VEC types.
8230         (cvec): New global.
8231         (oecount_hash): New function.
8232         (oecount_eq): Likewise.
8233         (oecount_cmp): Likewise.
8234         (zero_one_operation): New function.
8235         (build_and_add_sum): Likewise.
8236         (undistribute_ops_list): Perform un-distribution of multiplication
8237         and division on the chain of summands.
8238         (should_break_up_subtract): Also break up subtracts for factors.
8239         (reassociate_bb): Delete dead visited statements.
8240         Call undistribute_ops_list.  Re-sort and optimize if it did something.
8241         * passes.c (init_optimization_passes): Move DSE before
8242         reassociation.
8243         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
8244         PHI nodes.
8245
8246 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
8247
8248         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
8249
8250         * doc/invoke.texi: Revert unintended checkin.
8251
8252 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
8253
8254         PR libgomp/26165
8255         * gcc.c (include_spec_function): Tweak call to find_a_file.
8256
8257 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
8258
8259         PR middle-end/37014
8260         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
8261         and TRUTH_ORIF_EXPR.
8262         * dojump.c (do_jump): Likewise.
8263
8264         PR tree-optimization/37084
8265         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
8266         if id->regimplify, don't assume stmt is a cast assignment.
8267
8268 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
8269
8270         * final.c (final_scan_insn): Use app_enable/app_disable functions.
8271
8272 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8273
8274         PR bootstrap/37097
8275         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
8276         by last change.
8277
8278 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8279
8280         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
8281         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
8282
8283         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
8284         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
8285         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
8286         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
8287         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
8288
8289         * doc/tm.texi (Storage Layout): Remove documentation for
8290         TARGET_FLOAT_FORMAT.
8291
8292         * simplify-rtx.c (simplify_binary_operation_1): Replace
8293         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
8294
8295 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8296
8297         * real.h (struct real_format): New member has_sign_dependent_rounding.
8298         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
8299         spu_single_format, ieee_double_format, mips_double_format,
8300         motorola_double_format, ieee_extended_motorola_format,
8301         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8302         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8303         mips_extended_format, ieee_quad_format, mips_quad_format,
8304         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8305         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8306
8307         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8308         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8309         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8310         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8311         (ROUND_TOWARDS_ZERO): Likewise.
8312
8313         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
8314         (FLOAT_MODE_FORMAT): New macro.
8315         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
8316         (MODE_COMPOSITE_P): ... this new macro.
8317         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8318         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
8319         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
8320
8321         * flags.h: Include "real.h".
8322
8323         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
8324         REAL_MODE_FORMAT_COMPOSITE_P.
8325         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
8326
8327         * doc/tm.texi (Storage Layout): Remove documentation of
8328         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8329         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
8330         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
8331         they only apply to libgcc2.a.
8332
8333 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8334
8335         * config/spu/float_disf.c: New file.
8336         * config/spu/float_unsdisf.c: New file.
8337         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
8338         (LIB2FUNCS_EXCLUDE): Define.
8339
8340 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8341             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8342
8343         * real.h (struct real_format): New member round_towards_zero.
8344         * real.c (round_for_format): Respect fmt->round_towards_zero.
8345         (ieee_single_format, mips_single_format, motorola_single_format,
8346         spu_single_format, ieee_double_format, mips_double_format,
8347         motorola_double_format, ieee_extended_motorola_format,
8348         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8349         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8350         mips_extended_format, ieee_quad_format, mips_quad_format,
8351         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8352         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8353
8354         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
8355         real_format to choose rounding mode when calling MPFR functions.
8356         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
8357         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
8358
8359         * real.h (real_to_decimal_for_mode): Add prototype.
8360         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
8361         Respect target rounding mode when generating decimal representation.
8362         (real_to_decimal): New stub for backwards compatibility.
8363         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
8364         real_to_decimal_for_mode instead of real_to_decimal.
8365
8366         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
8367
8368 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8369             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8370
8371         * real.c (spu_single_format): New variable.
8372         * real.h (spu_single_format): Declare.
8373
8374         * config/spu/spu.c (spu_override_options): Install SFmode format.
8375         (spu_split_immediate): Use integer mode to operate on pieces of
8376         floating-point values in all cases.
8377
8378         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
8379         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
8380         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
8381
8382 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8383
8384         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
8385
8386 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8387
8388         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
8389
8390 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
8391
8392         PR c++/36688
8393         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
8394         on the VAR_DECL instead of TYPE_READONLY on its type.
8395
8396 2008-08-12  Ira Rosen  <irar@il.ibm.com>
8397
8398         * tree-vectorizer.c: Depend on langhooks.h.
8399         (supportable_widening_operation): Add two arguments. Support double
8400         type conversions.
8401         (supportable_narrowing_operation): Likewise.
8402         * tree-vectorizer.h (supportable_widening_operation): Add two
8403         arguments.
8404         (supportable_narrowing_operation): Likewise.
8405         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
8406         supportable_widening_operation with correct arguments.
8407         * tree-vect-transform.c (vectorizable_conversion): Likewise.
8408         (vectorizable_type_demotion): Support double type conversions.
8409         (vectorizable_type_promotion): Likewise.
8410         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
8411
8412 2008-08-11  Michael Matz  <matz@suse.de>
8413
8414         * i386/i386.c (override_options): Move initialisation from
8415         flag_schedule_insns_after_reload to here from ...
8416         (optimization_options): ... here.
8417
8418 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
8419
8420         PR rtl-optimization/36998
8421         * dwarf2out.c (compute_barrier_args_size_1,
8422         compute_barrier_args_size): Temporarily remove assertions.
8423
8424 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8425
8426         PR middle-end/20644
8427         * tree-ssa.c (struct walk_data): Add new flag
8428         warn_possibly_uninitialized.
8429         (warn_uninitialized_var): Use it.
8430         (warn_uninitialized_vars): New.
8431         (execute_early_warn_uninitialized): Call it.
8432         (execute_late_warn_uninitialized): Likewise.
8433
8434 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8435
8436         PR middle-end/36238
8437         * reload1.c (gen_reload): Guard calls to get_secondary_mem
8438         for memory subregs.
8439
8440 2008-08-09  Jan Hubicka  <jh@suse.cz>
8441
8442         PR target/37055
8443         * optabs.c (maybe_emit_unop_insn): Remove produced code if
8444         expansion failed.
8445         (expand_fix): Be prepared for expansion to fail.
8446         (expand_sfix_optab): Remove instructions if expansion failed.
8447
8448 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
8449
8450         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
8451         avr31 architecture.
8452         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
8453         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8454
8455 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8456
8457         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
8458         mips/t-libgcc-mips16 to tmake_file.
8459         * config/mips/mips-protos.h (mips_call_type): New enum.
8460         (mips_pic_base_register, mips_got_load): Declare.
8461         (mips_restore_gp): Take an rtx argument.
8462         (mips_use_pic_fn_addr_reg_p): Declare.
8463         (mips_expand_call): Replace the sibcall_p argument with
8464         a mips_call_type argument.  Add a lazy_p parameter.
8465         (mips_split_call): Declare.
8466         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
8467         (MIPS16_PIC_TEMP): Likewise.
8468         (reg_class): Delete M16_NA_REGS.
8469         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
8470         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
8471         (mips_split_hi_p): Declare.
8472         * config/mips/mips.c (mips_split_hi_p): New array.
8473         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
8474         (mips_got_symbol_type_p): New function.
8475         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
8476         (mips16_stub_function_p): New function.
8477         (mips16_local_function_p): Likewise.
8478         (mips_use_pic_fn_addr_reg_p): Likewise.
8479         (mips_cannot_force_const_mem): Return false for HIGHs.
8480         Extend CONST_INT and symbolic handling to MIPS16, using
8481         mips_symbol_insns to check that the base symbol type is a
8482         legitimate constant.  Reject GOT-based constants if
8483         TARGET_MIPS16_PCREL_LOADS.
8484         (mips_const_insns): Check targetm.cannot_force_const_mem when
8485         decomposing a symbolic base and a large offset.
8486         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
8487         When calling a function that needs $25 from MIPS16 code,
8488         move the target address into $25 separately and add a USE
8489         to the call insn.
8490         (mips16_gp_pseudo_reg): Insert the initializer immediately
8491         before the first real insn.
8492         (mips_pic_base_register, mips_got_load): New functions.
8493         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
8494         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
8495         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
8496         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
8497         (mips_call_tls_get_addr): Update the call to mips_expand_call,
8498         also passing NULL_RTX rather than const0_rtx as the aux argument.
8499         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
8500         instead of TARGET_EXPLICIT_RELOCS.
8501         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
8502         (mips_load_call_address): Replace the sibcall_p argument with
8503         a mips_call_type argument.  Use mips_got_load.
8504         (mips16_local_alias): New structure.
8505         (mips16_local_aliases): New variable.
8506         (mips16_local_aliases_hash): New function.
8507         (mips16_local_aliases_eq): Likewise.
8508         (mips16_local_alias): Likewise.
8509         (mips16_stub_function): Likewise.
8510         (mips16_build_function_stub): Create a local alias for the target
8511         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
8512         .cpload directive and an R_MIPS_NONE relocation for the target
8513         function, then load the alias rather than the function itself.
8514         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
8515         (mips16_copy_fpr_return_value): Use mips16_stub_function and
8516         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
8517         (mips16_build_call_stub): Replace the FN parameter with an
8518         FN_PTR parameter.  Force the address into a register if it
8519         isn't a call_insn_operand; don't rely on the caller to do this.
8520         If a call to a locally-defined and locally-binding MIPS16
8521         function must be made indirectly, redirect the call to the
8522         function's local alias.  Use mips16_stub_function_p,
8523         mips16_stub_function, mips_expand_call and use_reg.
8524         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
8525         Use explicit %hi and %lo accesses where possible.
8526         Use MIPS_CALL to generate the correct code form of a
8527         jal instruction.  Add clobbers of $18 instead of uses.
8528         Update the call to mips_emit_call_insn.
8529         (mips_expand_call): Replace the SIBCALL_P argument with a
8530         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
8531         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
8532         allowing it to modify the call address.  Update the calls to
8533         mips_load_call_address and mips_emit_call_insn.
8534         (mips_split_call): New function.
8535         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
8536         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
8537         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
8538         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
8539         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
8540         if TARGET_MIPS16.
8541         (mips_cprestore_slot): New function.
8542         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
8543         and use mips_cprestore_slot.
8544         (mips_output_function_prologue): Handle TARGET_MIPS16 for
8545         LOADGP_OLDABI.
8546         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
8547         then use a copygp_mips16 instruction to set up $28.
8548         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
8549         (mips16_lay_out_constants): Call split_all_insns_noflow.
8550         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
8551         false if TARGET_MIPS16.
8552         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
8553         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
8554         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
8555         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
8556         MIPS16 code.  Allow MIPS16 o32 PIC.
8557         (mips_override_options): Allow MIPS16 o32 PIC.
8558         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
8559         after reload if TARGET_USE_GOT.
8560         (UNSPEC_COPYGP): New constant.
8561         (length): Use a default length of 8 for MIPS16 GOT loads.
8562         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
8563         (*got_page<mode>): Check mips_split_hi_p.
8564         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
8565         (unspec_got<mode>, unspec_call<mode>): New expanders.
8566         (load_got<mode>, load_call<mode>): Remove the length attributes.
8567         Use a got attribute instead of a type attribute.
8568         (copygp_mips16): New insn.
8569         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
8570         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
8571         (sibcall, sibcall_value, call, call_value): Update the calls
8572         to mips_expand_call.
8573         (call_internal, call_value_internal): Use mips_split_call.
8574         (call_value_multiple_internal): Likewise.
8575         (call_split): Move after call_internal (the insn it is split from).
8576         (call_internal_direct, call_value_internal_direct): Turn into
8577         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
8578         (call_direct_split, call_value_direct_split): New patterns.
8579         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
8580         and use M16_REGS instead of M16_NA_REGS.
8581         * config/mips/predicates.md (const_call_insn_operand): Replace
8582         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
8583         mips_use_pic_fn_addr_reg_p check.
8584         (move_operand): Reject HIGHs if mips_split_hi_p.
8585         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
8586         (__mips16_floatunsisf): Inline __mips16_floatsisf.
8587         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
8588         * config/mips/libgcc-mips16.ver: New file.
8589         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
8590         $(srcdir)/config/mips/libgcc-mips16.ver.
8591
8592 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8593
8594         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
8595         in file.
8596         (mips_unspec_address, mips_unspec_offset_high): Likewise.
8597         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
8598         (mips16_cfun_returns_in_fpr_p): Likewise.
8599
8600 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8601
8602         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
8603         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
8604         rather than 4 to PC.
8605
8606 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8607
8608         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
8609         (FUNCTION_PROFILER): Save the static chain pointer into $2
8610         beforehand and restore it aftewards.
8611         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
8612         address directly into $25 and call the function through $25;
8613         do not clobber $3.  Pad the DImode version to cover the space
8614         left by the deleted $25 <- $3 move.
8615         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
8616         the removal of the $25 <- $3 move.
8617         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
8618         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8619
8620 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8621             Daniel Jacobowitz  <dan@codesourcery.com>
8622
8623         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
8624         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
8625         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
8626         * config/mips/mips.c (mips_start_function_definition): New function.
8627         (mips_end_function_definition): Likewise.
8628         (mips_output_function_prologue): Use mips_start_function_definition.
8629         (mips_output_function_epilogue): Use mips_end_function_definition.
8630         (build_mips16_function_stub): Use mips_start_function_definition
8631         and mips_end_function_definition.
8632         (build_mips16_call_stub): Likewise.
8633
8634 2008-08-09  Richard Guenther  <rguenther@suse.de>
8635
8636         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
8637         * gimple.h (gimple_call_fn): Adjust comment.
8638         (gimple_call_set_fndecl): New function.
8639         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
8640         longer having bare FUNCTION_DECL operand.
8641         (gimple_call_return_type): Likewise.
8642         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
8643
8644         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
8645         (gimple_mod_pow2): Likewise.
8646         (gimple_mod_subtract): Likewise.
8647         (gimple_ic): Likewise.
8648         (gimple_stringop_fixed_value): Likewise.
8649         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
8650         longer having bare FUNCTION_DECL operand.
8651         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
8652         * omp-low.c (optimize_omp_library_calls): Likewise.
8653         * cgraphunit.c (update_call_expr): Likewise.
8654         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
8655         (execute_convert_to_rsqrt): Likewise.
8656         * cfgexpand.c (gimple_to_tree): Simplify.
8657         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
8658         bare FUNCTION_DECL operand.
8659         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
8660         (convert_gimple_call): Use gimple_call_fndecl.
8661         * c-common.c (c_warn_unused_result): Likewise.
8662
8663 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8664
8665         PR c/17880
8666         * c-typeck.c (digest_init): Call verify_sequence_points from here.
8667         (c_finish_return): Likewise.
8668         (c_start_case): Likewise.
8669         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
8670         * c-parser.c (c_parser_condition): New. Call
8671         verify_sequence_points.
8672         (c_parser_paren_condition): Call c_parser_condition.
8673         (c_parser_for_statement): Call c_parser_condition.
8674
8675 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8676
8677         PR 36901
8678         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
8679         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
8680         Moved from diagnostic.h
8681         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
8682         DK_PERMERROR.
8683         (emit_diagnostic): New.
8684         (warning0, pedwarn0): Delete.
8685         (warning, warning_at, pedwarn, permerror): Return bool.
8686         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
8687         Moved to diagnostic.c.
8688         (struct diagnostic_context): Use correct type for
8689         classify_diagnostic.
8690         (diagnostic_report_diagnostic): Update declaration.
8691         (emit_diagnostic): Declare.
8692         * errors.c (warning): Return bool.
8693         * errors.h (warning): Update declaration.
8694         * toplev.h (warning0, pedwarn0): Delete.
8695         (warning, warning_at, pedwarn, permerror): Return bool.
8696         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
8697         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
8698         inform. Update all calls.
8699         (diagnose_mismatched_decls): Check return value of warning/pedwarn
8700         before giving informative note.
8701         (implicit_decl_warning): Likewise.
8702         * c-typeck.c (build_function_call): Likewise.
8703         * tree-sssa.c (warn_uninit): Likewise.
8704         * builtins.c (gimplify_va_arg_expr): Likewise.
8705
8706 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8707
8708         PR 7651
8709         * doc/invoke.texi (-Wextra): Move warning from here...
8710         (-Wuninitialized): ... to here.
8711
8712 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8713
8714         PR 28875
8715         * flags.h (set_Wunused): Delete
8716         * toplev.c (process_options): Handle Wunused flags here.
8717         * opts.c (maybe_warn_unused_parameter): Delete.
8718         (common_handle_option): Replace set_Wunused by warn_unused.
8719         (set_Wextra): Do not handle Wunused-parameter here.
8720         (set_Wunused): Delete.
8721         * c-opts.c (c_common_handle_option): Replace set_Wunused by
8722         warn_unused.
8723         * common.opt (Wunused): Add Var and Init.
8724         (Wunused-function): Likewise.
8725         (Wunused-label): Likewise.
8726         (Wunused-parameter): Likewise.
8727         (Wunused-value): Likewise.
8728         (Wunused-variable): Likewise.
8729
8730 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
8731
8732         * doc/invoke.texi: Add cpu_type power7.
8733         * config.in (HAVE_AS_VSX): New.
8734         * config.gcc: Add cpu_type power7.
8735         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
8736         VSX instructions.
8737         * configure: Regenerate.
8738         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
8739         power5.
8740         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
8741         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
8742         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
8743
8744 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
8745
8746         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
8747         type to vectorize.builtin_conversion.
8748         (vectorizable_conversion): Likewise.
8749         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
8750         integral type as input.
8751         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
8752         FIX_TRUNC_EXPR.
8753         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
8754         and ALTIVEC_BUILTIN_VCTSXS.
8755         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
8756         formatting.
8757
8758 2008-08-08  Richard Guenther  <rguenther@suse.de>
8759
8760         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
8761         (surely_varying_stmt_p): Calls are varying only if they are
8762         non-builtin and not indirect or have no result.
8763         (ccp_fold): Re-instantiate code before the tuples merge.
8764
8765 2008-08-08  Richard Guenther  <rguenther@suse.de>
8766
8767         PR tree-optimization/37056
8768         * gimple.h (gimple_assign_rhs_class): New helper function.
8769         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
8770         unary operations properly.
8771
8772 2008-08-07  Jan Hubicka  <jh@suse.cz>
8773
8774         * i386.h (ix86_size_cost): Declare.
8775         (ix86_cur_cost): New function macro.
8776         * i386.md (peepholes expanding size and splitters): Predicate by
8777         optimize_insn_for_speed_p.
8778         (peepholes reduce size and splitters): Predicate by
8779         optimize_insn_for_size_p.
8780         * i386.c (ix86_size_cost): Rename from ...
8781         (size_cost): This one.
8782         (override_options): Update.
8783         (decide_alg): Likewise.
8784         (ix86_expand_clear): Use RTL profile.
8785         (ix86_pad_returns): Use RTL profile.
8786
8787 2008-08-07  Jan Hubicka  <jh@suse.cz>
8788
8789         * recog.c (split_all_insns): Set RTL profile
8790         (peephole2_optimize): Likewise.
8791         * function.c (thread_prologue_and_epilogue_insns): Likewise.
8792         * combine.c (combine_instructions): Likewise.
8793
8794 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8795
8796         * c-common.c (c_common_reswords): Also warn about keyword "bool".
8797
8798 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
8799
8800         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
8801         value in a6 after the set_frame_ptr insn.
8802
8803 2008-08-07  Richard Henderson  <rth@redhat.com>
8804
8805         PR debug/37033
8806         * gcc.c (cpp_options): Pass along -g*.
8807
8808 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
8809
8810         * config/arm/arm.c (output_move_neon): Update comment describing
8811         big-endian vector layout.
8812         (arm_assemble_integer): Do not handle big-endian NEON vectors
8813         specially.
8814         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
8815         neon_vget_lane<mode>_sext_internal,
8816         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
8817         element indices for big-endian.
8818
8819 2008-08-07  Richard Henderson  <rth@redhat.com>
8820
8821         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
8822         * configure, config.in: Rebuild.
8823         * debug.h (dwarf2out_do_cfi_asm): Declare.
8824         * c-cppbuiltin.c (c_cpp_builtins): Use it.
8825         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
8826         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
8827         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
8828
8829 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
8830
8831         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
8832         movv2si_internal): Combine into mov<mode>_internal.
8833         (movv2si_internal_2): Remove.
8834
8835 2008-08-07  Jan Hubicka  <jh@suse.cz>
8836
8837         PR target/37048
8838         * i386.md (single stringop patterns): Enable unconditionally.
8839
8840 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
8841
8842         PR target/36992
8843         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
8844
8845         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
8846         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
8847
8848         * config/i386/sse.md (sse2_movq128): New.
8849
8850         * doc/extend.texi: Document __builtin_ia32_movq128.
8851
8852 2008-08-07  Richard Guenther  <rguenther@suse.de>
8853
8854         PR middle-end/37042
8855         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
8856         pointers can access anything.
8857
8858 2008-08-06  Jan Hubicka  <jh@suse.cz>
8859
8860         * optabs.c (emit_unop_insn): Break out to ...
8861         (maybe_emit_unop_insn): ... this one.
8862         (expand_sfix_optab): Use maybe variant.
8863         * optabs.h (maybe_emit_unop_insn): Declare.
8864
8865         * i386.md (mov0 patterns): Enable by default.
8866         (FP conversion expanders): Disable expansion of code expanding
8867         sequences when instruction should be optimized for size.
8868         (single strinop patterns): Enable when optimizing for size.
8869         (string expanders): Disable expanding of code expanding sequences
8870         when optimizning instruction for size.
8871         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
8872         per BB basis.
8873         (ix86_fp_comparison_sahf_cost): Likewise.
8874         (ix86_expand_branch): Likewise.
8875         (ix86_expand_ashl_const): Likewise.
8876         (ix86_split_ashl): Likewise.
8877         (ix86_expand_strlen): Likewise.
8878         (ix86_emit_fp_unordered_jump): Likewie.
8879
8880 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8881
8882         * c-common.c: Fix typo.
8883         (c_common_reswords): Activate more C++ keyword warnings.
8884
8885         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
8886
8887 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8888
8889         PR 26785
8890         * diagnostic.c (permerror_at): New.
8891         * toplev.h (permerror_at): Declare.
8892
8893 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
8894             Ira Rosen  <irar@il.ibm.com>
8895
8896         * tree-vect-transform.c (vect_model_simple_cost): Return
8897         immediately if stmt is pure SLP.
8898         (vect_model_store_cost): Ditto.
8899         (vect_model_load_cost): Ditto.
8900         (vectorizable_store): Remove PURE_SLP check before call
8901         to vect_model_store_cost.
8902         (vect_model_store_cost): When checking whether stmt describe
8903         strided access, add a check that it is not slp_node.
8904
8905 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8906
8907         PR 8715
8908         * c-common.c (warn_for_sign_compare): New. Handle separately the
8909         case that 'constant' is zero.
8910         * c-typeck.c (build_binary_op): Move code to c-common.c
8911
8912 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8913
8914         * config/alpha/alpha.c (alpha_preferred_reload_class,
8915         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
8916         alpha_output_mi_thunk_osf): Avoid C++ keywords.
8917         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
8918         * config/arm/arm.md: Likewise.
8919         * config/avr/avr-protos.h (preferred_reload_class,
8920         test_hard_reg_class, avr_simplify_comparison_p,
8921         out_shift_with_cnt, class_max_nregs): Likewise.
8922         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
8923         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
8924         preferred_reload_class, test_hard_reg_class): Likewise.
8925         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
8926         bfin_memory_move_cost, bfin_secondary_reload,
8927         bfin_output_mi_thunk): Likewise.
8928         * config/crx/crx.c (crx_secondary_reload_class,
8929         crx_memory_move_cost): Likewise.
8930         * config/frv/frv-protos.h (frv_secondary_reload_class,
8931         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
8932         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
8933         frv_secondary_reload_class, frv_class_likely_spilled_p,
8934         frv_class_max_nregs): Likewise.
8935         * config/h8300/h8300.c (h8300_classify_operand,
8936         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
8937         Likewise.
8938         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
8939         * config/ia64/ia64.c (ia64_preferred_reload_class,
8940         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
8941         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
8942         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
8943         Likewise.
8944         * config/m68hc11/m68hc11.c (preferred_reload_class,
8945         m68hc11_memory_move_cost): Likewise.
8946         * config/mcore/mcore.c (mcore_secondary_reload_class,
8947         mcore_reload_class): Likewise.
8948         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
8949         mips_class_max_nregs, mips_cannot_change_mode_class,
8950         mips_preferred_reload_class, mips_secondary_reload_class,
8951         mips_output_mi_thunk): Likewise.
8952         * config/mmix/mmix.c (mmix_preferred_reload_class,
8953         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
8954         Likewise.
8955         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
8956         Likewise.
8957         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
8958         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
8959         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
8960         * config/rs6000/rs6000.c (paired_expand_vector_init,
8961         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
8962         compare_section_name, rs6000_memory_move_cost): Likewise.
8963         * config/s390/s390.c (s390_emit_compare_and_swap,
8964         s390_preferred_reload_class, s390_secondary_reload,
8965         legitimize_pic_address, legitimize_tls_address,
8966         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
8967         s390_class_max_nregs): Likewise.
8968         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
8969         * config/s390/s390.md: Likewise.
8970         * config/score/score-protos.h (score_secondary_reload_class,
8971         score_preferred_reload_class): Likewise.
8972         * config/score/score.c (score_preferred_reload_class,
8973         score_secondary_reload_class): Likewise.
8974         * config/score/score3.c (score3_output_mi_thunk,
8975         score3_preferred_reload_class, score3_secondary_reload_class,
8976         score3_hard_regno_mode_ok): Likewise.
8977         * config/score/score3.h (score3_preferred_reload_class,
8978         score3_secondary_reload_class): Likewise.
8979         * config/score/score7.c (score7_output_mi_thunk,
8980         score7_preferred_reload_class, score7_secondary_reload_class,
8981         score7_hard_regno_mode_ok): Likewise.
8982         * config/score/score7.h (score7_preferred_reload_class,
8983         score7_secondary_reload_class): Likewise.
8984         * config/sh/sh.c (prepare_move_operands, output_far_jump,
8985         output_branchy_insn, add_constant, gen_block_redirect,
8986         sh_insn_length_adjustment, sh_cannot_change_mode_class,
8987         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
8988         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
8989         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
8990         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
8991         xstormy16_preferred_reload_class): Likewise.
8992         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
8993         xtensa_expand_atomic, override_options,
8994         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
8995         Likewise.
8996         * reorg.c (try_merge_delay_insns): Likewise.
8997         * tree.c (merge_dllimport_decl_attributes): Likewise.
8998
8999         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
9000
9001 2008-08-06  Michael Matz  <matz@suse.de>
9002
9003         * Makefile.in (write_entries_to_file): Quote words.
9004         * gengtype.c: (read_input_line): Skip over leading white-space.
9005
9006 2008-08-06  Marc Gauthier  <marc@tensilica.com>
9007
9008         * config.gcc: Match more processor names for Xtensa.
9009         * configure.ac: Likewise.
9010         * doc/install.texi (Specific): Likewise.
9011         * configure: Regenerate.
9012
9013 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9014
9015         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
9016         * calls.c (avoid_likely_spilled_reg): Likewise.
9017         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
9018         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
9019         * config/i386/i386.c (ix86_expand_special_args_builtin,
9020         ix86_secondary_reload): Likewise.
9021         * except.c (struct eh_region, gen_eh_region_catch,
9022         remove_unreachable_regions, duplicate_eh_regions,
9023         assign_filter_values, build_post_landing_pads,
9024         sjlj_find_directly_reachable_regions, remove_eh_handler,
9025         reachable_next_level, foreach_reachable_handler,
9026         can_throw_internal_1, can_throw_external_1,
9027         collect_one_action_chain): Likewise.
9028         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
9029         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
9030         * function.c (update_temp_slot_address, instantiate_new_reg,
9031         instantiate_virtual_regs_in_rtx,
9032         instantiate_virtual_regs_in_insn): Likewise.
9033         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
9034         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
9035         gimplify_cleanup_point_expr): Likewise.
9036         * ipa-cp.c (ipcp_lattice_changed): Likewise.
9037         * passes.c (next_pass_1): Likewise.
9038         * print-tree.c (print_node_brief, print_node): Likewise.
9039         * profile.c (branch_prob): Likewise.
9040         * tree-dump.c (dump_register): Likewise.
9041         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
9042         Likewise.
9043         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
9044         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
9045         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
9046         copy_arguments_for_versioning, copy_static_chain): Likewise.
9047         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
9048         add_new_name_mapping, register_new_name_mapping): Likewise.
9049         * tree-mudflap.c (mf_xform_derefs): Likewise.
9050         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
9051         get_init_expr, combine_chains): Likewise.
9052         * tree-pretty-print.c (dump_generic_node): Likewise.
9053         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
9054         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
9055         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
9056         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
9057
9058 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9059
9060         PR middle-end/37010
9061         * calls.c (expand_call): Use the biggest preferred stack
9062         boundary.
9063
9064 2008-08-06  Michael Matz  <matz@suse.de>
9065
9066         PR target/36613
9067         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
9068         for reused reload, instead of overwriting them.
9069
9070 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9071
9072         PR middle-end/37009
9073         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
9074         for incoming stack boundary.
9075
9076         * function.c (assign_parm_find_entry_rtl): Update
9077         parm_stack_boundary.
9078
9079         * function.h (rtl_data): Add parm_stack_boundary.
9080
9081         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
9082         parm_stack_boundary for incoming stack boundary.
9083
9084 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
9085
9086         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
9087         for unrepresentable subregs or treat them as equal to other regs
9088         or subregs with the same register number.
9089
9090 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
9091
9092         PR middle-end/35432
9093         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
9094         if want_value.
9095
9096 2008-08-06  Jan Hubicka  <jh@suse.cz>
9097
9098         * predict.c (maybe_hot_frequency_p): When profile is absent, all
9099         frequencies might be hot.
9100
9101 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
9102
9103         * reload.c (find_reloads): Force constants into literal pool
9104         also if they are wrapped in a SUBREG.
9105
9106 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9107
9108         PR target/35659
9109         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
9110         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
9111         Don't allow predicated instructions for data speculation.
9112         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
9113         declaration.
9114
9115 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9116
9117         * haifa-sched.c (extend_global): Split to extend_global_data and
9118         extend_region_data.  Update all uses.
9119         (extend_all): Rename to extend_block_data.
9120
9121 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9122
9123         * sched-rgn.c (new_ready): Check if instruction can be
9124         speculatively scheduled before attempting speculation.
9125         (debug_rgn_dependencies): Remove wrongful assert.
9126
9127 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9128
9129         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
9130
9131 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9132
9133         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
9134         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
9135         va_size, and type_size.
9136
9137 2008-08-04  Jason Merrill  <jason@redhat.com>
9138
9139         PR c++/37016
9140         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
9141         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
9142
9143 2008-08-05  Richard Henderson  <rth@redhat.com>
9144
9145         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
9146         * configure: Rebuild.
9147
9148 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9149
9150         PR tree-opt/37024
9151         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
9152         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
9153         is a conversion.
9154
9155 2008-08-05  Richard Henderson  <rth@redhat.com>
9156
9157         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
9158         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
9159         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
9160         * common.opt (fdwarf2-cfi-asm): New.
9161         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
9162         * config.in, configure: Rebuild.
9163         * dwarf2asm.c (dw2_asm_output_data_raw): New.
9164         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
9165         New.
9166         (dw2_force_const_mem): Externalize.
9167         * dwarf2asm.h: Update.
9168         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
9169         generate a real label.
9170         (output_cfi_directive): New.
9171         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
9172         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
9173         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
9174         and .cfi_lsda.
9175         (dwarf2out_end_epilogue): Emit .cfi_endproc.
9176         (output_loc_operands_raw, output_loc_sequence_raw): New.
9177         (output_cfa_loc_raw): New.
9178
9179 2008-08-05  Paul Brook  <paul@codesourcery.com>
9180
9181         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
9182         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
9183         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
9184         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
9185         * config/arm/arm.h (TARGET_VFPD32): Define.
9186         (TARGET_VFP3): Use TARGET_VFPD32.
9187         (fputype): Add FPUTYPE_VFP3D16.
9188         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
9189         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
9190         * config/arm/arm-cores.def: Add cortex-r4f.
9191         * config/arm/arm-tune.md: Regenerate.
9192
9193 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9194
9195         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
9196         Reword some comments throughout the file.
9197
9198         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
9199         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
9200         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
9201         MFC_MIN_DMA_LIST_ELEMENTS.
9202         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
9203         MFC_MAX_DMA_LIST_ELEMENTS.
9204
9205         (MFC_START_ENABLE): Remove PPU-only define.
9206         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
9207         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
9208
9209         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
9210         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
9211         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
9212         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
9213         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
9214         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
9215         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
9216
9217         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
9218         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
9219         (mfc_sdcrt, mfc_sdcrtst): Likewise.
9220         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
9221
9222         (spu_read_machine_status): Fix typo.
9223
9224 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9225
9226         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
9227         SUBREG of multi-word hard register.
9228         * config/spu/spu.c (valid_subreg): Likewise.
9229         (adjust_operand): Handle SUBREGs of multi-word hard registers.
9230
9231 2008-08-04  Richard Guenther  <rguenther@suse.de>
9232
9233         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
9234         the candidate with the stripped base if that base is different
9235         from the original base even for offset zero.
9236
9237 2008-08-04  Richard Guenther  <rguenther@suse.de>
9238
9239         PR middle-end/36691
9240         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
9241         check for no_overflow.
9242
9243 2008-08-04  Richard Guenther  <rguenther@suse.de>
9244
9245         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
9246
9247 2008-08-04  Paul Brook  <paul@codesourcery.com>
9248
9249         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
9250         (arm_order_regs_for_local_alloc): New function.
9251         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
9252         prototype.
9253         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
9254
9255 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9256
9257         PR target/37012
9258         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
9259         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
9260         (ix86_expand_epilogue): Likewise.
9261
9262 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9263
9264         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
9265         in comments.
9266
9267 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9268
9269         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
9270         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
9271         (*movv2sf_internal_rex64): Ditto.
9272
9273 2008-08-03  Jan Hubicka  <jh@suse.cz>
9274
9275         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
9276         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
9277         * expmed.c (expand_smod_pow2): Likewise.
9278
9279 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9280
9281         PR target/36992
9282         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
9283         alternative 0 of operand 1.
9284         (*vec_concatv2di_rex64_sse): Ditto.
9285         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
9286         of operand 1.
9287         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
9288         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
9289         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
9290         (*movv2sf_internal_rex64): Ditto.
9291
9292 2008-08-02  Richard Guenther  <rguenther@suse.de>
9293
9294         PR target/35252
9295         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
9296         (ssedoublesizemode): New mode attribute.
9297         (sse_shufps): Call gen_sse_shufps_v4sf.
9298         (sse_shufps_1): Macroize.
9299         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
9300         (sse2_shufpd_1): Macroize.
9301         (vec_extract_odd, vec_extract_even): New expanders.
9302         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
9303         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
9304         * i386.c (ix86_expand_vector_init_one_nonzero): Call
9305         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
9306         (ix86_expand_vector_set): Likewise.
9307         (ix86_expand_reduc_v4sf): Likewise.
9308
9309 2008-08-01  Doug Kwan  <dougkwan@google.com>
9310
9311         * matrix-reorg.c: Re-enable all code.
9312         (struct malloc_call_data): Change CALL_STMT to gimple type.
9313         (collect_data_for_malloc_call): Tuplify.
9314         (struct access_site_info): Change STMT to gimple type.
9315         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
9316         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
9317         (struct free_info): Change STMT to gimple type.
9318         (struct matrix_access_phi_node):  Change PHI to gimple type.
9319         (get_inner_of_cast_expr): Remove.
9320         (may_flatten_matrices_1): Tuplify.
9321         (may_flatten_matrices): Ditto.
9322         (mark_min_matrix_escape_level): Ditto.
9323         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
9324         (ssa_accessed_in_call_rhs): New
9325         (ssa_accessed_in_assign_rhs): New
9326         (record_access_alloc_site_info): Tuplify.
9327         (add_allocation_site): Ditto.
9328         (analyze_matrix_allocation_site): Ditto.
9329         (analyze_transpose): Ditto.
9330         (get_index_from_offset): Ditto.
9331         (update_type_size): Ditto.
9332         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
9333         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
9334         (analyze_accesses_for_phi_node): Tuplify.
9335         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
9336         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
9337         (analyze_matrix_accesses): Tuplify.
9338         (check_var_data): New call-back type for check_var_notmodified_p.
9339         (check_var_notmodified_p): Tuplify and use call-back struct to
9340         return statement found.
9341         (can_calculate_expr_before_stmt): Factor out statement related code
9342         into ...
9343         (can_calculate_stmt_before_stmt): New.
9344         (check_allocation_function): Tuplify.
9345         (find_sites_in_func): Ditto.
9346         (record_all_accesses_in_func): Ditto.
9347         (transform_access_sites): Ditto.
9348         (transform_allocation_sites): Ditto.
9349         (matrix_reorg): Re-enable.
9350         (gate_matrix_reorg): Re-enable.
9351
9352 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
9353
9354         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
9355         for labels for which it hasn't been set yet.  If it has been set,
9356         stop walking insns and continue with next worklist item.
9357         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
9358         if the only BARRIER is at the very end of a function.
9359
9360 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
9361
9362         * cfgexpand.c (expand_stack_alignment): Assert that
9363         stack_realign_drap and drap_rtx must match.
9364
9365         * function.c (instantiate_new_reg): If DRAP is used to realign
9366         stack, replace virtual_incoming_args_rtx with internal arg
9367         pointer.
9368
9369 2008-08-01  Richard Guenther  <rguenther@suse.de>
9370
9371         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
9372         loop information only if we initialized it.
9373         (execute_pre): Call fini_pre with in_fre.
9374         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
9375         if we do not unroll because we hit max-completely-peeled-insns.
9376         Use our estimation for consistency, do allow shrinking.
9377
9378 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
9379
9380         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
9381         with MIN_STACK_BOUNDARY.
9382         (ix86_update_stack_boundary): Likewise.
9383         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
9384         STACK_BOUNDARY.
9385
9386         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
9387         (MIN_STACK_BOUNDARY): This.
9388
9389 2008-08-01  Richard Guenther  <rguenther@suse.de>
9390
9391         PR middle-end/36997
9392         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
9393
9394 2008-08-01  Richard Guenther  <rguenther@suse.de>
9395
9396         PR tree-optimization/36988
9397         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
9398         do not matter if that doesn't change volatile qualification.
9399
9400 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
9401
9402         * configure.ac: Do not generate libada-mk.  Do not subst
9403         host_cc_for_libada.
9404         * libada-mk.in: Remove.
9405         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
9406         * configure: Regenerate.
9407
9408 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
9409
9410         * tree-pass.h: Added comment about not dumping passes with name
9411         starting with star in struct opt_pass.
9412         * passes.c (register_dump_files_1): Don't do dump for a pass with
9413         name starting with star.
9414         * doc/passes.texi (Pass manager): Mention pass names and special
9415         meaning of star prefix to avoid dump.
9416
9417 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
9418
9419         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
9420         to MIPS64r2.
9421         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
9422         (ISA_MIPS64R2): New macro.
9423         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
9424         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
9425         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
9426         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
9427         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
9428         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
9429         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
9430         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
9431         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
9432         Move up to keep list alphabetically sorted.
9433         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
9434         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
9435         processor.
9436         * doc/invoke.texi (MIPS Options): Add -mips64r2.
9437         (-march=@var{arch}): Add mips64r2.
9438
9439 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9440
9441         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
9442
9443 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
9444
9445         * expr.c (expand_assignment): Check for complete type.
9446
9447 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9448
9449         PR debug/36977
9450         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
9451
9452         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
9453         for stack alignment.
9454
9455         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
9456
9457 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
9458
9459         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
9460         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
9461
9462 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
9463
9464         PR rtl-optimization/36419
9465         * dwarf2out.c (barrier_args_size): New variable.
9466         (compute_barrier_args_size, compute_barrier_args_size_1): New
9467         functions.
9468         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
9469         if not called yet in the current function, use barrier_args_size
9470         array to find the new args_size value.
9471         (dwarf2out_frame_debug): Free and clear barrier_args_size.
9472
9473 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9474
9475         PR debug/36980
9476         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
9477         rule 19.
9478
9479 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9480
9481         PR debug/36976
9482         * dwarf2out.c (dwarf2out_args_size_adjust): New.
9483         (dwarf2out_stack_adjust): Use it.
9484         (dwarf2out_frame_debug_expr): Likewise.
9485
9486 2008-07-31  Richard Guenther  <rguenther@suse.de>
9487
9488         PR tree-optimization/36978
9489         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
9490         the generated condition.
9491
9492 2008-07-31  Richard Guenther  <rguenther@suse.de>
9493
9494         * passes.c (init_optimization_passes): Always call
9495         pass_early_warn_uninitialized.
9496         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
9497         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
9498         * doc/passes.texi (Warn for uninitialized variables): Adjust.
9499
9500 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
9501
9502         PR c/36970
9503         * builtins.c (maybe_emit_free_warning): New function.
9504         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
9505         maybe_emit_free_warning for BUILT_IN_FREE.
9506
9507         PR debug/36278
9508         * dwarf2out.c (get_context_die): New function.
9509         (force_decl_die, force_type_die): Use it.
9510         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
9511         returns NULL, force generation of DW_TAG_typedef and put that into
9512         DW_AT_import.
9513
9514         PR preprocessor/36649
9515         * c-pch.c (c_common_read_pch): Save and restore
9516         line_table->trace_includes across PCH restore.
9517
9518 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
9519
9520         PR ada/36554
9521         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
9522
9523 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
9524
9525         PR 36974
9526         * final.c (call_from_call_insn): Handle COND_EXEC.
9527
9528 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
9529
9530         * builtins.c (std_gimplify_va_arg_expr): Replace
9531         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
9532         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9533
9534 2008-07-30  Joey Ye  <joey.ye@intel.com>
9535             H.J. Lu  <hongjiu.lu@intel.com>
9536
9537         * builtins.c (expand_builtin_setjmp_receiver): Replace
9538         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
9539         (expand_builtin_apply_args_1): Likewise.
9540         (expand_builtin_longjmp): Need DRAP for stack alignment.
9541         (expand_builtin_apply): Likewise.
9542
9543         * caller-save.c (setup_save_areas): Call assign_stack_local_1
9544         instead of assign_stack_local to allow alignment reduction.
9545
9546         * calls.c (emit_call_1): Need DRAP for stack alignment if
9547         return pops.
9548         (expand_call): Replace virtual_incoming_args_rtx with
9549         crtl->args.internal_arg_pointer.
9550         * stmt.c (expand_nl_goto_receiver): Likewise.
9551
9552         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
9553         alignment and store to stack_alignment_estimated and
9554         max_used_stack_slot_alignment.
9555         (expand_one_var): Likewise.
9556         (expand_stack_alignment): New function.
9557         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
9558         and stack_alignment_estimated fields in rtl_data.  Call
9559         expand_stack_alignment at end.
9560
9561         * defaults.h (INCOMING_STACK_BOUNDARY): New.
9562         (MAX_STACK_ALIGNMENT): Likewise.
9563         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
9564         (SUPPORTS_STACK_ALIGNMENT): Likewise.
9565
9566         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
9567         stack alignment when generating virtual registers.
9568
9569         * function.c (assign_stack_local): Renamed to ...
9570         (assign_stack_local_1): This.  Add a parameter to indicate
9571         if it is OK to reduce alignment.
9572         (assign_stack_local): Use it.
9573         (instantiate_new_reg): Instantiate virtual incoming args rtx
9574         to vDRAP if stack realignment and DRAP is needed.
9575         (assign_parms): Collect parameter/return type alignment and
9576         contribute to stack_alignment_estimated.
9577         (locate_and_pad_parm): Likewise.
9578         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
9579         with crtl->args.internal_arg_pointer.
9580
9581         * function.h (rtl_data): Add new field drap_reg,
9582         max_used_stack_slot_alignment, stack_alignment_estimated,
9583         stack_realign_needed, need_drap, stack_realign_processed and
9584         stack_realign_finalized.
9585         (stack_realign_fp): New macro.
9586         (stack_realign_drap): Likewise.
9587
9588         * global.c (compute_regsets): Frame pointer is needed when
9589         stack is realigned.  Can eliminate frame pointer when stack is
9590         realigned and dynamic realigned argument pointer isn't used.
9591
9592         * reload1.c (update_eliminables):  Frame pointer is needed
9593         when stack is realigned.
9594         (init_elim_table): Can eliminate frame pointer when stack is
9595         realigned and dynamic realigned argument pointer isn't used.
9596
9597         * rtl.h (assign_stack_local_1): Declare new funtion.
9598
9599         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
9600         (TARGET_GET_DRAP_RTX): Likewise.
9601         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
9602         TARGET_GET_DRAP_RTX.
9603
9604         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
9605
9606         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
9607         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
9608
9609 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
9610             H.J. Lu  <hongjiu.lu@intel.com>
9611
9612         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
9613         vdrap_reg, stack_realign and drap_reg_saved.
9614         (add_cfi): Don't allow redefining CFA when DRAP is used.
9615         (reg_save): Handle stack alignment.
9616         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
9617         alignment.  Don't generate DWARF information for (set fp sp)
9618         when DRAP is used.
9619         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
9620         to INVALID_REGNUM.
9621         (int_loc_descriptor): Move prototype forward.  Also define if
9622         DWARF2_UNWIND_INFO is true.
9623         (output_cfa_loc): Handle DW_CFA_expression.
9624         (build_cfa_aligned_loc): New.
9625         (based_loc_descr): Update assert for stack realign.  For local
9626         variables, use sp+offset when stack is aligned without drap and
9627         fp+offset when stack is aligned with drap.  For arguments, use
9628         cfa+offset when drap is used to align stack.
9629
9630 2008-07-30  Joey Ye  <joey.ye@intel.com>
9631             H.J. Lu  <hongjiu.lu@intel.com>
9632
9633         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
9634         Break long line.
9635         (ix86_gen_andsp): New.
9636         (ix86_user_incoming_stack_boundary): Likewise.
9637         (ix86_default_incoming_stack_boundary): Likewise.
9638         (ix86_incoming_stack_boundary): Likewise.
9639         (ix86_can_eliminate): Likewise.
9640         (find_drap_reg): Likewise.
9641         (ix86_update_stack_boundary): Likewise.
9642         (ix86_get_drap_rtx): Likewise.
9643         (ix86_finalize_stack_realign_flags): Likewise.
9644         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
9645         (TARGET_GET_DRAP_RTX): Likewise.
9646         (override_options): Overide option value for new options.
9647         (ix86_function_ok_for_sibcall): Remove check for
9648         force_align_arg_pointer.
9649         (ix86_handle_cconv_attribute): Likewise.
9650         (ix86_function_regparm): Likewise.
9651         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
9652         (ix86_va_start): Replace virtual_incoming_args_rtx with
9653         crtl->args.internal_arg_pointer.
9654         (ix86_select_alt_pic_regnum): Check DRAP register.
9655         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
9656         (ix86_compute_frame_layout): Compute frame layout wrt stack
9657         realignment.
9658         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
9659         (ix86_expand_prologue): Decide if stack realignment is needed
9660         and generate prologue code accordingly.
9661         (ix86_expand_epilogue): Generate epilogue code wrt stack
9662         realignment is really needed or not.
9663
9664         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
9665         (ABI_STACK_BOUNDARY): Likewise.
9666         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
9667         (STACK_REALIGN_DEFAULT): Likewise.
9668         (INCOMING_STACK_BOUNDARY): Likewise.
9669         (MAX_STACK_ALIGNMENT): Likewise.
9670         (ix86_incoming_stack_boundary): Likewise.
9671         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
9672         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
9673         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
9674         (machine_function): Remove force_align_arg_pointer.
9675
9676         * config/i386/i386.md (BX_REG): New.
9677         (R13_REG): Likewise.
9678
9679         * config/i386/i386.opt (mforce_drap): New.
9680         (mincoming-stack-boundary): Likewise.
9681         (mstackrealign): Add Init(-1).
9682
9683         * config/i386/i386-protos.h (ix86_can_eliminate): New
9684
9685 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
9686
9687         * doc/extend.texi: Update force_align_arg_pointer.
9688
9689         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
9690         -mstackrealign.
9691
9692         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
9693         (INCOMING_STACK_BOUNDARY): Likewise.
9694         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
9695         (TARGET_GET_DRAP_RTX): Likewise.
9696
9697 2008-07-30  Andreas Schwab  <schwab@suse.de>
9698
9699         PR rtl-optimization/36929
9700         * dse.c (replace_inc_dec): Use emit_insn_before instead of
9701         add_insn_before and fix argument order.
9702         (replace_inc_dec_mem): Handle NULL rtx.
9703
9704 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
9705
9706         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
9707         function.
9708         (arm_compute_initial_elimination_offset): Use it.
9709         (arm_compute_save_reg_mask): Include static chain save slot when
9710         calculating alignment.
9711         (arm_get_frame_offsets): Ditto.
9712         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
9713         that we can use to decrement the stack when the stack decrement
9714         could be too big for an immediate value in a single insn.
9715         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
9716
9717 2008-07-30  Richard Guenther  <rguenther@suse.de>
9718
9719         PR tree-optimization/36967
9720         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
9721         Release defs of statements we remove.
9722
9723 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
9724
9725         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
9726         instead of NULL_RTVEC.
9727
9728 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
9729
9730         PR target/35866
9731
9732         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
9733         vector modes.
9734
9735 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
9736
9737         * final.c (call_from_call_insn): New.
9738         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
9739
9740 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
9741
9742         * configure.ac: Substitute ADA_CFLAGS.
9743         * configure: Regenerate.
9744         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
9745         * Makefile.in: Remove mention of X_* variables.
9746         * config/pa/x-ada-hpux10: Remove.
9747         * config/pa/x-ada: Remove.
9748
9749         * doc/fragments.texi: Update.
9750
9751 2008-07-30  Olivier Hainque  <hainque@adacore.com>
9752
9753         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
9754         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
9755         __dso_handle explicitly here.
9756
9757 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9758
9759         PR 34389
9760         * c-typeck.c (build_binary_op): Encapsulate code into...
9761         * c-common.c (shorten_binary_op): ...this new function.
9762         (conversion_warning): Use the new function. Handle non-negative
9763         constant in bitwise-and.
9764         * c-common.h (shorten_binary_op): Declare.
9765
9766 2008-07-30  Olivier Hainque  <hainque@adacore.com>
9767
9768         * scan.c (make_sstring_space): Add explicit conversions of
9769         allocator's return value.
9770         * fix-header.c (recognized_function): Likewise.
9771
9772 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9773
9774         * doc/cpp.texi: Update to GFDL 1.2.
9775         * doc/gcc.texi: Do not list GPL as Invariant Section.
9776         * doc/gccint.texi: Likewise.  Update copyright years.
9777         * doc/install.texi: Update copyright years.
9778
9779 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
9780
9781         PR target/36955
9782         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
9783         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
9784
9785 2008-07-29  Jan Hubicka  <jh@suse.cz>
9786
9787         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
9788         (grokdeclarator): Likewise.
9789         * langhooks.c (lhd_warn_unused_global_decl): Use
9790         DECL_DECLARED_INLINE_P.
9791         * print-tree.c (print_node): Remove DECL_INLINE check.
9792
9793 2008-07-29  Richard Guenther  <rguenther@suse.de>
9794
9795         PR tree-optimization/36945
9796         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
9797         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
9798         Record invariant addresses un-decomposed.
9799         (copy_reference_ops_from_call): Record reference call
9800         arguments properly.  Simplify.
9801         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
9802         helper split out from ...
9803         (create_component_ref_by_pieces): ... here.  Simplify.
9804         Prepare for recursive invocation for call arguments.
9805         (create_expression_by_pieces): Adjust call to
9806         create_component_ref_by_pieces.
9807         (compute_avail): Process operand 2 of reference ops.
9808
9809 2008-07-29  Richard Guenther  <rguenther@suse.de>
9810
9811         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
9812
9813 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
9814
9815         * c-format.c (check_format_types): Revert unwanted checkin.
9816
9817 2008-07-29  Jan Hubicka  <jh@suse.cz>
9818
9819         * flags.h (flag_really_no_inline): Remove.
9820         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
9821         * toplev.c (flag_really_no_inline): Remove.
9822         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
9823         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
9824         (cgraph_decide_inlining_incrementally): Likewise.
9825         (compute_inline_parameters): Likewise.
9826         * opts.c (decode_options): Simplify.
9827         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
9828         * common.opt (finline): Initialize to 1.
9829         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
9830
9831 2008-07-29  Jan Hubicka  <jh@suse.cz>
9832
9833         * predict.c (always_optimize_for_size_p): New function.
9834         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
9835         optimize_edge_for_size_p, optimize_edge_for_speed_p,
9836         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
9837         functions.
9838         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
9839         * function.c (prepare_function_start): Set default profile.
9840         * function.h (rtl_data): Add maybe_hot_insn_p.
9841         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
9842         (construct_exit_block): Likewise.
9843         (tree_expand_cfg): Likewise.
9844         * basic-block.h
9845         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
9846         optimize_edge_for_size_p, optimize_edge_for_speed_p,
9847         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
9848         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
9849         Declare.
9850
9851 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9852
9853         PR 34985
9854         * c-decl.c (merge_decls): Merge USED flags.
9855
9856 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9857
9858         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
9859         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
9860         next_stack, lab_false and lab_over trees.
9861
9862 2008-07-28  Richard Guenther  <rguenther@suse.de>
9863
9864         PR tree-optimization/36957
9865         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
9866         (useless_type_conversion_p): Remove.
9867         (types_compatible_p): Remove.
9868         * gimple.h (tree_ssa_useless_type_conversion): Declare.
9869         (useless_type_conversion_p): Declare.
9870         (types_compatible_p): Declare.
9871         (gimple_expr_type): Return the base type only if it is
9872         trivially convertible to the subtype.
9873
9874 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
9875
9876         * configure.ac: Use the m4_do macro to concatenate the warnings into
9877         one string in ACX_PROG_CC_WARNING_OPTS,
9878         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
9879         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
9880         * configure: Regenerate.
9881
9882 2008-07-28  Richard Guenther  <rguenther@suse.de>
9883
9884         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
9885         (insert_fake_stores): Remove.
9886         (realify_fake_stores): Likewise.
9887         (execute_pre): Remove dead code.
9888         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
9889         (find_func_aliases): Deal with it here instead.
9890         Re-enable gcc_unreachable call.
9891
9892 2008-07-28  Richard Guenther  <rguenther@suse.de>
9893
9894         Merge from gimple-tuples-branch.
9895
9896         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
9897         * gimple.def: New file.
9898         * gsstruct.def: Likewise.
9899         * gimple-iterator.c: Likewise.
9900         * gimple-pretty-print.c: Likewise.
9901         * tree-gimple.c: Removed.  Merged into ...
9902         * gimple.c: ... here.  New file.
9903         * tree-gimple.h: Removed.  Merged into ...
9904         * gimple.h: ... here.  New file.
9905
9906         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
9907         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
9908         --enable-checking=gimple flag.
9909         * config.in: Likewise.
9910         * configure: Regenerated.
9911
9912         * tree-ssa-operands.h: Tuplified.
9913         * tree-vrp.c: Likewise.
9914         * tree-loop-linear.c: Likewise.
9915         * tree-into-ssa.c: Likewise.
9916         * tree-ssa-loop-im.c: Likewise.
9917         * tree-dump.c: Likewise.
9918         * tree-complex.c: Likewise.
9919         * cgraphbuild.c: Likewise.
9920         * tree-ssa-threadupdate.c: Likewise.
9921         * tree-ssa-loop-niter.c: Likewise.
9922         * tree-pretty-print.c: Likewise.
9923         * tracer.c: Likewise.
9924         * gengtype.c: Likewise.
9925         * tree-loop-distribution.c: Likewise.
9926         * tree-ssa-loop-unswitch.c: Likewise.
9927         * cgraph.c: Likewise.
9928         * cgraph.h: Likewise.
9929         * tree-ssa-loop-manip.c: Likewise.
9930         * value-prof.c: Likewise.
9931         * tree-ssa-loop-ch.c: Likewise.
9932         * tree-tailcall.c: Likewise.
9933         * value-prof.h: Likewise.
9934         * tree.c: Likewise.
9935         * tree.h: Likewise.
9936         * tree-pass.h: Likewise.
9937         * ipa-cp.c: Likewise.
9938         * tree-scalar-evolution.c: Likewise.
9939         * tree-scalar-evolution.h: Likewise.
9940         * target.h: Likewise.
9941         * lambda-mat.c: Likewise.
9942         * tree-phinodes.c: Likewise.
9943         * diagnostic.h: Likewise.
9944         * builtins.c: Likewise.
9945         * tree-ssa-alias-warnings.c: Likewise.
9946         * cfghooks.c: Likewise.
9947         * fold-const.c: Likewise.
9948         * cfghooks.h: Likewise.
9949         * omp-low.c: Likewise.
9950         * tree-ssa-dse.c: Likewise.
9951         * ipa-reference.c: Likewise.
9952         * tree-ssa-uncprop.c: Likewise.
9953         * toplev.c: Likewise.
9954         * tree-gimple.c: Likewise.
9955         * tree-gimple.h: Likewise.
9956         * tree-chrec.c: Likewise.
9957         * tree-chrec.h: Likewise.
9958         * tree-ssa-sccvn.c: Likewise.
9959         * tree-ssa-sccvn.h: Likewise.
9960         * cgraphunit.c: Likewise.
9961         * tree-ssa-copyrename.c: Likewise.
9962         * tree-ssa-ccp.c: Likewise.
9963         * tree-ssa-loop-ivopts.c: Likewise.
9964         * tree-nomudflap.c: Likewise.
9965         * tree-call-cdce.c: Likewise.
9966         * ipa-pure-const.c: Likewise.
9967         * c-format.c: Likewise.
9968         * tree-stdarg.c: Likewise.
9969         * tree-ssa-math-opts.c: Likewise.
9970         * tree-ssa-dom.c: Likewise.
9971         * tree-nrv.c: Likewise.
9972         * tree-ssa-propagate.c: Likewise.
9973         * ipa-utils.c: Likewise.
9974         * tree-ssa-propagate.h: Likewise.
9975         * tree-ssa-alias.c: Likewise.
9976         * gimple-low.c: Likewise.
9977         * tree-ssa-sink.c: Likewise.
9978         * ipa-inline.c: Likewise.
9979         * c-semantics.c: Likewise.
9980         * dwarf2out.c: Likewise.
9981         * expr.c: Likewise.
9982         * tree-ssa-loop-ivcanon.c: Likewise.
9983         * predict.c: Likewise.
9984         * tree-ssa-loop.c: Likewise.
9985         * tree-parloops.c: Likewise.
9986         * tree-ssa-address.c: Likewise.
9987         * tree-ssa-ifcombine.c: Likewise.
9988         * matrix-reorg.c: Likewise.
9989         * c-decl.c: Likewise.
9990         * tree-eh.c: Likewise.
9991         * c-pretty-print.c: Likewise.
9992         * lambda-trans.c: Likewise.
9993         * function.c: Likewise.
9994         * langhooks.c: Likewise.
9995         * ebitmap.h: Likewise.
9996         * tree-vectorizer.c: Likewise.
9997         * function.h: Likewise.
9998         * langhooks.h: Likewise.
9999         * tree-vectorizer.h: Likewise.
10000         * ipa-type-escape.c: Likewise.
10001         * ipa-type-escape.h: Likewise.
10002         * domwalk.c: Likewise.
10003         * tree-if-conv.c: Likewise.
10004         * profile.c: Likewise.
10005         * domwalk.h: Likewise.
10006         * tree-data-ref.c: Likewise.
10007         * tree-data-ref.h: Likewise.
10008         * tree-flow-inline.h: Likewise.
10009         * tree-affine.c: Likewise.
10010         * tree-vect-analyze.c: Likewise.
10011         * c-typeck.c: Likewise.
10012         * gimplify.c: Likewise.
10013         * coretypes.h: Likewise.
10014         * tree-ssa-phiopt.c: Likewise.
10015         * calls.c: Likewise.
10016         * tree-ssa-coalesce.c: Likewise.
10017         * tree.def: Likewise.
10018         * tree-dfa.c: Likewise.
10019         * except.c: Likewise.
10020         * except.h: Likewise.
10021         * cfgexpand.c: Likewise.
10022         * tree-cfgcleanup.c: Likewise.
10023         * tree-ssa-pre.c: Likewise.
10024         * tree-ssa-live.c: Likewise.
10025         * tree-sra.c: Likewise.
10026         * tree-ssa-live.h: Likewise.
10027         * tree-predcom.c: Likewise.
10028         * lambda.h: Likewise.
10029         * tree-mudflap.c: Likewise.
10030         * ipa-prop.c: Likewise.
10031         * print-tree.c: Likewise.
10032         * tree-ssa-copy.c: Likewise.
10033         * ipa-prop.h: Likewise.
10034         * tree-ssa-forwprop.c: Likewise.
10035         * ggc-page.c: Likewise.
10036         * c-omp.c: Likewise.
10037         * tree-ssa-dce.c: Likewise.
10038         * tree-vect-patterns.c: Likewise.
10039         * tree-ssa-ter.c: Likewise.
10040         * tree-nested.c: Likewise.
10041         * tree-ssa.c: Likewise.
10042         * lambda-code.c: Likewise.
10043         * tree-ssa-loop-prefetch.c: Likewise.
10044         * tree-inline.c: Likewise.
10045         * tree-inline.h: Likewise.
10046         * tree-iterator.c: Likewise.
10047         * tree-optimize.c: Likewise.
10048         * tree-ssa-phiprop.c: Likewise.
10049         * tree-vect-transform.c: Likewise.
10050         * tree-object-size.c: Likewise.
10051         * tree-outof-ssa.c: Likewise.
10052         * cfgloop.c: Likewise.
10053         * system.h: Likewise.
10054         * tree-profile.c: Likewise.
10055         * cfgloop.h: Likewise.
10056         * c-gimplify.c: Likewise.
10057         * c-common.c: Likewise.
10058         * tree-vect-generic.c: Likewise.
10059         * tree-flow.h: Likewise.
10060         * c-common.h: Likewise.
10061         * basic-block.h: Likewise.
10062         * tree-ssa-structalias.c: Likewise.
10063         * tree-switch-conversion.c: Likewise.
10064         * tree-ssa-structalias.h: Likewise.
10065         * tree-cfg.c: Likewise.
10066         * passes.c: Likewise.
10067         * ipa-struct-reorg.c: Likewise.
10068         * ipa-struct-reorg.h: Likewise.
10069         * tree-ssa-reassoc.c: Likewise.
10070         * cfgrtl.c: Likewise.
10071         * varpool.c: Likewise.
10072         * stmt.c: Likewise.
10073         * tree-ssanames.c: Likewise.
10074         * tree-ssa-threadedge.c: Likewise.
10075         * langhooks-def.h: Likewise.
10076         * tree-ssa-operands.c: Likewise.
10077         * config/alpha/alpha.c: Likewise.
10078         * config/frv/frv.c: Likewise.
10079         * config/s390/s390.c: Likewise.
10080         * config/m32c/m32c.c: Likewise.
10081         * config/m32c/m32c-protos.h: Likewise.
10082         * config/spu/spu.c: Likewise.
10083         * config/sparc/sparc.c: Likewise.
10084         * config/i386/i386.c: Likewise.
10085         * config/sh/sh.c: Likewise.
10086         * config/xtensa/xtensa.c: Likewise.
10087         * config/stormy16/stormy16.c: Likewise.
10088         * config/ia64/ia64.c: Likewise.
10089         * config/rs6000/rs6000.c: Likewise.
10090         * config/pa/pa.c: Likewise.
10091         * config/mips/mips.c: Likewise.
10092
10093 2008-07-28  Simon Baldwin  <simonb@google.com>
10094
10095         * c-pragma.c (handle_pragma_message): New function.
10096         (init_pragma): Register handle_pragma_message.
10097         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
10098         documentation.
10099
10100 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
10101
10102         PR tree-optimization/35252
10103         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
10104         REALPART_EXPR to be considered as same load operation.
10105
10106 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
10107
10108         PR tree-optimization/36830
10109         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
10110         (expressions_equal_p): Return false if only one operand is null.
10111
10112 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
10113
10114         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
10115         version requirements.
10116
10117 2008-07-26  Olivier Hainque  <hainque@adacore.com>
10118
10119         * collect2.c (symkind): New enum.  Symbol kinds we care about.
10120         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
10121         code and head comment accordingly.
10122         (scan_prog_file): Use symkind names instead of bare integers.
10123
10124 2008-07-25  Jan Hubicka  <jh@suse.cz>
10125
10126         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
10127         DECL_INLINE.
10128         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
10129         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
10130         * dojump.c (clear_pending_stack_adjust): Likewise.
10131         * print-tree.c (print_node): Ignore DECL_INLINE.
10132         * tree-inline.c (inlinable_function_p): Likewise.
10133
10134 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
10135
10136         * doc/extend.texi (hot attribute): Document that the hot attribute
10137         turns on -O3 for some ports.
10138         (cold attribute): Document that the cold attribute turns on -Os
10139         for some ports
10140
10141         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
10142         reflect function specific option support.
10143
10144         * target.h (struct target_option_hooks): Add fields to say whether
10145         the cold attribute implies -Os and the hot attribute implies -O3.
10146
10147         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
10148         By default, do not turn on -Os for cold functions.
10149         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
10150         not turn on -O3 for hot functions.
10151
10152         * c-common.c (handle_hot_attribute): Use target hook to determine
10153         if hot functions should enable -O3.
10154         (handle_cold_attribute): Use target hook to determine if cold
10155         functions should enable -Os.
10156
10157         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
10158         (override_options): Move disable scheduling to
10159         optimization_options.
10160         (optimization_options): Disable scheduling here, not
10161         override_options.
10162         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10163         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10164
10165         * config/ia64/ia64.c (ia64_override_options): Move setting
10166         scheduling flags to ia64_optimization_options.
10167         (ia64_optimization_options): Disable scheduling options here, and
10168         not in ia64_override_options.
10169         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10170         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10171
10172 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
10173
10174         PR target/36936
10175         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
10176
10177 2008-07-25  Martin Jambor  <mjambor@suse.cz>
10178
10179         PR tree-optimization/36926
10180         * ipa-prop.c (ipa_analyze_call_uses): Call
10181         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
10182
10183 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
10184
10185         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10186         movv2si_internal): Add mem = reg alternative.
10187
10188 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
10189
10190         PR bootstrap/36918
10191         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
10192         DEFAULT_PCC_STRUCT_RETURN to 127.
10193
10194 2008-07-24  Jan Hubicka  <jh@suse.cz>
10195
10196         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
10197         (build_cgraph_edges): Likewise.
10198         * cgraph.c (cgraph_node): Do not update assembler hash.
10199         (cgraph_remove_node): Drop non-unit-at-a-time code.
10200         * tree-pass.h (pass_O0_always_inline): Remove.
10201         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
10202         * toplev.c (process_options): Flag unit-at-a-time does not imply
10203         no section anchors.
10204         * cgraphunit.c: Update comments.
10205         (decide_is_function_needed): Drop non-unit-at-a-time mode.
10206         (cgraph_assemble_pending_functions): Remove.
10207         (cgraph_reset_node): Drop non-unit-at-a-time code.
10208         (cgraph_finalize_function): Likewise.
10209         (cgraph_analyze_function): Likewise.
10210         (cgraph_finalize_compilation_unit): Likewise.
10211         (cgraph_expand_function): Likewise.
10212         (cgraph_optimize): Likesise.
10213         (save_inline_function_body): Likewise.
10214         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
10215         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
10216         * ipa-inline.c: Update comments.
10217         (enum inlining_mode): remove INLINE_SPEED.
10218         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
10219         (cgraph_mark_inline_edge): Likewise.
10220         (try_inline): Likewise.
10221         (cgraph_decide_inlining_incrementally): Likewise.
10222         (cgraph_gate_inlining): Remove.
10223         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
10224         (cgraph_gate_early_inlining): Likewise.
10225         (gate_inline_passes): Remove.
10226         (pass_inline_parameters, pass_ipa_inline): Remove gates.
10227         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
10228         pass_O0_always_inline): Remove.
10229         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
10230         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
10231         * opts.c (no_unit_at_a_time_default): Remove.
10232         (decode_options): Remove flag_unit_at_a_time reset and warning.
10233         * opts.h (no_unit_at_a_time_default): Remove.
10234         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
10235         early in GNU dialect.
10236         (merge_decls): Update comment; drop unit-at-a-time check.
10237         (finish_decl): Likewise.
10238         (grok_declaration): Remove flag_inline_trees code.
10239         (finish_functions): Return on function returning non-void on all
10240         statics.
10241         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
10242         * cfgexpand.c (expand_one_static_var): Remove.
10243         (expand_one_var): Remove expand_one_static_var call.
10244         (expand_used_vars_for_block): Remove flag_unit_a_time check.
10245         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
10246         and flag_unit_at_a-time compatibility checks.
10247         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
10248         * tree-inline.c (flag_inline_trees): Remove.
10249         (inlinable_function_p): Don't check it.
10250         (expand_call_inline): Remove non-unit-at-a-time code.
10251         * tree-inline.h (flag_inline_trees): Remove.
10252         * tree-optimize.c (execute_early_local_optimizations): Remove
10253         unit-at-a-time checks.
10254         (tree_rest_of_compilation): Likewise.
10255         * combine.c (setup_incoming_promotions): Likewise.
10256         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
10257         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
10258         * passes.c (pass_inline_parameters): Update comments; remove
10259         O0_alwaysinline pass.
10260         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
10261         (execute_one_pass): Likewise.
10262         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
10263         (ix86_function_sseregparm): Likewise.
10264         * arm.c (arm_function_in_section_p): Likewise.
10265         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
10266         * varpool.c: Update comments.
10267         (decide_is_variable_needed): Remove unit-at-a-time checks.
10268         (varpool_finalize_decl): Likewise.
10269
10270 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
10271
10272         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
10273         to 2 instead of -1.
10274         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
10275
10276 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
10277
10278         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
10279         imp symbol extension.
10280
10281         2008-07-23  Ian Lance Taylor  <iant@google.com>
10282
10283         * tree-vrp.c (infer_value_range): Ignore asm statements when
10284         looking for memory accesses for -fdelete-null-pointer-checks.
10285
10286 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10287
10288         * config/spu/spu-c.c (__vector_keyword): New variable.
10289         (vector_keyword): Likewise.
10290         (spu_categorize_keyword): New function.
10291         (spu_macro_to_expand): Likewise.
10292         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
10293         compiling an ISO C dialect.
10294
10295 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10296
10297         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
10298         conventional usage.
10299
10300 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
10301
10302         * configure: Regenerate.
10303         * configure.ac: Require texinfo 4.7.
10304         * doc/install.texi: Document texinfo 4.7 requirement.
10305
10306 2008-07-23  Martin Jambor  <mjambor@suse.cz>
10307
10308         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
10309         rather than for DECL_SAVED_TREE.
10310         * ipa-prop.c: Include diagnostic.h.
10311         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
10312         thoroughly.
10313         (ipa_detect_param_modifications): Function rewritten from scratch.
10314         (ipa_compute_jump_functions): Changed accesses to modification flags.
10315         (ipa_free_node_params_substructures): Update flags destruction.
10316         (ipa_node_duplication_hook): Update flags duplication.
10317         (ipa_print_all_params_modified): Updated flag access.
10318         * ipa-prop.h (struct ipa_param_flags): New structure.
10319         (struct ipa_node_params): New field modification_analysis_done,
10320         modified_flags changed into param_flags.
10321         (ipa_is_ith_param_modified): Changed to use new flags.
10322         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
10323
10324         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
10325         ipa-cp.c and split into two functions.
10326         (ipa_print_node_jump_functions): New function.
10327         (compute_scalar_jump_functions): New function.
10328         (type_like_member_ptr_p): New function.
10329         (compute_pass_through_member_ptrs): New function.
10330         (fill_member_ptr_cst_jump_function): New function.
10331         (determine_cst_member_ptr): New function.
10332         (compute_cst_member_ptr_arguments): New function.
10333         (ipa_compute_jump_functions): Complete rewrite.
10334         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
10335         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
10336         (struct ipa_member_ptr_cst): New structure.
10337         (union jump_func_value): New field member_cst.
10338         * ipa-cp.c (ipcp_lat_is_insertable): New function.
10339         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
10340         jump function types.
10341         (ipcp_print_all_lattices): Slight fprintf rearrangement.
10342         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
10343         instead of ipcp_print_all_jump_functions.
10344         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
10345         only for replacable scalars.
10346
10347         * doc/invoke.texi (Optimize options): Add description of
10348         -findirect-inlining.
10349         * common.opt (flag_indirect_inlining): New flag.
10350         * opts.c (decode_options): Set flag_indirect_inlining when
10351         optimize >= 3.
10352
10353         * ipa-inline.c: Include ipa-prop.h.
10354         (inline_indirect_intraprocedural_analysis): New function.
10355         (inline_generate_summary): Allocate parameter and argument info
10356         structures, call inline_indirect_intraprocedural_analysis on each
10357         node when doing indirect inlining and deallocate indirect inlining
10358         data structures in the end.
10359         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
10360         (free_all_ipa_structures_after_iinln): New function.
10361         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
10362         done.
10363         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
10364
10365         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
10366         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
10367         of computing the frequency separately.
10368         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
10369         of computing the frequency separately.
10370         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
10371         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
10372         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
10373         (ipa_get_stmt_member_ptr_load_param): New function.
10374         (ipa_is_ssa_with_stmt_def): New function.
10375         (ipa_note_param_call): New function.
10376         (ipa_analyze_call_uses): New function.
10377         (ipa_analyze_stmt_uses): New function.
10378         (ipa_analyze_params_uses): New function.
10379         (ipa_free_node_params_substructures): Also free the param_calls linked
10380         list.
10381         (ipa_node_duplication_hook): Also duplicate the param_calls
10382         linked list.
10383         (ipa_print_node_param_flags): New function.
10384         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
10385         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
10386         * ipa-prop.h (struct ipa_param_flags): New field called.
10387         (struct ipa_param_call_note): New structure.
10388         (struct ipa_node_params): New fields param_calls and
10389         uses_analysis_done.
10390         (ipa_is_ith_param_called): New function.
10391         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
10392         ipa_analyze_params_uses and dump parameter flags.
10393
10394         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
10395         ipa_propagate_indirect_call_infos if performing indirect inlining,
10396         pass a new parameter new_edges to it.
10397         (add_new_edges_to_heap): New fucntion.
10398         (cgraph_decide_inlining_of_small_functions): New vector
10399         new_indirect_edges for newly found indirect edges , call
10400         ipa_propagate_indirect_call_infos after inlining.
10401         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
10402         inlining if performing indirect inlining.  Call
10403         free_all_ipa_structures_after_iinln when doing so too.
10404         (inline_generate_summary): Do not call
10405         free_all_ipa_structures_after_iinln here.
10406         * ipa-prop.c (update_jump_functions_after_inlining): New function.
10407         (print_edge_addition_message): New function.
10408         (update_call_notes_after_inlining): New function.
10409         (propagate_info_to_inlined_callees): New function.
10410         (ipa_propagate_indirect_call_infos): New function.
10411         * ipa-prop.h: Include cgraph.h
10412         (struct ipa_param_call_note): Fields reordered, new field processed.
10413         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
10414         flag indirect_call.
10415         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
10416         rediscovered call statements.
10417         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
10418         (dump_cgraph_node): Dump also the indirect_call flag.
10419         (cgraph_clone_edge): Copy also the indirect_call flag.
10420         * tree-inline.c (copy_bb): Do not check for fndecls from call
10421         expressions, check for edge availability when moving clones.
10422         (get_indirect_callee_fndecl): New function.
10423         (expand_call_inline): If callee declaration is not apprent from
10424         the statement, try calling get_indirect_callee_fndecl.  Do not
10425         issue warnings or call sorry when not inlinings an indirect edge.
10426         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
10427
10428         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
10429         bit more frandly to matching.
10430         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
10431         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
10432         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
10433
10434 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10435
10436         PR 36907
10437         * opth-gen.awk: Suppress function specific features when building
10438         target libraries.
10439         * optc-gen.awk: Ditto.
10440
10441 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10442
10443         PR 35058
10444         * diagnostic.c (pedwarn): Add opt parameter.
10445         (pedwarn0): New.
10446         * c-tree.h (pedwarn_init): Add opt parameter.
10447         (pedwarn_c90): Likewise.
10448         (pedwarn_c99): Likewise.
10449         * c-errors.c (pedwarn_c99): Likewise.
10450         (pedwarn_c90): Likewise.
10451         * toplev.h (pedwarn): Update declaration.
10452         (pedwarn0): Declare.
10453         * c-lex.c: All calls to pedwarn changed.
10454         * builtins.c: All calls to pedwarn changed.
10455         * toplev.c: All calls to pedwarn changed.
10456         * c-decl.c: All calls to pedwarn changed.
10457         * c-typeck.c: All calls to pedwarn changed.
10458         * c-common.c: All calls to pedwarn changed.
10459         * c-parser.c: All calls to pedwarn changed.
10460
10461 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10462             Karthik Kumar  <karthikkumar@gmail.com>
10463
10464         * attribs.c (file scope): Include c-common.h.
10465         (decl_attributes): Add support for #pragma GCC optimize and
10466         #pragma GCC option.
10467
10468         * targhooks.c (default_can_inline_p): New function that is the
10469         default for the TARGET_CAN_INLINE_P target hook.
10470
10471         * targhooks.h (default_can_inline_p): Add declaration.
10472
10473         * tree.c (cl_optimization_node): New static tree for building
10474         OPTIMIZATION_NODE tree.
10475         (cl_target_option_node): New static tree for building
10476         TARGET_OPTION_NODE tree.
10477         (cl_option_hash_table): New hash table for hashing
10478         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10479         (cl_option_hash_hash): New function to provide the hash value for
10480         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10481         (cl_option_hash_eq): New function to provide an equality test for
10482         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10483         (tree_code_size): Add support for OPTIMIZATION_NODE and
10484         TARGET_OPTION_NODE trees.
10485         (tree_code_structure): Add support for OPTIMIZATION_NODE and
10486         TARGET_OPTION_NODE trees.
10487         (build_optimization_node): Build a tree that has all of the
10488         current optimization options.
10489         (build_target_option_node): Build a tree that has the target
10490         options that might be changed on a per function basis.
10491
10492         * tree.h (file scope): Include options.h.
10493         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
10494         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
10495         (TREE_OPTIMIZATION): Ditto.
10496         (TREE_TARGET_SPECIFIC): Ditto.
10497         (struct tree_function_decl): Add fields for remembering the
10498         current optimization options and target specific options.
10499         (struct tree_optimization_option): New tree variant that remembers
10500         the optimization options.
10501         (struct tree_target_option): New tree variant that remembers the
10502         target specific flags that might change for compiling a particular
10503         function.
10504         (union tree_node): Include tree_optimization_option and
10505         tree_target_option fields.
10506         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
10507         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
10508         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
10509         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
10510         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
10511         optimization and target options.
10512         (optimization_default_node): New macro to refer to global_trees
10513         field.
10514         (optimization_current_node): Ditto.
10515         (optimization_cold_node): Ditto.
10516         (optimization_hot_node): Ditto.
10517         (target_option_default_node): Ditto.
10518         (target_option_current_node): Ditto.
10519         (current_option_pragma): Ditto.
10520         (current_optimize_pragma): Ditto.
10521
10522         * target.h (struct gcc_target): Add valid_option_attribute_p,
10523         target_option_save, target_option_restore, target_option_print,
10524         target_option_pragma_parse, and can_inline_p hooks.
10525
10526         * toplev.h (parse_optimize_options): Add declaration.
10527         (fast_math_flags_struct_set_p): Ditto.
10528
10529         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
10530         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
10531         optimize is used.
10532
10533         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
10534         tree_can_inline_p hook to see if one function can inline another.
10535         (cgraph_decide_inlining): Ditto.
10536         (cgraph_decide_inlining_incrementally): Ditto.
10537
10538         * opts.c (decode_options): Add support for running multiple times
10539         to allow functions with different target or optimization options
10540         than was specified on the command line.
10541         (fast_math_flags_struct_set_p): New function that is similar to
10542         fast_math_flags_set_p, except it uses the values in the
10543         cl_optimization structure instead of global variables.
10544
10545         * optc-gen.awk: Add support for TargetSave to allow a back end to
10546         declare new fields that need to be saved when using function
10547         specific options.  Include flags.h and target.h in the options.c
10548         source.  Add support for Save to indicate which options can be set
10549         for individual functions.  Generate cl_optimize_save,
10550         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
10551         cl_target_option_restore, cl_target_option_print functions to
10552         allow functions to use different optimization or target options.
10553
10554         * opt-functions.awk (var_type_struct): Return the type used for
10555         storing the field in a structure.
10556
10557         * opth-gen.awk: Add support for TargetSave to allow a back end to
10558         declare new fields that need to be saved when using function
10559         specific options.  Add support for Save to indicate which options
10560         can be set for individual functions.  Only generate one extern for
10561         Mask fields.  Generate cl_optimization and cl_target_option
10562         structures to remember optimization and target options.
10563
10564         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
10565         collecting new tree nodes.
10566         (TS_TARGET_OPTION): Ditto.
10567
10568         * c-decl.c (merge_decls): Merge function specific target and
10569         optimization options.
10570
10571         * function.c (invoke_set_current_function_hook): If the function
10572         uses different optimization options, change the global variables
10573         to reflect this.
10574
10575         * coretypes.h (struct cl_optimization): Add forward reference.
10576         (struct cl_target_option): Ditto.
10577
10578         * c-pragma.c (option_stack): New static vector to remember the
10579         current #pragma GCC option stack.
10580         (handle_pragma_option): New function to support #pragma GCC option
10581         to change target options.
10582         (optimize_stack): New static vector to remember the current
10583         #pragma GCC optimize stack.
10584         (handle_pragma_optimize): New function to support #pragma GCC
10585         optimize to change optimization options.
10586         (init_pragma): Add support for #pragma GCC optimize and #pragma
10587         GCC option.
10588
10589         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
10590         optimization options.
10591         (TARGET_OPTION_NODE): New tree code for remembering certain target
10592         options.
10593
10594         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
10595         TARGET_OPTION_NODE trees.
10596
10597         * common.opt (-O): Add Optimization flag.
10598         (-Os): Ditto.
10599         (-fmath-errno): Ditto.
10600         (-falign-functions): Add UInteger flag to make sure flag gets full
10601         int in cl_optimization structure.
10602         (-falign-jumps): Ditto.
10603         (-falign-labels): Ditto.
10604         (-falign-loops): Ditto.
10605         (-fsched-stalled-insns): Ditto.
10606         (-fsched-stalled-insns-dep): Ditto.
10607
10608         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
10609         definition.
10610         (TARGET_OPTION_SAVE): Ditto.
10611         (TARGET_OPTION_RESTORE): Ditto.
10612         (TARGET_OPTION_PRINT): Ditto.
10613         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
10614         (TARGET_CAN_INLINE_P): Ditto.
10615         (TARGET_INITIALIZER): Add new hooks.
10616
10617         * tree-inline.c (tree_can_inline_p): New function to determine
10618         whether one function can inline another.  Check if the functions
10619         use compatible optimization options, and also call the backend
10620         can_inline_p hook.
10621
10622         * tree-inline.h (tree_can_inline_p): Add declaration.
10623
10624         * c-common.c (c_common_attribute): Add support for option and
10625         optimize attributes.
10626         (handle_option_attribute): Add support for the option attribute to
10627         allow the user to specify different target options for compiling a
10628         specific function.
10629         (handle_optimize_attribute): Add support for the optimize
10630         attribute to allow the user to specify different optimization
10631         options for compiling a specific function.
10632         (handle_hot_attribute): Turn on -O3 optimization for this one
10633         function if it isn't the default optimization level.
10634         (handle_cold_attribute): Turn on -Os optimization for this one
10635         function if it insn't the default optimization.
10636         (const_char_p): New const char * typedef.
10637         (optimize_args): New static vector to remember the optimization
10638         arguments.
10639         (parse_optimize_options): New function to set up the optimization
10640         arguments from either the optimize attribute or #pragma GCC optimize.
10641
10642         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
10643         (builtin_define_std): Ditto.
10644
10645         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
10646         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
10647         (x86_64-*-*): Ditto.
10648
10649         * Makefile.in (TREE_H): Add options.h.
10650         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
10651
10652         * doc/extend.texi (option attribute): Document new attribute.
10653         (optimize attribute): Ditto.
10654         (hot attribute): Document hot attribute sets -O3.
10655         (cold attribute): Document cold attribute sets -Os.
10656         (#pragma GCC option): Document new pragma.
10657         (#pragma GCC optimize): Ditto.
10658
10659         * doc/options.texi (TargetSave): Document TargetSave syntax.
10660         (UInteger): Document UInteger must be used for certain flags.
10661         (Save): Document Save option to create target specific options
10662         that can be saved/restored on a function specific context.
10663
10664         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
10665         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
10666
10667         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
10668         (TARGET_OPTION_SAVE): Ditto.
10669         (TARGET_OPTION_RESTORE): Ditto.
10670         (TARGET_OPTION_PRINT): Ditto.
10671         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
10672         (TARGET_CAN_INLINE_P): Ditto.
10673
10674         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
10675         -mfpmath=sse,387.
10676         (-mfpmath=both): Ditto.
10677
10678 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10679             Karthik Kumar  <karthikkumar@gmail.com>
10680
10681         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
10682         (TARGET_POPCNT): Ditto.
10683         (TARGET_SAHF): Ditto.
10684         (TARGET_AES): Ditto.
10685         (TARGET_PCLMUL): Ditto.
10686         (TARGET_CMPXCHG16B): Ditto.
10687         (TARGET_RECIP): Move switch into target_flags.
10688         (TARGET_FUSED_MADD): Ditto.
10689         (ix86_arch_features): Make an unsigned char type.
10690         (ix86_tune_features): Ditto.
10691         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
10692         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
10693         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
10694
10695         * config/i386/i386.opt (arch): New TargetSave field to define
10696         fields that need to be saved for function specific option support.
10697         (tune): Ditto.
10698         (fpmath): Ditto.
10699         (branch_cost): Ditto.
10700         (ix86_isa_flags_explicit): Ditto.
10701         (tune_defaulted): Ditto.
10702         (arch_specified): Ditto.
10703         (-m128-long-double): Add Save flag to save option for target
10704         specific option support.
10705         (-m80387): Ditto.
10706         (-maccumulate-outgoing-args): Ditto.
10707         (-malign-double): Ditto.
10708         (-malign-stringops): Ditto.
10709         (-mfancy-math-387): Ditto.
10710         (-mhard-float): Ditto.
10711         (-mieee-fp): Ditto.
10712         (-minline-all-stringops): Ditto.
10713         (-minline-stringops-dynamically): Ditto.
10714         (-mms-bitfields): Ditto.
10715         (-mno-align-stringops): Ditto.
10716         (-mno-fancy-math-387): Ditto.
10717         (-mno-push-args): Ditto.
10718         (-mno-red-zone): Ditto.
10719         (-mpush-args): Ditto.
10720         (-mred-zone): Ditto.
10721         (-mrtd): Ditto.
10722         (-msseregparm): Ditto.
10723         (-mstack-arg-probe): Ditto.
10724         (-m32): Ditto.
10725         (-m64): Ditto.
10726         (-mmmx): Ditto.
10727         (-m3dnow): Ditto.
10728         (-m3dnowa): Ditto.
10729         (-msse): Ditto.
10730         (-msse2): Ditto.
10731         (-msse3): Ditto.
10732         (-msse4.1): Ditto.
10733         (-msse4.2): Ditto.
10734         (-msse4): Ditto.
10735         (-mno-sse4): Ditto.
10736         (-msse4a): Ditto.
10737         (-msse5): Ditto.
10738         (-mrecip): Move flag into target_flags.
10739         (-mcld): Ditto.
10740         (-mno-fused-madd): Ditto.
10741         (-mfused-madd): Ditto.
10742         (-mabm): Move flag into ix86_isa_flags.
10743         (-mcx16): Ditto.
10744         (-mpopcnt): Ditto.
10745         (-msahf): Ditto.
10746         (-maes): Ditto.
10747         (-mpclmul): Ditto.
10748
10749         * config/i386/i386-c.c: New file for #pragma support.
10750         (ix86_target_macros_internal): New function to #define or #undef
10751         target macros based when the user uses the #pragma GCC option to
10752         change target options.
10753         (ix86_pragma_option_parse): New function to add #pragma GCC option
10754         support.
10755         (ix86_target_macros): Move defining the target macros here from
10756         TARGET_CPU_CPP_BUILTINS in i386.h.
10757         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
10758         defined, initialize any subtarget #pragmas.
10759
10760         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
10761         REGISTER_TARGET_PRAGMAS.
10762
10763         * config/i386/t-i386: New file for x86 dependencies.
10764         (i386.o): Make dependencies mirror the include files used.
10765         (i386-c.o): New file, add dependencies.
10766
10767         * config/i386/i386-protos.h (override_options): Add bool argument.
10768         (ix86_valid_option_attribute_tree): Add declaration.
10769         (ix86_target_macros): Ditto.
10770         (ix86_register_macros): Ditto.
10771
10772         * config/i386/i386.c (ix86_tune_features): Move initialization of
10773         the target masks to initial_ix86_tune_features to allow functions
10774         to have different target options.  Make type unsigned char,
10775         instead of unsigned int.
10776         (initial_ix86_tune_features): New static vector to hold processor
10777         masks for the tune variables.
10778         (ix86_arch_features): Move initialization of the target masks to
10779         initial_ix86_arch_features to allow functions to have different
10780         target options.  Make type unsigned char, instead of unsigned int.
10781         (initial_ix86_arch_features): New static vector to hold processor
10782         masks for the arch variables.
10783         (enum ix86_function_specific_strings): New enum to describe the
10784         string options used for attribute((option(...))).
10785         (ix86_target_string): New function to return a string that
10786         describes the target options.
10787         (ix86_debug_options): New function to print the current options in
10788         the debugger.
10789         (ix86_function_specific_save): New function hook to save the
10790         function specific global variables in the cl_target_option structure.
10791         (ix86_function_specific_restore): New function hook to restore the
10792         function specific variables from the cl_target_option structure to
10793         the global variables.
10794         (ix86_function_specific_print): New function hook to print the
10795         target specific options in the cl_target_option structure.
10796         (ix86_valid_option_attribute_p): New function hook to validate
10797         attribute((option(...))) arguments.
10798         (ix86_valid_option_attribute_tree): New function that is common
10799         code between attribute((option(...))) and #pragma GCC option
10800         support that parses the options and returns a tree holding the options.
10801         (ix86_valid_option_attribute_inner_p): New helper function for
10802         ix86_valid_option_attribute_tree.
10803         (ix86_can_inline_p): New function hook to decide if one function
10804         can inline another on a target specific basis.
10805         (ix86_set_current_function); New function hook to switch target
10806         options if the user used attribute((option(...))) or #pragma GCC
10807         option.
10808         (ix86_tune_defaulted): Move to static file scope from
10809         override_options.
10810         (ix86_arch_specified): Ditto.
10811         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
10812         ix86_isa_flags.
10813         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
10814         (OPTION_MASK_ISA_ABM_SET): Ditto.
10815         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
10816         (OPTION_MASK_ISA_CX16_SET): Ditto.
10817         (OPTION_MASK_ISA_SAHF_SET): Ditto.
10818         (OPTION_MASK_ISA_AES_UNSET): Ditto.
10819         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
10820         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
10821         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
10822         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
10823         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
10824         (struct ptt): Move to static file scope from override_options.
10825         (processor_target_table): Ditto.
10826         (cpu_names): Ditto.
10827         (ix86_handle_option): Add support for options that are now isa options.
10828         (override_options): Add support for declaring functions that
10829         support different target options than were specified on the
10830         command line.  Move struct ptt, processor_target_table, cpu_names,
10831         ix86_tune_defaulted, ix86_arch_specified to static file scope.
10832         Add bool argument.  Fix up error messages so the appropriate error
10833         is given for either command line or attribute.
10834         (ix86_previous_fndecl): New static to remember previous function
10835         declaration to see if we need to change target options.
10836         (ix86_builtins_isa): New array to record the ISA of each builtin
10837         function.
10838         (def_builtin): Always create the builtin function, even if the
10839         current ISA doesn't support it.
10840         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
10841         tests for those builtins.
10842         (ix86_init_builtins): Remove TARGET_MMX test for calling
10843         ix86_init_mmx_sse_builtins.
10844         (ix86_expand_builtin): If the current ISA doesn't support a given
10845         builtin, signal an error.
10846         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
10847         (TARGET_SET_CURRENT_FUNCTION): Ditto.
10848         (TARGET_OPTION_SAVE): Ditto.
10849         (TARGET_OPTION_RESTORE): Ditto.
10850         (TARGET_OPTION_PRINT): Ditto.
10851         (TARGET_CAN_INLINE_P): Ditto.
10852
10853 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
10854
10855         * c-typeck.c (build_external_ref): Don't call assemble_external.
10856         * final.c (output_operand): Call assemble_external.
10857
10858 2008-07-21  DJ Delorie  <dj@redhat.com>
10859
10860         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
10861         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
10862
10863 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10864
10865         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
10866         original insn and splitter contents into ...
10867         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
10868         flag_unsafe_math_optimizations.  Add dummy scratch register.
10869         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
10870         !flag_unsafe_math_optimizations.  Returns number with next
10871         highest magnitude if this is still less or equal to the true
10872         quotient in magnitude.
10873
10874 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
10875
10876         * Makefile.in: Replace toplev.h with TOPLEV_H.
10877         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
10878         * c-lex.c (fe_file_change): Don't set in_system_header.
10879         * c-parser.c (c_token): Remove in_system_header.
10880         (c_lex_one_token): Don't set in_system_header.
10881         (c_parser_set_source_position_from_token): Don't set in_system_header.
10882         * diagnostic.c (diagnostic_report_diagnostic): Use location from
10883         diagnostic_info.
10884         (warning_at): New.
10885         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
10886         * flags.h (in_system_header): Remove.
10887         * function.c (saved_in_system_header): Remove.
10888         (push_cfun): Don't set in_system_header.
10889         (pop_cfun): Don't set in_system_header.
10890         (push_struct_function): Don't set in_system_header.
10891         * input.h (expanded_location): Add sysp.
10892         (in_system_header_at): New.
10893         (in_system_header): New.
10894         * toplev.c (in_system_header): Remove.
10895         * toplev.h: Include input.h
10896         (warning_at): New.
10897         * tree-cfg.c (execute_warn_function_return): Call warning_at.
10898         * tree-ssa.c (warn_uninit): Call warning_at.
10899         (warn_uninitialized_var): Update calls to warn_uninit.
10900         (warn_uninitialized_phi): Update calls to warn_uninit.
10901         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
10902         (expand_location): Initialize xloc.sysp.
10903         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
10904         (tree_decl_with_vis): Remove in_system_header_flag.
10905
10906 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
10907
10908         PR target/36822
10909         * recog.c (asm_operand_ok): Change the order of the extra
10910         memory constraint checks.
10911
10912 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10913
10914         PR tree-opt/36879
10915         * tree-switch-conversion.c (build_one_array): Call
10916         varpool_mark_needed_node and varpool_finalize_decl
10917         instead of assemble_variable.
10918
10919 2008-07-19  Jan Hubicka  <jh@suse.cz>
10920
10921         * cgraph.c (cgraph_add_new_function): Do early local passes.
10922         * tree-nrv.c (gate_pass_return_slot): New gate.
10923         (pass_nrv): Add the gate.
10924         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
10925         functions.
10926         (coalesce_ssa_name): Coalesce SSA names.
10927         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
10928         not optimizing so unused user vars remains visible.
10929         * common.opt (flag_tree_ter): Always enable by default.
10930         * tree-ssa-ter.c: Include flags.h
10931         (is_replaceable_p): Check that locations match; when aliasing
10932         is missing be conservative about loads.
10933         * tree-optimize.c (gate_init_datastructures): Remove.
10934         (pass_init_datastructures): New.
10935         * passes.c: Reorder passes so we always go into SSA.
10936
10937 2008-07-19  Jan Hubicka  <jh@suse.cz>
10938
10939         * doc/extend.texi (flatten attribute): Remove note about
10940         unit-at-a-time.
10941         * doc/invoke.texi (--combine): Likewise.
10942         (-finline-functions-called-once): Update levels when enabled.
10943         (-funit-at-a-time): Document new behaviour.
10944         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
10945         -fno-section-anchors when disabled explicitly.
10946         (inline params): They are not ignored now.
10947         (precompiled headers): Remove unit-at-a-time as being incompatible.
10948         * opts.c (decode_options): Handle unit-at-a-time as alias;
10949         imply -fno-section-anchors when toplevel reorder is disabled
10950         explicitly.
10951         * common.opt (ftoplevel-reorder): Set default value to 2.
10952         (funit-at-a-time): Set default value to 1.
10953         * config/rs6000/rs6000.c (optimization_options): Set section anchors
10954         to 2.
10955
10956 2008-07-19  Jan Hubicka  <jh@suse.cz>
10957
10958         * builtins.c (expand_builtin_int_roundingfn,
10959         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
10960         it is not useful.
10961
10962 2008-07-19  Richard Guenther  <rguenther@suse.de>
10963
10964         PR bootstrap/36864
10965         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
10966         * tree-ssa-sccvn.c (get_constant_value_id): New function.
10967         * tree-ssa-pre.c (get_expr_value_id): For newly created
10968         constant value-ids make sure to add the expression to its
10969         expression-set.
10970
10971 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
10972
10973         PR middle-end/36877
10974         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
10975         return value of the builtin is ignored.
10976
10977 2008-07-19  Olivier Hainque  <hainque@adacore.com>
10978
10979         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
10980         bits, a C conformant malloc implementation has to provide.
10981         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
10982
10983 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
10984
10985         PR target/36780
10986         PR target/36827
10987         * reload.c (find_reloads_subreg_address): Only reload address if
10988         reloaded == 0, not for reloaded != 1.
10989
10990         Revert:
10991         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
10992         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
10993         (m32c_legitimate_address_p): Handle "++rii" addresses created by
10994         m32c_legitimize_reload_address.
10995
10996         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10997         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
10998         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
10999
11000 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11001
11002         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
11003         argument, saying whether nested array are to be collapsed
11004         into a single array type DIE with multiple subscripts.
11005         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
11006         issues, centralize the nested array types collapsing control and
11007         disable the transformation for Ada.
11008
11009 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
11010
11011         PR target/36786
11012         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
11013         x86_64_shift_adj.
11014         (x86_64_shift_adj_2): New expander.
11015         (x86_64_shift_adj_3): Ditto.
11016         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
11017         to split TImode operands.
11018         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
11019         (ix86_split_lshr): Ditto.
11020
11021 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
11022
11023         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
11024         and __CHAR32_TYPE__.
11025         * c-typeck.c (digest_init): Support char16_t and char32_t.
11026         (set_nonincremental_init_from_string): Idem.
11027
11028 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11029
11030         PR middle-end/36859
11031         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
11032         PREFERRED_STACK_BOUNDARY.
11033         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11034
11035 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11036
11037         PR middle-end/36858
11038         * function.c (locate_and_pad_parm): Cap boundary earlier.
11039
11040 2008-07-17  Julian Brown  <julian@codesourcery.com>
11041
11042         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
11043         no-op for targets which don't use DLLs.
11044
11045 2008-07-17  Martin Jambor  <mjambor@suse.cz>
11046
11047         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
11048         that nodes are relevant by examining the node->analyzed flag.
11049         (ipcp_init_stage): Check which nodes are relevant, assert that the
11050         relevant ones are also required.
11051         (ipcp_propagate_stage): Check on the side arrays are properly
11052         allocated.
11053         (ipcp_print_all_jump_functions): Make sure not to touch any node
11054         that is not analyzed or an edge that does not have a corresponding
11055         entry in the on-the-side vectors.
11056         (ipcp_function_scale_print): Likewise.
11057         (ipcp_update_callgraph): Check that the node is relevant.
11058         (ipcp_insert_stage): Check that the node is relevant.  Check there is
11059         an info for every node and edge.
11060         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
11061         (ipa_print_all_tree_maps): Likewise and a new variable info.
11062         (ipa_print_all_params_modified): Likewise.
11063         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
11064
11065 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
11066
11067         PR target/25343
11068         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
11069
11070 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
11071
11072         PR rtl-optimization/36753
11073         * fwprop.c (use_killed_between): Don't shortcut
11074         single-definition global registers.
11075
11076 2008-07-16  Jan Hubicka  <jh@suse.cz>
11077
11078         * cgraph.h (varpool_empty_needed_queue): Declare.
11079         * cgraphunit.c (output_in_order): Mark all variables as needed;
11080         empty the queue.
11081         * varpool.c (varpool_assemble_node): Update debug queue.
11082         (varpool_assemble_pending_decls): Don't do it here.
11083         (varpool_empty_needed_queue):  New function.
11084
11085 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11086
11087         * recog.c (peephole2_optimize): Fix formatting.
11088
11089 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11090
11091         * c-pch.c (get_ident): Avoid C++ keywords.
11092         * combine-stack-adj.c (single_set_for_csa): Likewise.
11093         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
11094         output_asm_insn): Likewise.
11095         * reload.c (push_secondary_reload, find_reusable_reload,
11096         push_reload, combine_reloads, find_reloads,
11097         debug_reload_to_stream): Likewise.
11098         * reload.h (struct reload): Likewise.
11099         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
11100         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
11101         emit_output_reload_insns): Likewise.
11102         * targhooks.c (default_secondary_reload): Likewise.
11103         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
11104
11105 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11106
11107         * recog.c (validate_change_1, validate_change,
11108         validate_unshare_change, validate_replace_rtx_1, struct
11109         funny_match, constrain_operands, peephole2_optimize): Avoid C++
11110         keywords.
11111         * reload.c (push_secondary_reload, secondary_reload_class,
11112         scratch_reload_class, find_valid_class, find_reusable_reload,
11113         push_reload, find_dummy_reload, find_reloads_address_1,
11114         find_reloads_address_part, find_equiv_reg): Likewise.
11115         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
11116         choose_reload_regs): Likewise.
11117         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
11118         Likewise.
11119         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
11120         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
11121         * sched-rgn.c (concat_INSN_LIST): Likewise.
11122         * stor-layout.c (mode_for_size, mode_for_size_tree,
11123         smallest_mode_for_size): Likewise.
11124
11125 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11126
11127         * cfg.c (dump_reg_info): Avoid C++ keywords.
11128         * dwarf2asm.c (dw2_force_const_mem,
11129         dw2_asm_output_encoded_addr_rtx): Likewise.
11130         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
11131         * expmed.c (expand_shift): Likewise.
11132         * global.c (find_reg): Likewise.
11133         * graph.c (draw_edge): Likewise.
11134         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
11135         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
11136         widen_clz, widen_bswap, expand_parity, expand_unop,
11137         emit_cmp_and_jump_insn_1): Likewise.
11138         * postreload.c (reload_cse_simplify_operands): Likewise.
11139         * ra.h (add_neighbor): Likewise.
11140         * reg-stack.c (remove_regno_note, change_stack): Likewise.
11141         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
11142         record_reg_classes, copy_cost, record_address_regs,
11143         invalid_mode_change_p): Likewise.
11144         * regrename.c (regrename_optimize, scan_rtx_reg,
11145         dump_def_use_chain, find_oldest_value_reg,
11146         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
11147
11148 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11149
11150         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
11151         MASK_POWERPC64 for power4 in previous commit.
11152
11153 2008-07-16  Olivier Hainque  <hainque@adacore.com>
11154
11155         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
11156         instead of bare conversion to cast const-ness away.
11157
11158 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
11159
11160         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
11161         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
11162         * config/xtensa/xtensa.c (xtensa_function_value): New function.
11163         (TARGET_FUNCTION_VALUE): Define.
11164
11165 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11166
11167         * config/rs6000/rs6000.c (processor_target_table): Add
11168         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
11169
11170 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11171
11172         PR target/36827
11173         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11174         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11175         m32c_legitimize_reload_address.
11176
11177 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
11178
11179         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
11180         DECL_IN_SYSTEM_HEADER in sync.
11181
11182 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
11183
11184         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
11185         * tree-ssa-pre.c (pre_expr_eq): Ditto
11186         (get_constant_for_value_id): Take a type as an argument.
11187         (fully_constant_expression): Pass in type.
11188         (find_or_generate_expression): Short circuit constant case.
11189         (create_expression_by_pieces): Remove special casing of
11190         pointer_plus.
11191         (do_regular_insertion): Short circuit constant case.
11192         (do_partial_partial_insertion): Ditto.
11193
11194 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11195
11196         PR target/36782
11197         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
11198
11199 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
11200
11201         * config/xtensa/libgcc-xtensa.ver: New file.
11202         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
11203
11204 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11205
11206         * df-problems.c (df_set_note): Avoid C++ keywords.
11207         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
11208         * dse.c (record_store, remove_useless_values): Likewise.
11209         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
11210         gen_reg_rtx_offset, operand_subword, change_address_1,
11211         change_address, adjust_address_1, offset_address,
11212         widen_memory_access, emit_copy_of_insn_after): Likewise.
11213         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
11214         * fwprop.c (should_replace_address, propagate_rtx_1,
11215         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
11216         Likewise.
11217         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
11218         gcse_emit_move_after, update_ld_motion_stores): Likewise.
11219         * lcm.c (compute_insert_delete, pre_edge_lcm,
11220         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
11221         * lower-subreg.c (resolve_reg_notes): Likewise.
11222         * mode-switching.c (optimize_mode_switching): Likewise.
11223
11224 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11225
11226         * bt-load.c (add_btr_def, migrate_btr_def,
11227         branch_target_load_optimize): Avoid C++ keywords.
11228         * caller-save.c (insert_restore, insert_save, insert_one_insn):
11229         Likewise.
11230         * combine.c (subst, simplify_set, make_extraction,
11231         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
11232         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
11233         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
11234
11235 2008-07-15  Richard Guenther  <rguenther@suse.de>
11236
11237         PR middle-end/36369
11238         * c-common.c (strict_aliasing_warning): Do not warn for
11239         TYPE_REF_CAN_ALIAS_ALL pointers.
11240         (c_common_get_alias_set): may_alias types are not special.
11241         * tree.c (build_pointer_type_for_mode): Look up the may_alias
11242         attribute and set can_ref_all accordingly.
11243         (build_reference_type_for_mode): Likewise.
11244         * doc/extend.texi (may_alias): Clarify.
11245
11246 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11247
11248         PR target/36780
11249         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11250         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11251
11252 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11253
11254         PR target/31568
11255         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
11256         gcc_assert, instead call output_operand_lossage.
11257
11258 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
11259
11260         * builtins.c (std_canonical_va_list): Treat structure based
11261         va_list types.
11262
11263 2008-07-15  Ben Elliston  <bje@au.ibm.com>
11264
11265         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
11266
11267 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
11268
11269         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
11270         is set.
11271
11272 2008-07-14  Jan Hubicka  <jh@suse.cz>
11273
11274         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
11275         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
11276         fix predicates and constraints.
11277         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
11278         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
11279
11280 2008-07-14  Doug Kwan  <dougkwan@google.com>
11281
11282         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
11283         additional option file arm/eabi.opt.
11284         * config/arm/eabi.h (File): New configuration file for EABI targets.
11285         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
11286         SUBSUBTARGET_EXTRA_SPECS.
11287         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
11288         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
11289         from STARTFILE_SPEC so that it can be referenced in an override.
11290         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
11291         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
11292         can be referenced in an override.
11293         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
11294         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
11295         so that it can be referenced in an override.
11296         (LINK_SPEC): Use BPABI_LINK_SPEC.
11297         * config/arm/eabi.opt (File): New.
11298
11299 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11300
11301         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
11302         (FIXED_VALUE_H): New variable.
11303         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
11304         input.h, fixed-value.h.
11305         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
11306         (BASIC_BLOCK_H): Use $(BITMAP_H).
11307         (FUNCTION_H): Add varray.h.
11308         (IPA_REFERENCE_H): Use $(BITMAP_H).
11309         (CGRAPH_H): Add $(BASIC_BLOCK_H).
11310         (DF_H): Use $(BITMAP_H).
11311         (GGC_H): Add statistics.h.
11312         (INSN_ADDR_H): New.
11313         (INSN_ATTR_H): Use it.
11314         (SYSTEM_H): Add safe-ctype.h, filenames.h.
11315         (INPUT_H): New.
11316         (SYMTAB_H): Add $(OBSTACK_H).
11317         (CPP_INTERNAL_H): New.
11318         (TREE_DUMP_H): Add tree-pass.h.
11319         (TREE_FLOW_H): Use $(BITMAP_H)
11320         (PRETTY_PRINT_H): Use $(INPUT_H).
11321         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
11322         (GSTAB_H): New.
11323         (BITMAP_H): New.
11324         (many object files): Fix lots of header dependencies throughout.
11325
11326 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11327
11328         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
11329         New macros.
11330         (s-gtyp-input): Use them to write tmp-gi.list.
11331         (echo_to_gi.list): Remove.
11332
11333 2008-07-14  Richard Guenther  <rguenther@suse.de>
11334
11335         * tree-ssa-sccvn.c (pre_info): Remove.
11336         (switch_to_PRE_table): Likewise.
11337         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
11338         (set_hashtable_value_ids): Do not create value-ids for the
11339         optimistic tables.
11340         (run_scc_vn): Remove double test.  Remove bogus special-case
11341         in value-number printing.
11342         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
11343         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
11344         SSA_NAME_VALUE.
11345         * tree-flow-inline.h (get_value_handle): Remove.
11346         * tree-flow.h (get_value_handle): Remove.
11347
11348 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11349
11350         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
11351         in which we generate arithmetics is not a subrange.
11352
11353 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11354
11355         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
11356
11357 2008-07-14  Richard Guenther  <rguenther@suse.de>
11358
11359         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
11360
11361 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
11362
11363         PR target/36745
11364         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
11365         reload for symbol refs moved to r0 with -fPIC.
11366         (legitimize_pic_address): Use the target register as temporary
11367         reg if possible.
11368         (emit_symbolic_move): Adjust comment.
11369         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
11370         New expanders.
11371
11372 2008-07-14  Ben Elliston  <bje@au.ibm.com>
11373
11374         * c-common.h (C_CPP_HASHNODE): New macro.
11375         * coretypes.h (struct cpp_token): Forward declare.
11376         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
11377         the context-sensitive keyword method.
11378         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
11379         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
11380         expand_bool_pixel): New.
11381         (altivec_categorize_keyword): New function.
11382         (init_vector_keywords): New function.
11383         (rs6000_macro_to_expand): Likewise.
11384         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
11385         compiling an ISO C dialect.
11386
11387 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
11388
11389         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
11390         (create_expression_by_pieces): Fix typo.
11391         (do_regular_insertion): Use debug counter here too.
11392
11393 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
11394
11395         PR target/35492.
11396         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
11397         CONST_OK_FOR_LETTER_P.  All port-local users changed.
11398         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
11399         implement Kp matching power-of-two.
11400         (CONSTRAINT_LEN): Define to match.
11401         * config/cris/cris.md: Replace all use of constraint K with Kc.
11402         ("*btst*): Use Kp for operand 0 of last alternative.
11403
11404 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11405
11406         PR testsuite/36440
11407         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
11408         and quad formats.
11409
11410 2008-07-13  Jan Hubicka  <jh@suse.cz>
11411
11412         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
11413         to be mangled too.
11414
11415 2008-07-13  Richard Guenther  <rguenther@suse.de>
11416
11417         PR middle-end/36811
11418         * langhooks.c (lhd_print_error_function): Deal with recursive
11419         BLOCK trees.
11420
11421 2008-07-12  Jan Hubicka  <jh@suse.cz>
11422
11423         * cgraph.c (assembler_name_hash): New static var.
11424         (hash_node_by_assembler_name, eq_assembler_name): New.
11425         (cgraph_node_for_asm): Use hashtable.
11426         (cgraph_remove_node): Maintain hashtable.
11427         (change_decl_assembler_name): Sanity check that names are not changing
11428         after aliasing was processed.
11429         * cgraph.h (varpoon_node): Add next GGC marker.
11430         * tree.c (decl_assembler_name_equal): Constify.
11431         (decl_assembler_name_hash): New.
11432         * tree.h (decl_assembler_name_equal): Constify.
11433         (decl_assembler_name_hash): Update.
11434
11435 2008-07-12  David Daney  <ddaney@avtrex.com>
11436
11437         * config/mips/driver-native.c (host_detect_local_cpu): Handle
11438         sb1 and r5000 cpus.
11439
11440 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
11441
11442         * doc/md.texi: Document the MIPS "v" constraint.
11443         * config/mips/mips.h (reg_class): Revert last change.
11444         (REG_CLASS_NAMES): Likewise.
11445         (REG_CLASS_CONTENTS): Likewise.
11446         * config/mips/mips.c (mips_regno_to_class): Likewise.
11447         * config/mips/constraints.md (v): Likewise, but add documentation.
11448         Add a comment to say that this constraint should not be used in
11449         gcc code.
11450
11451 2008-07-11  DJ Delorie  <dj@redhat.com>
11452
11453         * config/h8300/h8300.md (length): Fix branch offset limit.
11454
11455 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
11456
11457         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
11458         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
11459         (avr_hard_regno_scratch_ok): New function.
11460         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
11461         * config/avr/avr.md (all peepholes that request a scratch register):
11462         Remove avr_peep2_scratch_safe use.
11463
11464 2008-07-11  Tom Tromey  <tromey@redhat.com>
11465             Ian Lance Taylor  <iant@google.com>
11466
11467         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
11468         (struct c_common_resword): Define.
11469         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
11470         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
11471         (c_common_reswords, num_c_common_reswords): Declare.
11472         * c-common.c (c_common_reswords): New global const array.
11473         (num_c_common_reswords): New const int.
11474         * c-parser.c (struct resword, reswords): Don't define.
11475         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
11476         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
11477         than reswords.  If warning about C++ keywords, give them a special
11478         RID code.
11479         (c_lex_one_token): Warn about C++ keywords.  Call
11480         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
11481         (c_parser_external_declaration): Look for RID_xxx rather than
11482         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
11483         (c_parser_statement_after_labels): Likewise.
11484         (c_parser_objc_class_instance_variables): Likewise.
11485         (c_parser_objc_class_declaration): Likewise.
11486         (c_parser_objc_try_catch_statement): Likewise.
11487         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
11488         (declspecs_add_type): Likewise.
11489
11490 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
11491
11492         * ggc-page.c (alloc_page):
11493         Substituting xmalloc, xcalloc with
11494         XNEWVEC and XCNEWVAR macros which add the
11495         needed casts.
11496
11497 2008-07-11  Richard Guenther  <rguenther@suse.de>
11498
11499         PR tree-optimization/36765
11500         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
11501         aliases from HEAP vars to SMTs.
11502
11503 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11504
11505         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
11506         * configure.ac (loose_warn): Move -Wc++-compat from here...
11507         (strict_warn): ...to here.
11508         * configure: Regenerate.
11509
11510 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
11511
11512         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
11513         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
11514         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
11515         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
11516         excluding more specific h8300-*-* and sh-*-* targets.
11517
11518 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
11519
11520         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
11521         (eliminate): Ditto.
11522         (execute_pre): Call loop_optimizer_finalize in early exit.
11523
11524 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
11525
11526         PR middle-end/36790
11527         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
11528         uids in the bitmap, not just VAR_DECL uids.
11529
11530         PR rtl-optimization/36419
11531         * combine-stack-adj.c (adjust_frame_related_expr): New function.
11532         (combine_stack_adjustments_for_block): Call it if needed.  Delete
11533         correct insn.
11534         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
11535         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
11536         prologue sp adjustment.
11537
11538 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
11539
11540         PR other/28322
11541         * opts.c (print_ignored_options): Report postponed diagnostics for
11542         unknown -Wno-* options as warnings, not errors.
11543         (postpone_unknown_option_error): Renamed to...
11544         (postpone_unknown_option_warning): ... this.
11545
11546 2008-07-09  Doug Kwan  <dougkwan@google.com>
11547
11548         Revert:
11549         2008-07-08  Doug Kwan  <dougkwan@google.com>
11550
11551         * config/arm/arm.opt (mandroid): New option.
11552         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
11553         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
11554         (CC1_SPEC): Same.
11555         (CC1PLUS_SPEC): Same.
11556         (LIB_SPEC): Same.
11557         (STARTFILE_SPEC): Same.
11558         (ENDFILE_SPEC): Same.
11559         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
11560         used.
11561
11562 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
11563
11564         PR target/35802
11565         * config/mips/mips.h (reg_class): Remove V1_REG.
11566         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
11567         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
11568         instead of V1_REGS.
11569         (mips_get_tp): New function.
11570         (mips_legitimize_tls_address): Use it.
11571         * config/mips/constraints.md (v): Delete.
11572         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
11573         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
11574         After reload, split into a move and ...
11575         (*tls_get_tp_<mode>_split): ...this new instruction.
11576
11577 2008-07-09  David Daney  <ddaney@avtrex.com>
11578
11579         * config/mips/driver-native.c: Include coretypes.h and tm.h.
11580
11581 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
11582
11583         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
11584         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
11585         Add c argument.
11586         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
11587         htab_delete should be called.  Don't free c.
11588         (lookup_tmp_var): Create temp_htab lazily.
11589         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
11590         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
11591         callers.
11592         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
11593         lower_omp_ordered, lower_omp_critical, lower_omp_for,
11594         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
11595         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
11596         * tree-sra.c (generate_element_init): Likewise.
11597         * tree-mudflap.c (execute_mudflap_function_ops,
11598         execute_mudflap_function_decls): Likewise.
11599         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
11600         * tree-gimple.h (struct gimplify_ctx): New type.
11601         (push_gimplify_context): Adjust prototype.
11602
11603 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
11604
11605         * tree-ssa-pre.c (phi_translate_1): Update placement of
11606         add_to_value calls.
11607
11608 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
11609
11610         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
11611         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
11612         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
11613         * targhooks.c (default_hard_regno_scratch_ok): New function.
11614         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
11615         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
11616         * recog.c:  Include "target.h".
11617         (peep2_find_free_register): Add check for global regs. Add target
11618         specific check.
11619         * Makefile.in (recog.o): Depend on target.h.
11620
11621 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
11622
11623         * config/sh/sh.c (sh_canonical_va_list_type): New.
11624         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
11625
11626 2008-07-09  Raksit Ashok <raksit@google.com>
11627
11628         * doc/invoke.texi (Option Summary): Mention new option
11629         -Wdisallowed-function-list=...
11630         (Warning Options): Document -Wdisallowed-function-list=...
11631         * common.opt (Wdisallowed-function-list=): New flag.
11632         * flags.h (warn_disallowed_functions): External definition of new
11633         boolean warning flag.
11634         (warn_if_disallowed_function_p): Declare new function.
11635         * opts.c (warning_disallowed_functions): New static variable.
11636         (warn_disallowed_functions): New boolean warning flag.
11637         (warn_if_disallowed_function_p): New function.
11638         (add_comma_separated_to_vector): Rename
11639         add_instrument_functions_exclude_list to this.
11640         (common_handle_option): Handle new option. Rename calls to
11641         add_instrument_functions_exclude_list into calls to
11642         add_comma_separated_to_vector.
11643         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
11644         based on flag warn_disallowed_functions.
11645
11646 2008-07-09  Christian Bruel  <christian.bruel@st.com>
11647
11648         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
11649          instead of get_attr_length.
11650
11651 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11652
11653         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
11654         keywords.
11655         * genemit.c (gen_insn): Likewise.
11656         * gengtype.c (note_def_vec): Likewise.
11657         * gengtype.h (note_def_vec): Likewise.
11658         * genoutput.c (struct data, output_insn_data, process_template,
11659         gen_expand, gen_split, note_constraint): Likewise.
11660         * genrecog.c (new_decision, add_to_sequence, factor_tests,
11661         make_insn_sequence): Likewise.
11662         * gensupport.c (record_insn_name): Likewise.
11663
11664 2008-07-08  Doug Kwan  <dougkwan@google.com>
11665
11666         * config/arm/arm.opt (mandroid): New option.
11667         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
11668         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
11669         (CC1_SPEC): Same.
11670         (CC1PLUS_SPEC): Same.
11671         (LIB_SPEC): Same.
11672         (STARTFILE_SPEC): Same.
11673         (ENDFILE_SPEC): Same.
11674         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
11675         used.
11676
11677 2008-07-08  Raksit Ashok  <raksit@google.com>
11678
11679         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
11680         (set_storage_via_setmem): Fix expected_align parameter.
11681         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
11682         missing from the list.
11683         * doc/md.texi (movmem): Explicitly state that expected alignment is
11684         to be expressed in bytes.
11685         (setmem): Explicitly state that expected alignment is to be expressed
11686         in bytes.
11687
11688 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
11689
11690         * reload.c (find_reloads_subreg_address): Do not require validity
11691         of address in original mode before reloading address.
11692
11693 2008-07-07  Tianwei Sheng  <tianweis@google.com>
11694
11695         * df-core.c (df_remove_problem): Adjust the access to avoid out of
11696         bounds array access.
11697
11698 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
11699
11700         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
11701
11702 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
11703
11704         Fix PR tree-optimization/23455
11705         Fix PR tree-optimization/35286
11706         Fix PR tree-optimization/35287
11707         * Makefile.in (OBJS-common): Remove tree-vn.o.
11708         (tree-vn.o): Remove.
11709         * dbgcnt.def: Add treepre_insert debug counter.
11710         * gcc/tree-flow.h (add_to_value): Updated for other changes.
11711         (debug_value_expressions): Ditto.
11712         (print_value_expressions): Ditto.
11713         * tree-pretty-print.c (dump_generic_node): Updated for
11714         VALUE_HANDLE removal.
11715         * tree-ssa-dom.c (record_equality): Ditto.
11716         (cprop_operand): Ditto.
11717         (lookup_avail_expr): Ditto.
11718         * tree-ssa-threadedge.c
11719         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
11720         (simplify_control_stmt_condition): Ditto.
11721         * tree.c (tree_code_size): Ditto.
11722         (tree_node_structure): Ditto.
11723         (iterative_hash_expr): Ditto.
11724         * tree.def: Ditto.
11725         * tree.h (VALUE_HANDLE_ID): Ditto.
11726         (VALUE_HANDLE_EXPR_SET): Ditto.
11727         (struct tree_value_handle): Ditto.
11728         (union tree_node): Ditto.
11729         * treestruct.def: Ditto.
11730         * tree-vn.c: Removed.
11731         * tree-ssa-pre.c: Rewritten entirely.
11732         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
11733         (constant_value_ids): Ditto.
11734         (vn_nary_op_t): Moved to header.
11735         (vn_phi_t): Ditto.
11736         (vn_reference_op_t): Ditto
11737         (vn_reference_t): Ditto.
11738         (next_value_id): New variable.
11739         (VN_INFO): Add an assert.
11740         (vn_constant_eq): New function.
11741         (vn_constant_hash): Ditto.
11742         (get_or_alloc_constant_value_id): Ditto.
11743         (value_id_constant_p): Ditto.
11744         (vn_reference_compute_hash): De-staticify.
11745         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
11746         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
11747         (valueize_refs): Update opcode if it changes from ssa name to constant.
11748         (vn_reference_lookup_1): Add new argument.
11749         (vn_reference_lookup):  Ditto.
11750         (vn_reference_lookup_pieces): New function.
11751         (vn_reference_insert): Add return type. Modify to deal with value ids.
11752         (vn_reference_insert_pieces):  New function.
11753         (vn_nary_op_compute_hash): De-staticify.
11754         (vn_nary_op_eq): Ditto.
11755         (vn_nary_op_lookup_pieces): New function.
11756         (vn_nary_op_lookup): Add new argument.
11757         (vn_nary_op_insert_pieces): New function.
11758         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
11759         (vn_phi_insert): Ditto.
11760         (visit_unary_op): Update for callee changes.
11761         (visit_binary_op): Ditto.
11762         (visit_reference_op_load): Ditto.
11763         (visit_reference_op_store): Ditto.
11764         (init_scc_vn): Init next_value_id, constant_to_value_id and
11765         constant_value_ids.
11766         (free_scc_vn): Free them.
11767         (set_hashtable_value_ids): New function.
11768         (run_scc_vn): Use it.
11769         (get_max_value_id): New function.
11770         (get_next_value_id): Ditto.
11771         (expressions_equal_p): Moved from tree-vn.c
11772         (sort_vuses): Ditto.
11773         (sort_vuses_heap): Ditto.
11774         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
11775         above).
11776         * tree.c (iterative_hash_hashval_t): Made non-static
11777         * tree.h (iterative_hash_hashval_t): Declare it.
11778
11779 2008-07-08  Martin Jambor  <mjambor@suse.cz>
11780
11781         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
11782         instead of ipa_create_node_params.
11783         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
11784         ipa_check_create_edge_args, free them with
11785         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
11786
11787         * ipa-prop.c: Include flags.h and tree-inline.h.
11788         (ipa_node_params_vector): New variable.
11789         (ipa_edge_args_vector): New variable.
11790         (edge_removal_hook_holder): New variable.
11791         (node_removal_hook_holder): New variable.
11792         (edge_duplication_hook_holder): New variable.
11793         (node_duplication_hook_holder): New variable.
11794         (ipa_detect_param_modifications): Check for presence of modified flags.
11795         (ipa_compute_jump_functions): Check for presence of jump functions.
11796         (ipa_free_edge_args_substructures): New function.
11797         (ipa_create_node_params): Removed.
11798         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
11799         (ipa_free_node_params_substructures): New function.
11800         (ipa_free_all_node_params): Changed to deallocate the on-the-side
11801         vector.
11802         (ipa_edge_removal_hook): New function.
11803         (ipa_node_removal_hook): New function.
11804         (duplicate_array): New function.
11805         (ipa_edge_duplication_hook): New function.
11806         (ipa_node_duplication_hook): New function.
11807         (ipa_register_cgraph_hooks): New function.
11808         (ipa_unregister_cgraph_hooks): New function.
11809         (free_all_ipa_structures_after_ipa_cp): New function.
11810
11811         * ipa-prop.h: Include vec.h.
11812         (ipa_node_params_t): New typedef with vector types for it.
11813         (ipa_edge_args_t):  New typedef with vector types for it.
11814         (IPA_NODE_REF): Changed to access an on-the-side vector.
11815         (IPA_EDGE_REF): Changed to access an on-the-side vector.
11816         (ipa_check_create_node_params): New function.
11817         (ipa_check_create_edge_args): New function.
11818
11819         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
11820         all users.
11821
11822 2008-07-07  Tom Tromey  <tromey@redhat.com>
11823
11824         * configure, config.in: Rebuilt.
11825         * configure.ac: Don't check for scandir or alphasort.
11826
11827 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
11828
11829         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
11830         types immediately after creating them.
11831
11832 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
11833
11834         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
11835
11836 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
11837
11838         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
11839         dump_constraint_graph.
11840         (dump_constraint_edge): New function.
11841         (dump_constraint_graph): New function.
11842         (debug_constraint_graph): New function.
11843         (dump_constraint): Removed useless comparison.
11844         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
11845         (dump_constraint_graph): Declare.
11846         (debug_constraint_graph): Declare.
11847         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
11848
11849 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
11850
11851         * config/i386/i386.c (is_va_list_char_pointer): New.
11852         (ix86_va_start): Replace compare with ms_va_list_type_node
11853         by is_va_list_char_pointer.
11854         (ix86_gimplify_va_arg): Likewise.
11855
11856 2008-07-07  Martin Jambor  <mjambor@suse.cz>
11857
11858         * cgraph.c (cgraph_edge_max_uid): New variable.
11859         (struct cgraph_edge_hook_list): New type.
11860         (struct cgraph_node_hook_list): New type.
11861         (struct cgraph_2edge_hook_list): New type.
11862         (struct cgraph_2node_hook_list): New type.
11863         (first_cgraph_edge_removal_hook): New variable.
11864         (first_cgraph_node_removal_hook): New variable.
11865         (first_cgraph_edge_duplicated_hook): New variable.
11866         (first_cgraph_node_duplicated_hook): New variable.
11867         (cgraph_add_edge_removal_hook): New function.
11868         (cgraph_remove_edge_removal_hook): New function.
11869         (cgraph_call_edge_removal_hooks):  New function.
11870         (cgraph_add_node_removal_hook):  New function.
11871         (cgraph_remove_node_removal_hook):  New function.
11872         (cgraph_call_node_removal_hooks):  New function.
11873         (cgraph_add_edge_duplication_hook):  New function.
11874         (cgraph_remove_edge_duplication_hook):  New function.
11875         (cgraph_call_edge_duplication_hooks):  New function.
11876         (cgraph_add_node_duplication_hook):  New function.
11877         (cgraph_remove_node_duplication_hook):  New function.
11878         (cgraph_call_node_duplication_hooks):  New function.
11879         (cgraph_create_edge): Assign to edge uid.
11880         (cgraph_remove_edge): Call edge removal hooks.
11881         (cgraph_node_remove_callees): Call edge removal hooks.
11882         (cgraph_node_remove_callers): Call edge removal hooks.
11883         (cgraph_remove_node): Call node removal hooks.
11884         (cgraph_clone_edge): Call edge duplication hooks.
11885         (cgraph_clone_node): Call node duplication hooks.
11886
11887         * cgraph.h (cgraph_edge): New field uid.
11888         (cgraph_edge_hook): New type.
11889         (cgraph_node_hook): New type.
11890         (cgraph_2edge_hook): New type.
11891         (cgraph_2node_hook): New type.
11892
11893 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
11894
11895         * config.in: Regenerate.
11896
11897 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
11898
11899         * gcc.c (print_sysroot): New.
11900         (option_map, display_help, process_command): Handle the
11901         -print-sysroot option.
11902         (main): Print the sysroot if requested.
11903         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
11904
11905 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11906
11907         PR target/34780
11908         * unwind-pe.h (size_of_encoded_value): add attribute unused.
11909
11910 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
11911
11912         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
11913         (assign_parm_setup_block_p): Also check mode of entry_parm.
11914
11915 2008-07-07  Richard Guenther  <rguenther@suse.de>
11916
11917         * tree-ssa-structalias.h (set_used_smts): Remove.
11918         * tree-ssa-structalias.c (used_smts): Likewise.
11919         (set_used_smts): Likewise.
11920         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
11921         call to set_used_smts.
11922
11923 2008-07-07  Richard Guenther  <rguenther@suse.de>
11924
11925         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
11926         (new_var_info): Set it to false.
11927         (solution_set_add): Correctly handle pointers outside a var and
11928         inside a field.
11929         (type_safe): Treat variables with is_full_var properly.
11930         (do_sd_constraint): Likewise.
11931         (do_ds_constraint): Likewise.
11932         (process_constraint): Remove zeroing offset for !use_field_sensitive.
11933         (get_constraint_for_ptr_offset): New function.
11934         (get_constraint_for_component_ref): For addresses at least include
11935         the last field of the variable.  Handle is_full_vars properly.
11936         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
11937         (handle_ptr_arith): Remove.
11938         (find_func_aliases): Simplify assignment handling.
11939         (create_function_info_for): For parameter and result varinfos set
11940         is_full_var flag.
11941         (create_variable_info_for): Set is_full_var flag whenever we
11942         just created a single varinfo for a decl.
11943         (init_alias_vars): Initialize use_field_sensitive from
11944         max-fields-for-field-sensitive parameter.
11945
11946 2008-07-07  Richard Guenther  <rguenther@suse.de>
11947
11948         PR tree-optimization/36713
11949         * tree-flow-inline.h (is_call_used): New function.
11950         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
11951         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
11952         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
11953
11954 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
11955
11956         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
11957
11958 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
11959
11960         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
11961
11962 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
11963             Nathan Sidwell  <nathan@codesourcery.com>
11964
11965         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
11966         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
11967         tmake_file.
11968         * config/m68k/t-linux: New.
11969         * doc/install.texi: Document m68k-*-linux is now multilibbed by
11970         default.
11971
11972 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
11973
11974         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
11975         * config/m68k/m68k-devices.def: Remove multilibs that only differ
11976         by MAC/EMAC.
11977
11978 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11979
11980         * gcc.c (execute): Fix -Wc++-compat warning.
11981
11982 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
11983
11984         PR target/36720
11985         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
11986         constant for little endian.
11987
11988 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
11989
11990         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
11991         mips_base_mips16 instead of TARGET_MIPS16.
11992         (mips_base_mips16): Declare.
11993         * config/mips/mips.c (mips_base_mips16): Make global.
11994         (was_mips16_p): Remove GTY marker.
11995         (was_mips16_pch_p): New variable.
11996         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
11997         (mips_override_options): Force to non-MIPS16 mode initially.
11998         Do not complain about MIPS16 PIC incompatibilities here.
11999         Only allow -mgpopt if -mexplicit-relocs is in force for
12000         non-MIPS16 code.
12001
12002 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
12003
12004         * configure.ac: Check for caddr_t, define to char * if not defined.
12005         * configure: Regenerate.
12006         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
12007         (mmap_gt_pch_use_address): Likewise.
12008         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
12009
12010 2008-07-06  Richard Guenther  <rguenther@suse.de>
12011
12012         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
12013         (new_var_info): Deal with it.
12014         (solution_set_add): Likewise.
12015         (bitpos_of_field): Make signed, fix.
12016         (struct fieldoff): Remove type and decl fields.  Make size field
12017         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
12018         flags.
12019         (fieldoff_compare): Deal with it.
12020         (push_fields_onto_fieldstack): Remove has_union argument, glob
12021         adjacent non-pointer fields together.
12022         (create_function_info_for): Do not set has_union.
12023         (create_variable_info_for): Simplify.
12024
12025 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
12026
12027         * config.gcc (extra_headers): Add cross-stdarg.h for target
12028         x86_64-*-* and i?86-*-*.
12029         * config/i386/cross-stdarg.h: New.
12030         * builtins.c (std_fn_abi_va_list): New.
12031         (std_canonical_va_list_type): New.
12032         (stabilize_va_list): Replace va_list_type_node use by
12033         mtarget.canonical_va_list_type.
12034         (gimplify_va_arg_expr): Likewise.
12035         (expand_builtin_va_copy): Replace va_list_type_node use by
12036         mtarget.fn_abi_va_list.
12037         * tree-sra.c (is_va_list_type): New helper.
12038         (decl_can_be_decomposed_p): Replace
12039         va_list_type_node use by is_va_list_type.
12040         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
12041         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
12042         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
12043         * config/i386/i386-protos.h (ix86_get_valist_type): New.
12044         (ix86_enum_va_list): New.
12045         * config/i386/i386.c (sysv_va_list_type_node): New.
12046         (ms_va_list_type_node): New.
12047         (ix86_function_type_abi): Remove sorry.
12048         (ix86_build_builtin_va_list_abi): New.
12049         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
12050         for 64-bit targets.
12051         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
12052         (ix86_init_builtins_va_builtins_abi): New.
12053         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
12054         for 64-bit targets.
12055         (ix86_handle_abi_attribute): New.
12056         (attribute_spec): Add sysv_abi and ms_abi.
12057         (ix86_fn_abi_va_list): New.
12058         (ix86_canonical_va_list_type): New.
12059         (ix86_enum_va_list): New.
12060         (TARGET_FN_ABI_VA_LIST): New.
12061         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12062         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
12063         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
12064         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12065         (TARGET_ENUM_VA_LIST): New.
12066         * expr.h (std_fn_abi_va_list): New.
12067         (std_canonical_va_list_type): New.
12068         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
12069         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12070         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
12071         TARGET_CANONICAL_VA_LIST_TYPE.
12072         * target.h (struct gcc_target): Add fn_abi_va_list hook
12073         and canonical_va_list_type hook.
12074
12075 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12076
12077         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
12078         integral and pointer types.
12079
12080 2008-07-04  Roger Sayle  <roger@eyesopen.com>
12081
12082         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
12083         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
12084
12085 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12086
12087         PR target/36684
12088         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
12089
12090 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
12091
12092         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
12093         build_gimple_modify_stmt.
12094         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
12095         gimple operand.  Use fold_build* instead of build*.
12096
12097 2008-07-04  Richard Guenther  <rguenther@suse.de>
12098
12099         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
12100         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
12101         properly to compute the reachability set if we do field-sensitive PTA.
12102         * invoke.texi (max-fields-for-field-sensitive): Document default.
12103         * opts.c (decode_options): Set max-fields-for-field-sensitive to
12104         100 for optimize >= 2.
12105
12106 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12107
12108         * ggc-zone.c (lookup_page_table_if_allocated,
12109         set_page_table_entry, zone_find_object_size, alloc_small_page,
12110         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
12111         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
12112         -Wc++-compat and/or -Wcast-qual warnings.
12113
12114 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
12115
12116         PR target/36634
12117         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
12118         pic_offset_table_rtx to be marked as used here.
12119         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
12120         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
12121         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
12122         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
12123         !TARGET_SECURE_PLT.
12124
12125 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12126
12127         * alloc-pool.c (hash_descriptor, eq_descriptor,
12128         alloc_pool_descriptor): Fix -Wc++-compat warnings.
12129         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
12130         Likewise.
12131         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
12132         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
12133         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
12134         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
12135         Likewise.
12136
12137 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
12138
12139         * tree-flow.h (loop_only_exit_p): Declare.
12140         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
12141         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
12142         the number of iterations if it is constant.  Otherwise, if this is the
12143         only possible exit of the loop, use the conservative estimate on the
12144         number of iterations of the entire loop if available.
12145
12146 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
12147
12148         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
12149         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
12150         Add synchronization functions.
12151         * config/sync.c: New file.
12152         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
12153         (LIBGCC_SYNC_CFLAGS): Likewise.
12154
12155 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
12156
12157         PR target/36710
12158         * config/i386/i386.md (mode): Add TF to "mode" attribute.
12159         (*pushtf_sse): New insn pattern.
12160         (pushtf splitters): New splitters.
12161
12162 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
12163
12164         PR middle-end/35736
12165         * predict.c (build_predict_expr): Use void_type_node for the tree
12166         type, instead of NULL_TREE.
12167
12168 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
12169
12170         * config/i386/i386.c (contains_aligned_value_p): Return true
12171         for TCmode.
12172         (ix86_data_alignment): Align TCmode to 128bits.
12173         (ix86_local_alignment): Likewise.
12174
12175 2008-07-03  Andrew Haley  <aph@redhat.com>
12176
12177         PR bootstrap/33304
12178         * vec.h (VEC_TA): New.
12179         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
12180         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
12181         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
12182         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
12183         (C_COMMON_FIXED_TYPES): Remove first arg.
12184         (C_COMMON_FIXED_MODE_TYPES): Likewise.
12185         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
12186         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
12187         not to use empty macro arguments.
12188
12189 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
12190
12191         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
12192         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
12193         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
12194         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
12195         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
12196         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
12197         config/ia64/crtn.asm, config/m68hc11/larith.asm,
12198         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
12199         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
12200         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
12201         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
12202         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
12203         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
12204         config/rs6000/e500crtres64gpr.asm,
12205         config/rs6000/e500crtres64gprctr.asm,
12206         config/rs6000/e500crtrest32gpr.asm,
12207         config/rs6000/e500crtrest64gpr.asm,
12208         config/rs6000/e500crtresx32gpr.asm,
12209         config/rs6000/e500crtresx64gpr.asm,
12210         config/rs6000/e500crtsav32gpr.asm,
12211         config/rs6000/e500crtsav64gpr.asm,
12212         config/rs6000/e500crtsav64gprctr.asm,
12213         config/rs6000/e500crtsavg32gpr.asm,
12214         config/rs6000/e500crtsavg64gpr.asm,
12215         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
12216         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
12217         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
12218         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
12219         config/sparc/sol2-cn.asm: Remove .file directives.
12220
12221 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
12222
12223         * resource.c (mark_referenced_resources): Look inside
12224         UNSPEC_VOLATILEs and ASM_INPUTs.
12225
12226 2008-07-02  Ian Lance Taylor  <iant@google.com>
12227
12228         * rtlanal.c (add_reg_note): New function.
12229         * rtl.h (add_reg_note): Declare.
12230         * auto-inc-dec.c (attempt_change): Use add_reg_note.
12231         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
12232         * builtins.c (expand_builtin_longjmp): Likewise.
12233         (expand_builtin_nonlocal_goto): Likewise.
12234         * calls.c (emit_call_1, expand_call): Likewise.
12235         * cfgexpand.c (add_reg_br_prob_note): Likewise.
12236         * cfglayout.c (fixup_reorder_chain): Likewise.
12237         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
12238         (commit_one_edge_insertion): Likewise.
12239         * combine.c (move_deaths, distribute_notes): Likewise.
12240         * df-problems.c (df_set_note): Likewise.
12241         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
12242         (set_unique_reg_note): Likewise.
12243         (emit_copy_of_insn_after): Likewise.
12244         * expr.c (expand_expr_real): Likewise.
12245         * gcse.c (add_label_notes): Likewise.
12246         * haifa-sched.c (create_check_block_twin): Likewise.
12247         * jump.c (mark_jump_label_1): Likewise.
12248         * loop-doloop.c (add_test, doloop_modify): Likewise.
12249         * loop-unswitch.c (compare_and_jump_seq): Likewise.
12250         * lower-subreg.c (move_eh_region_note): Likewise.
12251         * optabs.c (emit_libcall_block): Likewise.
12252         * predict.c (predict_insn): Likewise.
12253         (combine_predictions_for_insn): Likewise.
12254         * recog.c (peephole2_optimize): Likewise.
12255         * regmove.c (try_auto_increment): Likewise.
12256         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
12257         * reload.c (find_reloads): Likewise.
12258         * reload1.c (fixup_eh_region_note): Likewise.
12259         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
12260         * reorg.c (delete_prior_computation): Likewise.
12261         (delete_computation, dbr_schedule): Likewise.
12262         * config/pa/pa.c (legitimize_pic_address): Likewise.
12263         * config/sh/sh.c (sh_reorg): Likewise.
12264
12265 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12266
12267         PR target/36669
12268         * config/libgcc-glibc.ver: Add %exclude.
12269         * config/m32r/libgcc-glibc.ver: Likwise.
12270         * config/s390/libgcc-glibc.ver: Likwise.
12271         * config/sh/libgcc-glibc.ver: Likwise.
12272         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
12273
12274         * config/i386/libgcc-glibc.ver: New.
12275
12276         * config/i386/libgcc-x86_64-glibc.ver: Removed.
12277
12278 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12279
12280         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
12281         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
12282         i[34567]86-*-linux*, x86_64-*-linux*.  Add
12283         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
12284         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
12285         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
12286         i[34567]86-*-linux*, x86_64-*-linux*.
12287
12288         * libgcc-std.ver: Add empty GCC_4.4.0.
12289
12290         * mkmap-symver.awk: Support multiple versions per symbol.
12291
12292         * config/i386/i386.c (ix86_init_builtins): Always define
12293         __builtin_fabsq and __builtin_copysignq with fallbacks.
12294         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
12295         and __builtin_copysignq if SSE2 isn't available.
12296
12297         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
12298         (LIBGCC2_TF_CEXT): Likwise.
12299         (TF_SIZE): Likwise.
12300
12301         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
12302
12303         * config/i386/sfp-machine.h: Moved to libgcc.
12304
12305         * config/i386/sfp-machine.h: New.
12306         * config/i386/t-linux: Likwise.
12307
12308         * config/i386/t-darwin: Remove softfp_wrap_start and
12309         softfp_wrap_end.
12310         * config/i386/t-darwin64: Likewise.
12311
12312         * config/i386/t-fprules-softfp64: Renamed to ...
12313         * config/i386/t-fprules-softfp: This.
12314
12315         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
12316         and softfp_wrap_end.
12317
12318 2008-07-02  Jason Merrill  <jason@redhat.com>
12319
12320         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
12321
12322         * tree.c (ctor_to_list): New fn.
12323         * tree.h: Declare it.
12324         (CONSTRUCTOR_ELT): New macro.
12325         (CONSTRUCTOR_NELTS): New macro.
12326
12327 2008-07-02  Richard Guenther  <rguenther@suse.de>
12328
12329         * tree-ssa-structalias.c (struct variable_info): Reorder
12330         to fill padding on 64bit hosts.  Make collapsed_to an int.
12331         (get_varinfo_fc): Deal with that.
12332         (new_var_info): Likewise.
12333         (collapse_rest_of_var): Likewise.
12334
12335 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
12336
12337         * doc/install.texi (--enable-java-home): Document.
12338         (--enable-aot-compile-rpm): Likewise.
12339         (--with-arch-directory): Likewise.
12340         (--with-os-directory): Likewise.
12341         (--with-origin-name): Likewise.
12342         (--with-arch-suffix): Likewise.
12343         (--with-jvm-root-dir): Likewise.
12344         (--with-jvm-jar-dir): Likewise.
12345         (--with-python-dir): Likewise.
12346
12347 2008-07-02  Richard Guenther  <rguenther@suse.de>
12348
12349         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
12350         from decls explicitly.  Merge operand checking from tuples.
12351
12352 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12353
12354         * tree-switch-conversion.c: Included timevar.h which I forgot before.
12355
12356 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12357
12358         * tree-switch-conversion.c: Included timevar.h
12359         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
12360
12361         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
12362
12363 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12364
12365         * tree-switch-conversion.c: Corrected various comments and
12366         whitespace issues
12367         (build_constructors): Fixed minor formatting mistakes.
12368
12369         * invoke.texi (Optimize Options): Corrected the
12370         switch-conversion-max-branch-ratio parameter.
12371
12372 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
12373
12374         * final.c (asm_insn_count): Return zero for an empty asm body.
12375
12376 2008-07-02  Richard Guenther  <rguenther@suse.de>
12377
12378         * bitmap.h (bitmap_set_bit): Return bool.
12379         (bitmap_clear_bit): Likewise.
12380         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
12381         write to the bitmap if it would.
12382         (bitmap_clear_bit): Likewise.
12383         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
12384         bitmap_set_bit return value.
12385         (add_pred_graph_edge): Likewise.
12386         (add_graph_edge): Likewise.
12387         (do_sd_constraint): Likewise.
12388         (do_ds_constraint): Likewise.
12389
12390 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12391
12392         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
12393         Fix -Wc++-compat and/or -Wcast-qual warnings.
12394         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
12395         gen_regparm_prefix): Likewise.
12396         * vmsdbgout.c (write_modbeg, lookup_filename,
12397         vmsdbgout_source_line, vmsdbgout_init): Likewise.
12398
12399 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
12400
12401         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
12402         defaults.h definition apply.
12403
12404 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12405
12406         * function.c (assign_parm_remove_parallels): New.
12407         (assign_parm_setup_block_p): Do not return true for non-BLKmode
12408         PARALLELs.
12409         (assign_parm_setup_block): Do not handle them.
12410         (assign_parm_setup_reg, assign_parm_setup_stack): Call
12411         assign_parm_remove_parallels.
12412
12413 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12414
12415         * c-typeck.c (convert_for_assignment): Use
12416         vector_targets_convertible_p.
12417         * c-common.c (vector_targets_convertible_p): New.
12418         * c-common.h (vector_targets_convertible_p): New prototype.
12419         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
12420         opaque_p_V2SI_type_node.
12421
12422 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
12423
12424         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
12425         RFmode constants.
12426
12427 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
12428
12429         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
12430         TFmode constants via two element DImode vector for hosts with
12431         HOST_BITS_PER_WIDE_INT < 64.
12432         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
12433         also for HOST_BITS_PER_WIDE_INT < 64.
12434
12435 2008-07-01  Richard Guenther  <rguenther@suse.de>
12436
12437         PR tree-optimization/36666
12438         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
12439         (get_constraint_exp_from_ssa_var): Split into ...
12440         (get_constraint_exp_for_temp): ... this ...
12441         (get_constraint_for_ssa_var): ... and that.
12442         Return constraint expressions for all touched sub-fields
12443         if the results address is not taken.
12444         (process_constraint): Remove assertion that aggregate
12445         assignments do not happen at this place.
12446         (get_constraint_for_component_ref): Add address_p argument.
12447         Return constraint expressions for all touched sub-fields
12448         if the results address is not taken.
12449         (do_deref): Use get_constraint_exp_for_temp.
12450         (get_constraint_for_1): Rename from ...
12451         (get_constraint_for): ... this.  Add the old function as wrapper.
12452         (do_structure_copy): Use get_constraint_for_1.
12453
12454 2008-07-01  Martin Jambor  <mjambor@suse.cz>
12455
12456         * Makefile.in (tree-switch-conversion.o): Add.
12457         (OBJS-common): Add tree-swtch-conversion.o.
12458         * passes.c (init_optimization_passes): Add pass_convert_switch.
12459         * tree-pass.h: (pass_convert_switch): Add.
12460         * tree-switch-conversion.c: New file.
12461         * gcc.dg/tree-ssa/cswtch.c: New testcase.
12462         * common.opt (ftree-cswtch): New option.
12463         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
12464         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
12465         * opts.c (decode_options): Set flag_tree_switch_conversion when
12466         optimization level is >= 2.
12467         * doc/invoke.texi (Optimize Options): Added description of
12468         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
12469
12470 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12471
12472         * config/darwin-driver.c (darwin_default_min_version): Fix
12473         -Wc++-compat warnings.
12474
12475 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
12476
12477         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
12478         of operand 0.
12479
12480 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
12481
12482         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
12483
12484 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
12485
12486         PR rtl-optimization/34744
12487         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
12488         (df_scan_free_internal): Free data structures not
12489         allocated in storage pools.
12490         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
12491         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
12492         df_scan_free_mws_vec.
12493         * dse.c (dse_step6): Free offset_map_p and offset_map_n
12494         unconditionally.
12495
12496 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
12497
12498         * config/i386/i386.c (contains_aligned_value_p): Return true
12499         for __float128.
12500         (ix86_function_arg_boundary): Return its natural boundary
12501         for __float128.
12502         (return_in_memory_32): Don't check TDmode.
12503         (ix86_split_to_parts): Support splitting into 4 parts and
12504         support TFmode for 32bit target.
12505         (ix86_split_long_move): Support splitting into 4 parts.
12506         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
12507         for SSE2.
12508         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
12509         (ix86_init_builtins): Here.
12510         (ix86_scalar_mode_supported_p): Always return true for TFmode.
12511         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
12512         'q' and 'w', respectively.
12513
12514         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
12515         TARGET_64BIT.
12516         (movtf_internal): Likewise.
12517         (<code>tf2): Likewise.
12518         (*absnegtf2_sse): Likewise.
12519         (copysign<mode>3): Likewise.
12520         (copysign<mode>3_const): Likewise.
12521         (copysign<mode>3_var): Likewise.
12522         (define_split UNSPEC_COPYSIGN): Likewise.
12523         * config/i386/sse.md (*nandtf3): Likewise.
12524         (<code>tf3): Likewise.
12525         (*<code>tf3): Likewise.
12526
12527 2008-06-30  Joey Ye  <joey.ye@intel.com>
12528             H.J. Lu  <hongjiu.lu@intel.com>
12529
12530         * global.c (compute_regsets): Set frame_pointer_needed here.
12531         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
12532
12533 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12534
12535         * doc/install.texi (specific): Expand Windows build notes.
12536
12537 2008-06-30  Ira Rosen  <irar@il.ibm.com>
12538
12539         PR tree-optimization/36648
12540         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
12541         number of prolog iterations by step. Fix the comment.
12542
12543 2008-06-30  Richard Guenther  <rguenther@suse.de>
12544
12545         PR middle-end/36671
12546         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
12547         handle calls from ECF_MALLOC functions.
12548         (handle_pure_call): ECF_MALLOC functions do not return
12549         call-used memory.
12550         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
12551
12552 2008-06-29  Andreas Schwab  <schwab@suse.de>
12553
12554         * config/m68k/m68k.c (print_operand): Always print a float
12555         constant in hex.
12556         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
12557         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
12558         Remove macros.
12559
12560         * config/rs6000/x-linux64: Remove never used file.
12561
12562 2008-06-29  Richard Guenther  <rguenther@suse.de>
12563
12564         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
12565         prototype.
12566         (struct alias_info): Move ...
12567         * tree-ssa-alias.c: ... here.
12568         (update_alias_info): Declare.
12569         (compute_may_aliases): Call it.
12570         (update_alias_info): New function.
12571         * tree-ssa-structalias.c (update_alias_info): Move ...
12572         * tree-ssa-alias.c (update_alias_info_1): ... here.
12573         * tree-ssa-structalias.c (process_constraint_1): Remove
12574         unused from_call argument.  Rename to ...
12575         (process_constraint): ... this.  Delete old wrapper.
12576         (make_constraint_to): Adjust callers.
12577         (handle_const_call): Likewise.
12578         (handle_pure_call): Likewise.
12579         (init_base_vars): Likewise.
12580         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
12581         (find_func_aliases): We don't need structure copies for
12582         complex types.
12583         (make_constraint_from_anything): Remove.
12584         (create_variable_info_for): For globals make constraints
12585         from escaped, not from anything.
12586         (compute_points_to_sets): Do not call update_alias_info.
12587         (ipa_pta_execute): Use make_constraint_from.
12588
12589 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12590
12591         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
12592         (bitmap.o-warn, dominance.o-warn): New.
12593         * configure.ac (cxx_compat_warn): Delete.
12594         (loose_warn): Add -Wcast-qual and -Wc++-compat.
12595         * system.h: Remove #pragma diagnostic for -Wcast-qual and
12596         -Wc++-compat.
12597         * configure: Regenerate.
12598
12599         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
12600         warnings.
12601
12602 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12603
12604         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
12605         * df-scan.c (df_notes_rescan): Likewise.
12606         * ggc-page.c (set_page_table_entry): Likewise.
12607         * intl.c (gcc_gettext_width): Likewise.
12608         * varasm.c (get_unnamed_section, get_noswitch_section,
12609         get_section): Likewise.
12610
12611 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
12612
12613         * regrename.c (build_def_use): Don't copy RTX.
12614
12615 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
12616
12617         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
12618         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
12619         punctuation.  Use @ref instead of @xref.
12620         (Function Names): Remove stray @display/@end display.
12621         (C++ Attributes): Use @ref instead of @xref.
12622         (Deprecated Features): Fix punctuation around @xref.
12623         (Backwards Compatibility): Likewise.
12624         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
12625
12626 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
12627
12628         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
12629         constants for E500 double.
12630
12631 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12632
12633         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
12634         element type of const_vector.
12635
12636 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
12637
12638         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
12639         Remove FLAGS_REG clobber from expander pattern.
12640         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
12641         (anddi3, andsi3, andhi3, andqi3): Ditto.
12642         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
12643         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
12644         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
12645         (ashlsi3, ashlhi3, ashlqi3): Ditto.
12646         (ashrsi3, ashrhi3, ashrqi3): Ditto.
12647         (lshrsi3, lshrhi3, lshrqi3): Ditto.
12648         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
12649         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
12650
12651 2008-06-28  Richard Guenther  <rguenther@suse.de>
12652
12653         * tree-ssa-structalias.c (callused_id, var_callused,
12654         callused_tree): Add.
12655         (handle_pure_call): New function.
12656         (find_func_aliases): Call it.
12657         (find_what_p_points_to): Handle the call-used set.
12658         (clobber_what_escaped): Likewise.
12659         (compute_call_used_vars): New function.
12660         (init_base_vars): Init the call-used variable.
12661         (do_sd_constraint): Do not propagate the solution from CALLUSED
12662         but use CALLUSED as a placeholder.
12663         (solve_graph): Likewise.
12664         * tree-flow-inline.h (gimple_call_used_vars): New function.
12665         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
12666         (compute_call_used_vars): Declare.
12667         * tree-ssa-alias.c (set_initial_properties): Call
12668         compute_call_used_vars.
12669         (reset_alias_info): Clear call-used variables.
12670         (add_call_clobber_ops): Assert we are not called for const/pure
12671         functions.  Remove handling of them.
12672         (add_call_read_ops): Handle pure functions by adding the
12673         call-used set of variables as VUSEs.
12674         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
12675         (delete_tree_ssa): Free it.
12676         * tree-dfa.c (remove_referenced_var): Clear the var from the
12677         call-used bitmap.
12678
12679 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
12680
12681         * tree.c (build_varargs_function_type_list): New.
12682         (build_function_type_list_1): New.
12683         (build_function_type_list): Use build_function_type_list_1.
12684         * tree.h (build_varargs_function_type_list): New.
12685
12686 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12687
12688         PR target/34856
12689         * config/spu/spu.c (spu_builtin_splats): Do not generate
12690         invalid CONST_VECTOR expressions.
12691         (spu_expand_vector_init): Likewise.
12692
12693 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
12694
12695         * optabs.c (libfunc_decls): New variable.
12696         (libfunc_decl_hash, libfunc_decl_eq): New functions.
12697         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
12698         for the same function twice.
12699
12700 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
12701
12702         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
12703         ix86_expand_binary_operator directly.
12704         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
12705         for operand 2.
12706         (*ashrti3_1): Ditto.
12707         (*lshrti3_1): Ditto.
12708         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
12709         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
12710         using only one splitter.  Conditionaly execute splitter before or
12711         after peephole2 pass.
12712         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
12713         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
12714         Use only one alternative in asm template.
12715         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
12716         in asm template.
12717         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
12718         "J" operand constraint for operand 2.
12719         (*ashldi3_cconly_rex64): Ditto.
12720         (*ashrdi3_cmp_rex64): Ditto.
12721         (*ashrdi3_cconly_rex64): Ditto.
12722         (*lshrdi3_cmp_rex64): Ditto.
12723         (*lshrdi3_cconly_rex64): Ditto.
12724         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
12725         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
12726         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
12727         gen_x86_shrd_1.
12728
12729 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
12730
12731         * gimplify.c (omp_is_private): Don't return true if decl is not
12732         already private on #pragma omp for or #pragma omp parallel for.
12733
12734         PR debug/36617
12735         * tree-cfg.c (struct move_stmt_d): Replace block field with
12736         orig_block and new_block fields.
12737         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
12738         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
12739         (move_block_to_fn): Replace vars_map and new_label_map arguments
12740         with struct move_stmt_d pointer.
12741         (replace_block_vars_by_duplicates): New function.
12742         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
12743         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
12744         all subblocks of ORIG_BLOCK to the new function.  Call
12745         replace_block_vars_by_duplicates.
12746         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
12747         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
12748         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
12749         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
12750         (expand_omp): Temporarily set input_location to the location of
12751         region's controlling stmt.
12752         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
12753         BIND_EXPR, push ctx->block_vars and gimplification vars into
12754         the BIND_EXPR and its block's BLOCK_VARS instead of directly
12755         into dest function.
12756         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
12757         there are any BLOCK_VARS.
12758         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
12759         OMP_PARALLEL or OMP_TASK stmt.
12760         (lower_omp): Save and restore input_location around the lower_omp_1
12761         call.
12762
12763 2008-06-27  Richard Guenther  <rguenther@suse.de>
12764
12765         PR tree-optimization/36400
12766         PR tree-optimization/36373
12767         PR tree-optimization/36344
12768         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
12769         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
12770         (update_alias_info): Remove call clobbering code.
12771         (make_constraint_to): New helper function.
12772         (make_escape_constraint): Likewise.
12773         (handle_rhs_call): Use it on all pointer containing arguments.
12774         Also mark the static chain escaped.
12775         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
12776         instead of ANYTHING.
12777         (make_constraint_from): New helper split out from ...
12778         (make_constraint_from_anything): ... here.
12779         (find_func_aliases): Add constraints for escape sites.
12780         (intra_create_variable_infos): Make constraints from NONLOCAL
12781         for parameters.
12782         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
12783         as ANYTHING.
12784         (clobber_what_p_points_to): Remove.
12785         (clobber_what_escaped): New function.
12786         (init_base_vars): Init NONLOCAL and ESCAPED.
12787         (do_sd_constraint): Do not propagate the solution from ESCAPED
12788         but use ESCAPED as a placeholder.
12789         (solve_graph): Likewise.
12790         * tree-flow.h (clobber_what_p_points_to): Remove.
12791         (clobber_what_escaped): Declare.
12792         * tree-ssa-alias.c (set_initial_properties): Call it.
12793         Remove code clobbering escaped pointers.
12794
12795 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
12796
12797         * function.c (allocate_struct_function): Only allocate a unique
12798         funcdef_no if the decl is nonzero.
12799
12800 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
12801
12802         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
12803         * config/mips/mips.c (mips_split_const_insns): New function.
12804         * config/mips/mips.md (move_type): New attribute.
12805         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
12806         (dword_mode): New attribute.
12807         (type): Avoid long line.  Map "move_type"s to "type"s,
12808         choosing "multi" for doubleword moves if appropriate.
12809         Swap MTC/MFC comments to match their declaration order.
12810         (extended_mips16): Default to "yes" if "move_type" is "sll0",
12811         "type" is "branch" or "jal" is "direct".
12812         (length): Handle "extended_mips16" first.  Make the default
12813         "0" for "ghost" instructions.  Set the length from "move_type".
12814         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
12815         of "type", with "sll0" for the register alternative.  Remove the
12816         "extended_mips16" attribute.
12817         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
12818         of "type", with "shift_shift" for the register alternative.
12819         Remove the "length" attribute.
12820         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
12821         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
12822         of "type", with "andi" for the register alternative.
12823         (*zero_extendqihi2): Likewise.
12824         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
12825         of "andi" instead of a "type" of "arith".
12826         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
12827         instead of "type".
12828         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
12829         (mov_<store>r, *mov<mode>_ra): Likewise.
12830         (extendsidi2): Use "move_type" instead of "type", with "move"
12831         for the register alternative.
12832         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
12833         of "type", with "signext" for the register alternative.
12834         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
12835         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
12836         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
12837         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
12838         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
12839         (unnamed branch insn): Likewise.
12840         (*movdi_gp32_fp64): Fold into...
12841         (*movdi_32bit): ...here.
12842         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
12843         (*movdf_hardfloat): ...this new pattern.
12844         (*movdf_softfloat): Remove redundant FPR alternatives.
12845         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
12846         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
12847         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
12848         the "move" attribute.
12849         (*movdi_32bit): Use "move_type" instead of "type" and remove the
12850         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
12851         and "store" for COP loads and stores.
12852         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
12853         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
12854         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
12855         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
12856         (*movtf_mips16, *movv2sf): Likewise.
12857         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
12858         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
12859         (mfhc1<mode>): Use "move_type" instead of "move".
12860         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
12861         (loadgp_blockage): Remove the "length" attribute.
12862         (blockage, set_got_version, update_got_version): Likewise.
12863         (call_internal): Remove the "extended_mips16" attribute.
12864         (call_value_internal, call_value_multiple_internal): Likewise.
12865         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
12866         instead of "move".
12867         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
12868         the "length" attribute.
12869
12870 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12871
12872         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
12873         -Wcast-qual warnings.
12874         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
12875         handle_pragma_pop_macro): Likewise.
12876         * collect2.c (resolve_lib_name): Likewise.
12877         * config/arc/arc.c (arc_init): Likewise.
12878         * config/arm/arm.c (neon_builtin_compare,
12879         locate_neon_builtin_icode): Likewise.
12880         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
12881         * config/bfin/bfin.c (bfin_init_machine_status,
12882         bfin_optimize_loop): Likewise.
12883         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
12884         * config/cris/cris.c (cris_init_expanders): Likewise.
12885         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
12886         * config/darwin.c (machopic_indirection_eq,
12887         machopic_indirection_name, machopic_output_indirection): Likewise.
12888         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
12889         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
12890         frv_optimize_membar): Likewise.
12891         * config/i386/cygwin.h (mingw_scan,
12892         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
12893         * config/i386/cygwin1.c (mingw_scan): Likewise.
12894         * config/i386/i386.c (machopic_output_stub): Likewise.
12895         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
12896         i386_pe_unique_section): Likewise.
12897         * config/ia64/ia64.c (ia64_init_machine_status,
12898         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
12899         Likewise.
12900         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
12901         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
12902         * config/m68k/m68k.c (m68k_handle_option,
12903         m68k_sched_md_init_global): Likewise.
12904         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
12905         mcore_unique_section): Likewise.
12906         * config/mips/mips.c (mips_block_move_straight,
12907         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
12908         Likewise.
12909         * config/mmix/mmix.c (mmix_init_machine_status,
12910         mmix_encode_section_info): Likewise.
12911         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
12912         * config/rs6000/rs6000.c (rs6000_init_machine_status,
12913         print_operand_address, output_toc, redefine_groups,
12914         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
12915         * config/s390/s390.c (s390_init_machine_status): Likewise.
12916         * config/score/score.c (score_block_move_straight,
12917         score_block_move_loop_body): Likewise.
12918         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
12919         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
12920         * emit-rtl.c (find_auto_inc): Likewise.
12921         * gcc.c (translate_options, process_command): Likewise.
12922         * reorg.c (dbr_schedule): Likewise.
12923         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
12924         * xcoffout.c (xcoffout_declare_function): Likewise.
12925
12926 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
12927
12928         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
12929         ipa-pta working again.
12930
12931 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
12932
12933         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
12934         genautomata.
12935
12936 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
12937
12938         * config.gcc (powerpc*-*-*): Add new core e500mc.
12939         * config/rs6000/e500mc.md: New file.
12940         * config/rs6000/rs6000.c (processor_costs): Add new costs for
12941         e500mc.
12942         (rs6000_override_options): Add e500mc case to
12943         processor_target_table. Altivec and Spe options not allowed
12944         with e500mc. Add isel instruction to e500mc by
12945         default. Initialize rs6000_cost for e500mc.
12946         (rs6000_issue_rate): Set issue rate for e500mc.
12947         * config/rs6000/rs6000.h (processor_type): Add
12948         PROCESSOR_PPCE500MC.
12949         (ASM_CPU_SPEC): Add e500mc.
12950         Set TARGET_ISEL to rs6000_isel.
12951         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
12952         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
12953         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
12954         Include e500mc.md.
12955         * doc/invoke.texi: Add e500mc to list of cpus.
12956
12957 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
12958
12959         PR c/34867
12960         * c-lex.c (lex_charconst): Initialize unsignedp.
12961
12962 2008-06-27  Olivier Hainque  <hainque@adacore.com>
12963
12964         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
12965         documented assumptions.
12966
12967 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
12968
12969         * dwarf2out.c: Remove trailing white spaces.  Break long line
12970         in comments.
12971
12972 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
12973
12974         * libfuncs.h (LTI_synchronize): New libfunc_index.
12975         (synchronize_libfunc): Declare.
12976         * builtins.c (expand_builtin_synchronize): Consider using
12977         synchronize_libfunc before falling back on an asm blockage.
12978         * config/mips/mips.c: Include libfuncs.h
12979         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
12980
12981 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
12982
12983         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
12984         parameter.  Copy stack_reg to r11 where appropriate.
12985         (no_global_regs_above): Add gpr parameter.
12986         (rs6000_stack_info): Only add padding for SPE save area if we
12987         are saving SPE GPRs and CR.
12988         (saveres_routine_syms): New variable.
12989         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
12990         Define.
12991         (rs6000_savres_routine_sym): New function.
12992         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
12993         split out of...
12994         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
12995         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
12996         Tweak FPR out-of-line saving.
12997         (rs6000_make_savres_rtx): New function.
12998         (rs6000_use_multiple_p): New function.
12999         (rs6000_savres_strategy): New function.
13000         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
13001         out-of-line if appropriate.
13002         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
13003         if we are optimizing for size.
13004         (GP_SAVE_INLINE): Define.
13005         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
13006         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
13007         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
13008         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
13009         (*save_fpregs_<mode>): Add use of r11.
13010         (*restore_gpregs_<mode>): New insn.
13011         (*return_and_restore_gpregs_<mode>): New insn.
13012         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
13013         use r11.
13014         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
13015         (*restore_gpregs_spe): New insn.
13016         (*return_and_restore_gpregs_spe): New insn.
13017         * config/rs6000/predicates.md (save_world_operation): Fix check.
13018
13019 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13020
13021         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
13022         this point, so assert that.
13023
13024 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13025
13026         * cfganal.c: Include vec.h and vecprim.h.
13027         (compute_idf): Import from...
13028         * tree-into-ssa (compute_idf): ...here.
13029         * basic-block.h (compute_idf): Export.
13030
13031 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
13032
13033         * c-decl.c (merge_decls): Use !current_function_decl to check for
13034         extern declaration of C99 inline function being at file scope.
13035
13036 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
13037
13038         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
13039
13040 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13041
13042         * alias.c (record_alias_subset, init_alias_analysis): Fix
13043         -Wc++-compat and/or -Wcast-qual warnings.
13044         * attribs.c (lookup_attribute_spec): Likewise.
13045         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
13046         copy_bb, connect_traces,
13047         find_rarely_executed_basic_blocks_and_cr): Likewise.
13048         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
13049         note_btr_set, migrate_btr_defs): Likewise.
13050         * builtins.c (result_vector, expand_builtin_memcpy,
13051         expand_builtin_mempcpy_args, expand_builtin_strncpy,
13052         builtin_memset_read_str, expand_builtin_printf,
13053         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
13054         Likewise.
13055         * caller-save.c (mark_set_regs): Likewise.
13056         * calls.c (expand_call, emit_library_call_value_1): Likewise.
13057         * cgraph.c (cgraph_edge): Likewise.
13058         * combine.c (likely_spilled_retval_1): Likewise.
13059         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
13060         htab_counts_entry_del, get_coverage_counts): Likewise.
13061         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
13062         new_cselib_val): Likewise.
13063         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
13064         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
13065         Likewise.
13066         * df-core.c (df_compact_blocks): Likewise.
13067         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
13068         * df-scan.c (df_grow_reg_info, df_ref_create,
13069         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
13070         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
13071         df_record_entry_block_defs, df_record_exit_block_uses,
13072         df_bb_verify): Likewise.
13073         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
13074         DF_REF_EXTRACT_MODE_CONST): New.
13075         * dominance.c (get_immediate_dominator, get_dominated_by,
13076         nearest_common_dominator, root_of_dom_tree,
13077         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
13078         -Wc++-compat and/or -Wcast-qual warnings.
13079         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
13080         record_store, replace_read, check_mem_read_rtx, scan_insn,
13081         dse_step1, dse_record_singleton_alias_set): Likewise.
13082         * dwarf2asm.c (dw2_force_const_mem): Likewise.
13083
13084 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13085
13086         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
13087         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
13088         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
13089         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
13090         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
13091         add_ranges_num, add_ranges_by_labels, file_info_cmp,
13092         file_name_acquire, output_file_names, add_const_value_attribute,
13093         premark_used_types_helper, file_table_eq, file_table_hash,
13094         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
13095         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
13096         -Wcast-qual warnings.
13097         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
13098         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
13099         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
13100         gen_reg_rtx, start_sequence, init_emit): Likewise.
13101         * et-forest.c (et_new_occ, et_new_tree): Likewise.
13102         * except.c (init_eh_for_function, gen_eh_region,
13103         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
13104         arh_to_landing_pad, arh_to_label, add_action_record,
13105         add_call_site, switch_to_exception_section): Likewise.
13106         * expmed.c (synth_mult): Likewise.
13107         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
13108         store_expr): Likewise.
13109         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
13110         Likewise.
13111         * function.c (assign_stack_temp_for_type,
13112         allocate_struct_function, match_asm_constraints_1): Likewise.
13113         * gcov-io.c (gcov_allocate): Likewise.
13114         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
13115         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
13116         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
13117         record_one_set, insert_expr_in_table, insert_set_in_table,
13118         dump_hash_table, compute_hash_table_work, alloc_hash_table,
13119         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
13120         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
13121         -Wcast-qual warnings.
13122
13123 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13124
13125         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
13126         -Wcast-qual warnings.
13127         * gcc.c (process_command): Likewise.
13128         * genattrtab.c (oballoc): Use XOBNEW.
13129         (oballocvec): Define.
13130         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
13131         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
13132         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
13133         -Wc++-compat and/or -Wcast-qual warnings.
13134         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
13135         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
13136         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
13137         gen_presence_absence_set, gen_automaton, gen_regexp_el,
13138         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
13139         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
13140         add_excls, process_presence_absence_names,
13141         process_presence_absence_patterns, add_presence_absence,
13142         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
13143         get_free_state, add_arc, get_free_automata_list_el,
13144         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
13145         transform_3, cache_presence, create_ainsns, create_automata,
13146         create_state_ainsn_table, dfa_insn_code_enlarge,
13147         output_trans_func, output_min_issue_delay_func,
13148         output_dead_lock_func, output_reset_func,
13149         output_get_cpu_unit_code_func, output_dfa_start_func,
13150         expand_automata): Likewise.
13151         * genextract.c (gen_insn): Likewise.
13152         * gengtype-lex.l: Likewise.
13153         * gengtype.c (read_input_list, adjust_field_type,
13154         process_gc_options): Likewise.
13155         * genoutput.c (note_constraint): Likewise.
13156         * genpreds.c (mangle, add_constraint): Likewise.
13157         * genrecog.c (process_define_predicate, new_decision,
13158         add_to_sequence): Likewise.
13159         * gensupport.c (record_insn_name): Likewise.
13160
13161 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13162
13163         * config/i386/driver-i386.c (detect_caches_amd,
13164         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
13165         and/or -Wcast-qual warnings.
13166         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
13167         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
13168         gt_pch_save): Likewise.
13169         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
13170         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
13171         * global.c (compute_regsets): Likewise.
13172         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
13173         finish_graph_dump_file): Likewise.
13174         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
13175         unlink_bb_notes): Likewise.
13176         * integrate.c (get_hard_reg_initial_val): Likewise.
13177         * ipa-prop.c (ipa_push_func_to_list): Likewise.
13178         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
13179         * local-alloc.c (update_equiv_regs): Likewise.
13180         * loop-invariant.c (check_invariant_table_size,
13181         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
13182         Likewise.
13183         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
13184         altered_reg_used, mark_altered): Likewise.
13185         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
13186         insert_var_expansion_initialization,
13187         combine_var_copies_in_loop_exit, apply_opt_in_copies,
13188         release_var_copies): Likewise.
13189         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
13190         analyze_matrix_decl, add_allocation_site, analyze_transpose,
13191         analyze_accesses_for_phi_node, check_var_notmodified_p,
13192         check_allocation_function, find_sites_in_func,
13193         record_all_accesses_in_func, transform_access_sites,
13194         transform_allocation_sites): Likewise.
13195         * omp-low.c (new_omp_region, create_omp_child_function_name,
13196         check_omp_nesting_restrictions, check_combined_parallel,
13197         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
13198         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
13199         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
13200         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
13201         Likewise.
13202         * opts-common.c (prune_options): Likewise.
13203         * opts.c (add_input_filename, print_filtered_help,
13204         get_option_state): Likewise.
13205         * params.c (add_params): Likewise.
13206         * passes.c (set_pass_for_id, next_pass_1,
13207         do_per_function_toporder, pass_fini_dump_file): Likewise.
13208         * postreload.c (reload_cse_simplify_operands): Likewise.
13209         * predict.c (tree_predicted_by_p, tree_predict_edge,
13210         clear_bb_predictions, combine_predictions_for_bb): Likewise.
13211
13212 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13213
13214         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
13215         warnings.
13216         * recog.c (check_asm_operands, validate_change_1): Likewise.
13217         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
13218         subst_asm_stack_regs): Likewise.
13219         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
13220         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
13221         * regmove.c (reg_is_remote_constant_p): Likewise.
13222         * regrename.c (regrename_optimize, scan_rtx_reg,
13223         kill_clobbered_value, kill_set_value, kill_autoinc_value):
13224         Likewise.
13225         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
13226         regstat_compute_calls_crossed): Likewise.
13227         * reload1.c (init_reload, new_insn_chain,
13228         has_nonexceptional_receiver, reload, copy_reloads,
13229         calculate_needs_all_insns, init_elim_table): Likewise.
13230         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
13231         * rtl.c (shallow_copy_rtx_stat): Likewise.
13232         * rtlanal.c (parms_set): Likewise.
13233         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
13234         sbitmap_resize, sbitmap_vector_alloc): Likewise.
13235         * sched-ebb.c (earliest_block_with_similiar_load,
13236         add_deps_for_risky_insns): Likewise.
13237         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
13238         schedule_region): Likewise.
13239         * see.c (eq_descriptor_pre_extension,
13240         hash_descriptor_pre_extension, hash_del_pre_extension,
13241         eq_descriptor_properties, hash_descriptor_properties,
13242         hash_del_properties, see_seek_pre_extension_expr,
13243         see_initialize_data_structures, see_print_register_properties,
13244         see_print_pre_extension_expr, see_delete_merged_def_extension,
13245         see_delete_unmerged_def_extension, see_emit_use_extension,
13246         see_pre_delete_extension, see_map_extension, see_commit_changes,
13247         see_analyze_merged_def_local_prop,
13248         see_analyze_merged_def_local_prop,
13249         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
13250         see_set_prop_merged_def, see_set_prop_unmerged_def,
13251         see_set_prop_unmerged_use, see_print_one_extension,
13252         see_merge_one_use_extension, see_merge_one_def_extension,
13253         see_store_reference_and_extension, see_update_uses_relevancy,
13254         see_update_defs_relevancy): Likewise.
13255         * statistics.c (hash_statistics_hash, hash_statistics_eq,
13256         hash_statistics_free, curr_statistics_hash): Likewise.
13257         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
13258         expand_asm_operands, expand_return, case_bit_test_cmp,
13259         expand_case): Likewise.
13260         * stor-layout.c (start_record_layout): Likewise.
13261         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
13262         gt_pch_save_stringpool): Likewise.
13263         * tree-data-ref.c (hash_stmt_vertex_info,
13264         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
13265         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
13266
13267 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
13268
13269         PR target/36627
13270         * config/i386/i386.md : Change constraints of HImode and QImode
13271         immediate operands from "i" to "n".  Change SImode "ni" constraint to
13272         "i" and SImode "rmi" constraint to "g".  Remove all constraints
13273         from const0_operand and const1_operand predicated operands.
13274         (i): Change QImode and HImode attribute from "i" to "n".
13275         (*subqi_2): Change HImode operands to QImode.
13276         (*subqi_3): Ditto.
13277
13278 2008-06-25  Olivier Hainque  <hainque@adacore.com>
13279
13280         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
13281         sed substitutions.
13282
13283 2008-06-25  Richard Guenther  <rguenther@suse.de>
13284
13285         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
13286         not overflow the result type.
13287
13288 2008-06-25  Richard Guenther  <rguenther@suse.de>
13289
13290         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
13291         (vn_lookup): Likewise.
13292
13293 2008-06-25  Richard Guenther  <rguenther@suse.de>
13294
13295         PR tree-optimization/35518
13296         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
13297         * tree-sra.c (instantiate_element): Use fold_build3 to build
13298         BIT_FIELD_REFs.
13299         (try_instantiate_multiple_fields): Likewise.
13300
13301 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13302
13303         * config/rs6000/rs6000.md: Change all string instruction's clobber to
13304         be early clobbers.
13305
13306 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13307
13308         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
13309         use_backchain_to_restore_sp to true
13310         if the offset of the link register save area would go over the 32k - 1
13311         offset limit of the load
13312         instructions.
13313
13314 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
13315
13316         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
13317         anchor for the type-punning blurb.  Cross-reference "Structures
13318         unions enumerations and bit-fields implementation".  Provide a
13319         cast-through-pointer example.  Make final sentence self-contained.
13320         * doc/implement-c.texi (Structures unions enumerations and
13321         bit-fields implementation): Cross-reference the type-punning blurb
13322         in the -fstrict-aliasing documentation.
13323
13324 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13325
13326         PR middle-end/36594
13327         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
13328         the memory instead of the memory itself for the save area.
13329
13330 2008-06-24  Olivier Hainque  <hainque@adacore.com>
13331             Nicolas Roche  <roche@adacore.com>
13332
13333         * gengtype.c (srcdir_len): size_t instead of int.
13334         (get_file_realbasename): New function.  For F a filename, the real
13335         basename of F, with all the path components stripped.
13336         (get_file_srcdir_relative_path): New function.  For F a filename, the
13337         relative path to F from $(srcdir).
13338         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
13339         get_file_realbasename.  Adjust the head comment.
13340         (get_prefix_langdir_index): New function. For F a filename, return the
13341         lang_dir_names[] relative index of the language directory that is
13342         a prefix in F.
13343         (get_file_langdir): For F a filename, return the name of the language
13344         directory where F is located.
13345         (get_file_gtfilename): New function. The gt- output file name for an
13346         input filename F.
13347         (get_output_file_with_visibility): Replace in-line computations with
13348         uses of get_file_gtfilename and get_prefix_langdir_index.
13349         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
13350
13351 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
13352
13353         PR tree-optimization/36504
13354         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
13355         references without base address.
13356
13357 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13358
13359         PR middle-end/36584
13360         * calls.c (expand_call): Increase alignment for recursive functions.
13361
13362 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
13363
13364         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
13365         (TARGET_FUNCTION_VALUE): New define.
13366         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
13367         * config/avr/avr.h (FUNCTION_VALUE): Remove.
13368
13369 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13370
13371         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
13372         (fmod<mode>3): Ditto.
13373         (remainderxf3): Ditto.
13374         (remainder<mode>3): Ditto.
13375
13376 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
13377
13378         PR target/36533
13379         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
13380         REG is a hard register.
13381
13382         PR tree-optimization/36508
13383         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
13384         499, don't check it at all in release compilers.
13385
13386 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13387
13388         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
13389         together with SSE_TARGET_MATH to disable insn pattern.
13390         (*fop_<MODEF:mode>_2_i387): Ditto.
13391         (*fop_<MODEF:mode>_3_i387): Ditto.
13392
13393 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
13394
13395         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
13396
13397 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
13398
13399         PR middle-end/34906
13400         * gimplify.c (gimplify_asm_expr): Check the return code of
13401         parse_output_constraint call, set function return and is_inout
13402         value if it failed.
13403
13404 2008-06-22  Ian Lance Taylor  <iant@google.com>
13405
13406         * c-lex.c (narrowest_unsigned_type): Change itk to int.
13407         (narrowest_signed_type): Likewise.
13408         * c-typeck.c (c_common_type): Change local variable mclass to enum
13409         mode_class, twice.
13410         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
13411         tcc_comparison, not the tree code itself.
13412         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
13413         (c_expand_expr): Cast modifier to enum expand_modifier.
13414         * c-common.h (C_RID_CODE): Add casts.
13415         (C_SET_RID_CODE): Define.
13416         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
13417         (c_lex_one_token): Add cast to avoid warning.
13418         (c_parser_objc_type_name): Rename local typename to type_name.
13419         (check_no_duplicate_clause): Change code parameter to enum
13420         omp_clause_code.
13421         (c_parser_omp_var_list_parens): Change kind parameter to enum
13422         omp_clause_code.
13423         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
13424         c_parser_omp_list_var_parens.
13425         (c_parser_omp_threadprivate): Likewise.
13426         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
13427         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
13428         * c-format.c (NO_FMT): Define.
13429         (printf_length_specs): Use NO_FMT.
13430         (asm_fprintf_length_specs): Likewise.
13431         (gcc_diag_length_specs): Likewise.
13432         (scanf_length_specs): Likewise.
13433         (strfmon_length_specs): Likewise.
13434         (gcc_gfc_length_specs): Likewise.
13435         (printf_flag_specs): Change 0 to STD_C89.
13436         (asm_fprintf_flag_specs): Likewise.
13437         (gcc_diag_flag_specs): Likewise.
13438         (gcc_cxxdiag_flag_specs): Likewise.
13439         (scanf_flag_specs): Likewise.
13440         (strftime_flag_specs): Likewise.
13441         (strfmon_flag_specs): Likewise.
13442         (print_char_table): Likewise.
13443         (asm_fprintf_char_table): Likewise.
13444         (gcc_diag_char_table): Likewise.
13445         (gcc_tdiag_char_table): Likewise.
13446         (gcc_cdiag_char_table): Likewise.
13447         (gcc_cxxdiag_char_table): Likewise.
13448         (gcc_gfc_char_table): Likewise.
13449         (scan_char_table): Likewise.
13450         (time_char_table): Likewis.
13451         (monetary_char_table): Likewise.
13452         * c-format.h (BADLEN): Likewise.
13453
13454 2008-06-21  Ian Lance Taylor  <iant@google.com>
13455
13456         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
13457         Define END_OF_BASE_TREE_CODES around inclusion.
13458         * tree.c (tree_code_type): New global array.
13459         (tree_code_length, tree_code_name): Likewise.
13460         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
13461         $(lang_tree_files).
13462         (all-tree.def, s-alltree): New targets.
13463         (gencheck.h, s-gencheck): Remove.
13464         (tree.o): Depend upon all-tree.def.
13465         (build/gencheck.o): Remove gencheck.h dependency.
13466         (mostlyclean): Don't remove gencheck.h.
13467         * c-common.h (enum c_tree_code): Remove.
13468         * c-lang.c (tree_code_type): Remove.
13469         (tree_code_length, tree_code_name): Remove.
13470         * gencheck.c (tree_codes): Include all-tree.def, rather than
13471         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
13472         after it is used.
13473         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
13474         than tree.def.
13475         * cp/cp-tree.h (enum cplus_tree_code): Remove.
13476         (operator_name_info): Size to MAX_TREE_CODES.
13477         (assignment_operator_name_info): Likewise.
13478         * cp/cp-lang.c (tree_code_type): Remove.
13479         (tree_code_length, tree_code_name): Remove.
13480         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
13481         (assignment_operator_name_info): Likewise.
13482         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
13483         MAX_TREE_CODES.
13484         * cp/mangle.c (write_expression): Likewise.
13485         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
13486         * fortran/f95-lang.c (tree_code_type): Remove.
13487         (tree_code_length, tree_code_name): Remove.
13488         * java/java-tree.h (enum java_tree_code): Remove.
13489         * java/lang.c (tree_code_type): Remove.
13490         (tree_code_length, tree_code_name): Remove.
13491         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
13492         * objc/objc-act.h (enum objc_tree_code): Remove.
13493         * objc/objc-lang.c (tree_code_type): Remove.
13494         (tree_code_length, tree_code_name): Remove.
13495         * objcp/objcp-lang.c (tree_code_type): Remove.
13496         (tree_code_length, tree_code_name): Remove.
13497         * ada/ada-tree.h (enum gnat_tree_code): Remove.
13498         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
13499         * ada/misc.c (tree_code_type): Remove.
13500         (tree_code_length, tree_code_name): Remove.
13501
13502 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
13503
13504         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
13505         the grand_bitmap_obstack.
13506
13507 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13508
13509         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
13510         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
13511         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
13512         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
13513         move_stmt_r, new_label_mapper): Likewise.
13514         * tree-complex.c (cvc_lookup): Likewise.
13515         * tree-dfa.c (create_function_ann): Likewise.
13516         * tree-dump.c (dump_register): Likewise.
13517         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
13518         find_phi_replacement_condition): Likewise.
13519         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
13520         tree_function_versioning): Likewise.
13521         * tree-into-ssa.c (cmp_dfsnum): Likewise.
13522         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
13523         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
13524         get_nonlocal_debug_decl, convert_nonlocal_reference,
13525         convert_nonlocal_omp_clauses, get_local_debug_decl,
13526         convert_local_reference, convert_local_omp_clauses,
13527         convert_nl_goto_reference, convert_nl_goto_receiver,
13528         convert_tramp_reference, convert_call_expr): Likewise.
13529         * tree-outof-ssa.c (contains_tree_r): Likewise.
13530         * tree-parloops.c (reduction_phi, initialize_reductions,
13531         eliminate_local_variables_1, add_field_for_reduction,
13532         add_field_for_name, create_phi_for_local_result,
13533         create_call_for_reduction_1, create_loads_for_reductions,
13534         create_stores_for_reduction, create_loads_and_stores_for_name):
13535         Likewise.
13536         * tree-phinodes.c (allocate_phi_node): Likewise.
13537         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
13538         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
13539         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
13540         * tree-ssa-coalesce.c (compare_pairs): Likewise.
13541         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
13542         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
13543         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
13544         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
13545         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
13546         vn_nary_op_insert): Likewise.
13547         * tree-ssa.c (redirect_edge_var_map_add,
13548         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
13549         * tree-vectorizer.c (vectorize_loops): Likewise.
13550         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
13551         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
13552         tree_cons_stat, build1_stat, build_variant_type_copy,
13553         decl_init_priority_lookup, decl_fini_priority_lookup,
13554         decl_priority_info, decl_restrict_base_lookup,
13555         decl_restrict_base_insert, decl_debug_expr_lookup,
13556         decl_debug_expr_insert, decl_value_expr_lookup,
13557         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
13558         type_hash_add, get_file_function_name, tree_check_failed,
13559         tree_not_check_failed, tree_range_check_failed,
13560         omp_clause_range_check_failed, build_omp_clause,
13561         build_vl_exp_stat): Likewise.
13562         * value-prof.c (gimple_histogram_value,
13563         gimple_duplicate_stmt_histograms): Likewise.
13564         * var-tracking.c (attrs_list_insert, attrs_list_copy,
13565         unshare_variable, variable_union_info_cmp_pos, variable_union,
13566         dataflow_set_different_1, dataflow_set_different_2,
13567         vt_find_locations, variable_was_changed, set_variable_part,
13568         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
13569         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
13570         section_entry_hash, object_block_entry_eq,
13571         object_block_entry_hash, create_block_symbol,
13572         initialize_cold_section_name, default_function_rodata_section,
13573         strip_reg_name, set_user_assembler_name, const_desc_eq,
13574         build_constant_desc, output_constant_def, lookup_constant_def,
13575         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
13576         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
13577         default_internal_label): Likewise.
13578         * varray.c (varray_init, varray_grow): Likewise.
13579         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
13580
13581 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
13582
13583         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
13584         operators for "test" insn.  Macroize insn using SWI mode macro.
13585         (*jcc_fused_2): Ditto.
13586         (*jcc_fused_3): Macroize insn using SWI mode macro.
13587         (*jcc_fused_4): Ditto.
13588
13589 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
13590
13591         * tree-ssa-pre.c: Fix typo in comment.
13592         (init_antic, fini_antic): Add explicit funtions for
13593         initializing and deinitializing ANTIC and AVAIL sets.
13594         (create_expression_by_pieces): Fix typo in comment.
13595         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
13596         (execute_pre): Eventually dump details about ANTIC_IN.
13597
13598 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13599
13600         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
13601         * gcc.c (translate_options, init_spec, store_arg, read_specs,
13602         add_to_obstack, file_at_path, find_a_file, execute,
13603         add_preprocessor_option, add_assembler_option, add_linker_option,
13604         process_command, insert_wrapper, do_option_spec, do_self_spec,
13605         spec_path, do_spec_1, is_directory, main, used_arg,
13606         getenv_spec_function): Likewise.
13607         * tlink.c (symbol_hash_lookup, file_hash_lookup,
13608         demangled_hash_lookup, symbol_push, file_push, frob_extension):
13609         Likewise.
13610
13611 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
13612
13613         * doc/rtl.texi: Updated subreg section.
13614
13615 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
13616
13617         PR c++/36523
13618         * cgraphunit.c (cgraph_process_new_functions): Don't clear
13619         node->needed and node->reachable.
13620         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
13621         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
13622         (expand_task_call): Don't call expand_task_copyfn.
13623         (expand_task_copyfn): Renamed to...
13624         (finalize_task_copyfn): ... this.
13625
13626 2008-06-19  Jan Hubicka  <jh@suse.cz>
13627
13628         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
13629         clobbering framepointer.
13630
13631 2008-06-19  Jan Hubicka  <jh@suse.cz>
13632
13633         * tree-optimize.c (execute_early_local_optimizations): Set
13634         cgraph_state only at first invocation.
13635
13636 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13637
13638         * system.h (-Wc++-compat): Activate as a warning, no an error.
13639
13640 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13641
13642         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
13643         instead of "#" in insn asm template.
13644         (*jcc_fused_2): Ditto.
13645
13646 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13647
13648         * config/i386/i386.h (ix86_tune_indices)
13649         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
13650         (TARGET_FUSE_CMP_AND_BRANCH): New define.
13651         * config/i386/i386.md (*jcc_fused_1): New insn pattern
13652         (*jcc_fused_2): Ditto.
13653         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
13654         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
13655         (print operand): Handle 'E' and 'e' code.
13656
13657 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
13658
13659         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
13660         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13661         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13662
13663 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
13664
13665         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
13666         node->decl.
13667         (cgraph_expand_function): Use local copy of decl.
13668         (cgraph_expand_all_functions): Remove redundant initialization of
13669         order_pos.
13670         (cgraph_optimize): Reword internal_error message.
13671
13672 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
13673
13674         * arm-protos.h (arm_return_in_memory): Remove public
13675         arm_return_in_memory() prototype.
13676         * arm.c (arm_return_in_memory): Add static prototype, add target
13677         hook macro, change definition and comments.
13678         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
13679
13680 2008-06-19  Ben Elliston  <bje@au.ibm.com>
13681
13682         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
13683         real.c: Remove references to IEEE 754R.
13684         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
13685         * doc/libgcc.texi (Decimal float library routines): Likewise.
13686
13687 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13688
13689         * targhooks.h (struct gcc_target): New member unwind_word_mode.
13690         (default_unwind_word_mode): Add prototype.
13691         * targhooks.c (default_unwind_word_mode): New function.
13692         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
13693         instead of word_mode.
13694         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
13695         (TARGET_INITIALIZER): Use it.
13696
13697         * c-common.c (handle_mode_attribute): Support "unwind_word"
13698         mode attribute.
13699         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
13700
13701         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
13702         word_mode to access SjLj_Function_Context member "data".
13703         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
13704         conversion from targetm.eh_return_filter_mode () to
13705         targetm.unwind_word_mode () if they differ.
13706
13707         * builtin-types.def (BT_UNWINDWORD): New primitive type.
13708         (BT_FN_UNWINDWORD_PTR): New function type.
13709         (BT_FN_WORD_PTR): Remove.
13710         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
13711         * except.c (expand_builtin_extend_pointer): Convert pointer to
13712         targetm.unwind_word_mode () instead of word_mode.
13713
13714         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
13715         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
13716         (spu_unwind_word_mode): New function.
13717         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
13718         (TARGET_UNWIND_WORD_MODE): Define.
13719         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
13720
13721 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13722
13723         * config/spu/spu.c (reg_align): Remove.
13724         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
13725         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
13726         (spu_split_store): Likewise.
13727
13728 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
13729
13730         * gcc/tree-vn.c: Fix typo in comment.
13731
13732 2008-06-18  Jan Hubicka  <jh@suse.cz>
13733
13734         * cgraphunit.c (cgraph_optimize): Output debug info when doing
13735         toplevel reorder too.
13736
13737 2008-06-18  Jan Hubicka  <jh@suse.cz>
13738
13739         * c-opts.c (c_common_post_options): PCH is not compatible with
13740         no-unit-at-a-time.
13741         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
13742         -fno-toplevel-reorder by default now.
13743
13744 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13745
13746         PR documentation/30739
13747         * doc/install.texi (Prerequisites): Document dependency on awk.
13748
13749 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
13750             Ian Lance Taylor  <iant@google.com>
13751
13752         PR rtl-optimization/35604
13753         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
13754         only want to change jump destinations, not eventual label comparisons.
13755
13756 2008-06-16  Jan Hubicka  <jh@suse.cz>
13757
13758         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
13759         syntax errors.
13760         (cgraph_analyze_function): Likewise.
13761
13762 2008-06-16  Jan Hubicka  <jh@suse.cz>
13763
13764         * cgraph.h (cgraph_mark_if_needed): New function.
13765         * cgraphunit.c (cgraph_mark_if_needed): New function.
13766         * c-decl.c (duplicate_decl): Use it.
13767
13768 2008-06-16  Jan Hubicka  <jh@suse.cz>
13769
13770         * cgraph.c (cgraph_add_new_function): When in expansion state, do
13771         lowering.
13772
13773 2008-06-16  Jan Hubicka  <jh@suse.cz>
13774
13775         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
13776
13777 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
13778             Kazu Hirata  <kazu@codesourcery.com>
13779             Maxim Kuvyrkov  <maxim@codesourcery.com
13780
13781         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
13782         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
13783         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
13784         EXTRA_SPEC_FUNCTIONS.
13785         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
13786         (DRIVER_SELF_SPECS): Adjust.
13787         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
13788         * config/mips/st.h, config/mips/t-st: New.
13789         * config/mips/driver-native.c, config/mips/x-native: New.
13790         * doc/invoke.texi (MIPS): Document 'native' value for -march and
13791         -mtune options.
13792
13793 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13794
13795         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
13796         from it.
13797         (ISA_HAS_FP_CONDMOVE): New macro.
13798         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
13799         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
13800         (ISA_HAS_NMADD3_NMSUB3): New macro.
13801         * config/mips/mips.c (mips_rtx_costs): Update.
13802         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
13803         compiling for ST Loongson 2E/2F.
13804         (madd<mode>): Rename to madd4<mode>.  Update.
13805         (madd3<mode>): New pattern.
13806         (msub<mode>): Rename to msub4<mode>.  Update.
13807         (msub3<mode>): New pattern.
13808         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
13809         (nmadd3<mode>): New pattern.
13810         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
13811         (nmadd3<mode>_fastmath): New pattern.
13812         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
13813         (nmsub3<mode>): New pattern.
13814         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
13815         (nmsub3<mode>_fastmath): New pattern.
13816         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
13817
13818 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
13819
13820         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
13821         (DF_REF_INSN_INFO): New.
13822         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
13823         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
13824         with a NULL DF_REF_INSN_INFO.
13825         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
13826         DF_INSN_SET.
13827         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
13828         DF_INSN_INFO_EQ_USES): New.
13829         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
13830         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
13831         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
13832         * df-core.c: Update comment for above changes.
13833         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
13834         DF_INSN_UID_* macros.
13835         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
13836         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
13837         insn rtx.  Update all callers.
13838         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
13839         df_ref_create_structure, df_insn_refs_collect): Likewise.
13840         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
13841         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
13842         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
13843         macros to access the insn refs.
13844         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
13845         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
13846         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
13847         for accessing the refs.
13848         (try_fwprop_subst): Likewise.
13849         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
13850         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
13851         for accessing the refs.
13852         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
13853         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
13854         to look at the insn refs.
13855         (record_uses): Likewise.
13856         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
13857         function anymore.
13858         (mark_artificial_uses): Don't mark_insn for artificial refs.
13859         (mark_reg_rependencies): Likewise.
13860
13861         * doc/rtl.texi: Remove documentation of ADDRESSOF.
13862
13863 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13864
13865         * configure: Regenerate.
13866
13867 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13868
13869         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
13870         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13871         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13872
13873 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13874
13875         * config/avr/avr.c (avr_mcu_t): Add attiny167.
13876         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13877         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13878
13879 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13880
13881         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
13882         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13883         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13884
13885 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
13886
13887         * tree-ssa-sccvn.c: Fix format of comments.
13888
13889 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
13890
13891         * cgraph.c: Remove unneeded forward declarations of eq_node()
13892         and hash_node().
13893
13894 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
13895
13896         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
13897         REG_RETVAL notes.
13898         (see_update_relevancy): Likewise.
13899         * fwprop.c (try_fwprop_subst): Likewise.
13900         * rtlanal.c (noop_move_p): Likewise.
13901         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
13902         notes to non-existing libcall blocks.
13903         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
13904         Remove orig_set.
13905         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
13906         (dead_libcall_p): Remove.
13907         (delete_trivially_dead_insns): Don't use it.
13908         * web.c (union_defs): Remove comment about keeping nops.
13909         * gcse.c (hash_scan_insn): Don't take libcall pointers.
13910         (compute_hash_table_work): Don't track libcall notes.
13911         (do_local_cprop): Don't take libcall pointers.  Don't update
13912         libcall notes.
13913         (adjust_libcall_notes): Deleted.
13914         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
13915         ever have existed in the first place).
13916         (replace_store_insn): Don't try to remove libcall notes.
13917         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
13918         (resolve_reg_notes): Don't call them.
13919         (resolve_simple_move): Likewise.
13920         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
13921         Don't remove REG_RETVAL notes.
13922         * emit-rtl.c (try_split): Don't update libcall notes.
13923         (emit_copy_of_insn_after): Dito.
13924         * cselib.c (cselib_current_insn_in_libcall): Remove.
13925         (cselib_process_insn): Don't set/clear it.
13926         (new_elt_loc_list): Don't record it.
13927         (cselib_init): Don't initialize it.
13928         * cselib.c (struct elt_loc_list): Remove in_libcall field.
13929         * loop-invariant.c (find_invariant_insn): Don't look for libcall
13930         notes.
13931         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
13932         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
13933         (init_deps): Don't initialize it.
13934         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
13935         * combine.c (delete_noop_moves): Don't update libcall notes.
13936         (can_combine_p): Remove now pointless #if 0 block.
13937         (try_combine): Remove another obsolete #if 0 block.
13938         (distribute_notes): Don't distribute libcall notes.
13939         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
13940         * dce.c (libcall_dead_p): Remove.
13941         (delete_unmarked_insns): Don't handle libcall blocks.
13942         (preserve_libcall_for_dce): Remove.
13943         (prescan_insns_for_dce): Don't special-case libcall block insns.
13944         * reload1 (reload): Don't handle libcall notes.
13945         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
13946         documentation.
13947
13948 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
13949
13950         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
13951         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13952         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13953
13954 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
13955
13956         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
13957         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13958         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13959
13960 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13961
13962         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
13963
13964 2008-06-16  Ira Rosen  <irar@il.ibm.com>
13965
13966         PR tree-optimization/36493
13967         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
13968         the arguments list. Use VECTYPE to create vector pointer.
13969         (vectorizable_store): Fail if accesses through a pointer to vectype
13970         do not alias the original memory reference operands.
13971         Call vect_create_data_ref_ptr without the removed argument.
13972         (vectorizable_load): Likewise.
13973         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
13974         removed argument.
13975
13976 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
13977
13978         PR target/36336
13979         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
13980         reg_equiv_constant.
13981
13982 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13983
13984         * config/mips/loongson2ef.md: New file.
13985         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
13986         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
13987         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
13988         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
13989         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
13990         and loongson_2f.
13991         (loongson2ef.md): New include.
13992         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
13993         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
13994         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
13995         (loongson_gt_<mode>, loongson_extract_halfword)
13996         (loongson_insert_halfword_0, loongson_insert_halfword_2)
13997         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
13998         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
13999         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
14000         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
14001         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
14002         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
14003         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
14004         (vec_interleave_low<mode>): Define type attribute.
14005         * config/mips/mips.c (mips_ls2): New static variable.
14006         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
14007         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
14008         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
14009         Implement target scheduling hooks.
14010         (mips_multipass_dfa_lookahead): Update to handle tuning for
14011         Loongson 2E/2F.
14012         (mips_sched_init): Initialize data for Loongson scheduling.
14013         (mips_ls2_variable_issue): New static function.
14014         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
14015         Add sanity check.
14016         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
14017         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
14018         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
14019         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
14020         Handle ST Loongson 2E/2F cores.
14021         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
14022
14023 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14024
14025         * omp-low.c (extract_omp_for_data): Fix comment typo.
14026         * c.opt: Fix typo.
14027
14028 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14029
14030         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
14031         FIXME note about gcc/config.guess.
14032         * doc/options.texi (Option file format): Remove non-ASCII bytes.
14033         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
14034         * doc/cppopts.texi: Likewise.
14035         * doc/extend.texi: Likewise.
14036         * doc/gcc.texi: Likewise.
14037         * doc/gccint.texi: Likewise.
14038         * doc/gcov.texi: Likewise.
14039         * doc/gty.texi: Likewise.
14040         * doc/hostconfig.texi: Likewise.
14041         * doc/install.texi: Likewise.
14042         * doc/invoke.texi: Likewise.
14043         * doc/loop.texi: Likewise.
14044         * doc/makefile.texi: Likewise.
14045         * doc/md.texi: Likewise.
14046         * doc/passes.texi: Likewise.
14047         * doc/tm.texi: Likewise.
14048         * doc/tree-ssa.texi: Likewise.
14049         * doc/trouble.texi: Likewise.
14050
14051 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
14052             Nathan Sidwell  <nathan@codesourcery.com>
14053             Maxim Kuvyrkov  <maxim@codesourcery.com>
14054             Richard Sandiford  <rdsandiford@googlemail.com>
14055
14056         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
14057         * config/mips/mips-protos.h (mips_expand_vector_init): New.
14058         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
14059         builtins.
14060         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
14061         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
14062         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
14063         V8QImode cases.
14064         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
14065         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
14066         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
14067         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
14068         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
14069         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
14070         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
14071         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
14072         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
14073         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
14074         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
14075         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
14076         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
14077         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
14078         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
14079         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
14080         (mips_builtins): Add Loongson builtins.
14081         (mips_loongson_2ef_bdesc): New.
14082         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
14083         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
14084         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
14085         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
14086         New.
14087         (mips_expand_vector_init): New.
14088         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
14089         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
14090         if appropriate.
14091         * config/mips/mips.md: Add unspec numbers for Loongson
14092         builtins.  Include loongson.md.
14093         (MOVE64): Include Loongson vector modes.
14094         (SPLITF): Include Loongson vector modes.
14095         (HALFMODE): Handle Loongson vector modes.
14096         * config/mips/loongson.md: New.
14097         * config/mips/loongson.h: New.
14098         * config.gcc: Add loongson.h header for mips*-*-* targets.
14099         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
14100
14101 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
14102
14103         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
14104         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
14105         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
14106         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
14107         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
14108         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
14109         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
14110         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
14111         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
14112         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
14113         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
14114         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
14115         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
14116         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
14117         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
14118         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
14119         Remove use_fixproto=yes.
14120         (ia64*-*-hpux*): Remove comment about using fixproto.
14121         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
14122
14123 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14124
14125         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
14126         library rebuilds.
14127         * configure: Regenerate.
14128
14129 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
14130
14131         PR middle-end/36520
14132         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
14133         before evaluating it.
14134
14135 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
14136
14137         PR c/36507
14138         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
14139         nested inline functions.
14140         (start_decl, start_function): Don't invert DECL_EXTERNAL
14141         for nested inline functions.
14142
14143 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14144
14145         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
14146         splits that must be made for correctness.
14147
14148 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14149
14150         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
14151         (AVAIL_NON_MIPS16): Likewise.
14152         (mips_builtin_description): Replace target_flags with a predicate.
14153         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
14154         (dspr2_32): New availability predicates.
14155         (MIPS_BUILTIN): New macro.
14156         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
14157         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
14158         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
14159         Replace the TARGET_FLAGS parameters with AVAIL parameters.
14160         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
14161         (mips_dsp_32only_bdesc): Merge into...
14162         (mips_builtins): ...this new array.
14163         (mips_bdesc_map, mips_bdesc_arrays): Delete.
14164         (mips_init_builtins): Update after above changes.
14165         (mips_expand_builtin_1): Merge into...
14166         (mips_expand_builtin): ...here and update after above changes.
14167
14168 2008-06-12  Paul Brook  <paul@codesourcery.com>
14169
14170         * longlong.h (__arm__): Define count_leading_zeros.
14171         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
14172         (clzsi2, clzdi2): New functions.
14173         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
14174         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
14175         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
14176         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
14177         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
14178         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
14179         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
14180         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
14181         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
14182         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
14183
14184 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
14185
14186         * config/m68k/m68k.c (m68k_tune_flags): New.
14187         (override_options): Compute m68k_tune_flags.
14188         (MULL_COST, MULW_COST): Update for various variants of CFV2.
14189         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
14190
14191 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14192
14193         PR middle-end/36506
14194         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
14195
14196 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14197
14198         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
14199         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
14200
14201 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14202
14203         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
14204         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
14205
14206 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14207
14208         PR middle-end/36506
14209         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
14210         reductions.
14211
14212 2008-06-12  Richard Guenther  <rguenther@suse.de>
14213
14214         PR tree-optimization/36345
14215         * tree-flow.h (struct ptr_info_def): Align escape_mask,
14216         add memory_tag_needed flag.
14217         (may_alias_p): Declare.
14218         * tree-ssa-alias.c (may_alias_p): Export.
14219         (set_initial_properties): Use memory_tag_needed flag.
14220         (update_reference_counts): Likewise.
14221         (reset_alias_info): Reset memory_tag_needed flag.
14222         (create_name_tags): Check memory_tag_needed flag.
14223         (dump_points_to_info_for): Dump it.
14224         * tree-ssa-structalias.c (struct variable_info): Remove
14225         directly_dereferenced flag.
14226         (new_var_info): Do not initialize it.
14227         (process_constraint_1): Do not set it.
14228         (update_alias_info): Set is_dereferenced flag.
14229         (set_uids_in_ptset): Use may_alias_p.
14230         (set_used_smts): Check memory_tag_needed flag.
14231         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
14232         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
14233         memory_tag_needed flag.
14234         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
14235         from broken design.
14236
14237 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
14238
14239         * config/i386/i386.c (ix86_compute_frame_layout): Disable
14240         red zone for w64 abi.
14241         (ix86_expand_prologue): Likewise.
14242         (ix86_force_to_memory): Likewise.
14243         (ix86_free_from_memory): Likewise.
14244
14245 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
14246
14247         PR target/36425
14248         * config/rs6000/rs6000.c (rs6000_override_options): Set
14249         rs6000_isel conditionally to the absence of comand line override.
14250         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
14251         Remove duplicate rs6000_isel setting.
14252         * config/rs6000/eabispe.h: Ditto.
14253
14254 2008-06-11  Richard Guenther  <rguenther@suse.de>
14255
14256         * alias.c (get_alias_set): Use the element alias-set for arrays.
14257         (record_component_aliases): For arrays and vectors do nothing.
14258         * c-common.c (strict_aliasing_warning): Handle the cases
14259         of alias set zero explicitly.
14260         * Makefile.in (dfp.o-warn): Add -Wno-error.
14261
14262 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14263
14264         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
14265         tune_32 tune_64.
14266         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
14267         tune_32 tune_64 to supported_defaults.  Allow values not
14268         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
14269         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
14270         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
14271         with_cpu_64 to generic for 64-bit-supporting configurations, not
14272         with_cpu.  Remove FIXMEs.
14273         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
14274         --with-arch-64, --with-tune-32, --with-tune-64): Document.
14275         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
14276         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
14277         arch_32 and arch_64.
14278
14279 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
14280             Olivier Hainque  <hainque@adacore.com>
14281
14282         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
14283         Use DECL_SIZE_UNIT to retrieve the size of the field.
14284
14285 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14286
14287         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
14288         with function calls after declarations.  Lay out
14289         neon_float_type_node before further use.
14290
14291 2008-06-11  Richard Guenther  <rguenther@suse.de>
14292
14293         * tree-flow.h (may_point_to_global_var): Declare.
14294         * tree-ssa-alias.c (may_point_to_global_var): New function.
14295         * tree-ssa-sink.c (is_hidden_global_store): Use it.
14296
14297 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
14298
14299         * configure.ac: Teach that fido supports .debug_line.
14300         * configure: Regenerate.
14301
14302 2008-06-10  Tom Tromey  <tromey@redhat.com>
14303
14304         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
14305         debug hook.
14306
14307 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14308
14309         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
14310         (encode_decimal64, decode_decimal64, encode_decimal128,
14311         decode_decimal128): Reverse order of 32-bit parts of value if host
14312         and target endianness differ.
14313
14314 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
14315
14316         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
14317         Avoid division by 0.
14318         (tree_mod_pow2_value_transform): Likewise.
14319         (tree_ic_transform): Likewise.
14320         (tree_stringops_transform): Likewise.
14321         (tree_mod_subtract_transform): Likewise.
14322         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
14323         (copy_edges_for_bb): Likewise.
14324         (initialize_cfun): Likewise.
14325
14326 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14327
14328         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
14329         nonmemory_operand. Add "N" operand constraint.
14330         (*btsi): Ditto.
14331         (*jcc_btdi_mask_rex64): New instruction and split pattern.
14332         (*jcc_btsi_mask): Ditto.
14333         (*jcc_btsi_mask_1): Ditto.
14334
14335 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14336
14337         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
14338         TYPE_CANONICAL for copied element type.
14339
14340 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14341
14342         PR target/36473
14343         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
14344         Add m_CORE2 and m_GENERIC.
14345         * config/i386/predicates.md (bt_comparison_operator): New predicate.
14346         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
14347         (*btsi): Ditto.
14348         (*jcc_btdi_rex64): New instruction and split pattern.
14349         (*jcc_btsi): Ditto.
14350         (*jcc_btsi_1): Ditto.
14351         (*btsq): Fix Intel asm dialect operand order.
14352         (*btrq): Ditto.
14353         (*btcq): Ditto.
14354
14355 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
14356
14357         PR middle-end/36447
14358         * simplify-rtx.c (simplify_subreg): Add check for shift count
14359         greater than size.
14360
14361 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
14362
14363         * doc/md.texi: Synchronize with later constraints.md change.
14364         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
14365         with a C implementation.
14366         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
14367         MFLO handling.
14368         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
14369         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
14370         when moving to and from MD_REGNUM.
14371         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
14372         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
14373         Handle byte and halfword moves.
14374         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
14375         separately.
14376         * config/mips/constraints.md (h): Turn into NO_REGS.
14377         (l, x): Update documentation.
14378         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
14379         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
14380         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
14381         (HILO): New mode iterator.
14382         (MOVE128): Add TI.
14383         (any_div): New code iterator.
14384         (u): Extend code attribute to div and udiv.
14385         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
14386         d_operand in the splitters.  Remove redundant CONST_INT checks.
14387         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
14388         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
14389         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
14390         accordingly, using normal moves instead of unspecs to move LO into
14391         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
14392         (<u>mulsidi3): Handle expansion in C code.
14393         (<u>mulsidi3_32bit_internal): Rename to...
14394         (<u>mulsidi3_32bit): ...this.
14395         (<u>mulsidi3_32bit_r4000): Fix insn separator.
14396         (*<u>mulsidi3_64bit): Rename to...
14397         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
14398         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
14399         to set LO and HI to the multiplication result.  Use a normal move
14400         for MFLO and an unspec for MFHI.
14401         (*<u>mulsidi3_64bit_parts): Replace with...
14402         (<u>mulsidi3_64bit_hilo): ...this new instruction.
14403         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
14404         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
14405         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
14406         instead of HI.  Split the instruction into a separate multiplication
14407         and MFHI if !TARGET_FIX_R4000.
14408         (<su>muldi3_highpart): Likewise.
14409         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
14410         and the "=h" clobber.
14411         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
14412         (<u>mulditi3): New expander.
14413         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
14414         (madsi): Remove "=h" clobber.
14415         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
14416         Force the modulus result to be a GPR and split the instruction into
14417         a division followed by an MFHI after reload.
14418         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
14419         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
14420         the MIPS16 HIGH define_split.
14421         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
14422         of acc<->gpr moves to "multi".
14423         (*movdi_64bit): Replace the single "x" alternative with
14424         alternatives for moving into and out of "a".
14425         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
14426         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
14427         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
14428         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
14429         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
14430         (movti): New expander.
14431         (*movti, *movti_mips16): New insns.
14432         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
14433         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
14434         (mthi<GPR:mode>_<HILO:mode>): Likewise.
14435         * config/mips/predicates.md (fpr_operand): Delete.
14436         (d_operand): New predicate.
14437
14438 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
14439
14440         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
14441         failure on some Bourne shells.
14442         (x86_64-*-*): Ditto.
14443
14444 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
14445
14446         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
14447
14448 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
14449
14450         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
14451         (sparc-sun-solaris2*): Likewise.
14452
14453 2008-06-09  Arnaud Charlet  <charlet@adacore.com
14454
14455         * doc/install.texi: Update requirements to build the Ada compiler.
14456
14457 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
14458
14459         * df-scan.c (struct df_scan_problem_data): Remove the
14460         mw_link_pool alloc pool.
14461         (df_scan_free_internal): Don't free it.
14462         (df_scan_alloc): Don't allocate it.
14463         * df.h (struct df_link): Update comment.
14464
14465 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
14466
14467         * except.h: Correct checks for when SJLJ exceptions must be used.
14468
14469 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14470
14471         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
14472         default.
14473
14474 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
14475
14476         PR tree-optimization/36218
14477         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
14478         configure for the build system.
14479         (BUILD_LDFLAGS): Define.
14480         * configure: Regenerate.
14481         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
14482
14483 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
14484
14485         PR target/36424
14486         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
14487         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
14488         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
14489
14490 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
14491
14492         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
14493
14494 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
14495
14496         * config.gcc (Obsolete configurations): Remove list of
14497         configurations.
14498         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
14499         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
14500         targets matched by those patterns.
14501         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
14502         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
14503         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
14504         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
14505         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
14506         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
14507         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
14508         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
14509         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
14510         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
14511         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
14512         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
14513         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
14514         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
14515         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
14516         Make code for Solaris 7 and greater unconditional for Solaris.
14517         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
14518         Remove --with-* handling.
14519         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
14520         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
14521         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
14522         LINK_OS_WINDISS_SPEC): Remove.
14523         * config/rs6000/sysv4.opt (mwindiss): Remove.
14524         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
14525         * configure: Regenerate.
14526         * doc/cpp.texi: Don't mention BeOS.
14527         * doc/extend.texi (interrupt): Don't mention MS1.
14528         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
14529         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
14530         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
14531         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
14532         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
14533         Remove.
14534         * doc/invoke.texi (MT Options): Remove.
14535         (-mwindiss): Remove.
14536         (CRIS Options): Remove cris-axis-aout references.
14537         (HPPA Options): Don't mention hppa1.1-*-pro.
14538         * doc/md.texi: (MorphoTech family): Remove.
14539         * libgcc2.c: Don't handle UWIN.
14540         * config/alpha/t-unicosmk: Remove.
14541         * config/alpha/unicosmk.h: Remove.
14542         * config/arm/kaos-arm.h: Remove.
14543         * config/arm/kaos-strongarm.h: Remove.
14544         * config/arm/strongarm-coff.h: Remove.
14545         * config/arm/strongarm-elf.h: Remove.
14546         * config/arm/strongarm-pe.h: Remove.
14547         * config/arm/t-strongarm-pe: Remove.
14548         * config/arm/t-xscale-coff: Remove.
14549         * config/arm/t-xscale-elf: Remove.
14550         * config/arm/xscale-coff.h: Remove.
14551         * config/arm/xscale-elf.h: Remove.
14552         * config/chorus.h: Remove.
14553         * config/cris/aout.h: Remove.
14554         * config/cris/aout.opt: Remove.
14555         * config/cris/t-aout: Remove.
14556         * config/i386/beos-elf.h: Remove.
14557         * config/i386/kaos-i386.h: Remove.
14558         * config/i386/ptx4-i.h: Remove.
14559         * config/i386/sco5.h: Remove.
14560         * config/i386/sco5.opt: Remove.
14561         * config/i386/sysv4-cpp.h: Remove.
14562         * config/i386/sysv5.h: Remove.
14563         * config/i386/t-beos: Remove.
14564         * config/i386/t-sco5: Remove.
14565         * config/i386/t-uwin: Remove.
14566         * config/i386/uwin.asm: Remove.
14567         * config/i386/uwin.h: Remove.
14568         * config/kaos.h: Remove.
14569         * config/mips/windiss.h: Remove.
14570         * config/mt: Remove directory.
14571         * config/pa/pa-osf.h: Remove.
14572         * config/pa/pa-pro-end.h: Remove.
14573         * config/pa/t-pro: Remove.
14574         * config/ptx4.h: Remove.
14575         * config/rs6000/beos.h: Remove.
14576         * config/rs6000/kaos-ppc.h: Remove.
14577         * config/rs6000/t-beos: Remove.
14578         * config/rs6000/windiss.h: Remove.
14579         * config/sh/kaos-sh.h: Remove.
14580         * config/sol2-6.h: Remove.
14581         * config/sparc/sol26-sld.h: Remove.
14582         * config/sparc/sysv4-only.h: Remove.
14583         * config/vax/bsd.h: Remove.
14584         * config/vax/t-memfuncs: Remove.
14585         * config/vax/ultrix.h: Remove.
14586         * config/vax/vaxv.h: Remove.
14587         * config/windiss.h: Remove.
14588
14589 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
14590
14591         PR rtl-optimization/36438
14592         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
14593         for vector shifts with constant scalar shift operands.
14594
14595 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
14596
14597         * doc/invoke.texi: Document -march=xlr.
14598         * config/mips/xlr.md: New file.
14599         * config/mips/mips.md: Include it.
14600         (cpu): Add "xlr".
14601         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
14602         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
14603         (mips_rtx_cost_data): Likewise.
14604
14605 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
14606
14607         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
14608         PRE_INC and PRE_DEC cases.
14609
14610 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14611
14612         PR rtl-optimization/36419
14613         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
14614         the emitting jump insn.
14615
14616         PR target/36362
14617         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
14618         is not bool, boolify the whole *expr_p and convert to the desired type.
14619
14620 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14621
14622         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
14623         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
14624         Add omp_private_outer_ref hook, add another argument to
14625         omp_clause_default_ctor hook.
14626         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
14627         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
14628         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
14629         hook_tree_tree_tree_tree_null.
14630         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
14631         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
14632         * hooks.c (hook_tree_tree_tree_tree_null): New function.
14633         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
14634         * tree.def (OMP_TASK): New tree code.
14635         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
14636         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
14637         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
14638         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
14639         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
14640         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
14641         OMP_CLAUSE_COLLAPSE_EXPR): Define.
14642         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
14643         (OMP_DIRECTIVE_P): Add OMP_TASK.
14644         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
14645         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
14646         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
14647         and OMP_CLAUSE_UNTIED entries.
14648         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
14649         num_ops to 2.
14650         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14651         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
14652         * tree-pretty-print.c (dump_omp_clause): Handle
14653         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
14654         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
14655         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
14656         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
14657         warning about unsigned iterators.  Change decl/init/cond/incr
14658         arguments to TREE_VECs, check arguments for all collapsed loops.
14659         (c_finish_omp_taskwait): New function.
14660         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
14661         ws_clauses.
14662         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
14663         default_function_array_conversion on init.  Add par_clauses argument.
14664         If decl is present in parallel's lastprivate clause, change it to
14665         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
14666         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
14667         collapse count in clauses.
14668         (c_parser_omp_for, c_parser_omp_parallel): Adjust
14669         c_parser_omp_for_loop callers.
14670         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
14671         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
14672         (c_parser_omp_clause_name): Handle collapse and untied clauses.
14673         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
14674         functions.
14675         (c_parser_omp_clause_schedule): Handle schedule(auto).
14676         Include correct location in the error message.
14677         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
14678         and PRAGMA_OMP_CLAUSE_UNTIED.
14679         (OMP_TASK_CLAUSE_MASK): Define.
14680         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
14681         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
14682         * tree-nested.c (convert_nonlocal_omp_clauses,
14683         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
14684         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
14685         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14686         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
14687         OMP_CLAUSE_DECL.
14688         (conver_nonlocal_reference, convert_local_reference,
14689         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
14690         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
14691         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
14692         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
14693         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
14694         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
14695         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
14696         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
14697         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
14698         OMP_CLAUSE_UNTIED.
14699         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
14700         * c-common.h (c_finish_omp_taskwait): New prototype.
14701         * gimple-low.c (lower_stmt): Handle OMP_TASK.
14702         * tree-parloops.c (create_parallel_loop): Create 1 entry
14703         vectors for OMP_FOR_{INIT,COND,INCR}.
14704         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
14705         (make_edges): Handle OMP_TASK.
14706         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
14707         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14708         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
14709         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
14710         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
14711         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
14712         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
14713         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
14714         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
14715         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
14716         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
14717         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
14718         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
14719         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
14720         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
14721         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
14722         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
14723         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
14724         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
14725         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
14726         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
14727         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
14728         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
14729         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
14730         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
14731         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
14732         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
14733         original iterator is present in lastprivate clause or if
14734         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
14735         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14736         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
14737         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
14738         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
14739         if it is set, lookup var in outer contexts too.  Handle
14740         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
14741         to be implicitly determined firstprivate for task regions.
14742         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
14743         if it is set, lookup var in outer contexts too.  Set
14744         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
14745         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
14746         OMP_CLAUSE_UNTIED.  Take region_type as last argument
14747         instead of in_parallel and in_combined_parallel.
14748         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
14749         Adjust callers.
14750         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
14751         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
14752         (new_omp_context): Set default_kind to
14753         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
14754         (omp_region_type): New enum.
14755         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
14756         fields, add region_type.
14757         (new_omp_context): Take region_type as argument instead of is_parallel
14758         and is_combined_parallel.
14759         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
14760         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
14761         ctx->is_combined_parallel checks.
14762         (gimplify_omp_task): New function.
14763         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
14764         OMP_CLAUSE_UNTIED.
14765         * omp-low.c (extract_omp_for_data): Use schedule(static)
14766         for schedule(auto).  Handle pointer and unsigned iterators.
14767         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
14768         Add loops argument.  Extract data for collapsed OMP_FOR loops.
14769         (expand_parallel_call): Assert sched_kind isn't auto,
14770         map runtime schedule to index 3.
14771         (struct omp_for_data_loop): New type.
14772         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
14773         Add loop, loops, collapse and iter_type fields.
14774         (workshare_safe_to_combine_p): Disallow combined for if
14775         iter_type is unsigned long long.  Don't combine collapse > 1 loops
14776         unless all bounds and steps are constant.  Adjust extract_omp_for_data
14777         caller.
14778         (expand_omp_for_generic): Handle pointer, unsigned and long long
14779         iterators.  Handle collapsed OMP_FOR loops.  Adjust
14780         for struct omp_for_data changes.  If libgomp function doesn't return
14781         boolean_type_node, add comparison of the return value with 0.
14782         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
14783         pointer, unsigned and long long iterators.  Adjust for struct
14784         omp_for_data changes.
14785         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
14786         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
14787         unsigned long long.  Allocate loops array, pass it to
14788         extract_omp_for_data.  For collapse > 1 loops use always
14789         expand_omp_for_generic.
14790         (omp_context): Add sfield_map and srecord_type fields.
14791         (is_task_ctx, lookup_sfield): New functions.
14792         (use_pointer_for_field): Use is_task_ctx helper.  Change first
14793         argument's type from const_tree to tree.  Clarify comment.
14794         In OMP_TASK disallow copy-in/out sharing.
14795         (build_sender_ref): Call lookup_sfield instead of lookup_field.
14796         (install_var_field): Add mask argument.  Populate both record_type
14797         and srecord_type if needed.
14798         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
14799         in srecord_type.
14800         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
14801         and DECL_FIELD_OFFSET.
14802         (scan_sharing_clauses): Adjust install_var_field callers.  For
14803         firstprivate clauses on explicit tasks allocate the var by value in
14804         record_type unconditionally, rather than by reference.
14805         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
14806         Use is_taskreg_ctx instead of is_parallel_ctx.
14807         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14808         (create_omp_child_function_name): Add task_copy argument, use
14809         *_omp_cpyfn* names if it is true.
14810         (create_omp_child_function): Add task_copy argument, if true create
14811         *_omp_cpyfn* helper function.
14812         (scan_omp_parallel): Adjust create_omp_child_function callers.
14813         Rename parallel_nesting_level to taskreg_nesting_level.
14814         (scan_omp_task): New function.
14815         (lower_rec_input_clauses): Don't run constructors for firstprivate
14816         explicit task vars which are initialized by *_omp_cpyfn*.
14817         Pass outer var ref to omp_clause_default_ctor hook if
14818         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
14819         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
14820         OMP_CLAUSE_REDUCTION_INIT.
14821         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
14822         avoid duplicate setting of fields.  Handle
14823         OMP_CLAUSE_PRIVATE_OUTER_REF.
14824         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
14825         copy-out if TREE_READONLY, only copy-in.
14826         (expand_task_copyfn): New function.
14827         (expand_task_call): New function.
14828         (struct omp_taskcopy_context): New type.
14829         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
14830         New functions.
14831         (lower_omp_parallel): Rename to...
14832         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
14833         Call create_task_copyfn if srecord_type is needed.  Adjust
14834         sender_decl type.
14835         (task_shared_vars): New variable.
14836         (check_omp_nesting_restrictions): Warn if work-sharing,
14837         barrier, master or ordered region is closely nested inside OMP_TASK.
14838         Add warnings for barrier if closely nested inside of work-sharing,
14839         ordered, or master region.
14840         (scan_omp_1): Call check_omp_nesting_restrictions even for
14841         GOMP_barrier calls.  Rename parallel_nesting_level to
14842         taskreg_nesting_level.  Handle OMP_TASK.
14843         (lower_lastprivate_clauses): Even if some lastprivate is found on a
14844         work-sharing construct, continue looking for them on parent parallel
14845         construct.
14846         (lower_omp_for_lastprivate): Add lastprivate clauses
14847         to the beginning of dlist rather than end.  Adjust for struct
14848         omp_for_data changes.
14849         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
14850         not after it.  Handle collapsed OMP_FOR loops, adjust for
14851         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
14852         (get_ws_args_for): Adjust extract_omp_for_data caller.
14853         (scan_omp_for): Handle collapsed OMP_FOR
14854         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14855         (lower_omp_single_simple): If libgomp function doesn't return
14856         boolean_type_node, add comparison of the return value with 0.
14857         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
14858         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
14859         (parallel_nesting_level): Rename to...
14860         (taskreg_nesting_level): ... this.
14861         (is_taskreg_ctx): New function.
14862         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
14863         of is_parallel_ctx.
14864         (execute_lower_omp): Rename parallel_nesting_level to
14865         taskreg_nesting_level.
14866         (expand_omp_parallel): Rename to...
14867         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
14868         Call omp_task_call for OMP_TASK regions.
14869         (expand_omp): Adjust caller, handle OMP_TASK.
14870         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
14871
14872         * bitmap.c (bitmap_default_obstack_depth): New variable.
14873         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
14874         if argument is NULL and bitmap_default_obstack is already initialized.
14875         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
14876         at the end.
14877         * matrix-reorg.c (matrix_reorg): Likewise.
14878
14879 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
14880
14881         * config/i386/i386.md (*indirect_jump): Macroize using P
14882         mode iterator.  Remove !TARGET_64BIT from insn constraints.
14883         (*tablejump_1): Ditto.
14884         (*indirect_jump_rex64): Remove insn pattern.
14885         (*tablejump_1_rex64): Ditto.
14886         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
14887         and eh_return_si insn patterns.
14888
14889 2008-06-06  Richard Guenther  <rguenther@suse.de>
14890
14891         * tree-ssa-structalias.c (merge_smts_into): Remove.
14892         (find_what_p_points_to): Do not bother to compute the
14893         points-to set for pt_anything pointers.
14894         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
14895         for pt_anything pointers is ok.
14896
14897 2008-06-06  Jan Hubicka  <jh@suse.cz>
14898
14899         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
14900
14901 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14902
14903         * cgraph.c: Fix typos in comments.
14904         (cgraph_availability_names): Fix string typo.
14905         * fold-const.c: Fix typos in comments.
14906         (fold_binary): Fix typo in warning.
14907         * genautomata.c: Fix typos in comments.
14908         (check_presence_pattern_sets): Fix typo in local variable.
14909         (output_description): Fix typo in output.
14910         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
14911         * hwint.h: Likewise.
14912         * matrix-reorg.c (check_allocation_function): Likewise.
14913         * omega.c (smooth_weird_equations): Likewise.
14914         * auto-inc-dec.c: Fix typos in comments.
14915         * bb-reorder.c: Likewise.
14916         * builtins.c: Likewise.
14917         * c-common.c: Likewise.
14918         * c-cppbuiltin.c: Likewise.
14919         * c-parser.c: Likewise.
14920         * c-pretty-print.c: Likewise.
14921         * cfgcleanup.c: Likewise.
14922         * cfgexpand.c: Likewise.
14923         * cfghooks.c: Likewise.
14924         * cfglayout.c: Likewise.
14925         * cfgloopmanip.c: Likewise.
14926         * cgraphunit.c: Likewise.
14927         * coverage.c: Likewise.
14928         * dbxout.c: Likewise.
14929         * df-byte-scan.c: Likewise.
14930         * df-core.c: Likewise.
14931         * df-problems.c: Likewise.
14932         * df-scan.c: Likewise.
14933         * dfp.c: Likewise.
14934         * dominance.c: Likewise.
14935         * domwalk.c: Likewise.
14936         * dse.c: Likewise.
14937         * dwarf2out.c: Likewise.
14938         * emit-rtl.c: Likewise.
14939         * et-forest.c: Likewise.
14940         * function.c: Likewise.
14941         * function.h: Likewise.
14942         * gcc.c: Likewise.
14943         * gcov-io.c: Likewise.
14944         * gcov.c: Likewise.
14945         * gcse.c: Likewise.
14946         * genattrtab.c: Likewise.
14947         * ggc-page.c: Likewise.
14948         * gimplify.c: Likewise.
14949         * gthr-lynx.h: Likewise.
14950         * haifa-sched.c: Likewise.
14951         * ipa-cp.c: Likewise.
14952         * ipa-inline.c: Likewise.
14953         * ipa-prop.h: Likewise.
14954         * ipa-pure-const.c: Likewise.
14955         * ipa-struct-reorg.c: Likewise.
14956         * ipa-struct-reorg.h: Likewise.
14957         * ipa-type-escape.c: Likewise.
14958         * ipa.c: Likewise.
14959         * loop-doloop.c: Likewise.
14960         * mips-tfile.c: Likewise.
14961         * mkmap-flat.awk: Likewise.
14962         * mkmap-symver.awk: Likewise.
14963         * modulo-sched.c: Likewise.
14964         * omp-low.c: Likewise.
14965         * optabs.c: Likewise.
14966         * optabs.h: Likewise.
14967         * opts.c: Likewise.
14968         * passes.c: Likewise.
14969         * postreload-gcse.c: Likewise.
14970         * postreload.c: Likewise.
14971         * predict.c: Likewise.
14972         * pretty-print.h: Likewise.
14973         * profile.c: Likewise.
14974         * protoize.c: Likewise.
14975         * ra-conflict.c: Likewise.
14976         * real.c: Likewise.
14977         * recog.c: Likewise.
14978         * regclass.c: Likewise.
14979         * regs.h: Likewise.
14980         * reload.c: Likewise.
14981         * rtl-error.c: Likewise.
14982         * rtlanal.c: Likewise.
14983         * scan.h: Likewise.
14984         * sched-rgn.c: Likewise.
14985         * see.c: Likewise.
14986         * stmt.c: Likewise.
14987         * target.h: Likewise.
14988         * tree-dfa.c: Likewise.
14989         * tree-eh.c: Likewise.
14990         * tree-flow-inline.h: Likewise.
14991         * tree-inline.c: Likewise.
14992         * tree-into-ssa.c: Likewise.
14993         * tree-loop-distribution.c: Likewise.
14994         * tree-nested.c: Likewise.
14995         * tree-parloops.c: Likewise.
14996         * tree-pass.h: Likewise.
14997         * tree-pretty-print.c: Likewise.
14998         * tree-profile.c: Likewise.
14999         * tree-scalar-evolution.c: Likewise.
15000         * tree-sra.c: Likewise.
15001         * tree-ssa-alias-warnings.c: Likewise.
15002         * tree-ssa-ccp.c: Likewise.
15003         * tree-ssa-coalesce.c: Likewise.
15004         * tree-ssa-dom.c: Likewise.
15005         * tree-ssa-dse.c: Likewise.
15006         * tree-ssa-forwprop.c: Likewise.
15007         * tree-ssa-live.c: Likewise.
15008         * tree-ssa-live.h: Likewise.
15009         * tree-ssa-loop-im.c: Likewise.
15010         * tree-ssa-loop-ivopts.c: Likewise.
15011         * tree-ssa-loop-niter.c: Likewise.
15012         * tree-ssa-loop-prefetch.c: Likewise.
15013         * tree-ssa-phiopt.c: Likewise.
15014         * tree-ssa-phiprop.c: Likewise.
15015         * tree-ssa-sccvn.c: Likewise.
15016         * tree-ssa-ter.c: Likewise.
15017         * tree-ssa-threadupdate.c: Likewise.
15018         * tree-ssa.c: Likewise.
15019         * tree-vect-analyze.c: Likewise.
15020         * tree-vect-transform.c: Likewise.
15021         * tree-vectorizer.c: Likewise.
15022         * tree-vn.c: Likewise.
15023         * tree-vrp.c: Likewise.
15024         * tree.c: Likewise.
15025         * tree.def: Likewise.
15026         * tree.h: Likewise.
15027         * unwind-dw2-fde.c: Likewise.
15028         * unwind.inc: Likewise.
15029         * value-prof.c: Likewise.
15030         * vmsdbgout.c: Likewise.
15031
15032 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
15033
15034         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
15035         always place FP constants in the TOC for TARGET_POWERPC64.
15036         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
15037
15038 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
15039
15040         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
15041         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
15042         enable for TARGET_E500_DOUBLE.
15043         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
15044         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
15045         floating-point modes like integer modes for E500 double.
15046         (rs6000_legitimate_offset_address_p): Likewise.
15047         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
15048         addressing for DDmode for E500 double.
15049         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
15050         modes as using 64-bits of registers for E500 double.
15051         (spe_build_register_parallel): Do not handle DDmode or TDmode.
15052         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
15053         specially for E500 double.
15054         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
15055         TDmode for E500 double.
15056         (rs6000_gimplify_va_arg): Only handle SDmode in registers
15057         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
15058         (rs6000_split_multireg_move): Do not handle TDmode specially for
15059         E500 double.
15060         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
15061         using 64-bit registers for E500 double.
15062         (emit_frame_save): Do not handle DDmode specially for E500 double.
15063         (gen_frame_mem_offset): Likewise.
15064         (rs6000_function_value): Do not call spe_build_register_parallel
15065         for DDmode or TDmode.
15066         (rs6000_libcall_value): Likewise.
15067         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
15068         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
15069         for E500 double.
15070
15071 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
15072
15073         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
15074         in comments.
15075
15076 2008-06-04  Junjie Gu <jgu@tensilica.com>
15077
15078         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
15079         comparison for frame pointers.
15080
15081 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15082
15083         PR target/27386
15084         * config/avr/avr.h (PUSH_ROUNDING): Remove.
15085
15086 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15087
15088         PR target/30243
15089         * builtins.c (expand_builtin_signbit): Don't take lowpart when
15090         register is already smaller or equal to required mode.
15091
15092 2008-06-04  Xinliang David Li  <davidxl@google.com>
15093
15094         * tree-call-cdce.c: New file.
15095         (cond_dead_built_in_calls): New static variable.
15096         (input_domain): New struct.
15097         (check_pow): New function.
15098         (check_builtin_call): Ditto.
15099         (check_target_format): Ditto.
15100         (is_call_dce_candidate): Ditto.
15101         (gen_one_condition): Ditto.
15102         (gen_conditions_for_domain): Ditto.
15103         (get_domain): Ditto.
15104         (gen_conditions_for_pow_cst_base): Ditto.
15105         (gen_conditions_for_pow_int_base): Ditto.
15106         (gen_conditions_for_pow): Ditto.
15107         (get_no_error_domain): Ditto.
15108         (gen_shrink_wrap_conditions): Ditto.
15109         (shrink_wrap_one_built_in_call): Ditto.
15110         (shink_wrap_conditional_dead_built_in_calls): Ditto.
15111         (tree_call_cdce): Ditto.
15112         (gate_call_cdce): Ditto.
15113         (pass_call_cdce): New gimple pass.
15114         * passes.c: (init_optimization_passes): New pass.
15115         * tree-pass.h: New pass declaration.
15116         * opts.c (decode_options): New flag setting.
15117         * common.opt: Add -ftree-builtin-call-dce flag.
15118         * Makefile.in: Add new source file.
15119         * tempvar.def: New tv_id.
15120         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
15121
15122 2008-06-04  Richard Guenther  <rguenther@suse.de>
15123
15124         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
15125         (is_call_clobbered): Always check var_ann->call_clobbered.
15126         (mark_call_clobbered): Always set var_ann->call_clobbered.
15127         (clear_call_clobbered): Always clear var_ann->call_clobbered.
15128         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
15129         (reset_alias_info): Clear call clobbering info on MTAGs and
15130         globals as well.
15131         (set_pt_anything): Set pt_global_mem.
15132         (create_tag_raw): Adjust comment.
15133         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
15134
15135 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
15136             Maxim Kuvyrkov  <maxim@codesourcery.com>
15137
15138         * config/m68k/m68k.opt (mxgot): New option.
15139         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
15140         (m68k_output_addr_const_extra): New.
15141         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
15142         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
15143         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
15144         * doc/invoke.texi (M680x0 Options): Document -mxgot.
15145
15146 2008-06-04  Richard Guenther  <rguenther@suse.de>
15147
15148         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
15149         negative or non-representable offsets.
15150
15151 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
15152
15153         * config/i386/i386.c (ix86_gen_leave): New.
15154         (ix86_gen_pop1): Likewise.
15155         (ix86_gen_add3): Likewise.
15156         (ix86_gen_sub3): Likewise.
15157         (ix86_gen_sub3_carry): Likewise.
15158         (ix86_gen_one_cmpl2): Likewise.
15159         (ix86_gen_monitor): Likewise.
15160         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
15161         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
15162         ix86_gen_one_cmpl2 and ix86_gen_monitor.
15163         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
15164         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
15165         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
15166         (ix86_expand_epilogue): Updated.
15167         (print_operand): Handle integer register operand for 'z'.
15168         (ix86_expand_strlensi_unroll_1): Likewise.
15169         (ix86_expand_strlen): Likewise.
15170         (ix86_expand_builtin): Likewise.
15171         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
15172         mov{q}/mov{l} and add{q}/add{l}.
15173
15174 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15175
15176         * config/i386/i386.md (P): New mode iterator.
15177         (SFmode push_operand splitter): Macroize DImode and SImode pushes
15178         using P mode iterator.
15179         (DFmode push_operand splitter): Ditto.
15180         (XFmode push_operand splitter): Ditto.
15181         (DFmode float_extend SFmode push_operand splitter): Ditto.
15182         (XFmode float_extend SFmode push_operand splitter): Do not generate
15183         SImode pushes for 64bit target.  Macroize Dimode and SImode
15184         pushes using P mode iterator.
15185         (XFmode float_extend DFmode push_operand splitter): Ditto.
15186
15187 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15188
15189         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
15190         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
15191         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
15192         return type to int.
15193         (ix86_call_abi_override): Remove check for call_used_regs.
15194
15195 2008-06-03  Richard Guenther  <rguenther@suse.de>
15196
15197         * tree-ssa-structalias.c (find_func_aliases): Add constraints
15198         for the lhs of calls if the return type contains pointers.
15199
15200 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15201
15202         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
15203         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
15204         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
15205         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
15206         of cfun and DEFAULT_ABI to deceide abi mode.
15207         (DEFAULT_ABI): New.
15208         (REG_PARM_STACK_SPACE): Removed.
15209         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
15210         (STACK_BOUNDARY): Use default target to deceide stack boundary.
15211         * config/i386/i386-protos.h (ix86_cfun_abi): New.
15212         (ix86_function_abi): Likewise.
15213         (ix86_function_type_abi): Likewise.
15214         (ix86_call_abi_override): Likewise.
15215         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
15216         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
15217         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
15218         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
15219         specific defines.
15220         (X86_64_REGPARM_MAX): New.
15221         (X86_64_SSE_REGPARM_MAX): New.
15222         (X64_REGPARM_MAX): New.
15223         (X64_SSE_REGPARM_MAX): New.
15224         (X86_32_REGPARM_MAX): New.
15225         (X86_32_SSE_REGPARM_MAX): New.
15226         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
15227         (ix86_function_regparm): Handle user calling abi.
15228         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
15229         by DEFAULT_ABI versus SYSV_ABI check.
15230         (ix86_reg_parm_stack_space): New.
15231         (ix86_function_type_abi): New.
15232         (ix86_call_abi_override): New.
15233         (ix86_function_abi): New.
15234         (ix86_cfun_abi): New.
15235         (init_cumulative_args): Call abi specific initialization.
15236         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
15237         (function_arg_64): Extend SSE_REGPARM_MAX check.
15238         (function_arg (): Remove TARGET_64BIT_MS_ABI.
15239         (ix86_pass_by_reference): Likewise.
15240         (ix86_function_value_regno_p): Likewise.
15241         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
15242         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
15243         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
15244         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
15245         (setup_incoming_varargs_64): Adjust regparm for call abi.
15246         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
15247         (ix86_va_start): Likewise.
15248         (ix86_gimplify_va_arg): Likewise.
15249         (ix86_expand_prologue): Likewise.
15250         (output_pic_addr_const): Likewise.
15251         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
15252         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
15253         (x86_output_mi_thunk): Likewise.
15254         (x86_function_profiler): Likewise.
15255         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
15256         (SYSV_ABI, MS_ABI): New constants.
15257         (DEFAULT_ABI): New.
15258         (init_regs): Add prototype of function in regclass.c file.
15259         (OVERRIDE_ABI_FORMAT): New.
15260         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
15261         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
15262         (OUTGOING_REG_PARM_STACK_SPACE): New.
15263         (ix86_reg_parm_stack_space): New prototype.
15264         (CUMULATIVE_ARGS): Add call_abi member.
15265         (machine_function): Add call_abi member.
15266         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
15267         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
15268
15269 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
15270
15271         PR target/34879
15272         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
15273         (avr_builtin_setjmp_frame_value): New function.
15274         * config/avr/avr.md (nonlocal_goto_receiver): Define.
15275         (nonlocal_goto): Define.
15276
15277 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
15278
15279         * config/mips/mips.c (mips_emit_loadgp): Return early if
15280         there is nothing do to, otherwise emit a blockage if
15281         !TARGET_EXPLICIT_RELOCS || crtl->profile.
15282         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
15283
15284 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15285
15286         * configure.ac: Drop unneeded backslash ending up in config.in.
15287         * acinclude.m4: Likewise.
15288         * config.in: Regenerate.
15289
15290 2008-05-26  Jan Hubicka  <jh@suse.cz>
15291
15292         * predict.c (maybe_hot_frequency_p): Break out of...
15293         (maybe_hot_bb_p): ... here.
15294         (maybe_hot_edge_p): New.
15295         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
15296         * basic-block.h (maybe_hot_edge_p): Declare.
15297
15298 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
15299
15300         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
15301         (*cmpfp_<mode>_cc): Ditto.
15302         (*fp_jcc_8<mode>_387): Ditto.
15303         (*fop_<MODEF:mode>_2_i387): Ditto.
15304         (*fop_<MODEF:mode>_3_i387): Ditto.
15305         (*fop_xf_2_i387): Ditto.
15306         (*fop_xf_3_i387): Ditto.
15307
15308 2008-06-02  Tomas Bily  <tbily@suse.cz>
15309
15310         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
15311
15312 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15313
15314         * config/mips/mips.c (mips_valid_offset_p): New function.
15315         (mips_valid_lo_sum_p): Likewise.
15316         (mips_classify_address): Use them.
15317         (mips_force_address): New function.
15318         (mips_legitimize_address): Use it.
15319         * config/mips/mips.md (MOVE128): New mode iterator.
15320         (movtf): Require TARGET_64BIT.  Remove empty strings.
15321         (*movtf_internal): Rename to...
15322         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
15323         of "R" and use {,fp}{load,store} attributes instead of "multi".
15324         Use a separate define_split.
15325         (*movtf_mips16): New pattern.
15326
15327 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15328
15329         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
15330         * config/mips/mips.c (mips_expand_before_return): New function.
15331         (mips_expand_epilogue): Call it.
15332         * config/mips/mips.md (return): Turn into a define_expand.
15333         (*return): New insn.
15334
15335 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15336
15337         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
15338         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
15339         functions.  Do not emit uses and clobbers of CONCATs; individually
15340         use and clobber their operands.
15341         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
15342         gen_clobber, emit_use and gen_use.
15343         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
15344         (expand_builtin_return): Likewise.
15345         * cfgbuild.c (count_basic_blocks): Likewise.
15346         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
15347         * explow.c (emit_stack_restore): Likewise.
15348         * expmed.c (extract_bit_field_1): Likewise.
15349         * expr.c (convert_move, emit_move_complex_parts): Likewise.
15350         (emit_move_multi_word, store_constructor): Likewise.
15351         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
15352         (thread_prologue_and_epilogue_insns): Likewise.
15353         * lower-subreg.c (resolve_simple_move): Likewise.
15354         * optabs.c (widen_operand, expand_binop): Likewise.
15355         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
15356         * reload.c (find_reloads): Likewise.
15357         * reload1.c (eliminate_regs_in_insn): Likewise.
15358         * stmt.c (expand_nl_goto_receiver): Likewise.
15359         * config/alpha/alpha.md (builtin_longjmp): Likewise.
15360         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
15361         * config/arm/arm.c (arm_load_pic_register): Likewise.
15362         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
15363         * config/arm/arm.md (untyped_return): Likewise.
15364         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
15365         * config/avr/avr.c (expand_prologue): Likewise.
15366         * config/bfin/bfin.c (do_unlink): Likewise.
15367         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
15368         * config/cris/cris.c (cris_expand_prologue): Likewise.
15369         * config/darwin.c (machopic_indirect_data_reference): Likewise.
15370         (machopic_legitimize_pic_address): Likewise.
15371         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
15372         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
15373         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
15374         (ix86_expand_convert_uns_didf_sse): Likewise.
15375         (ix86_expand_vector_init_general): Likewise.
15376         * config/ia64/ia64.md (eh_epilogue): Likewise.
15377         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
15378         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
15379         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
15380         (config/iq2000/iq2000.c): Likewise.
15381         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
15382         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
15383         (builtin_longjmp): Likewise.
15384         * config/mn10300/mn10300.md (call, call_value): Likewise.
15385         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
15386         * config/pdp11/pdp11.md (abshi2): Likewise.
15387         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
15388         * config/s390/s390.c (s390_emit_prologue): Likewise.
15389         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
15390         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
15391         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
15392         * config/sh/sh.c (prepare_move_operands): Likewise.
15393         (output_stack_adjust, sh_expand_epilogue): Likewise.
15394         (sh_set_return_address, sh_expand_t_scc): Likewise.
15395         * config/sparc/sparc.c (load_pic_register): Likewise.
15396         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
15397         * config/spu/spu.c (spu_expand_epilogue): Likewise.
15398         * config/v850/v850.c (expand_epilogue): Likewise.
15399
15400 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
15401
15402         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
15403         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
15404         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
15405         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
15406         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
15407         stack pointer register.
15408         (output_movhi): Remove code for interrupt specific writing to the
15409         stack pointer register.
15410
15411 2008-05-31  Richard Guenther  <rguenther@suse.de>
15412
15413         PR tree-optimization/34244
15414         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
15415         (tree_expr_nonzero_warnv_p): Likewise.
15416         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
15417         ssa_name_nonnegative_p.
15418         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
15419         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
15420         not tree_expr_nonzero_warnv_p.
15421
15422         PR tree-optimization/36262
15423         Revert
15424         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
15425
15426         PR tree-optimization/34244
15427         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
15428         (record_numbers_of_iterations): New function.
15429         (execute_vrp): Cache the numbers of iterations of loops.
15430         * tree-scalar-evolution.c (scev_reset_except_niters):
15431         New function.
15432         (scev_reset): Use scev_reset_except_niters.
15433         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
15434
15435 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
15436
15437         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
15438         __WORKAROUND_RETS when appropriate.
15439
15440 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
15441
15442         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
15443         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
15444         mode iterator.
15445         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
15446         *fop_df_comm_sse insn patterns using MODEF mode iterator.
15447         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
15448         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
15449         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
15450         *fop_df_1_mixed insn patterns using MODEF mode iterator.
15451         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
15452         *fop_df_1_sse insn patterns using MODEF mode iterator.
15453         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
15454         *fop_df_1_i387 insn patterns using MODEF mode iterator.
15455         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
15456         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
15457         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
15458         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
15459         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
15460         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
15461         (*fop_xf_4_i387): Use <MODE> for mode attribute.
15462         (*fop_xf_5_i387): Ditto.
15463         (*fop_xf_6_i387): Ditto.
15464
15465 2008-05-30  Richard Guenther  <rguenther@suse.de>
15466
15467         * builtins.c (build_string_literal): Avoid generating
15468         a non-gimple_val result.
15469
15470 2008-05-30  DJ Delorie  <dj@redhat.com>
15471
15472         * exec-tool.in: Use an environment variable (private) instead of a
15473         file (shared) as a semaphore, so as to not break parallel builds.
15474
15475 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
15476
15477         * optabs.c (maybe_encapsulate_block): Remove.
15478         (emit_libcall_block): Adjust accordingly.
15479         * optabs.h (maybe_encapsulate_block): Remove prototype.
15480
15481         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
15482         Don't use maybe_encapsulate_block.
15483
15484 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
15485
15486         * config/rs6000/rs6000.c (rs6000_legitimize_address,
15487         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
15488         rtx is a SYMBOL_REF before calling get_pool_constant.
15489
15490 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
15491
15492         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
15493
15494 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
15495
15496         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
15497         rather than OS names to choose INO_T_EQ definition.
15498         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
15499         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
15500
15501 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
15502
15503         PR target/36348
15504         * config/darwin-f.c: New.
15505         * config/t-darwin: Added rule to build darwin-f.o.
15506         * config.gcc: Defined new variable, fortran_target_objs.
15507         (*-*-darwin*): Set fortran_target_objs.
15508         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
15509         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
15510         * configure: Regenerated.
15511
15512 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
15513
15514         PR target/35771
15515         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
15516         canonical type if needed.
15517
15518 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
15519
15520         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
15521
15522 2008-05-29  Richard Guenther  <rguenther@suse.de>
15523
15524         PR tree-optimization/36343
15525         PR tree-optimization/36346
15526         PR tree-optimization/36347
15527         * tree-flow.h (clobber_what_p_points_to): Declare.
15528         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
15529         pointed-to variable is dereferenced is irrelevant to whether
15530         the pointer can access the pointed-to variable.
15531         (clobber_what_p_points_to): New function.
15532         * tree-ssa-alias.c (set_initial_properties): Use it.
15533         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
15534         call clobber check for NMTs.
15535
15536 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15537
15538         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
15539         for printing gcov_type.
15540
15541 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15542
15543         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
15544         and the eh region information.
15545         * value-prof.c (gimple_move_stmt_histograms): New function.
15546         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
15547
15548 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
15549
15550         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
15551
15552 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
15553
15554         * value-prof.c (tree_ic_transform): Print counts.
15555         * tree-profile.c (tree_gen_ic_func_profiler):
15556         Clear __gcov_indreict_call_callee variable to avoid misattribution
15557         of the profile.
15558
15559 2008-05-28  Rafael Espíndola  <espindola@google.com>
15560
15561         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
15562         invalid sharing.
15563
15564 2008-05-28  Richard Guenther  <rguenther@suse.de>
15565
15566         PR tree-optimization/36339
15567         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
15568         and clobbering code out of the loop.
15569
15570 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15571
15572         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
15573         letters defined.
15574
15575         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
15576         s390_contiguous_bitmask_p, s390_symref_operand_p,
15577         s390_check_symref_alignment, s390_reload_larl_operand,
15578         s390_reload_symref_address): New functions.
15579         (s390_branch_condition_mnemonic): Support compare and branch
15580         instructions.
15581         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
15582         and 'W' constraints.
15583         (s390_secondary_reload): Add secondary reloads for unaligned
15584         symbol refs or symbol refs to floating point or QI/TI mode
15585         integer values.
15586         (legitimate_address_p): Accept symbol references as addresses.
15587         (s390_expand_insv): Use rotate and insert selected bits
15588         instruction for insv when building for z10.
15589         (print_operand_address): Handle symbol ref addresses.
15590         (print_operand): Output modifier 'c' added for signed byte values.
15591         (s390_encode_section_info): Mark symbol refs with
15592         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
15593
15594         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
15595         (length attribute): RRF, RRR have 4 byte length.
15596         (FPALL, INTALL): New mode iterators added.
15597         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
15598         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
15599         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
15600         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
15601         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
15602         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
15603         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
15604         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
15605         instructions.
15606         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
15607         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
15608         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
15609         reload<INTALL:mode><P:mode>_toreg_z10,
15610         reload<FPALL:mode><P:mode>_tomem_z10,
15611         reload<FPALL:mode><P:mode>_toreg_z10,
15612         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
15613         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
15614         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
15615         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
15616         definition.
15617         (movmem, clrmem, cmpmem): New splitters added.
15618
15619         * config/s390/predicates.md (larl_operand): Use
15620         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
15621         SYMBOL_REF_ALIGN1_P.
15622         (s390_signed_integer_comparison,
15623         s390_unsigned_integer_comparison): New predicates.
15624
15625         * config/s390/s390-protos.h (s390_check_symref_alignment,
15626         s390_contiguous_bitmask_p, s390_reload_larl_operand,
15627         s390_reload_symref_address,
15628         s390_compare_and_branch_condition_mask): Prototypes added.
15629
15630         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
15631         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
15632         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
15633
15634 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15635
15636         * config/s390/s390.c (z10_cost): New cost function for z10.
15637         (s390_handle_arch_option, override_options): Support -march=z10 switch.
15638         (s390_issue_rate): Adjust issue rate for z10.
15639         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
15640         (processor_flags): Add PF_Z10.
15641         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
15642         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
15643         * gcc/config.gcc: Add z10.
15644
15645 2008-05-28  Richard Guenther  <rguenther@suse.de>
15646
15647         PR tree-optimization/36291
15648         * tree-flow. h (struct gimple_df): Remove var_anns member.
15649         * tree-flow-inline.h (gimple_var_anns): Remove.
15650         (var_ann): Simplify.
15651         * tree-dfa.c (create_var_ann): Simplify.
15652         (remove_referenced_var): Clear alias info from var_anns of globals.
15653         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
15654         (delete_tree_ssa): Clear alias info from var_anns of globals.
15655         Do not free var_anns.
15656         (var_ann_eq): Remove.
15657         (var_ann_hash): Likewise.
15658
15659 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
15660
15661         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
15662         and loongson2f entries.
15663         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
15664         * config/mips/mips.h (processor_type): Add Loongson-2E
15665         and Loongson-2F entries.
15666         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
15667         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
15668         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
15669         * doc/invoke.texi (MIPS Options): Document loongson2e
15670         and loongson2f processor names.
15671
15672 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15673
15674         PR target/35767
15675         PR target/35771
15676         * config/i386/i386.c (ix86_function_arg_boundary): Use
15677         alignment of canonical type.
15678         (ix86_expand_vector_move): Check unaligned memory access for
15679         all SSE modes.
15680
15681 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15682
15683         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
15684         Moved to the front of file.
15685
15686 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
15687             H.J. Lu  <hongjiu.lu@intel.com>
15688
15689         * dwarf2out.c (current_fde): New.
15690         (add_cfi): Use it.
15691         (lookup_cfa:): Likewise.
15692         (dwarf2out_end_epilogue): Likewise.
15693         (dwarf2out_note_section_used): Likewise.
15694
15695 2008-05-27  Michael Matz  <matz@suse.de>
15696
15697         PR c++/27975
15698         * c.opt (Wenum-compare): New warning option.
15699         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
15700
15701 2008-05-27  Michael Matz  <matz@suse.de>
15702
15703         PR middle-end/36326
15704         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
15705         non-BLKmode types.
15706         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
15707         into memory as tail calls.
15708
15709 2008-05-27  Richard Guenther  <rguenther@suse.de>
15710
15711         PR tree-optimization/36339
15712         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
15713         pointers cause all addressable variables to be call clobbered.
15714
15715 2008-05-27  Richard Guenther  <rguenther@suse.de>
15716
15717         PR tree-optimization/36245
15718         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
15719
15720 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15721
15722         * config/s390/s390.md: Replace all occurences of the 'm'
15723         constraint with 'RT'.
15724
15725 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15726
15727         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
15728         definitions added.
15729         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
15730         "*movdi_64".
15731         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
15732         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
15733         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
15734
15735 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15736
15737         * reload.c: (find_reloads): Skip alternatives according to the
15738         "enabled" attribute. Constify the constraint variable.
15739         * recog.c (get_attr_enabled): Add default implementation.
15740         (extract_insn): Set the alternative_enabled_p array
15741         in the recog_data struct.
15742         (preprocess_constraints, constrain_operands): Skip
15743         alternatives according to the "enabled" attribute
15744         * recog.h (struct recog_data): New field alternative_enabled_p.
15745         (skip_alternative): New inline function.
15746         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
15747         (record_reg_classes): Skip alternative according to the
15748         "enabled" attribute.
15749
15750         * doc/md.texi: Add documention for the "enabled" attribute.
15751
15752 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15753
15754         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
15755         * postreload.c (reload_cse_simplify_operands): Replace 'm'
15756         constraint with TARGET_MEM_CONSTRAINT.
15757         * recog.c (asm_operand_ok, preprocess_constraints,
15758         constrain_operands): Likewise.
15759         * regclass.c (record_reg_classes): Likewise.
15760         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
15761         * reload1.c (maybe_fix_stack_asms): Likewise.
15762         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
15763         * recog.h: Adjust comment.
15764         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
15765         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
15766         * doc/md.texi: Add a note to description of 'm' constraint.
15767         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
15768
15769 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
15770
15771         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
15772         that the bitfield is of integral type before testing its precision.
15773
15774 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
15775             Sa Liu  <saliu@de.ibm.com>
15776
15777         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
15778         __modti3, __udivti3, __umodti3 and __udivmodti4.
15779         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
15780         that implement TImode mul and div functions.
15781         * config/spu/multi3.c: New. Implement __multi3.
15782         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
15783         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
15784         functions on SPU.
15785
15786 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
15787
15788         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
15789         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
15790         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
15791         tls_sysv_suffix): New mode and mode attribute iterators.
15792         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
15793         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
15794         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
15795         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
15796         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
15797         iterators.
15798
15799 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
15800
15801         PR tree-optimization/36329
15802         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
15803         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
15804         * cgraphbuild.c (initialize_inline_failed): Use the latter
15805         macro in lieu of the former.
15806         * ipa-inline.c (cgraph_mark_inline): Likewise.
15807         (cgraph_decide_inlining_of_small_function): Likewise.
15808         (cgraph_decide_inlining): Likewise.
15809         (cgraph_decide_inlining_incrementally): Likewise.
15810
15811 2008-05-26  Tristan Gingold  <gingold@adacore.com>
15812             Anatoly Sokolov  <aesok@post.ru>
15813
15814         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
15815         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
15816         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
15817         optimization for 'avr6' architecture.
15818
15819 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
15820
15821         PR target/34932
15822         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
15823
15824 2008-05-26  Richard Guenther  <rguenther@suse.de>
15825
15826         * tree-ssa-sccvn.c (expr_has_constants): Declare.
15827         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
15828
15829 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
15830
15831         PR middle-end/36253
15832         * caller-save.c (insert_restore): Verify alignment of spill space.
15833         (insert_save): Likewise.
15834         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
15835         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
15836         (STACK_SLOT_ALIGNMENT): Likewise.
15837         * function.c (LOCAL_ALIGNMENT): Removed.
15838         (get_stack_local_alignment): New.
15839         (assign_stack_local): Use it.  Set alignment on stack slot.
15840         (assign_stack_temp_for_type): Use get_stack_local_alignment.
15841         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
15842         (STACK_SLOT_ALIGNMENT): New.
15843         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
15844         stack slot in XFmode.
15845
15846         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
15847
15848 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
15849
15850         PR/36321
15851         * config/i386/i386.md (allocate_stack_worker_64): Make sure
15852         argument operand in rax isn't removed.
15853
15854 2008-05-26  Richard Guenther  <rguenther@suse.de>
15855
15856         PR middle-end/36300
15857         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
15858         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
15859
15860 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15861
15862         PR bootstrap/36331
15863         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
15864
15865 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
15866
15867         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
15868         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
15869
15870 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
15871
15872         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
15873         build a trampoline if we don't want one.
15874         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
15875         return zero for nested functions if we don't want a trampoline.
15876
15877 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15878
15879         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
15880
15881 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15882
15883         PR fortran/18428
15884         * c.opt: Removed undocumented option '-lang-fortran'.
15885         * c-common.h: Removed global variable 'lang_fortran'.
15886         * c-opts.c (c_common_handle_option): Removed code to handle
15887         option '-lang-fortran'. Updated includes.
15888         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
15889         definition of '__GFORTRAN__'.
15890         (define__GNUC__): Reimplemented to use BASEVER and
15891         cpp_define_formatted.
15892         (builtin_define_with_value_n): Removed.
15893         * c-incpath.h: Renamed to ...
15894         * incpath.h: ... this.
15895         * c-incpath.c: Renamed to ...
15896         * incpath.c: ... this. Updated includes.
15897         * fix-header.c: Updated includes.
15898         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
15899         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
15900         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
15901
15902 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
15903
15904         * tree.h: Update the table of flags used on tree nodes.
15905         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
15906         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
15907         (FORCED_LABEL): Add access check.
15908         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
15909         (ASM_INPUT_P): Likewise.
15910         (ASM_VOLATILE_P): Likewise.
15911         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
15912         (OMP_SECTION_LAST): Access private_flag directly.
15913         (OMP_RETURN_NOWAIT): Likewise.
15914         (OMP_PARALLEL_COMBINED): Likewise.
15915         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
15916         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
15917         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
15918         deprecated_flag directly.
15919
15920 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15921
15922         * final.c (frame_pointer_needed): Removed.
15923         * flags.h (frame_pointer_needed): Likewise.
15924
15925         * function.h (rtl_data): Add frame_pointer_needed.
15926         (frame_pointer_needed): New.
15927
15928 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
15929
15930         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
15931
15932 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
15933
15934         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
15935         SRC is a REG.
15936
15937 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
15938
15939         * c-common.c (strip_array_types): Move function to..
15940         * tree.c: ..here.
15941         (get_inner_array_type): Delete.
15942         * c-common.h (strip_array_types): Move declaration to..
15943         * tree.h: ..here.
15944         (get_inner_array_type): Delete.
15945         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
15946         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
15947         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
15948         * config/pa/pa.c (emit_move_sequence): Likewise.
15949
15950 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15951
15952         * config/i386/i386.md (*sse_prologue_save_insn): Set length
15953         attribute to 34.
15954
15955 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
15956
15957         * function.c: Include target hook for nonlocal_goto frame value.
15958
15959 2008-05-24  Richard Guenther  <rguenther@suse.de>
15960
15961         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
15962         variable can be only accessed through a pointer or a union.
15963
15964 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15965
15966         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
15967         * doc/extend.texi: Likewise.
15968
15969 2008-05-23  DJ Delorie  <dj@redhat.com>
15970
15971         * config/m32c/jump.md (untyped_call): Add.
15972
15973         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
15974         for A24 to PSImode.
15975         (m32c_address_cost): Detail costs for indirect offsets.
15976
15977 2008-05-23  Rafael Espíndola  <espindola@google.com>
15978
15979         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
15980         if a node is a SUBREG.
15981         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
15982         is a SUBREG.
15983
15984 2008-05-23  Paul Brook  <paul@codesourcery.com>
15985             Carlos O'Donell  <carlos@codesourcery.com>
15986
15987         * doc/extend.texi: Clarify use of __attribute__((naked)).
15988         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
15989         * target.h (gcc_target): Add allocate_stack_slots_for_args.
15990         * function.c (use_register_for_decl): Use
15991         targetm.calls.allocate_stack_slots_for_args.
15992         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
15993         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
15994         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
15995
15996 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
15997
15998         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
15999
16000 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
16001
16002         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
16003         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
16004         is only rounded once.
16005
16006 2008-05-23  Richard Guenther  <rguenther@suse.de>
16007
16008         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
16009
16010 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
16011             Jakub Jelinek  <jakub@redhat.com>
16012
16013         PR target/36079
16014         * configure.ac: Handle --enable-cld.
16015         * configure: Regenerated.
16016         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
16017         * config/i386/i386.h (struct machine_function): Add needs_cld field.
16018         (ix86_current_function_needs_cld): New define.
16019         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
16020         (cld): New isns pattern.
16021         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
16022         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
16023         * config/i386/i386.opt (mcld): New option.
16024         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
16025         TARGET_CLD and ix86_current_function_needs_cld.
16026         (override_options): Use -mcld by default for 32-bit code if
16027         USE_IX86_CLD.
16028
16029         * doc/install.texi (Options specification): Document --enable-cld.
16030         * doc/invoke.texi (Machine Dependent Options)
16031         [i386 and x86-64 Options]: Add -mcld option.
16032         (Intel 386 and AMD x86-64 Options): Document -mcld option.
16033
16034 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
16035         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
16036         (return_in_memory_64): Likewise.
16037         (return_in_memory_ms_64): Likewise.
16038
16039 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16040
16041         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
16042         * builtins.c (fold_builtin_fpclassify): New.
16043         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
16044         * builtins.def (BUILT_IN_FPCLASSIFY): New.
16045         * c-common.c (handle_type_generic_attribute): Adjust to accept
16046         fixed arguments before an elipsis.
16047         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
16048         * doc/extend.texi: Document __builtin_fpclassify.
16049
16050 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
16051
16052         * omp-low.c (gate_expand_omp_ssa): Remove.
16053         (pass_expand_omp_ssa): Remove.
16054         (gate_expand_omp): Do not check for flag_openmp_ssa.
16055         * common.opt (-fopenmp-ssa): Remove.
16056         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
16057
16058 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
16059
16060         * config/sh/sh.opt (mfixed-range): New option.
16061         * config/sh/sh-protos.h (sh_fix_range): Declare.
16062         * config/sh/sh.c (sh_fix_range): New function.
16063         * config/sh/sh.h (sh_fixed_range_str): Declare.
16064         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
16065         is not empty.
16066         * doc/invoke.texi (SH Options): Document -mfixed-range.
16067
16068 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
16069
16070         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
16071         it before the redeclaration.
16072
16073 2008-05-22  Anatoly Sokolov <aesok@post.ru>
16074
16075         * config/avr/avr.c (get_sequence_length): Add new function.
16076         (expand_prologue, expand_epilogue): Remove duplicate code.
16077
16078 2008-05-22  Rafael Espíndola  <espindola@google.com>
16079
16080         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
16081         sharing.
16082
16083 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16084
16085         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
16086         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
16087
16088         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
16089         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
16090         (vect_update_misalignment_for_peel): Likewise.
16091         (vector_alignment_reachable_p): Likewise.
16092         * tree-vect-transform.c (vectorizable_load): Likewise.
16093         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
16094         (get_vectype_for_scalar_type): Pass mode of scalar_type
16095         to UNITS_PER_SIMD_WORD.
16096
16097         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
16098         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
16099         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
16100         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
16101         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
16102
16103 2008-05-22  Ira Rosen  <irar@il.ibm.com>
16104
16105         PR tree-optimization/36293
16106         * tree-vect-transform.c (vect_transform_strided_load): Don't check
16107         if the first load must be skipped because of a gap.
16108
16109 2008-05-22  Richard Guenther  <rguenther@suse.de>
16110
16111         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
16112         more cases of offset disambiguation that is possible if
16113         strict-aliasing rules apply.
16114         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
16115         for basic offset and type-based disambiguation.
16116
16117 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16118
16119         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
16120         ix86_expand_vector_set on V16QImode for SSE4.1.
16121
16122 2008-05-21  Tom Tromey  <tromey@redhat.com>
16123
16124         * c.opt (Wimport): Mark as undocumented.
16125         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
16126         -Wno-import.
16127         (Warning Options): Likewise.
16128         * doc/cppopts.texi: Don't mention -Wimport.
16129
16130 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
16131
16132         PR tree-optimization/36287
16133         PR tree-optimization/36286
16134         * lambda-code.c (build_access_matrix): Do not use the loop->num
16135         for computing the number of induction variables: use the loop depth
16136         instead.
16137
16138 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
16139
16140         PR/36280
16141         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
16142         option -f(no-)leading-underscore.
16143
16144 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16145
16146         * config/i386/i386.c (ix86_expand_vector_init_general): Use
16147         GET_MODE_NUNITS (mode).
16148
16149 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
16150
16151         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
16152         (-mmulhw): Add 464 to description.
16153         (-mdlmzb): Likewise.
16154         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
16155         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
16156         464fp entries.
16157         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
16158         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
16159         * config/rs6000/rs6000.md: Update comments for 464.
16160
16161 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
16162
16163         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
16164
16165 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16166
16167         * config/i386/sse.md (vec_extractv4sf): Removed.
16168         (vec_extractv2df): Likewise.
16169         (vec_extractv2di): Likewise.
16170         (vec_extractv4si): Likewise.
16171         (vec_extractv8hi): Likewise.
16172         (vec_extractv16qi): Likewise.
16173         (vec_extract<mode>): New.
16174
16175 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16176
16177         * config/i386/sse.md (vec_setv4sf): Removed.
16178         (vec_setv2df): Likewise.
16179         (vec_setv2di): Likewise.
16180         (vec_setv4si): Likewise.
16181         (vec_setv8hi): Likewise.
16182         (vec_setv16qi): Likewise.
16183         (vec_set<mode>): New.
16184
16185 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16186
16187         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
16188         goto for vec_concat and vec_interleave.
16189
16190 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16191
16192         * config/i386/sse.md (vec_initv4sf): Removed.
16193         (vec_initv2df): Likewise.
16194         (vec_initv2di): Likewise.
16195         (vec_initv4si): Likewise.
16196         (vec_initv8hi): Likewise.
16197         (vec_initv16qi): Likewise.
16198         (vec_init<mode>): New.
16199
16200 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
16201
16202         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
16203
16204 2008-05-21  Tom Tromey  <tromey@redhat.com>
16205
16206         * ggc-zone.c (lookup_page_table_if_allocated): New function.
16207         (zone_find_object_offset): Likewise.
16208         (gt_ggc_m_S): Likewise.
16209         (highest_bit): Likewise.
16210         * ggc-page.c (gt_ggc_m_S): New function.
16211         * stringpool.c (string_stack): Remove.
16212         (init_stringpool): Update.
16213         (ggc_alloc_string): Use ggc_alloc.
16214         (maybe_delete_ident): New function.
16215         (ggc_purge_stringpool): Likewise.
16216         (gt_ggc_m_S): Remove.
16217         * ggc-common.c (ggc_protect_identifiers): New global.
16218         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
16219         ggc_protect_identifiers.
16220         * ggc.h (ggc_protect_identifiers): Declare.
16221         (gt_ggc_m_S): Update.
16222         (ggc_purge_stringpool): Declare.
16223         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
16224         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
16225         special case.
16226         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
16227
16228 2008-05-21  David S. Miller  <davem@davemloft.net>
16229
16230         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
16231         tmake_file.
16232
16233 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
16234
16235         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
16236         once finished.
16237
16238 2008-05-20  David Daney  <ddaney@avtrex.com>
16239
16240         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
16241         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
16242         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
16243         UNSPEC_UPDATE_GOT_VERSION): Renumber.
16244         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
16245         (atomic_hiqi_op): New define_code_iterator.
16246         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
16247         mips_expand_compare_and_swap_12.
16248         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
16249         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
16250         (sync_<optab><mode>, sync_old_<optab><mode>,
16251         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
16252         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
16253         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
16254         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
16255         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
16256         (test_and_set_12): New insn.
16257         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
16258         sync_new_<optab><mode>, sync_old_nand<mode>,
16259         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
16260         clobber to operand 0 for SI and DI mode insns.
16261         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
16262         mips_gen_fn_4): New typedefs.
16263         (mips_gen_fn_ptrs): Define new union type.
16264         (mips_expand_compare_and_swap_12): Remove declaration.
16265         (mips_expand_atomic_qihi): Declare function.
16266         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
16267         (mips_expand_atomic_qihi): ... this.  Use new generator function
16268         parameter.
16269         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
16270         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
16271         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
16272         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
16273         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
16274         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
16275         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
16276         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
16277         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
16278         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
16279         New macros.
16280
16281 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16282
16283         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
16284         the missing break.
16285
16286 2008-05-20  Anatoly Sokolov <aesok@post.ru>
16287
16288         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
16289         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
16290         (avr_attribute_table): Add 'OS_main' function attribute.
16291         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
16292         functions with 'OS_main' attribute.
16293
16294 2008-05-20  Richard Guenther  <rguenther@suse.de>
16295
16296         PR tree-optimization/35204
16297         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
16298         helper, split out from ...
16299         (DFS): ... here.  Make the DFS walk non-recursive.
16300
16301 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
16302             Jan Sjodin  <jan.sjodin@amd.com>
16303
16304         PR tree-optimization/36181
16305         * tree-parloops.c (loop_has_vector_phi_nodes): New.
16306         (parallelize_loops): Don't parallelize when the loop has vector
16307         phi nodes.
16308
16309 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16310             Sebastian Pop  <sebastian.pop@amd.com>
16311
16312         * tree-loop-linear.c (gather_interchange_stats): Look in the access
16313         matrix, and never look at the tree representation of the memory
16314         accesses.
16315         (linear_transform_loops): Computes parameters and access matrices.
16316         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
16317         when fails.
16318         (access_matrix_get_index_for_parameter): New.
16319         * tree-data-ref.h (struct access_matrix): New.
16320         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
16321         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
16322         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
16323         am_vector_index_for_loop): New.
16324         (struct data_reference): Add field access_matrix.
16325         (DR_ACCESS_MATRIX): New.
16326         (compute_data_dependences_for_loop): Update declaration.
16327         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
16328         * lambda.h (lambda_vector_vec_p): Declared.
16329         * lambda-code.c: Depend on pointer-set.h.
16330         (lambda_collect_parameters_from_af, lambda_collect_parameters,
16331         av_for_af_base, av_for_af, build_access_matrix,
16332         lambda_compute_access_matrices): New.
16333         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
16334
16335 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
16336
16337         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
16338         $SOURCEDIR/include.
16339
16340 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16341             Sebastian Pop  <sebastian.pop@amd.com>
16342
16343         PR tree-optimization/36206
16344         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
16345         FOLD_CONVERSIONS.
16346         (instantiate_scev_1): Rename flags to fold_conversions.
16347         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
16348         outeside instantiation_loop.
16349         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
16350         (evolution_function_is_affine_or_constant_p): Removed.
16351         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
16352         instantiate_scev.
16353         (analyze_siv_subscript): Pass in the loop nest number.
16354         Call evolution_function_is_affine_in_loop instead of
16355         evolution_function_is_affine_p.
16356         (analyze_overlapping_iterations): Pass in the loop nest number.
16357
16358 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16359             Sebastian Pop  <sebastian.pop@amd.com>
16360
16361         PR tree-optimization/36206
16362         * tree-chrec.h (chrec_fold_op): New.
16363         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
16364         and other trees.
16365
16366 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
16367
16368         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
16369         (DIRS_EQ): New.
16370         (remove_duplicates): Do not set inode on non-inode systems.
16371         Use DIRS_EQ.
16372
16373 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
16374
16375         * config.gcc (tm_file): Update comments about relative pathnames.
16376
16377 2008-05-20  Richard Guenther  <rguenther@suse.de>
16378
16379         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
16380         * tree-ssa-sccvn.c (process_scc): Likewise.
16381         * tree-ssa-sink.c (execute_sink_code): Likewise.
16382         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
16383         * tree-vrp.c (process_assert_insertions): Likewise.
16384         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16385         (perform_tree_ssa_dce): Likewise.
16386         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
16387         (dump_dominator_optimization_stats): Likewise.
16388         * tree-vectorizer.c (vectorize_loops): Likewise.
16389
16390 2008-05-20  Richard Guenther  <rguenther@suse.de>
16391
16392         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
16393
16394 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
16395
16396         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
16397         (ix86_i386elf_return_in_memory): Likewise.
16398         (ix86_i386interix_return_in_memory): Likewise.
16399         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
16400         (SUBTARGET_RETURN_IN_MEMORY): New.
16401         * config/i386/i386elf.h: Likewise.
16402         * config/i386/ptx4-i.h: Likewise.
16403         * config/i386/sol2-10.h: Likewise.
16404         * config/i386/sysv4.h: Likewise.
16405         * config/i386/vx-common.h: Likewise.
16406         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
16407         * config/i386/i386.c (ix86_return_in_memory): Made static and
16408         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
16409         (ix86_i386elf_return_in_memory): Removed.
16410         (ix86_i386interix_return_in_memory): Removed.
16411         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
16412         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
16413
16414 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
16415
16416         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
16417
16418 2008-05-19  Xinliang David Li  <davidxl@google.com>
16419
16420         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
16421         * opts.c: Ditto.
16422         * common.opt: Ditto.
16423         * doc/invoke.texi: Ditto.
16424
16425 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
16426
16427         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
16428         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
16429
16430 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16431
16432         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
16433         sizes of operand array from 8/4 to 4/2.
16434         (ix86_expand_vector_init_general): Change size of operand array
16435         from 32 to 16.  Remove op0, op1 and half_mode.
16436
16437 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16438
16439         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
16440         (ix86_expand_vector_init_interleave): Likewise.
16441         (ix86_expand_vector_init_general): Use them.  Assert
16442         word_mode == SImode when n_words == 4.
16443
16444 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
16445
16446         * config/i386/i386.c (ix86_secondary_reload): New static function.
16447         (TARGET_SECONDARY_RELOAD): New define.
16448         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
16449         * config/i386/i386.md (reload_outqi): Remove.
16450
16451 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16452
16453         PR middle-end/35509
16454         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
16455         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
16456         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
16457         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
16458         (fold_builtin_1): Likewise.
16459         * builtins.def (BUILT_IN_ISINF_SIGN): New.
16460         c-common.c (check_builtin_function_arguments): Handle
16461         BUILT_IN_ISINF_SIGN.
16462         * doc/extend.texi: Document __builtin_isinf_sign.
16463         * fold-const.c (operand_equal_p): Handle COND_EXPR.
16464
16465 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
16466
16467         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
16468         EH cleanup at the end of the pass, search for those that have been
16469         turned into forwarder blocks and do the cleanup on their successor.
16470
16471 2008-05-18  Richard Guenther  <rguenther@suse.de>
16472
16473         * tree-cfg.c (verify_gimple_expr): Allow conversions from
16474         pointers to sizetype and vice versa.
16475
16476 2008-05-18 Xinliang David Li   <davidxl@google.com>
16477
16478         * gcc/tree-ssa-dce.c: Coding style fix.
16479         (check_pow): Documentation comment.
16480         (check_log): Documenation comment. Coding style fix.
16481         (is_unnecessary_except_errno_call): Ditto.
16482         (gen_conditions_for_pow): Ditto.
16483         (gen_conditions_for_log): Ditto.
16484         (gen_shrink_wrap_conditions): Ditto.
16485         (shrink_wrap_one_built_in_calls): Ditto.
16486         * gcc/doc/invoke.texi: Better documentation string.
16487         * ChangeLog: Fix wrong change log entries from
16488         May 17 checkin on function call DCE.
16489
16490 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
16491
16492         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
16493
16494 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
16495
16496         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
16497         * df-problems.c (simulation routines): Fixed block comment to
16498         properly say how to add forwards scanning functions.
16499
16500 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
16501
16502         * tree-inline.c (setup_one_parameter): Remove dead code.
16503
16504 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
16505
16506         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
16507         a BIT_AND_EXPR only for an INTEGER_TYPE.
16508
16509 2008-05-17 Xinliang David Li   <davidxl@google.com>
16510
16511         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
16512         (check_pow, check_log, is_unnecessary_except_errno_call): New
16513         functions to check for eliminating math functions that are pure
16514         except for setting errno.
16515         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
16516         general condition expressions for shrink-wrapping pow/log calls.
16517         (gen_shrink_wrap_conditions): Ditto.
16518         (shrink_wrap_one_built_in_call): Ditto.
16519         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
16520         (mark_operand_necessary): If debugging, output if OP is necessary.
16521         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
16522         unnecessary.
16523         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
16524         opt level >= 2.
16525         * gcc/common.opt: New user flag -ftree-builtin-dce.
16526         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
16527
16528 2008-05-16  David S. Miller  <davem@davemloft.net>
16529
16530         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
16531         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
16532
16533 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
16534
16535         PR target/36246
16536         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
16537
16538 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16539
16540         * ifcvt.c (dead_or_predicable): Rename
16541         df_simulate_one_insn_backwards to df_simulate_one_insn.
16542         * recog.c (peephole2_optimize): Ditto.
16543         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
16544         Ditto.
16545         * df.h: Rename df_simulate_one_insn_backwards to
16546         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
16547         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
16548         scanning of defs and uses.
16549         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
16550         (df_simulate_one_insn_forwards): Removed.
16551
16552 2008-05-16  Doug Kwan  <dougkwan@google.com>
16553
16554         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
16555         QNaN & SNaN.
16556         (real_from_string): Handle NaNs and Inf as approriate.
16557
16558 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16559
16560         * doc/gty.texi (Source Files Containing Type Information): Note
16561         that headers should appear first in the gtfiles list.
16562
16563 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16564
16565         * tree.def (COND_EXEC): Properly documented this code.
16566
16567 2008-05-16  Diego Novillo  <dnovillo@google.com>
16568
16569         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
16570         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
16571         the new field.
16572
16573 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16574
16575         * tree-ssa-dse (max_stmt_uid): Removed.
16576         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
16577         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
16578         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
16579         * function.h (cfun.last_stmt_uid): New field.
16580         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
16581         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
16582         New functions.
16583         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
16584         (create_stmt_ann): Initialize the ann->uid field.
16585         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
16586         with new calls.
16587         * tree-flow.h (renumber_gimple_stmt_uids): New function.
16588
16589 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16590
16591         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
16592         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
16593         (init_empty_tree_cfg): Call it.
16594
16595 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16596
16597         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
16598         Update all users.
16599
16600 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16601
16602         * doc/invoke.text (-fdump-tree-*-verbose): New option.
16603         * tree-dump.c (dump_options): New verbose option.
16604         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
16605         Add verbose dump.
16606         * tree-pass.h (TDF_VERBOSE): New dump flag.
16607         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
16608         (tree-flow.h): Added include.
16609         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
16610
16611 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
16612
16613         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
16614
16615         From Jie Zhang  <jie.zhang@analog.com>
16616         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16617         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
16618         mcpu=bf561-none and mcpu=bf561-0.2.
16619         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16620         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16621         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16622         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16623         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
16624         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
16625         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
16626         option.
16627         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
16628         (cputype_selected): Remove.
16629         (bfin_handle_option): Don't use cputype_selected.
16630         (override_options): When no mcpu option, enable all workarounds.
16631         Don't use bfin_workarounds.
16632         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
16633         processor type.
16634         (DEFAULT_CPU_TYPE): Don't define.
16635
16636 2008-05-16  Richard Guenther  <rguenther@suse.de>
16637
16638         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
16639         on deletion of the last stmt.
16640
16641 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16642
16643         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
16644         V8HImode for SSE2 and V16QImode for SSE4.1.
16645
16646 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
16647
16648         * cgraph.h (compute_inline_parameters): Made public.
16649         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
16650         variable_generate_summary, function_write_summary,
16651         variable_write_summary, variable_read_summary.  Added generate_summary,
16652         write_summary, read_summary.
16653         * cgraphunit.c (cgraph_process_new_functions): Changed call from
16654         pass_ipa_inline.function_generate_summary, to
16655         compute_inline_parameters.
16656         * ipa-inline.c (compute_inline_parameters): Made public and added
16657         node parameter.
16658         (compute_inline_parameters_for_current): New function.
16659         (pass_inline_param): Now calls compute_inline_parameters_for_current.
16660         (inline_generate_summary): Removed parameter and made to loop over
16661         all cgraph nodes.
16662         (pass_ipa_inline): Updated for new IPA_PASS structure.
16663         * passes.c (execute_ipa_summary_passes): Now is called once per
16664         pass rather than once per node*pass.
16665
16666 2008-05-15  Anatoly Sokolov <aesok@post.ru>
16667
16668         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
16669         avr_have_mul_p, avr_asm_only_p): Remove variables.
16670         (avr_override_options): Remove initialization of removed variables.
16671         (avr_file_start):  Convert removed variables to fields of
16672         'struct base_arch_s *avr_current_arch'.
16673         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
16674         (AVR_HAVE_MUL): (Ditto.).
16675         (AVR_HAVE_MOVW): (Ditto.).
16676         (AVR_HAVE_LPMX): (Ditto.).
16677         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
16678         avr_asm_only_p): Remove declaration.
16679
16680 2008-05-15  Diego Novillo  <dnovillo@google.com>
16681
16682         * config/arm/arm.c (arm_return_in_memory): Fix return type.
16683         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
16684
16685 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
16686
16687         PR middle-end/36194
16688         * combine.c (check_conversion): Rename back to check_promoted_subreg.
16689         Don't call record_truncated_value from here.
16690         (record_truncated_value): Turn it into a for_each_rtx callback.
16691         (record_truncated_values): New function.
16692         (combine_instructions): Call note_uses with record_truncated_values.
16693         Change name of check_conversion to check_promoted_subreg.
16694
16695 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
16696
16697         * doc/sourcebuild.texi: Document support for torture tests.
16698
16699 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
16700
16701         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
16702         to alternative 4 of operand 2.
16703
16704 2008-05-15  Richard Guenther  <rguenther@suse.de>
16705
16706         * tree-pass.h (current_pass): Declare.
16707         (get_pass_for_id): Likewise.
16708         * passes.c (passes_by_id, passes_by_id_size): New globals.
16709         (set_pass_for_id): New function.
16710         (get_pass_for_id): Likewise.
16711         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
16712         (execute_function_todo): Flush per function statistics.
16713         * toplev.c (compile_file): Init statistics.
16714         (general_init): Do early statistics initialization.
16715         (finalize): Finish statistics.
16716         * statistics.h (statistics_early_init): Declare.
16717         (statistics_init): Likewise.
16718         (statistics_fini): Likewise.
16719         (statistics_fini_pass): Likewise.
16720         (statistics_counter_event): Likewise.
16721         (statistics_histogram_event): Likewise.
16722         * statistics.c: New file.
16723         * Makefile.in (OBJS-common): Add statistics.o.
16724         (statistics.o): Add dependencies.
16725         * doc/invoke.texi (-fdump-statistics): Document.
16726
16727         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
16728         (insert): Likewise.
16729         (execute_pre): Use statistics_counter_event.
16730         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
16731         (substitute_and_fold): Increment it.  Use statistics_counter_event.
16732
16733 2008-05-15  Diego Novillo  <dnovillo@google.com>
16734
16735         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
16736
16737         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
16738         * tree-ssa-alias.c (new_type_alias): Remove references to
16739         sub-variables from comment.
16740         * tree-ssa-operands.c (swap_tree_operands): Likewise.
16741
16742 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16743
16744         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
16745         attribute to 1 only for insertps alternative.
16746
16747 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16748
16749         * config/bfin/bfin.md (loadbytes): New pattern.
16750         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
16751         (bfin_init_builtins): Initialize it.
16752         (bdesc_1arg): Add it.
16753
16754 2008-05-15  Sa Liu  <saliu@de.ibm.com>
16755
16756         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
16757         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
16758         * testsuite/lib/target-supports.exp: Add
16759         check_effective_target_fortran_integer_16.
16760
16761 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16762
16763         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
16764         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
16765         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
16766         (TARGET_RETURN_IN_MEMORY): Define.
16767
16768 2008-05-15  Richard Guenther  <rguenther@suse.de>
16769
16770         PR middle-end/36244
16771         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
16772         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
16773         represent unmodifiable vars.
16774
16775 2008-05-15  Richard Guenther  <rguenther@suse.de>
16776
16777         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
16778         INDIRECT_REF and TARGET_MEM_REF.
16779         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
16780         TARGET_MEM_REF.
16781
16782 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
16783             H.J. Lu  <hongjiu.lu@intel.com>
16784
16785         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
16786         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
16787         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
16788         insn alternatives.  Add missing alternatives.
16789         (*vec_concatv2di_rex64_sse4_1): Likewise.
16790         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
16791         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
16792         Require TARGET_SSE.
16793
16794 2008-05-15  Richard Guenther  <rguenther@suse.de>
16795
16796         PR tree-optimization/36009
16797         PR tree-optimization/36204
16798         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
16799         (determine_invariantness_stmt): Record the loop a store is
16800         always executed in.
16801         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
16802         dependency.
16803
16804 2008-05-15  Richard Guenther  <rguenther@suse.de>
16805
16806         PR tree-optimization/34330
16807         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
16808         through the pointer will alias the SMT.
16809
16810 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
16811
16812         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
16813
16814 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
16815
16816         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
16817
16818 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16819             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
16820
16821         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
16822         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
16823         (vashl_optab): New optab for vector/vector shifts.
16824         (vashr_optab): Ditto.
16825         (vlshr_optab): Ditto.
16826         (vrotl_optab): Ditto.
16827         (vrotr_optab): Ditto.
16828         (optab_subtype): New enum for optab_for_tree_code call.
16829         (optab_for_tree_code): Add enum optab_subtype argument.
16830
16831         * optabs.c (optab_for_tree_code): Take an additional argument to
16832         distinguish between a vector shift by a scalar and vector shift by
16833         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
16834         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
16835         vector shift by a vector.
16836         (expand_widen_pattern_expr): Pass additional argument to
16837         optab_for_tree_code.
16838
16839         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
16840         vrotl_optab, vrotr_optab.
16841
16842         * expr.c (expand_expr_real_1): Update calls to
16843         optab_for_tree_code to distinguish between vector shifted by a
16844         scalar and vector shifted by a vector.
16845         * tree-vectorizer.c (supportable_widening_operation): Ditto.
16846         (supportable_narrowing_operation): Ditto.
16847         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
16848         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
16849         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
16850         (vect_create_epilog_for_reduction): Ditto.
16851         (vectorizable_reduction): Ditto.
16852         (vectorizable_operation): Ditto.
16853         (vect_strided_store_supported): Ditto.
16854         (vect_strided_load_supported): Ditto.
16855         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
16856         * expmed.c (expand_shift): Ditto.
16857
16858         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
16859         scalar type.
16860         (ashr@var{m}3): Ditto.
16861         (vashl@var{m}3): Document new vector/vector shift standard name.
16862         (vashr@var{m}3): Ditto.
16863         (vlshr@var{m}3): Ditto.
16864         (vrotl@var{m}3): Ditto.
16865         (vrotr@var{m}3): Ditto.
16866
16867         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
16868         (PPERM_INVERT): Ditto.
16869         (PPERM_REVERSE): Ditto.
16870         (PPERM_REV_INV): Ditto.
16871         (PPERM_ZERO): Ditto.
16872         (PPERM_ONES): Ditto.
16873         (PPERM_SIGN): Ditto.
16874         (PPERM_INV_SIGN): Ditto.
16875         (PPERM_SRC1): Ditto.
16876         (PPERM_SRC2): Ditto.
16877
16878         * config/i386/sse.md (mulv2di3): Add SSE5 support.
16879         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
16880         allows a memory operand to be the value being added, and split it
16881         to improve vectorization.
16882         (sse5_pmacsdqh_mem): Ditto.
16883         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
16884         (sse5_mulv2div2di3_high): Ditto.
16885         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
16886         (vec_pack_trunc_v4si): Ditto.
16887         (vec_pack_trunc_v2di): Ditto.
16888         (sse5_pcmov_<mode>): Remove code that tried to use use
16889         andps/andnps instead of pcmov.
16890         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
16891         pmacsdqh instructions.
16892         (vec_widen_smult_lo_v4si): Ditto.
16893
16894         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
16895         (PPERM_INVERT): Ditto.
16896         (PPERM_REVERSE): Ditto.
16897         (PPERM_REV_INV): Ditto.
16898         (PPERM_ZERO): Ditto.
16899         (PPERM_ONES): Ditto.
16900         (PPERM_SIGN): Ditto.
16901         (PPERM_INV_SIGN): Ditto.
16902         (PPERM_SRC1): Ditto.
16903         (PPERM_SRC2): Ditto.
16904         (ix86_expand_sse_movcc): Move the SSE5 test after the if
16905         true/false tests.
16906         (ix86_expand_int_vcond): If SSE5 generate all possible integer
16907         comparisons.
16908         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
16909         says ignore whether the last reference is a memory operand.
16910
16911 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16912             Paolo Bonzini <bonzini at gnu dot org>
16913
16914         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
16915         shift patterns.
16916
16917         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
16918         (vlshr<mode>3): Rename from vlshr<mode>3.
16919         (vashr<mode>3): Rename from vashr<mode>3.
16920         (mulv4sf3): Change the names of vector shift patterns.
16921         (mulv4si3): Ditto.
16922         (negv4sf2): Ditt.
16923
16924         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
16925         shift insns.
16926
16927         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
16928         (SI_SHLHI): Ditto.
16929         (SI_SHL): Ditto.
16930         (SI_SHLI): Ditto.
16931         (SI_ROTH): Ditto.
16932         (SI_ROTHI): Ditto.
16933         (SI_ROT): Ditto.
16934         (SI_ROTI): Ditto.
16935         (SPU_RL_0): Ditto.
16936         (SPU_RL_1): Ditto.
16937         (SPU_RL_2): Ditto.
16938         (SPU_RL_3): Ditto.
16939         (SPU_RL_4): Ditto.
16940         (SPU_RL_5): Ditto.
16941         (SPU_RL_6): Ditto.
16942         (SPU_RL_7): Ditto.
16943         (SPU_SL_0): Ditto.
16944         (SPU_SL_1): Ditto.
16945         (SPU_SL_2): Ditto.
16946         (SPU_SL_3): Ditto.
16947         (SPU_SL_4): Ditto.
16948         (SPU_SL_5): Ditto.
16949         (SPU_SL_6): Ditto.
16950         (SPU_SL_7): Ditto.
16951
16952         * config/spu/spu.md (v): New iterator macro to add v for vector types.
16953         (floatunssidf2_internal): Change vector/vector shift names.
16954         (floatunsdidf2_internal): Ditto.
16955         (mulv8hi3): Ditto.
16956         (ashrdi3): Ditto.
16957         (ashrti3): Ditto.
16958         (cgt_df): Ditto.
16959         (cgt_v2df): Ditto.
16960         (dftsv): Ditto.
16961         (vashl<mode>3): Rename from ashl<mode>3.
16962         (vashr<mode>3): Rename from ashr<mode>3.
16963         (vlshr<mode>3): Rename from lshr<mode>3.
16964         (vrotl<mode>3): Rename from rotl<mode>3.
16965
16966 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16967
16968         PR target/36224
16969         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
16970         multiply gives the wrong value when doing widening multiplies.
16971         (vec_widen_smult_lo_v4si): Ditto.
16972
16973 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
16974
16975         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
16976         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
16977         emit_library_call_value.
16978         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
16979         * tree.h (ECF_LIBCALL_BLOCK): Removed.
16980         * calls.c (initialize_argument_information, precompute_arguments,
16981         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
16982         (precompute_arguments): Removed flags parameter.
16983         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
16984
16985 2008-05-14  Richard Guenther  <rguenther@suse.de>
16986
16987         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
16988         Make sure to register the store if the use is a PHI_NODE.
16989
16990 2008-05-14  Olivier Hainque  <hainque@adacore.com>
16991
16992         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
16993         memory if the component is to be referenced in BLKmode according
16994         to get_inner_reference.
16995
16996 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
16997
16998         * calls.c (emit_library_call_value_1): Restore code clearing
16999         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
17000
17001 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17002             Nicolas Roche  <roche@adacore.com>
17003
17004         * configure.ac: Add support for a "gcc_subdir" variable in
17005         config-lang.in, to denote a subdirectory where the language/GCC
17006         integration files are to be found.
17007         * configure: Regenerate.
17008
17009 2008-05-14  Ira Rosen  <irar@il.ibm.com>
17010
17011         PR tree-optimization/36098
17012         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
17013         value for the first load in the group in case of a gap.
17014         (vect_build_slp_tree): Check that there are no gaps in loads.
17015
17016 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17017
17018         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
17019         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
17020         expand_copysign_bit, ): Change call to emit_no_conflict_block to
17021         emit_insn and remove unneeded code to construct extra args.
17022         (emit_no_conflict_block): Removed.
17023         * optabls.h: (emit_no_conflict_block): Removed.
17024         * cse.c (cse_extended_basic_block): Remove search for
17025         REG_NO_CONFLICT note.
17026         * global.c: Removed incorrect comment added in revision 117.
17027         * expr.c (convert_move): Change call to emit_no_conflict_block to
17028         emit_insn.
17029         * recog.c: Change comments so that they do not mention
17030         REG_NO_CONFLICT.
17031         * local_alloc.c (combine_regs): Removed last parameter.
17032         (no_conflict_p): Removed.
17033         (block_alloc): Removed note, no_conflict_combined_regno and set
17034         local vars. Removed all code to process REG_NO_CONFLICT blocks.
17035         (combine_regs): Removed already_dead and code to look for
17036         REG_NO_CONFLICT notes.
17037         * lower_subreg (remove_retval_note): Removed code to look for
17038         REG_NO_CONFLICT block.
17039         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
17040         (resolve_clobber): Remove code to process libcalls that have
17041         REG_NO_CONFLICT notes.
17042         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
17043         case.
17044         * combine.c (can_combine_p, distribute_notes):  Removed
17045         REG_NO_CONFLICT case.
17046         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
17047         to emit_insns.
17048         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
17049         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
17050         Ditto.
17051         * reg-notes.def (NO_CONFLICT): Removed.
17052
17053 2008-05-14  David S. Miller  <davem@davemloft.net>
17054
17055         * config/sparc/sparc.c (sparc_profile_hook): If
17056         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
17057         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
17058         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17059
17060 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
17061
17062         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
17063
17064 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
17065
17066         PR target/36222
17067         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
17068         and op1 expansion before vector concat to have less live pseudos.
17069
17070 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
17071
17072         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17073         ix86_expand_vector_set if supported.
17074
17075 2008-05-13  Diego Novillo  <dnovillo@google.com>
17076             Kenneth Zadeck  <zadeck@naturalbridge.com>
17077
17078         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
17079
17080         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
17081         phinodes_print_statistics, init_ssanames, fini_ssanames,
17082         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
17083         release_ssa_name, release_defs, replace_ssa_name_symbol,
17084         ssanames_print_statistics): Move ...
17085         * tree-flow.h: ... here.
17086         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
17087         Use FN instead of cfun.
17088         (make_ssa_name_fn): Rename from make_ssa_name.
17089         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
17090         * tree-flow-inline.h (make_ssa_name): Move from
17091         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
17092         * omp-low.c (expand_omp_parallel):
17093         * tree-flow-inline.h (redirect_edge_var_map_result):
17094         * tree-ssa.c (init_tree_ssa): Add argument FN.
17095         Use it instead of cfun.  Update all users.
17096
17097 2008-05-13  Tom Tromey  <tromey@redhat.com>
17098
17099         PR preprocessor/22168:
17100         * doc/cpp.texi (Top): Update menu.
17101         (Alternatives to Wrapper #ifndef): New node.
17102         (Other Directives): Document deprecation.
17103         (Obsolete Features): Remove menu.
17104         (Assertions): Merge node into Obsolete Features.
17105         (Obsolete once-only headers): Move earlier; rename to Alternatives
17106         to Wrapper #ifndef.
17107         * doc/cppopts.texi: Update.
17108         * c.opt (Wdeprecated): Enable for C and ObjC.
17109         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
17110         (C++ Dialect Options): Move -Wno-deprecated from here to...
17111         (Warning Options): ... here.
17112
17113 2008-05-13  Richard Guenther  <rguenther@suse.de>
17114
17115         PR middle-end/36227
17116         * fold-const.c (fold_sign_changed_comparison): Do not allow
17117         changes in pointer-ness.
17118
17119 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17120
17121         PR target/24713
17122         * config/sh/sh.c (sh_expand_prologue): Don't clear
17123         RTX_FRAME_RELATED_P for push insns.
17124
17125 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
17126
17127         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
17128
17129 2008-05-12  Anatoly Sokolov <aesok@post.ru>
17130
17131         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
17132         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
17133         Use 'machine->is_leaf' instead of 'leaf_func_p'.
17134
17135 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
17136
17137         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
17138         (*vec_concatv4sf_sse): This.
17139         (*sse2_concatv2si): Renamed to ...
17140         (*vec_concatv2si_sse2): This.
17141         (*sse1_concatv2si): Renamed to ...
17142         (*vec_concatv2si_sse): This.
17143         (*vec_concatv2di_rex): Renamed to ...
17144         (*vec_concatv2di_rex64): This.
17145         (*vec_concatv2si_sse4_1): New.
17146         (*vec_concatv2di_rex64_sse4_1): Likewise.
17147
17148 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
17149
17150         PR rtl-optimization/36111
17151         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
17152         that was created for swappable operands.
17153
17154 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
17155
17156         PR ada/36001
17157         * Makefile.in: Substitute GNATMAKE and GNATBIND.
17158         * configure.ac: Add call to ACX_PROG_GNAT.
17159
17160 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
17161
17162         * optc-gen.awk: Fix comment typo.
17163
17164 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
17165
17166         * pretty-print.c (pp_integer_with_precision): Use
17167         HOST_LONG_LONG_FORMAT.
17168
17169 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
17170
17171         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
17172
17173 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
17174
17175         * config/i386/i386.c (bdesc_ptest): Removed.
17176         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
17177         (bdesc_args): Add __builtin_ia32_ptestz128,
17178         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
17179         (ix86_init_mmx_sse_builtins): Updated.
17180         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
17181         (ix86_expand_builtin): Updated.
17182
17183 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
17184
17185         * tree-cfg.c (valid_fixed_convert_types_p): New function.
17186         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
17187
17188 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
17189
17190         * value-prof.c (interesting_stringop_to_profile): Do not
17191         return early for BUILT_IN_MEMPCPY.
17192
17193 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
17194
17195         * calls.c (expand_call): Don't use callgraph to increase
17196         preferred_stack_boundary.
17197
17198         * cgraph.h (cgraph_rtl_info): Use unsigned on
17199         preferred_incoming_stack_boundary.
17200
17201         * final.c (rest_of_clean_state): Use unsigned on
17202         preferred_stack_boundary.
17203
17204 2008-05-09  Tom Tromey  <tromey@redhat.com>
17205
17206         PR preprocessor/22231:
17207         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
17208         proceeding.
17209
17210 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
17211
17212         PR tree-optimization/36129
17213         * tree-ssa-ccp.c: Include value-prof.h.
17214         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
17215         built-in function was folded to a constant.
17216         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
17217
17218 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
17219             Sebastian Pop  <sebastian.pop@amd.com>
17220
17221         * tree-scalar-evolution.c: Document instantiate_scev.
17222         (instantiate_parameters_1): Renamed instantiate_scev_1.
17223         Don't use the same loop for instantiation_loop and evolution_loop.
17224         (instantiate_scev): New.
17225         (instantiate_parameters): Moved...
17226         (resolve_mixers): Update call to instantiate_scev_1 to pass the
17227         same loop twice.  Maintains the semantics for this function.
17228         * tree-scalar-evolution.h (instantiate_scev): Declare.
17229         (instantiate_parameters): ...here.  Now static inline.
17230         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
17231         instead of resolve_mixers.
17232
17233 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
17234
17235         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
17236
17237 2008-05-09  Tomas Bily  <tbily@suse.cz>
17238
17239         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
17240         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
17241         * tree-ssa-structalias.c (get_constraint_for): Likewise.
17242         * c-common.c (c_common_truthvalue_conversion): Likewise.
17243         * tree-object-size.c (compute_object_offset): Likewise.
17244         * tree-inline.c (estimate_num_insns_1): Likewise.
17245         * varasm.c (const_hash_1, compare_constant, copy_constant)
17246         (compute_reloc_for_constant, output_addressed_constants)
17247         (initializer_constant_valid_p): Likewise.
17248         * c-omp.c (check_omp_for_incr_expr): Likewise.
17249         * gimplify.c (gimplify_expr): Likewise.
17250         * c-typeck.c (c_finish_return): Likewise.
17251         * tree-vectorizer.c (supportable_widening_operation)
17252         (supportable_narrowing_operation): Likewise.
17253         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
17254         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
17255         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
17256         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
17257         (descr_info_loc): Likewise.
17258         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
17259         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
17260         (fold_unary): Likewise.
17261         * builtins.c (get_pointer_alignment): Likewise.
17262         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
17263         (instantiate_parameters_1): Likewise.
17264         * tree.c (expr_align, stabilize_reference): Likewise.
17265         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
17266         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
17267         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
17268         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
17269         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
17270         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
17271         Likewise.
17272         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
17273         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
17274         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
17275         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
17276         (forward_propagate_comparison)
17277         (tree_ssa_forward_propagate_single_use_vars): Likewise.
17278         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
17279         * emit-rtl.c (component_ref_for_mem_expr)
17280         (set_mem_attributes_minus_bitpos): Likewise.
17281         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
17282         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
17283         Likewise.
17284         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
17285         (build_function_call, pointer_diff, build_compound_expr)
17286         (c_finish_return): Likewise.
17287         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
17288         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
17289         Likewise.
17290         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
17291         * expr.c (is_aligning_offset): Likewise.
17292         * tree-ssa-alias.c (is_escape_site): Likewise.
17293         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
17294         (check_all_va_list_escapes): Likewise.
17295         * tree-ssa-loop-ivopts.c (determine_base_object)
17296         (determine_common_wider_type): Likewise.
17297         * dojump.c (do_jump): Likewise.
17298         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
17299         * tree-gimple.c (is_gimple_cast): Likewise.
17300         * fold-const.c (decode_field_reference, )
17301         (fold_sign_changed_comparison, fold_unary, fold_comparison)
17302         (fold_binary): Likewise.
17303         * tree-ssa-alias-warnings.c (find_alias_site_helper)
17304         (already_warned_in_frontend_p): Likewise.
17305         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
17306         * tree.c (really_constant_p, get_unwidened): Likewise.
17307         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
17308         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
17309         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
17310         Likewise.
17311         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
17312         CONVERT_EXPR_P.
17313         (CONVERT_EXPR_P): Define.
17314         (CASE_CONVERT): Define.
17315
17316 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
17317
17318         PR middle-end/36117
17319         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
17320         (delete_unmarked_insns): When deleting a call, call
17321         delete_unreachable_blocks.
17322         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
17323         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
17324
17325 2008-05-08  Richard Guenther  <rguenther@suse.de>
17326
17327         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
17328         (-ftree-salias): Likewise.
17329         (salias-max-implicit-fields): Remove param documentation.
17330         (salias-max-array-elements): Likewise.
17331         * tree-pass.h (pass_create_structure_vars): Remove.
17332         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17333         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17334         * tree-ssa-alias.c (create_structure_vars): Remove.
17335         (gate_structure_vars): Likewise.
17336         (pass_create_structure_vars): Likewise.
17337         (gate_build_alias): Likewise.
17338         (pass_build_alias): Adjust to run always and dump the function.
17339         * common.opt (ftree-salias): Hide.
17340         * passes.c (init_optimization_passes): Remove
17341         pass_create_structure_vars, adjust comment.
17342         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17343         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17344         * opts.c (decode_options): Do not set flag_tree_salias.
17345         (common_handle_option): Add OPT_ftree_salias to the backward
17346         compatibility section.
17347
17348 2008-05-08  Richard Guenther  <rguenther@suse.de>
17349
17350         * tree-flow-inline.h (var_can_have_subvars): Move ...
17351         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
17352         * tree-flow.h (var_can_have_subvars): Remove.
17353         (push_fields_onto_fieldstack): Remove.
17354         (sort_fieldstack): Likewise.
17355         (struct fieldoff): Move ...
17356         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
17357         alias_set and base_for_components fields.
17358         (sort_fieldstack): Make static.
17359         (push_fields_onto_fieldstack): Likewise.  Remove code that
17360         handles anything but RECORD_TYPEs.  Remove alias_set and
17361         base_for_components handling.
17362         (create_variable_info_for): Adjust.
17363
17364 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
17365
17366         * common.opt (Wframe-larger-than=): Shorten the help message
17367         to one line.
17368         * doc/invoke.texi (Wframe-larger-than=): Add more description.
17369
17370 2008-05-08  Rafael Espíndola  <espindola@google.com>
17371
17372         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
17373         trap.
17374         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
17375         trap and that both operands are gimple values.
17376         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
17377         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
17378         is a fp operation.
17379
17380 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
17381
17382         * read-rtl.c (join_c_conditions): Return the first string if the
17383         two strings are equal.
17384
17385 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
17386
17387         * gensupport.h (pred_data): Add a "num_codes" field.
17388         (add_predicate_code): Declare.
17389         * gensupport.c (add_predicate_code): New function.
17390         (std_pred_table): Add an "allows_const_p" field.
17391         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
17392         Remove the (incomplete) list of such codes from the codes field.
17393         (init_predicate_table): Use add_predicate_code.  Add all
17394         RTX_CONST_OBJs if allows_const_p is true.
17395         * genrecog.c (process_define_predicate): Use add_predicate_code.
17396
17397 2008-05-08  David Daney  <ddaney@avtrex.com>
17398             Richard Sandiford  <rsandifo@nildram.co.uk>
17399
17400         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
17401         special case of constant zero operands.
17402         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
17403         old and new values.  Special case constant zero values.
17404         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
17405         fails.
17406         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
17407         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
17408
17409 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
17410
17411         PR target/36090
17412         * simplify-rtx.c (simplify_plus_minus): Create CONST of
17413         similar RTX_CONST_OBJ before CONST_INT.
17414
17415 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
17416
17417         * stmt.c (expand_stack_restore): Change sa mode if needed.
17418
17419 2008-05-08  Richard Guenther  <rguenther@suse.de>
17420
17421         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
17422         return type to bool.
17423         (ix86_sol10_return_in_memory): Likewise.
17424         (ix86_i386elf_return_in_memory): Likewise.
17425         (ix86_i386interix_return_in_memory): Likewise.
17426         * config/i386/i386.c (ix86_return_in_memory): Likewise.
17427         (ix86_sol10_return_in_memory): Likewise.
17428         (ix86_i386elf_return_in_memory): Likewise.
17429         (ix86_i386interix_return_in_memory): Likewise.
17430
17431 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
17432
17433         PR bootstrap/36180
17434         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
17435         fndecl argument.
17436         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
17437         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
17438         declared in front.
17439
17440 2008-05-08  Richard Guenther  <rguenther@suse.de>
17441
17442         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
17443         * tree-data-ref.h (struct dr_alias): Remove subvars field.
17444         (DR_SUBVARS): Remove.
17445         * tree-dfa.c (dump_subvars_for): Remove.
17446         (debug_subvars_for): Likewise.
17447         (dump_variable): Do not dump subvars.
17448         (remove_referenced_var): Do not remove subvars.
17449         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
17450         (lookup_subvars_for_var): Remove.
17451         (get_subvars_for_var): Likewise.
17452         (get_subvars_at): Likewise.
17453         (get_first_overlapping_subvar): Likewise.
17454         (overlap_subvar): Likewise.
17455         * tree-flow.h (subvar_t): Remove.
17456         (struct var_ann_d): Remove subvars field.
17457         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
17458         argument.  Remove special handling of SFTs.
17459         (compute_tag_properties): Likewise.
17460         (set_initial_properties): Likewise.
17461         (compute_call_clobbered): Likewise.
17462         (count_mem_refs): Likewise.
17463         (compute_memory_partitions): Likewise.
17464         (compute_flow_insensitive_aliasing): Likewise.
17465         (setup_pointers_and_addressables): Likewise.
17466         (new_type_alias): Likewise.
17467         (struct used_part): Remove.
17468         (used_portions): Likewise.
17469         (struct used_part_map): Likewise.
17470         (used_part_map_eq): Likewise.
17471         (used_part_map_hash): Likewise.
17472         (free_used_part_map): Likewise.
17473         (up_lookup): Likewise.
17474         (up_insert): Likewise.
17475         (get_or_create_used_part_for): Likewise.
17476         (create_sft): Likewise.
17477         (create_overlap_variables_for): Likewise.
17478         (find_used_portions): Likewise.
17479         (create_structure_vars): Likewise.
17480         * tree.def (STRUCT_FIELD_TAG): Remove.
17481         * tree.h (MTAG_P): Adjust.
17482         (struct tree_memory_tag): Remove base_for_components and
17483         unpartitionable flags.
17484         (struct tree_struct_field_tag): Remove.
17485         (SFT_PARENT_VAR): Likewise.
17486         (SFT_OFFSET): Likewise.
17487         (SFT_SIZE): Likewise.
17488         (SFT_NONADDRESSABLE_P): Likewise.
17489         (SFT_ALIAS_SET): Likewise.
17490         (SFT_UNPARTITIONABLE_P): Likewise.
17491         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
17492         (union tree_node): Remove sft field.
17493         * alias.c (get_alias_set): Remove special handling of SFTs.
17494         * print-tree.c (print_node): Remove handling of SFTs.
17495         * tree-dump.c (dequeue_and_dump): Likewise.
17496         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
17497         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
17498         * tree-predcom.c (set_alias_info): Do not set subvars.
17499         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
17500         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
17501         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
17502         (add_vars_for_offset): Remove.
17503         (add_virtual_operand): Remove special handling of SFTs.
17504         (add_call_clobber_ops): Likewise.
17505         (add_call_read_ops): Likewise.
17506         (get_asm_expr_operands): Likewise.
17507         (get_modify_stmt_operands): Likewise.
17508         (get_expr_operands): Likewise.
17509         (add_to_addressable_set): Likewise.
17510         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
17511         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
17512         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
17513         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
17514         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
17515         (tree_node_structure): Likewise.
17516         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
17517         handling of SFTs.
17518         (find_what_p_points_to): Likewise.
17519
17520 2008-05-08  Sa Liu  <saliu@de.ibm.com>
17521
17522         * config/spu/spu.md: Fixed subti3 pattern.
17523
17524 2008-05-08  Richard Guenther  <rguenther@suse.de>
17525
17526         PR middle-end/36154
17527         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
17528         sure to create a representative for trailing arrays for PTA.
17529
17530 2008-05-08  Richard Guenther  <rguenther@suse.de>
17531
17532         PR middle-end/36172
17533         * fold-const.c (operand_equal_p): Two objects which types
17534         differ in pointerness are not equal.
17535
17536 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
17537
17538         * calls.c (compute_argument_block_size): Add argument tree fndecl.
17539         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
17540         (emit_library_call_value_1): Add new variable fndecl initialized by
17541         NULL_TREE. It should be the decl type of orgfun, but this information
17542         seems not to be available here, so it uses the default calling abi.
17543         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
17544         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
17545         by TARGET_RETURN_IN_MEMORY.
17546         * config/i386/i386-interix.h: Likewise.
17547         * config/i386/i386.h: Likewise.
17548         * config/i386/i386elf.h: Likewise.
17549         * config/i386/ptx4-i.h: Likewise.
17550         * config/i386/sol2-10.h: Likewise.
17551         * config/i386/sysv4.h: Likewise.
17552         * config/i386/vx-common.h: Likewise.
17553         * config/cris/cris.h: Removed #if 0 clause.
17554         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
17555         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
17556         argument.
17557         (ix86_sol10_return_in_memory): Likewise.
17558         (ix86_i386elf_return_in_memory): New.
17559         (ix86_i386interix_return_in_memory): New.
17560         * config/mt/mt-protos.h (mt_return_in_memory): New.
17561         * config/mt/mt.c: Likewise.
17562         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17563         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
17564         * config/bfin/bfin.h: Likewise.
17565         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
17566         argument.
17567         * config/bfin/bfin.c: Likewise.
17568         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17569         * config/alpha/unicosmk.h: Likewise.
17570         * config/i386/cygming.h: Likewise.
17571         * config/iq2000/iq2000.h: Likewise.
17572         * config/mips/mips.h: Likewise.
17573         * config/mn10300/mn10300.h: Likewise.
17574         * config/rs6000/rs6000.h: Likewise.
17575         * config/score/score.h: Likewise.
17576         * config/spu/spu.h: Likewise.
17577         * config/v850/v850.h: Likewise.
17578         * defaults.h: Likewise.
17579         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
17580         * expr.c (emit_block_move): Adjust use of
17581         OUTGOING_REG_PARM_STACK_SPACE.
17582         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
17583         OUTGOING_REG_PARM_STACK_SPACE.
17584         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
17585
17586 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
17587
17588         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
17589         on OMP_RETURN for OMP_FOR.
17590
17591         PR debug/35896
17592         * dwarf2out.c (dw_expand_expr, common_check): Removed.
17593         (fortran_common): New function.
17594         (gen_variable_die): Call fortran_common instead of common_check,
17595         adjust for it returning tree instead of rtx.  Formatting.
17596
17597 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
17598
17599         PR rtl/7335
17600         PR rtl/33826
17601         * see.c (see_copy_insn): Copy new pure const attributes for new call.
17602         * c-decl.c (merge_decls): Ditto.
17603         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
17604         to RTL_CONST_OR_PURE_CALL_P.
17605         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
17606         Initialized DECL_LOOPING_CONST_PURE.
17607         (process_call_operands): Set tree_side_effects properly.
17608         * tree.h (TREE_READONLY_DECL_P): Removed.
17609         (DECL_IS_PURE): Renamed to DECL_PURE_P.
17610         (DECL_LOOPING_OR_CONST_P): New macro.
17611         (struct tree_function_decl): Added looping_const_or_pure_p.
17612         (ECF_*) Renumbered.
17613         (ECF_LOOPING_OR_CONST_P): New macro.
17614         * rtlanal.c (pure_const_p): Removed.
17615         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
17616         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
17617         to RTL_CONST_CALL_P.
17618         * ipa-pure-const.c (pure_const_state_e): Added looping field.
17619         (check_decl, check_tree, check_call, scan_function): Initialize
17620         looping.
17621         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
17622         (static_execute): Set looping true for recursive functions.
17623         Undo setting state to IPA_NEITHER for recursive functions.
17624         * cse.c (cse_insn):
17625         * ifcvt.c (noce_can_store_speculate_p): Changed
17626         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
17627         RTL_CONST_OR_PURE_CALL_P.
17628         * dse.c (scan_insn): Ditto.
17629         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
17630         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
17631         RTL_CONST_OR_PURE_CALL_P.
17632         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
17633         pure_call_p to RTL_CONST_CALL_P.
17634         * gimplify.c (gimplify_call_expr): Clear side effects for
17635         non-looping pure and constant calls.
17636         * calls.c (emit_call_1): Set rtl flags from ecf flags.
17637         (flags_from_decl_or_type): Set ecf flags from decl flags.
17638         (initialize_argument_information): Turn off
17639         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
17640         Change const to pure if callee_copies is true rather than just
17641         turning off const.
17642         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
17643         way of marking pure calls.
17644         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
17645         Remove hack that was supposed to fix pr7335 and remove old
17646         way of marking pure calls.
17647         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
17648         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
17649         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
17650         RTL_CONST_OR_PURE_CALL_P.
17651         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
17652         * loop-invariant.c (find_exits, find_invariant_bb): Changed
17653         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
17654         * sched-deps.c (schedule_analyze): Ditto.
17655         * rtl.h (struct rtx_def): Use call field, unchanging field, and
17656         return_val field of calls to represent pure and const function info.
17657         (CONST_OR_PURE_CALL_P): Deleted macro.
17658         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
17659         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
17660         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
17661         TREE_READONLY.
17662         * tree-optimize.c (execute_fixup_cfg): Added test for
17663         ECF_LOOPING_CONST_OR_PURE.
17664         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
17665         DECL_PURE_P.
17666         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
17667         effects for looping pure or const calls.
17668         (verify_gimple_expr): Added verification code.
17669         * config/alpha/alpha.c (alpha_legitimize_address,
17670         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
17671         RTL_CONST_CALL_P.
17672         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
17673         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
17674         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
17675         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
17676         RTL_CONST_OR_PURE_CALL_P.
17677         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
17678         and const calls to be deleted.
17679
17680 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
17681
17682         PR target/35714
17683         * config/i386/mmx.md (mmx_subv2sf3): New expander.
17684         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
17685         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
17686         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
17687         to handle nonimmediate operands.
17688         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
17689         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
17690         to handle nonimmediate operands.
17691         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
17692         (mmx_pmulhrwv4hi3): New expander.  Use
17693         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17694         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
17695         (sse2_umulv1siv1di3): New expander.  Use
17696         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17697         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
17698         (mmx_eq<mode>3): New expander.  Use
17699         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17700         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
17701         (mmx_uavgv8qi3): New expander.  Use
17702         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17703         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
17704         (mmx_uavgv4hi3): New expander.  Use
17705         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17706
17707         * config/i386/sse.md
17708         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
17709         to handle nonimmediate operands.
17710         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
17711         to handle nonimmediate operands.
17712         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
17713         to handle nonimmediate operands.
17714         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
17715         to handle nonimmediate operands.
17716         (sse2_unpckhpd_exp): New expander.  Use
17717         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17718         (sse2_unpcklpd_exp): New expander.  Use
17719         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17720         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
17721         to handle nonimmediate operands.
17722         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
17723         to handle nonimmediate operands.
17724         (*sse2_<plusminus_insn><mode>3): Rename from
17725         sse2_<plusminus_insn><mode>3 insn pattern.
17726         (sse2_<plusminus_insn><mode>3): New expander.  Use
17727         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17728         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
17729         (sse2_umulv2siv2di3): New expander.  Use
17730         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17731         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
17732         (sse4_1_mulv2siv2di3): New expander.  Use
17733         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17734         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
17735         (sse2_pmaddwd): New expander.  Use
17736         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17737         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
17738         (sse2_eq<mode>3): New expander.  Use
17739         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17740         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
17741         (sse4_1_eqv2di3): New expander.  Use
17742         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17743         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
17744         (sse2_uavgv16qi3): New expander.  Use
17745         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17746         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
17747         (sse2_uavgv16qi3): New expander.  Use
17748         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17749         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
17750         (sse2_uavgv8hi3): New expander.  Use
17751         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17752         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
17753         (ssse3_pmulhrswv8hi3): New expander.  Use
17754         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17755         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
17756         (ssse3_pmulhrswv4hi3): New expander.  Use
17757         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17758
17759         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
17760         (<sse>_vmmul<mode>3): Ditto.
17761         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
17762         (divv2df3): Ditto.
17763         (ssse3_pmaddubsw128): Use register_operand for operand 1.
17764         (ssse3_pmaddubsw): Ditto.
17765
17766         * config/i386/i386.c (struct_builtin_description)
17767         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
17768         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
17769         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
17770         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
17771         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
17772         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
17773         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
17774         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
17775         (ix86_fixup_binary_operands): Assert that src1
17776         and src2 must have the same mode when swapped.
17777         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
17778         and ix86_binary_operator_ok.  Do not force operands in registers
17779         when optimizing.
17780
17781 2008-05-07  Jan Hubicka  <jh@suse.cz>
17782
17783         * cgraph.c (dump_cgraph_node): Update.
17784         * cgraph.h (cgraph_local_info): Break out inline summary.
17785         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
17786         hook.
17787         * ipa-inline (inline_summary): New accestor function.
17788         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
17789         cgraph_decide_inlining, compute_inline_parameters): Update.
17790         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
17791
17792 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
17793
17794         Cleanup ColdFire scheduling support and add V4 pipeline model.
17795
17796         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
17797         (define_attr cpu): Add cfv4 value.
17798         (define_attr type, define_attr type1): Merge into a single 'type'
17799         attribute.  Update all uses.
17800         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
17801         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
17802         Update all uses.
17803         (define_attr opx_mem, define_attr opy_mem): Remove.
17804         (define_attr op_mem): Clean up, update comment.
17805         (define_attr size): Use specific values instead of general int.
17806         (define_attr guess, define_attr split): Remove.  Update all uses.
17807         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
17808         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
17809         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
17810         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
17811         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
17812         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
17813         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
17814         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
17815         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
17816         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
17817         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
17818         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
17819         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
17820         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
17821         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
17822         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
17823         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
17824         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
17825         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
17826         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
17827         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
17828         Update or set attributes.
17829         (stack_tie): New fake instruction.
17830
17831         * config/m68k/m68k.h (TUNE_CFV4): New macro.
17832         (m68k_sched_attr_size): Update declaration.
17833         (m68k_sched_attr_type2): Remove.
17834         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
17835         Declare new bypass predicates.
17836
17837         * config/m68k/m68k.c (m68k_sched_issue_rate,
17838         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
17839         implementations.
17840         (TARGET_SCHED_ISSUE_RATE,
17841         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
17842         (override_options): Handle scheduling for ColdFire V4 core.
17843         (m68k_expand_prologue): Emit stack_tie.
17844         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
17845         'OP_TYPE_FPN'.  Update all uses.
17846         (sched_guess_p): Remove.
17847         (sched_address_type): Handle symbolic addresses.
17848         (sched_get_operand): New static function.
17849         (sched_operand_type): Merge into sched_attr_op_type.
17850         (sched_attr_op_type): Handle FP registers, handle quick constants,
17851         update.
17852         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
17853         (m68k_sched_attr_size): Update.  Move logic to ...
17854         (sched_get_attr_size_int): New static function.
17855         (sched_get_opxy_mem_type): New static function.
17856         (m68k_sched_attr_op_mem): Update.
17857         (m68k_sched_attr_type2): Remove.
17858         (sched_cfv4_bypass_data): New static variable.
17859         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
17860         (m68k_sched_issue_rate): Implement scheduler hook.
17861         (struct _sched_ib: enabled_p): New field.
17862         (m68k_sched_variable_issue): Update.  Handle V4.
17863         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
17864         sched_dump_class_func_t, sched_dump_split_class,
17865         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
17866         sched_dump_dfa_class, m68k_sched_dump): Remove.
17867         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
17868         hook.
17869         (m68k_sched_init_global): Remove statisctics dumping, introduce
17870         sanity check that all instructions have pipeline reservations.  Handle
17871         ColdFire V4 core.
17872         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
17873         Handle ColdFire V4 core.
17874         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
17875         New static functions.
17876         (m68k_sched_address_bypass_p): New bypass predicate.
17877         (sched_get_indexed_address_scale): New static function.
17878         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
17879
17880         * cf.md: Update comments.
17881         (define_attr type2): Remove.  Use 'type' attribute instead.
17882         Update all uses.
17883         (cf_ib): Rename to cfv123_ib.  Update all uses.
17884         (cf_oep): Rename to cfv123_oep.  Update all uses.
17885         (cf_chr): Rename to cfv123_chr.  Update all uses.
17886         (cf_mem): Rename to cfv123_mem.  Update all uses.
17887         (cf_mac): Move to more appropriate place.
17888         (cfv123_guess): New automaton and cpu_unit.
17889         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
17890         Update uses of 'size' attribute.  Handle before reload scheduling.
17891         (cfv123_guess): New dummy reservation for unhandled instructions.
17892         (cfv4_*): Pipeline description of ColdFire V4 core.
17893         (ignore): New reservation to handle 'ignore' type.
17894
17895 2008-05-07  Ian Lance Taylor  <iant@google.com>
17896
17897         PR middle-end/36013
17898         * gimplify.c (find_single_pointer_decl_1): Don't look through
17899         indirections.
17900         (find_single_pointer_decl): Adjust comments.
17901
17902 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
17903
17904         PR middle-end/36137
17905         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
17906         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
17907
17908         PR middle-end/36106
17909         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
17910         integral type rather than floating point, then VIEW_CONVERT_EXPR
17911         to the floating point type.
17912
17913 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
17914
17915         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
17916         TFmode op0 to register.
17917
17918 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
17919
17920         * c-decl.c (grokdeclarator): Comment typo.
17921
17922 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
17923
17924         * tree-flow.h: Remove prototype for computed_goto_p.
17925         * tree-cfg.c (computed_goto_p): Make static.
17926
17927 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
17928
17929         PR target/35657
17930         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
17931         (contains_aligned_value_p): This.  Handle _Decimal128.
17932         (ix86_function_arg_boundary): Only align _Decimal128 to its
17933         natural boundary and handle it properly.
17934
17935 2008-05-06  Martin Jambor  <mjambor@suse.cz>
17936
17937         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
17938         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
17939         (ipcp_method_set_orig_node): Removed.
17940         (ipcp_cval_get_cvalue_type): Removed.
17941         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
17942         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
17943         (ipcp_cval_set_cvalue_type): Removed.
17944         (ipcp_cval_get_cvalue): Removed.
17945         (ipcp_cval_set_cvalue): Removed.
17946         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
17947         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
17948         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
17949         (ipcp_cval_meet): Renamed to ipa_lattice_meet
17950         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
17951         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
17952         (ipcp_get_ith_lattice): Changed parameters.
17953         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
17954         (ipcp_lattice_from_jfunc): Changed parameters.
17955         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
17956         (ipcp_method_cval_print): Added temporary variable info.
17957         (ipcp_redirect): Removed already unused local variable caller.
17958         (ipcp_redirect): New temporary variable orig_callee_info
17959         (ipcp_redirect): Removed newly unused local variable callee.
17960         (ipcp_redirect): Removed (a bit confusing) local variable type.
17961         (ipcp_insert_stage): Added local variable info.
17962         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
17963         renamed too
17964         (ipcp_formal_create): Removed.
17965         (ipcp_method_cval_set): Removed.
17966         (ipcp_propagate_stage): Renamed lattice variables.
17967         (ipcp_method_cval_set_cvalue_type): Removed.
17968         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
17969         (ipcp_print_all_lattices): Changed printed strings to refer to
17970         lattices rather than cvals.
17971         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
17972         (ipcp_propagate_const): Changed formal parameters.
17973         (build_const_val): Changed formal parameters.
17974         (ipcp_insert_stage): Removed useless variable cvalue
17975         (build_const_val): Changed formal parameters.
17976         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
17977         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
17978         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
17979         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
17980         (ipcp_print_func_profile_counts): Changed string from "method" to
17981         "function"
17982         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
17983         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
17984         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
17985         (ipcp_structures_print): Renamed to ipcp_print_all_structures
17986         (ipcp_profile_print): Renamed to ipcp_print_profile_data
17987         (ipcp_lat_is_const): Changed parameters and made inline.
17988         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
17989         (ipcp_redirect): Renamed to ipcp_need_redirect_p
17990         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
17991         the predicate condition directly
17992         (ipcp_propagate_stage): Added local variable args. Removed local
17993         variable callee.  (Both are mere code simplifications.)
17994         (ipcp_method_dont_insert_const): Renamed to
17995         ipcp_node_not_modifiable_p.
17996         (ipcp_node_not_modifiable_p): Made inline.
17997         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
17998         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
17999         (ipcp_print_all_lattices): Removed variable cvalue
18000         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
18001         Updated comments.
18002
18003 2008-05-06  Olivier Hainque  <hainque@adacore.com>
18004
18005         * tree-sra.c (try_instantiate_multiple_fields): Early return
18006         if field has POINTER_TYPE.
18007
18008 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
18009
18010         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
18011         by using 'q' specifier for instruction.
18012         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
18013
18014 2008-05-06  Anatoly Sokolov <aesok@post.ru>
18015
18016         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18017         Change mode of zero_extract from QImode to HImode.
18018         (sign bit tests peepholes): (Ditto.).
18019
18020 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
18021
18022         * config/i386/mmx.md: Remove double backslashes from asm templates.
18023         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
18024         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18025         to handle nonimmediate operands.
18026         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
18027         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18028         to handle nonimmediate operands.
18029         (*mmx_<code>v2sf3_finite): New insn pattern.
18030         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
18031         (mmx_<code>v2sf3): New expander.  Use
18032         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18033         (mmx_<plusminus_insn><mode>3): New expander.  Use
18034         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18035         (*mmx_<plusminus_insn><mode>3): New insn pattern.
18036         (mmx_add<mode>3): Removed.
18037         (mmx_ssadd<mode>3): Ditto.
18038         (mmx_usadd<mode>3): Ditto.
18039         (mmx_sub<mode>3): Ditto.
18040         (mmx_sssub<mode>3): Ditto.
18041         (mmx_ussub<mode>3): Ditto.
18042         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
18043         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
18044         to handle nonimmediate operands.
18045         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
18046         insn pattern.
18047         (mmx_smulv4hi3_highpart): New expander.  Use
18048         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18049         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
18050         insn pattern.
18051         (mmx_umulv4hi3_highpart): New expander.  Use
18052         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18053         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
18054         (mmx_<code>v4hi3): New expander.  Use
18055         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18056         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
18057         (mmx_<code>v8qi3): New expander.  Use
18058         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18059         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
18060         (mmx_<code><mode>3): New expander.  Use
18061         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18062
18063 2008-05-05  Jan Hubicka  <jh@suse.cz>
18064
18065         PR tree-optimization/36118
18066         * passes.c (pass_init_dump_file): Fix dump header.
18067
18068 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18069
18070         PR middle-end/36141
18071         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
18072         VCE for function decls.
18073
18074 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18075
18076         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
18077
18078 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18079
18080         * config/i386/i386.md (sat_plusminus): New.
18081         (plusminus_insn): Likewise.
18082         (plusminus_mnemonic): Likewise.
18083         (addsub): Removed.
18084         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
18085         (*<addsub><mode>3_cc_overflow): Renamed to ...
18086         (*<plusminus_insn><mode>3_cc_overflow): This.
18087         (*<addsub>si3_zext_cc_overflow): Renamed to ...
18088         (*<plusminus_insn>si3_zext_cc_overflow): This.
18089
18090         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
18091         (<plusminus_insn><mode>3): This.
18092         (*<addsub><mode>3): Renamed to ...
18093         (*<plusminus_insn><mode>3): This.
18094         (<sse>_vm<addsub><mode>3): Renamed to ...
18095         (<sse>_vm<plusminus_insn><mode>3): This.
18096         (sse3_h<addsub>v4sf3): Renamed to ...
18097         (sse3_h<plusminus_insn>v4sf3): This.
18098         (sse3_h<addsub>v2df3): Renamed to ...
18099         (sse3_h<plusminus_insn>v2df3): This.
18100         (<plusminus_insn><mode>3): New.
18101         (*<plusminus_insn><mode>3): Likewise.
18102         (sse2_<plusminus_insn><mode>3): Likewise.
18103         (add<mode>): Removed.
18104         (*add<mode>3): Likewise.
18105         (sse2_ssadd<mode>3): Likewise.
18106         (sse2_usadd<mode>3): Likewise.
18107         (sub<mode>3): Likewise.
18108         (*sub<mode>3): Likewise.
18109         (sse2_sssub<mode>3): Likewise.
18110         (sse2_ussub<mode>3): Likewise.
18111
18112 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
18113
18114         * gthr-single.h: Add in required interface elements as per gthr.h.
18115         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
18116         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
18117         Generalize UNUSED macro.
18118         (__gthread_once): Add.
18119         (__gthread_key_create): Add.
18120         (__gthread_key_delete): Add.
18121         (__gthread_getspecific): Add.
18122         (__gthread_setspecific): Add.
18123
18124 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
18125
18126         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
18127         the same size types for the indirect reference on the rhs, then
18128         create a VCE.
18129
18130 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
18131
18132         * config/i386/i386.md
18133         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
18134         one insn template instead of template series.
18135         (*xordi_1_rex64): Ditto.
18136         (*xordi_2_rex64): Ditto.
18137
18138 2008-05-05  Ira Rosen  <irar@il.ibm.com>
18139
18140         PR tree-optimization/36119
18141         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
18142         in case of SLP.
18143
18144 2008-06-04  Jan Hubicka  <jh@suse.cz>
18145
18146         tree-optimization/36100
18147         * tree-pass.h (pass_O0_always_inline): Declare.
18148         * ipa-inline.c (inline_transform): Remove dead code.
18149         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
18150         pass_O0_always_inline): New.
18151         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
18152
18153 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
18154
18155         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
18156         mnemonic in this_param move for TARGET_64BIT.
18157
18158 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
18159
18160         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
18161         (*strmovsi_rex_1): Ditto.
18162         (*strsetsi_1): Ditto.
18163         (*strsetsi_rex_1): Ditto.
18164
18165         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
18166         adddicc expanders using SWI mode iterator.
18167
18168 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
18169
18170         PR target/36121
18171         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
18172         argument handling.
18173
18174 2008-05-04  David S. Miller  <davem@davemloft.net>
18175
18176         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
18177         (sparc*-*-linux*): Use linux.h in tm_file.
18178         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
18179         compiler defaulting to 32-bit.
18180         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
18181         no longer needed.
18182         * config/sparc/linux.h: Remove definitions now obtained
18183         properly from linux.h
18184         * config/sparc/linux64.h: Likewise.
18185         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
18186         don't want this setting for 32-bit builds in a biarch compiler.
18187         * doc/install.texi: Add sparc-linux to list of targets
18188         supporting --enable-targets=all.
18189
18190 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
18191
18192         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
18193
18194 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
18195
18196         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
18197         after V4SI_FTYPE_V8HI.
18198         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
18199         case V4SI_FTYPE_V2DF.
18200
18201 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
18202
18203         * doc/invoke.texi (max-flow-memory-locations): Removed.
18204         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
18205
18206 2008-05-03  Richard Guenther  <rguenther@suse.de>
18207
18208         PR middle-end/34973
18209         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
18210
18211 2008-05-02  David S. Miller  <davem@davemloft.net>
18212
18213         * config.gcc (need_64bit_hwint): Document libcpp dependency.
18214
18215 2008-05-02  Simon Baldwin <simonb@google.com>
18216
18217         PR bootstrap/36108
18218         * c-common.h (warn_array_subscript_range): Removed.
18219         * c-common.c (warn_array_subscript_range): Ditto.
18220         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
18221         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
18222
18223 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18224
18225         * config/i386/i386.c (ix86_special_builtin_type): New.
18226         (bdesc_special_args): Likewise.
18227         (ix86_expand_special_args_builtin): Likewise.
18228         (ix86_init_mmx_sse_builtins): Updated.
18229         (ix86_expand_builtin): Updated.
18230         (ix86_expand_store_builtin): Removed.
18231         (ix86_expand_unop_builtin): Likewise.
18232
18233         * config/i386/mm3dnow.h (__v2sf): Moved to ...
18234         * config/i386/mmintrin.h (__v2sf): Here.
18235
18236         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
18237         const __v2sf.
18238         (_mm_loadl_pi): Likewise.
18239         (_mm_storeh_pi): Replace __v2si with __v2sf.
18240         (_mm_storel_pi): Likewise.
18241
18242         * doc/extend.texi: Correct __builtin_ia32_loadhps,
18243         __builtin_ia32_loadlps, __builtin_ia32_storehps,
18244         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
18245         __builtin_ia32_loadlpd.
18246
18247 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18248
18249         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
18250         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
18251         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
18252         (ix86_init_mmx_sse_builtins): Updated.
18253         (ix86_expand_args_builtin): Likewise.
18254         (ix86_expand_builtin): Likewise.
18255         (ix86_expand_unop1_builtin): Renamed to ...
18256         (ix86_expand_unop_vec_merge_builtin): This.
18257
18258 2008-05-01  Jan Hubicka  <jh@suse.cz>
18259
18260         PR bootstrap/36100
18261         * ipa-inline.c (inline_generate_summary): Make static.
18262         (inline_transform): Do not call inlining at -O0; make static.
18263         * passes.c (execute_todo): Add sanity check.
18264         (execute_one_ipa_transform_pass): Execute proper flags.
18265
18266 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
18267
18268         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
18269         (DECL_NONADDRESSABLE_P): Likewise.
18270         * alias.c (record_component_aliases): Fix comment.
18271
18272 2008-05-01  Simon Baldwin <simonb@google.com>
18273
18274         * c-common.h (warn_array_subscript_range): New function.
18275         * c-common.c (warn_array_subscript_range): Ditto.
18276         * tree-vrp.c (check_array_ref): Corrected code to agree with
18277         comment, ignoring only arrays of size 0 or size 1.
18278         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
18279
18280 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18281
18282         * config/i386/i386.c (ix86_builtin_type): Replace
18283         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
18284         (bdesc_args): Updated.
18285         (ix86_init_mmx_sse_builtins): Likewise.
18286         (ix86_expand_args_builtin): Likewise.
18287
18288         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
18289         with __v1di.
18290
18291         * doc/extend.texi: Correct __builtin_ia32_palignr.
18292
18293 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18294
18295         PR target/36095
18296         * config/i386/i386.c (bdesc_crc32): Removed.
18297         (ix86_expand_crc32): Likewise.
18298         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
18299         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
18300         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
18301         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
18302         UINT_FTYPE_UINT_UCHAR.
18303         (bdesc_args): Updated. Add crc32 builtins.
18304         (ix86_init_mmx_sse_builtins): Updated.
18305         (ix86_expand_args_builtin): Updated to support subreg.
18306
18307         * doc/extend.texi: Correct __builtin_ia32_crc32di.
18308
18309 2008-05-01  Jan Hubicka  <jh@suse.cz>
18310
18311         * tree-pass.h (opt_pass): Add IPA_PASS.
18312         (varpool_node, cgraph_node): Forward declare.
18313         (ipa_opt_pass): Define.
18314         (pass_ipa_inline): Turn into ipa_opt_pass.
18315         (pass_apply_inline): Remove.
18316         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
18317         (apply_inline): Turn into ....
18318         (inline_transform): ... this one.
18319         (inline_generate_summary): New function.
18320         (pass_apply_inline): Remove.
18321         * function.h (ipa_opt_pass): Forward declare structure; typedef;
18322         vector.
18323         (struct function): Add ipa_transforms_to_apply.
18324         * passes.c (register_one_dump_file): Work on IPA_PASS.
18325         (init_optimization_passes): Remove pass_inline_parameters and
18326         pass_apply_inline.
18327         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
18328         (execute_one_pass) ... here; apply transforms when possible.
18329         (add_ipa_transform_pass, execute_ipa_summary_asses,
18330         execute_one_ipa_transform_pass): New.
18331         (execute_ipa_pass_list): Update for IPA_PASS type.
18332
18333 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18334
18335         * config/i386/i386.c (ix86_builtin_type): Add
18336         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
18337         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
18338         (bdesc_args): Add SSE4a builtins.
18339         (ix86_init_mmx_sse_builtins): Updated.
18340         (ix86_expand_args_builtin): Likewise.
18341         (ix86_expand_builtin): Likewise.
18342
18343 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18344
18345         * config/i386/i386.c (ix86_builtin_type): Add
18346         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
18347         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
18348         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
18349         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
18350         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
18351         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
18352         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
18353         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
18354         and DI_FTYPE_DI_DI_INT.
18355         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
18356         (ix86_init_mmx_sse_builtins): Updated.
18357         (ix86_expand_args_builtin): Likewise.
18358         (ix86_expand_builtin): Likewise.
18359         (ix86_expand_binop_imm_builtin): Removed.
18360
18361         * doc/extend.texi: Correct __builtin_ia32_palignr128.
18362
18363 2008-04-30  Richard Guenther  <rguenther@suse.de>
18364
18365         PR tree-optimization/32921
18366         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
18367
18368 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
18369
18370         * config/arm/arm.c (arm_unwind_emit): Use
18371         crtl->all_throwers_are_sibcalls instead of
18372         cfun->all_throwers_are_sibcalls.
18373         (arm_output_fn_unwind): Likewise.
18374         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
18375         instead of cfun->uses_pic_offset_table.
18376         (frv_expand_prologue): Likewise.
18377         (frv_frame_pointer_required): Likewise.
18378         (frv_expand_fdpic_call): Likewise.
18379         (frv_emit_movsi): Likewise.
18380         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
18381         cfun->returns_pcc_struct instead of
18382         current_function_returns_pcc_struct.
18383         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
18384         instead of cfun->calls_eh_return.
18385         (m32c_pushm_popm): Likewise.
18386         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
18387         "extern" declaration.
18388
18389 2008-04-30  Richard Guenther  <rguenther@suse.de>
18390
18391         PR tree-optimization/21636
18392         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
18393         constant address.
18394         (evaluate_stmt): Print the likely value.
18395         (ccp_visit_stmt): Avoid excessive vertical spacing.
18396
18397 2008-04-30  Rafael Espíndola  <espindola@google.com>
18398
18399         * builtins.c (fold_call_expr): Return realret.
18400         * tree-ssa-threadedge.c
18401         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
18402         __builtin_object_size.
18403
18404 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
18405
18406         * gcc.c (wrapper_string): New variable.
18407         (insert_wrapper): New function.
18408         (execute): New option -wrapper.
18409         * doc/invoke.texi (Overall Options): New driver option -wrapper.
18410
18411 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
18412
18413         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
18414         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
18415         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
18416         from...
18417         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
18418         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
18419         config/rs6000/e500crtres64gprctr.asm,
18420         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
18421         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
18422         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
18423         config/rs6000/e500crtsav64gprctr.asm,
18424         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
18425         config/rs6000/e500crtsavg64gprctr.asm: New files.
18426         * config/rs6000/t-ppccomm: Add build rules for new files.
18427         (LIB2FUNCS_STATIC_EXTRA): Add new files.
18428         * config/rs6000/t-netbsd: Add build rules for new files.
18429         (LIB2FUNCS_STATIC_EXTRA): New variable.
18430         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
18431         (CRTSAVRES_DEFAULT_SPEC): Likewise.
18432         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
18433
18434 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
18435
18436         * config/i386/i386.c (ix86_builtin_type): Add
18437         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
18438         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
18439         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
18440         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
18441         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
18442         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
18443         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
18444         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
18445         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
18446         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
18447         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
18448         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
18449         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
18450         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
18451         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
18452         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
18453         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
18454         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
18455         V1DI_FTYPE_V2SI_V2SI.
18456         (bdesc_2arg): Moved to ...
18457         (bdesc_args): Here.
18458         (ix86_init_mmx_sse_builtins): Updated.
18459         (ix86_expand_args_builtin): Updated.  Take a pointer
18460         to const struct builtin_description.  Handle comparison
18461         builtin functions.
18462         (ix86_expand_sse_compare): Take a new argument for swapping operands.
18463         (ix86_expand_builtin): Updated.
18464
18465         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
18466         (ssse3_pmaddubsw128): This.
18467         (ssse3_pmaddubswv4hi3): Renamed to ...
18468         (ssse3_pmaddubsw): This.
18469
18470         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
18471         (__builtin_ia32_packssdw128): Likewise.
18472         (__builtin_ia32_packuswb128): Likewise.
18473         (__builtin_ia32_pmaddubsw): Likewise.
18474         (__builtin_ia32_pmaddubsw128): Likewise.
18475
18476 2008-04-30  Richard Guenther  <rguenther@suse.de>
18477
18478         PR tree-optimization/14847
18479         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
18480         (recognize_bits_test): Use it.
18481         (recognize_single_bit_test): Likewise.
18482
18483 2008-04-30  Martin Jambor  <mjambor@suse.cz>
18484
18485         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
18486         instead of setting number of formal parameters to zero.
18487         (ipcp_init_stage): Do not set the number of actual parameters to zero
18488         either.
18489         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
18490         which are called with variable number of arguments.
18491         (ipcp_insert_stage): Explicitely skipping all nodes which are
18492         called with variable number of arguments.
18493         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
18494         number of parameters.
18495
18496         * ipa-prop.h (struct ipa_node_params): Added flag
18497         called_with_var_arguments
18498         (ipa_set_param_count): Added.  Changed sole setter to use it.
18499         (ipa_get_param_count): Added.  All readers of param_count
18500         converted to use it instead.
18501         (ipa_set_called_with_variable_arg): Added.
18502         (ipa_is_called_with_var_arguments): Added.
18503         (ipa_get_ith_param): Added.  All readers of param_decls converted
18504         to use it instead.
18505         (ipa_set_cs_argument_count): Added, sole writer to argument_count
18506         changed to use it.
18507         (ipa_get_cs_argument_count): Added, all readers of argument_count
18508         changed to cal it.
18509         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
18510         to use it.
18511
18512         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
18513         (struct ipcp_lattice): Renamed cval_type to type
18514         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
18515
18516         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
18517         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
18518         (ipcp_insert_stage): Changed the type of variable cvalue to tree
18519         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
18520         (build_const_val): Changed the type of parameter cvalue to tree
18521         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
18522         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
18523
18524         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
18525         constant
18526
18527         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
18528         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
18529         (ipa_add_method): Renamed to ipa_push_func_to_list
18530         (ipa_remove_method): Renamed to ipa_pop_func_from_list
18531         (ipa_callsite_param_count): Removed.
18532         (ipa_callsite_param_count_set): Removed.
18533         (ipa_callsite_param): Removed.
18534         (ipa_callsite_callee): Removed.
18535         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
18536         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
18537         (ipa_method_formal_count): Removed.
18538         (ipa_method_formal_count_set): Removed.
18539         (ipa_method_get_tree): Removed.
18540         (ipa_method_tree_map_create): Removed.
18541         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
18542         (ipa_create_param_decls_array): Creates the array itself
18543         (ipa_create_param_decls_array): Temporary variable info instead of
18544         a few dereferences.
18545         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
18546         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
18547         (get_type): Removed.
18548         (ipa_jf_get_info_type): Removed.
18549         (ipa_node_create): Renamed to ipa_create_node_params
18550         (ipa_free): Renamed to ipa_free_all_node_params
18551         (ipa_nodes_create): Renamed to ipa_create_all_node_params
18552         (ipa_edges_create): Renamed to ipa_create_all_edge_args
18553         (ipa_edges_free): Renamed to ipa_free_all_edge_args
18554         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
18555         (ipa_free_all_node_params): Deallocation to jump_functions moved to
18556         ipa_free_all_edge_args
18557         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
18558         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
18559         (ipa_create_methodlist_node): Removed.
18560         (ipa_methodlist_method): Removed.
18561         (ipa_methodlist_method_set): Removed.
18562         (ipa_methodlist_next_method): Removed.
18563         (ipa_methodlist_next_method_set): Removed.
18564         (ipa_method_is_modified): Removed.
18565         (ipa_method_modify_create): Removed.
18566         (ipa_method_modify_init): Temporary variable info instead of a few
18567         dereferences.
18568         (ipa_detect_param_modifications): Temporary variable info instead of
18569         a few dereferences.
18570         (ipa_compute_jump_functions): Temporary variable info instead of
18571         a few dereferences.
18572         (ipa_method_modify_set): Removed.
18573         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
18574         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
18575         than craph_node as the first parameter.
18576         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
18577         (ipa_method_modify_init): Removed.
18578         (ipa_compute_jump_functions): Added a temp variable instead of
18579         repeatadly dereferencing the cgraph_edge.aux pointer
18580         (ipa_callsite_param_set_type): Removed.
18581         (ipa_compute_jump_functions): i renamed to index and moved to
18582         an inner block
18583         (ipa_callsite_param_set_info_type_formal): Removed.
18584         (ipa_callsite_param_set_info_type): Removed.
18585         (ipa_callsite_param_map_create): Removed.
18586         (ipa_callsite_tree): Removed.
18587         (ipa_callsite_caller): Removed.
18588         (ipa_pop_func_from_list): return_method removed to return_func
18589
18590         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
18591         prefixed all values with IPA_. Changed all users.
18592         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
18593         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
18594         and FORMAL_IPATYPE IPA_PASS_THROUGH.
18595         (union parameter_info): Renamed to jump_func_value.
18596         (union jump_func_value): Renamed value to constant
18597         (struct ipa_jump_func): Renamed info_type to value
18598         (struct ipa_node): Renamed to ipa_node_params
18599         (struct ipa_node_params): Renamed ipa_arg_num to param_count
18600         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
18601         (struct ipa_node_params): Renamed ipa_mod to modified_flags
18602         (struct ipa_edge): Renamed to ipa_edge_args
18603         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
18604         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
18605         (struct ipa_methodlist): Renamed to ipa_func_list
18606         (struct ipa_func_list): method_p renamed to node, next_method
18607         renamed to next
18608         (ipa_methodlist_p): Removed, switched all users to struct pointer
18609         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
18610
18611 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
18612
18613         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
18614         (rs6000_emit_epilogue): Use backchain to restore only when we
18615         have a large frame.  Make use of frame pointer to restore if we
18616         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
18617
18618 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
18619
18620         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18621         Add mode to zero_extract.
18622         (sign bit tests peepholes): (Ditto.).
18623
18624 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
18625
18626         * config/i386/i386.c (ix86_builtins): Replace Prescott New
18627         Instructions in comments with SSE3.
18628         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
18629         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
18630         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
18631         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
18632         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
18633         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
18634         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
18635         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
18636         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
18637         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
18638         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
18639         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
18640         (bdesc_sse_args): Renamed to ...
18641         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
18642         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
18643         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
18644         IX86_BUILTIN_FABSQ.
18645         (bdesc_1arg): Moved to ...
18646         (bdesc_args): Here.
18647         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
18648         Instructions in comments with SSE3.
18649         (ix86_expand_sse_operands_builtin): Renamed to ...
18650         (ix86_expand_args_builtin): This.  Updated.
18651         (ix86_expand_unop1_builtin): Update comments.
18652         (ix86_expand_builtin): Updated.
18653
18654 2008-04-29  Richard Guenther  <rguenther@suse.de>
18655
18656         PR tree-optimization/36078
18657         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
18658         Update virtual SSA form after cleaning up the CFG.
18659
18660 2008-04-29  Richard Guenther  <rguenther@suse.de>
18661
18662         PR middle-end/15255
18663         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
18664
18665 2008-04-29  Richard Guenther  <rguenther@suse.de>
18666
18667         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
18668         (compute_may_aliases): Do not call finalize_ref_all_pointers.
18669         (compute_flow_insensitive_aliasing): Do not treat
18670         PTR_IS_REF_ALL pointers special.
18671         (get_smt_for): Likewise.
18672         (may_alias_p): Re-structure.
18673         (is_escape_site): A ref-all pointer conversion is not an escape site.
18674         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
18675         PTR_IS_REF_ALL pointers special.
18676         * tree-ssa-structalias.h (struct alias_info): Remove
18677         ref_all_symbol_mem_tag field.
18678         (PTR_IS_REF_ALL): Remove.
18679
18680 2008-04-29  Richard Guenther  <rguenther@suse.de>
18681
18682         PR middle-end/36077
18683         * fold-const.c (extract_muldiv_1): In combining division constants
18684         make sure to never overflow.
18685
18686 2008-04-29  Nick Clifton  <nickc@redhat.com>
18687
18688         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
18689
18690 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18691
18692         PR bootstrap/35169
18693         * optc-gen.awk: Work around HP-UX/IA awk bug.
18694
18695 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
18696
18697         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
18698         2008-04-25 commit.
18699
18700 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
18701
18702         PR target/36073
18703         * config/i386/i386.md
18704         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
18705         Change operand 1 predicate to nonimmediate_operand.
18706
18707 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
18708
18709         PR debug/36060
18710         * dwarf2out.c (struct die_struct): Mark as chain_circular through
18711         die_sub field.
18712         * gengtype.c (walk_type, write_func_for_structure): Handle
18713         chain_circular.
18714         * doc/gty.texi: Document chain_circular.
18715
18716 2008-04-28  Richard Guenther  <rguenther@suse.de>
18717
18718         PR tree-optimization/36066
18719         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
18720         SCEV and loop.
18721
18722 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
18723
18724         PR target/36064
18725         * config/i386/i386.md
18726         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
18727         Use match_scratch instead of match_operand for operands 3 and 4.
18728
18729 2008-04-27  Richard Guenther  <rguenther@suse.de>
18730
18731         PR tree-optimization/18754
18732         PR tree-optimization/34223
18733         * tree-pass.h (pass_complete_unrolli): Declare.
18734         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
18735         loop size before and after unconditionally of UL_NO_GROWTH in effect.
18736         Rewrite loop into loop closed SSA form if it is not already.
18737         (tree_unroll_loops_completely): Re-structure to iterate over
18738         innermost loops with intermediate CFG cleanups.
18739         Unroll outermost loops only if requested or the code does not grow
18740         doing so.
18741         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
18742         loops are available.
18743         (tree_vectorize): Instead do so here.
18744         (tree_complete_unroll): Also unroll outermost loops.
18745         (tree_complete_unroll_inner): New function.
18746         (gate_tree_complete_unroll_inner): Likewise.
18747         (pass_complete_unrolli): New pass.
18748         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
18749         uses outside of the loop.
18750         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
18751         form if it is available.
18752         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
18753         * passes.c (init_optimization_passes): Schedule complete inner
18754         loop unrolling pass before the first CCP pass after final inlining.
18755
18756 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
18757
18758         * targhooks.h (default_emutls_var_fields,
18759         default_emutls_var_init): Declare.
18760         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
18761         * target.h (struct gcc_target): Add struct emutls member.
18762         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
18763         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
18764         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
18765         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
18766         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
18767         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
18768         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
18769         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
18770         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
18771         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
18772         emit debug information.
18773         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
18774         * varasm.c: Include targhooks.h.
18775         (emutls_object_section, emutls_tmpl_section): New.
18776         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
18777         (EMUTLS_SEPARATOR): New.
18778         (prefix_name): New.
18779         (get_emutls_object_name): New.
18780         (default_emutls_var_fields): New, broken out of ...
18781         (get_emutls_object_type): ... here.  Adjust to use target hooks.
18782         (get_emutls_init_templ_addr): Adjust to use target hooks.
18783         (emutls_decl): Adjust to use target hooks.
18784         (emutls_finish): Likewise.
18785         (default_emutls_var_init): New, broken out of ...
18786         (assemble_variable): ... here.  Adjust to use target hooks.
18787         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
18788         SECCAT_EMUTLS_TMPL.
18789         * c-common.c (handle_section_attribute): Prevent overriding
18790         sections for emulated tls with special sections.
18791         * config/i386/i386.c (x86_64_elf_select_section): Add
18792         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
18793         (x86_64_elf_unique_section): Likewise.
18794         * config/vxworks.c: Include tree.h.
18795         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
18796         (vxworks_override_options): Set TLS scheme.
18797         * doc/tm.texi (Emulated TLS): New node.
18798
18799 2008-04-26  Simon Baldwin <simonb@google.com>
18800
18801         PR c/35652
18802         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
18803         with propagated string constants.
18804
18805 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
18806
18807         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
18808         constraint for operand 2 when operand 0 is memory operand.
18809         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
18810         operand 0 is memory operand.
18811         (fix_trunc<mode>_i387_with_temp): Ditto.
18812         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
18813         operand 2 when operand 1 is memory operand.
18814         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
18815         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
18816         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
18817         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
18818         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
18819         operands 2,3 and 4 when operand 1 is memory operand.
18820         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
18821         is memory operand.
18822         (fistdi2_floor_with_temp): Ditto.
18823         (fist<mode>2_floor_with_temp): Ditto.
18824         (fistdi2_ceil_with_temp): Ditto.
18825         (fist<mode>2_ceil_with_temp): Ditto.
18826         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
18827
18828 2008-04-26  David Daney  <ddaney@avtrex.com>
18829
18830         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
18831         unspec_volitile.
18832         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
18833         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
18834         UNSPEC_UPDATE_GOT_VERSION): Renumber.
18835         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
18836         (compare_and_swap_12): New insn.
18837         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
18838         * config/mips/mips.c (mips_force_binary): New function.
18839         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
18840         (mips_expand_compare_and_swap_12): New function.
18841         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
18842
18843 2008-04-25  Jan Hubicka  <jh@suse.cz>
18844
18845         PR testsuite/35843
18846         * cfgexpand.c (pass_expand): Turn into RTL pass.
18847         * passes.c (execute_one_pass): Do pass typechecking after execution.
18848         * tree-pass.h (pass_expand): Turn into RTL pass.
18849
18850         * function.h (struct rtl_data): Move here fields
18851         accesses_prior_frames, calls_eh_return, saves_all_registers,
18852         has_nonlocal_goto, has_asm_statement, is_thunk,
18853         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
18854         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
18855         arg_pointer_save_area_init from struct function; turn into bool.
18856         (struct function): Move
18857         calls_eh_return, saves_all_registers, has_nonlocal_goto,
18858         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
18859         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
18860         tail_call_emit, arg_pointer_save_area_init
18861         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
18862         (current_function_returns_struct, current_function_returns_pcc_struct,
18863         current_function_calls_setjmp, current_function_calls_alloca,
18864         current_function_accesses_prior_frames,
18865         current_function_calls_eh_return, current_function_is_thunk,
18866         current_function_stdarg, current_function_profile,
18867         current_function_limit_stack, current_function_uses_pic_offset_table,
18868         current_function_uses_const_pool, current_function_has_nonlocal_label,
18869         current_function_saves_all_registers,
18870         current_function_has_nonlocal_goto,
18871         current_function_has_asm_statement): Remove accesor macros.
18872         * ra-conflict.c (global_conflicts): Update.
18873         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
18874         (suitable_for_tail_call_opt_p): Update.
18875         * builtins.c (expand_builtin_return_addr): Update.
18876         (expand_builtin_setjmp_setup): Update.
18877         (expand_builtin_nonlocal_goto): Update.
18878         * final.c (final_start_function): Update.
18879         (profile_function): Update.
18880         (leaf_function_p): Update.
18881         (only_leaf_regs_used): Update.
18882         * df-scan.c (df_get_exit_block_use_set): Update.
18883         * dojump.c (clear_pending_stack_adjust): Update.
18884         * tree-stdarg.c (gate_optimize_stdarg): Update.
18885         * gimple-low.c (lower_function_body): Update.
18886         * global.c (compute_regsets): Update.
18887         (global_alloc): Update.
18888         * dwarf2out.c (dwarf2out_begin_prologue): Update.
18889         * expr.c (expand_assignment): Update.
18890         * dse.c (dse_step0): Update.
18891         (dse_step1): Update.
18892         * c-decl.c (store_parm_decls): Update.
18893         * local-alloc.c (combine_regs): Update.
18894         (find_free_reg): Update.
18895         * function.c (assign_parms_augmented_arg_list): Update.
18896         (assign_parm_find_data_types): Update.
18897         (assign_parms): Update.
18898         (allocate_struct_function): Update.
18899         (expand_function_start): Update.
18900         (expand_function_end): Update.
18901         (get_arg_pointer_save_area): Update.
18902         (thread_prologue_and_epilogue_insns): Update.
18903         (rest_of_match_asm_constraints): Update.
18904         * stor-layout.c (variable_size): Update.
18905         * gcse.c (gcse_main): Update.
18906         (bypass_jumps): Update.
18907         * gimplify.c (gimplify_function_tree): Update.
18908         * calls.c (emit_call_1): Update.
18909         (expand_call): Update.
18910         * bt-load.c (compute_defs_uses_and_gen): Update.
18911         * except.c (sjlj_assign_call_site_values): Update.
18912         (sjlj_emit_function_enter): Update.
18913         (can_throw_external): Update.
18914         (set_nothrow_function_flags): Update.
18915         (expand_builtin_unwind_init): Update.
18916         (expand_eh_return): Update.
18917         (convert_to_eh_region_ranges): Update.
18918         (output_function_exception_table): Update.
18919         * emit-rtl.c (gen_tmp_stack_mem): Update.
18920         * cfgexpand.c (expand_used_vars): Update.
18921         (tree_expand_cfg): Update.
18922         * cfgcleanup.c (rest_of_handle_jump): Update.
18923         * explow.c (allocate_dynamic_stack_space): Update.
18924         * varasm.c (assemble_start_function): Update.
18925         (force_const_mem): Update.
18926         (mark_constant_pool): Update.
18927         * tree-optimize.c (tree_rest_of_compilation): Update.
18928         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
18929         * tree-cfg.c (notice_special_calls): Update.
18930         (is_ctrl_altering_stmt): Update.
18931         (tree_can_make_abnormal_goto): Update.
18932         (tree_purge_dead_abnormal_call_edges): Update.
18933         * config/alpha/predicates.md: Update.
18934         * config/alpha/alpha.c (alpha_sa_mask): Update.
18935         (alpha_sa_size): Update.
18936         (alpha_does_function_need_gp): Update.
18937         (alpha_expand_prologue): Update.
18938         (alpha_start_function): Update.
18939         (alpha_output_function_end_prologue): Update.
18940         (alpha_expand_epilogue): Update.
18941         * config/frv/frv.c (frv_stack_info): Update.
18942         (frv_expand_epilogue): Update.
18943         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
18944         (s390_register_info): Update.
18945         (s390_frame_info): Update.
18946         (s390_init_frame_layout): Update.
18947         (s390_can_eliminate): Update.
18948         (save_gprs): Update.
18949         * config/spu/spu.c (spu_split_immediate): Update.
18950         (need_to_save_reg): Update.
18951         (spu_expand_prologue): Update.
18952         (spu_expand_epilogue): Update.
18953         * config/sparc/sparc.md: Update.
18954         * config/sparc/sparc.c (eligible_for_return_delay): Update.
18955         (sparc_tls_got): Update.
18956         (legitimize_pic_address): Update.
18957         (sparc_emit_call_insn): Update.
18958         (sparc_expand_prologue): Update.
18959         (output_return): Update.
18960         (print_operand): Update.
18961         (sparc_function_ok_for_sibcall): Update.
18962         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
18963         * config/m32r/m32r.md: Update.
18964         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
18965         (m32r_compute_frame_size): Update.
18966         (m32r_expand_prologue): Update.
18967         (m32r_expand_epilogue): Update.
18968         (m32r_legitimize_pic_address): Update.
18969         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
18970         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
18971         * config/i386/i386.c (ix86_frame_pointer_required): Update.
18972         (gen_push): Update.
18973         (ix86_save_reg): Update.
18974         (ix86_compute_frame_layout): Update.
18975         (ix86_expand_prologue): Update.
18976         (ix86_expand_epilogue): Update.
18977         * config/sh/sh.c (output_stack_adjust): Update.
18978         (calc_live_regs): Update.
18979         (sh5_schedule_saves): Update.
18980         (sh_expand_prologue): Update.
18981         (sh_expand_epilogue): Update.
18982         (sh_setup_incoming_varargs): Update.
18983         (sh_allocate_initial_value): Update.
18984         (sh_get_pr_initial_val): Update.
18985         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
18986         * config/sh/sh.md (label:): Update.
18987         * config/avr/avr.c (out_movhi_mr_r): Update.
18988         * config/crx/crx.h (enum): Update.
18989         * config/xtensa/xtensa.h (along): Update.
18990         * config/stormy16/stormy16.c Update.
18991         (xstormy16_compute_stack_layout): Update.
18992         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
18993         (fr30_expand_prologue): Update.
18994         * config/cris/cris.c (cris_conditional_register_usage): Update.
18995         (cris_reg_saved_in_regsave_area): Update.
18996         (cris_initial_frame_pointer_offset): Update.
18997         (cris_simple_epilogue): Update.
18998         (cris_expand_prologue): Update.
18999         (cris_expand_epilogue): Update.
19000         (cris_expand_pic_call_address): Update.
19001         (cris_asm_output_symbol_ref): Update.
19002         (cris_asm_output_label_ref): Update.
19003         * config/cris/cris.md Update.
19004         * config/iq2000/iq2000.c (compute_frame_size): Update.
19005         (iq2000_expand_epilogue): Update.
19006         * config/mt/mt.h (save_direction): Update.
19007         * config/mn10300/mn10300.c (mn10300_function_value): Update.
19008         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19009         (ia64_secondary_reload_class): Update.
19010         * config/m68k/m68k.c (m68k_save_reg): Update.
19011         (m68k_expand_prologue): Update.
19012         (m68k_expand_epilogue): Update.
19013         (legitimize_pic_address): Update.
19014         * config/rs6000/rs6000.c (rs6000_got_register): Update.
19015         (first_reg_to_save): Update.
19016         (first_altivec_reg_to_save): Update.
19017         (compute_vrsave_mask): Update.
19018         (compute_save_world_info): Update.
19019         (rs6000_stack_info): Update.
19020         (spe_func_has_64bit_regs_p): Update.
19021         (rs6000_ra_ever_killed): Update.
19022         (rs6000_emit_eh_reg_restore): Update.
19023         (rs6000_emit_allocate_stack): Update.
19024         (rs6000_emit_prologue): Update.
19025         (rs6000_emit_epilogue): Update.
19026         (rs6000_output_function_epilogue): Update.
19027         (output_profile_hook): Update.
19028         (rs6000_elf_declare_function_name): Update.
19029         * config/rs6000/rs6000.h (rs6000_args): Update.
19030         * config/rs6000/rs6000.md: Update.
19031         * config/mcore/mcore.c (mcore_expand_prolog): Update.
19032         * config/arc/arc.c (arc_output_function_epilogue): Update.
19033         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
19034         * config/darwin.c (machopic_function_base_name): Update.
19035         * config/score/score3.c (score3_compute_frame_size): Update.
19036         (rpush): Update.
19037         (rpop): Update.
19038         (score3_epilogue): Update.
19039         * config/score/score7.c (score7_compute_frame_size): Update.
19040         (score7_prologue): Update.
19041         (score7_epilogue): Update.
19042         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
19043         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19044         * config/arm/arm.c (use_return_insn): Update.
19045         (require_pic_register): Update.
19046         (arm_load_pic_register): Update.
19047         (arm_compute_save_reg0_reg12_mask): Update.
19048         (arm_compute_save_reg_mask): Update.
19049         (thumb1_compute_save_reg_mask): Update.
19050         (output_return_instruction): Update.
19051         (arm_output_function_prologue): Update.
19052         (arm_output_epilogue): Update.
19053         (arm_get_frame_offsets): Update.
19054         (arm_expand_prologue): Update.
19055         (thumb_pushpop): Update.
19056         (thumb_exit): Update.
19057         (thumb1_expand_prologue): Update.
19058         (thumb1_expand_epilogue): Update.
19059         (arm_unwind_emit): Update.
19060         (arm_output_fn_unwind): Update.
19061         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
19062         * config/arm/arm.md: Update.
19063         * config/pa/pa.md: Update.
19064         * config/pa/pa.c (legitimize_pic_address): Update.
19065         (compute_frame_size): Update.
19066         (hppa_expand_prologue): Update.
19067         (hppa_expand_epilogue): Update.
19068         (borx_reg_operand): Update.
19069         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
19070         (HARD_REGNO_RENAME_OK): Update.
19071         * config/mips/mips.c (mips_global_pointer): Update.
19072         (mips_save_reg_p): Update.
19073         (mips_compute_frame_info): Update.
19074         (mips_frame_pointer_required): Update.
19075         (mips_expand_prologue): Update.
19076         (mips_expand_epilogue): Update.
19077         (mips_can_use_return_insn): Update.
19078         (mips_reorg_process_insns): Update.
19079         * config/v850/v850.c (compute_register_save_size): Update.
19080         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
19081         * config/mmix/mmix.c (along): Update.
19082         (mmix_expand_epilogue): Update.
19083         * config/bfin/bfin.c (legitimize_pic_address): Update.
19084         (must_save_p): Update.
19085         (stack_frame_needed_p): Update.
19086         (add_to_reg): Update.
19087         (bfin_expand_prologue): Update.
19088         * stmt.c (expand_asm_operands): Update.
19089         * reload1.c (reload): Update.
19090         (init_elim_table): Update.
19091
19092 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
19093
19094         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
19095
19096 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
19097
19098         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
19099         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
19100         (mov<mode>): Removed.
19101         (*movv4sf_internal): Likewise.
19102         (*movv2df_internal): Likewise.
19103
19104 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
19105
19106         * config.gcc (crx-*-elf): Remove deprecation.
19107
19108 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
19109
19110         * config/i386/cygming-crtend.c (register_frame_ctor): Register
19111         __gcc_deregister_frame with atexit.
19112         (deregister_frame_dtor): Remove.
19113
19114 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
19115             Nathan Sidwell  <nathan@codesourcery.com>
19116
19117         * config/rs6000/rs6000.opt (mspe): Remove Var property.
19118         (misel): Likewise.
19119         * config/rs6000/rs6000.h (rs6000_spe): Declare.
19120         (rs6000_isel): Likewise.
19121         * config/rs6000/rs6000.c (rs6000_spe): New variable.
19122         (rs6000_isel): New variable.
19123         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
19124
19125 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19126
19127         PR c++/35758
19128         * c-common.c (handle_vector_size_attribute): Call
19129         lang_hooks.types.reconstruct_complex_type instead of
19130         reconstruct_complex_type.
19131         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
19132         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
19133         * langhooks.h (struct lang_hooks_for_types): Add
19134         reconstruct_complex_type hook.
19135         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
19136         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
19137
19138 2008-04-24  Richard Guenther  <rguenther@suse.de>
19139
19140         * c-common.h (check_builtin_function_arguments): Declare.
19141         * c-common.c (validate_nargs): New function.
19142         (check_builtin_function_arguments): Likewise.
19143         * c-typeck.c (build_function_call): Call
19144         check_builtin_function_arguments.
19145         * builtins.c (fold_builtin_classify): Remove error reporting code.
19146         (fold_builtin_unordered_cmp): Likewise.
19147         (fold_builtin_1): Likewise.
19148         (fold_builtin_n): Likewise.
19149
19150 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19151
19152         PR tree-optimization/36008
19153         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
19154         the original op1, rather than delta by step.
19155
19156 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
19157             Sebastian Pop  <sebastian.pop@amd.com>
19158
19159         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
19160         eliminate_local_variables_stmt, eliminate_local_variables,
19161         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
19162         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
19163         of code delimited by two edges in the CFG.
19164         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
19165         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
19166         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
19167         the case of parallelisation of reductions.
19168         (expr_invariant_in_region_p): New.
19169
19170         * tree-flow.h (gather_blocks_in_sese_region): Declared.
19171         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
19172
19173 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19174             Richard Guenther  <rguenther@suse.de>
19175
19176         PR tree-optimization/36034
19177         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
19178         incapable of dealing with loads with gaps.
19179
19180 2008-04-24  Rafael Espíndola  <espindola@google.com>
19181
19182         * tree-flow.h (vrp_evaluate_conditional): Change signature.
19183         * tree-ssa-propagate.c (fold_predicate_in): Update call to
19184         vrp_evaluate_conditional.
19185         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
19186         (vrp_evaluate_conditional): Split the cond argument.
19187         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
19188         (simplify_stmt_for_jump_threading): Update call to
19189         vrp_evaluate_conditional.
19190
19191 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19192
19193         PR tree-optimization/35982
19194         * tree-vect-analyze.c (vect_check_interleaving): Check that the
19195         interleaved data-refs are of the same type.
19196
19197 2008-04-24  Danny Smith  <dannysmith@users.net>
19198
19199         * c-format.c (check_format_info_main): Use strncmp rather than a
19200         magic prefix to handle multichar length specs.
19201         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
19202         Don't prefix "I64" and "I32" with '\0'.
19203
19204 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19205
19206         PR target/36015
19207         * config/i386/i386.c (init_cumulative_args): Don't pass anything
19208         in registers for -m32 only if stdarg_p (fntype).
19209
19210 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
19211
19212         PR rtl-optimization/36006
19213         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
19214         temp to op0 in order to avoid invalid rtx sharing.
19215
19216 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
19217
19218         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
19219         check TREE_INVARIANT.
19220         * tree-gimple.c (is_gimple_address): New.
19221         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
19222         * tree-gimple.h (is_gimple_address): New.
19223         * tree.h (decl_address_invariant_p): New.
19224         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
19225         (build_string): Likewise.
19226         (decl_address_invariant_p): New, from is_gimple_invariant_address.
19227         (tree_invariant_p_1): Likewise.
19228         (save_expr): Use it.
19229         (tree_invariant_p): New.
19230         (skip_simple_arithmetic): Use it.
19231         (stabilize_reference_1): Use it.
19232         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
19233         simplify.
19234         (build1_stat): Drop code to compute TREE_INVARIANT.
19235         (build2_stat): Drop code to compute TREE_INVARIANT.
19236         (build3_stat): Drop code to compute TREE_INVARIANT.
19237         (build4_stat): Drop code to compute TREE_INVARIANT.
19238         (build5_stat): Drop code to compute TREE_INVARIANT.
19239         (build7_stat): Drop code to compute TREE_INVARIANT.
19240         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
19241         * tree.h (struct tree_base): Remove invariant_flag.
19242         (TREE_INVARIANT): Remove.
19243         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
19244         (fold_builtin_expect): Check TREE_CONSTANT.
19245         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
19246         * c-tree.h (c_expr_to_decl): Drop third parameter.
19247         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
19248         (build_c_cast): Don't set TREE_INVARIANT.
19249         (pop_init_level): Don't set TREE_INVARIANT.
19250         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
19251         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
19252         TREE_CONSTANT.
19253         (gimplify_init_constructor): Don't set TREE_INVARIANT.
19254         (gimplify_addr_expr): Adjust comment.
19255         * tree-mudflap.c (mf_build_string):
19256         * print-tree.c (print_node): Don't print TREE_INVARIANT.
19257         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
19258         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
19259         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
19260         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
19261         * langhooks.h (struct lang_hooks): Drop third parameter from
19262         expr_to_decl.
19263
19264 2008-04-23  Richard Guenther  <rguenther@suse.de>
19265
19266         PR tree-optimization/27799
19267         PR tree-optimization/32921
19268         PR tree-optimization/32624
19269         * tree-ssa-structalias.c (merge_smts_into): Only merge the
19270         SMTs aliases and the tag itself into the solution.
19271         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
19272         merge the points-to solution back into the SMT aliases.
19273         (may_alias_p): Use alias_set_subset_of instead of
19274         aliases_conflict_p.  A pointer which points to
19275         memory with alias set zero may access any variable.
19276
19277 2008-04-23  Richard Guenther  <rguenther@suse.de>
19278
19279         * alias.c (alias_set_subset_of): Correctly handle asking
19280         if zero is a subset of an alias set with zero child.
19281         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
19282         (compute_flow_insensitive_aliasing): Correctly walk all
19283         pointers.  Do not unnecessarily union sets.
19284
19285 2008-04-23  Richard Guenther  <rguenther@suse.de>
19286
19287         PR middle-end/36021
19288         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
19289
19290 2008-04-22  Tomas Bily  <tbily@suse.cz>
19291
19292         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
19293         unreachable case.
19294         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
19295         NON_LVALUE_EXPR.
19296         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19297         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19298         * tree-inline.c (estimate_num_insns_1): Likewise.
19299         * varasm.c (const_hash_1, compare_constant, copy_constant)
19300         (compute_reloc_for_constant, output_addressed_constants): Likewise.
19301         * emit-rtl.c (component_ref_for_mem_expr)
19302         (set_mem_attributes_minus_bitpos): Likewise.
19303         * expr.c (highest_pow2_factor, expand_expr_real_1, )
19304         (is_aligning_offset): Likewise.
19305         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
19306         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19307         * dojump.c (do_jump): Likewise.
19308         * builtins.c (get_pointer_alignment, get_memory_rtx)
19309         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
19310         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
19311
19312 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
19313
19314         PR rtl-optimization/36017
19315         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
19316         expanding the library call.
19317
19318 2008-04-22  Ian Lance Taylor  <iant@google.com>
19319
19320         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
19321         than size_in_bytes.
19322
19323 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
19324
19325         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
19326         of LR/CTR moves for Power6.
19327
19328 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
19329
19330         PR middle-end/36003
19331         * passes.c (init_optimization_passes): Remove
19332         pass_fast_rtl_byte_dce.
19333
19334 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
19335
19336         PR target/29096
19337         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
19338         builtin functions to generate faster code.
19339         (_mm_cvtpu16_ps): Ditto.
19340         (_mm_cvtpi32x2_ps): Ditto.
19341
19342 2008-04-22  Nick Clifton  <nickc@redhat.com>
19343
19344         * common.opt (ftree-loop-distribution): Add Optimization
19345         attribute.
19346
19347         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
19348         (frv_expand_builtin_va_start): Likewise.
19349
19350         * config/arm/arm.c (thumb_find_work_register): Fix location of
19351         argument register count.
19352
19353 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
19354
19355         Support scheduling for ColdFire V1 and V3 microarchitecture.
19356         Improve scheduling of multiplication instructions.
19357
19358         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
19359         (mac): New instruction attribute.
19360         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
19361         (m68k_sched_mac): New variable.
19362         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
19363         Handle cfv1 and cfv3.
19364         (max_insn_size): New static variable.
19365         (struct _sched_ib): New type.
19366         (sched_ib): New static variable.
19367         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
19368         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
19369         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
19370         Update.
19371         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
19372         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
19373         new variables.  Update.
19374         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19375         Add modeling of cfv3 instruction buffer.  Update.
19376         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
19377         * config/m68k/m68k.h (TUNE_CFV3): New macro.
19378         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
19379         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
19380         a particular reservation applies to.
19381         (type2): Reorganize attribute values.  Rename alu to alu_reg,
19382         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
19383         to mul_l and mul_w.
19384         (cf_ib_*): Simplify description of instruction buffer.
19385         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
19386         (cf_mem): Split into cf_mem1 and cf_mem2.
19387         (cf_v2_move_??): Rename to cfv12_alu_??.
19388         (cf_v2_move_l_??): Rename to cfv12_omove_??.
19389         (cf_v2_mul_??): Remove reservations.
19390         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
19391         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
19392         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
19393         appropriate place.
19394         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
19395         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
19396         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
19397         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
19398         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
19399         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
19400         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
19401         expansions of the above reservations for instructions of sizes
19402         1, 2 and 3 words.
19403
19404 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
19405
19406         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
19407
19408 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
19409
19410         * coverage.c: Include tree-pass.h.
19411         (coverage_counter_alloc): Print da_file_name to the dump file.
19412
19413 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
19414
19415         * sbitmap.c (sbitmap_range_empty_p): New function.
19416         * sbitmap.h (sbitmap_range_empty_p): New function.
19417         * bitmap.h: Now includes obstack.h.
19418
19419 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
19420             Kenneth Zadeck  <zadeck@naturalbridge.com>
19421
19422         * dbgcnt.def (ra_byte_scan): Added.
19423         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
19424         when the last hit happens for a counter.
19425         * timevar.def (TV_DF_BYTE_LR): New variable.
19426         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
19427         * passes.c (pass_fast_rtl_byte_dce): New pass.
19428         * fwprop.c (update_df): Added mode to call df_ref_create.
19429         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
19430         DF_REF_EXTRACT_OFFSET.
19431         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
19432         DF_BYTE_LR_OUT, df_byte_lr): New macro.
19433         (df_mm): New enum.
19434         (df_ref_extract): Added mode field.
19435         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
19436         DF_REF_EXTRACT_OFFSET.
19437         (DF_REF_EXTRACT_MODE): New macro.
19438         (df_byte_lr_bb_info): New structure.
19439         (df_print_byte_regset, df_compute_accessed_bytes,
19440         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
19441         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
19442         df_byte_lr_simulate_uses,
19443         df_byte_lr_simulate_artificial_refs_at_top,
19444         df_byte_lr_simulate_artificial_refs_at_end,
19445         df_compute_accessed_bytes): New function.
19446         (df_ref_create): Add parameter.
19447         (df_byte_lr_get_bb_info): New inline function.
19448         * df-scan.c (df_ref_record, df_uses_record,
19449         df_ref_create_structure): Added mode parameter.
19450         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
19451         df_defs_record, df_uses_record, df_get_conditional_uses,
19452         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
19453         df_entry_block_defs_collect, df_exit_block_uses_collect):
19454         Added mode parameter to calls to df_ref_record, df_uses_record,
19455         df_ref_create_structure.
19456         (df_ref_equal_p, df_ref_compare): Added test for modes.
19457         (df_ref_create_structure): Added code to set mode.  Renamed
19458         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
19459         DF_REF_EXTRACT_OFFSET.
19460         * df-core.c (df_print_byte_regset): New function.
19461         * df-byte-scan.c: New file.
19462         * df-problems.c (df_rd_transfer_function): Removed unnecessary
19463         calls to BITMAP_FREE.
19464         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
19465         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
19466         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
19467         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
19468         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
19469         df_byte_lr_local_compute, df_byte_lr_init,
19470         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
19471         df_byte_lr_transfer_function, df_byte_lr_free,
19472         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
19473         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
19474         df_byte_lr_simulate_uses,
19475         df_byte_lr_simulate_artificial_refs_at_top,
19476         df_byte_lr_simulate_artificial_refs_at_end): New function.
19477         * dce.c (byte_dce_process_block): New function.
19478         (dce_process_block): au is now passed in rather than computed
19479         locally.  Changed loops that look at artificial defs to not look
19480         for conditional or partial ones, because there never are any.
19481         (fast_dce): Now is able to drive byte_dce_process_block or
19482         dce_process_block depending on the kind of dce being done.
19483         (rest_of_handle_fast_dce): Add parameter to fast_dce.
19484         (rest_of_handle_fast_byte_dce): New function.
19485         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
19486         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
19487
19488 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
19489
19490         PR fortran/35019
19491         * gcc.h: Added fortran options that take arguments to
19492         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
19493         macros.
19494
19495 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
19496
19497         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
19498         scalarization if on the LHS and not a full access.
19499
19500 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19501
19502         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
19503
19504 2008-04-18  Rafael Espíndola  <espindola@google.com>
19505
19506         * tree-vrp.c (find_case_label_index): Fix the binary search.
19507         (find_case_label_range): New.
19508         (vrp_visit_switch_stmt): Use find_case_label_range.
19509         (simplify_switch_using_ranges): Use find_case_label_range.
19510
19511 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
19512
19513         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
19514         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
19515
19516 2008-04-18  Tom Tromey  <tromey@redhat.com>
19517
19518         PR libcpp/15500:
19519         * doc/cpp.texi (Implementation-defined behavior): Mention
19520         -finput-charset.
19521
19522 2008-04-18  Ian Lance Taylor  <iant@google.com>
19523
19524         * fold-const.c (pointer_may_wrap_p): New static function.
19525         (fold_comparison): Add another test for pointer overflow.  Use
19526         pointer_may_wrap_p to disable some false positives.
19527
19528 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
19529
19530         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
19531         (fname_as_string): Match updated cpp_interpret_string prototype.
19532         (fix_string_type): Support char16_t* and char32_t*.
19533         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
19534         derivative) nodes.  Register as builtin if C++0x.
19535         (c_parse_error): Support CPP_CHAR{16,32}.
19536         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
19537         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
19538         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
19539         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
19540         CTI_CHAR32_ARRAY_TYPE>: New elements.
19541         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
19542         char32_type_node, signed_char32_type_node, char16_array_type_node,
19543         char32_array_type_node): New defines.
19544         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
19545         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
19546         (lex_string): Support CPP_STRING{16,32}, match updated
19547         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
19548         (lex_charconst): Support CPP_CHAR{16,32}.
19549         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
19550         and CPP_STRING{16,32}.
19551
19552 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
19553
19554         PR bootstrap/35457
19555         * aclocal.m4: Regenerate.
19556         * configure: Regenerate.
19557
19558 2008-04-18  Jan Hubicka  <jh@suse.cz>
19559
19560         * except.c (dw2_size_of_call_site_table,
19561         sjlj_size_of_call_site_table): Use vector API for call_site_record.
19562
19563         * cgraphbuild.c (build_cgraph_edges): Update.
19564         * tree-pass.h: Update comment.
19565         * final.c (leaf_function_p): Update.
19566         (leaf_renumber_regs): Update.
19567         (rest_of_clean_state): Update.
19568         * omp-low.c (expand_omp_parallel): Update.
19569         * ipa-reference.c (analyze_function): Update.
19570         * reorg.c (find_end_label): Update.
19571         (optimize_skip): Update.
19572         (fill_simple_delay_slots): Update.
19573         (fill_simple_delay_slots): Update.
19574         (make_return_insns): Update.
19575         (dbr_schedule): Update.
19576         * gimple-low.c (record_vars_into): Update.
19577         * cfgbuild.c (make_edges): Update.
19578         * function.c (assign_stack_local): Update.
19579         (assign_parm_adjust_stack_rtl): Update.
19580         (locate_and_pad_parm): Update.
19581         (allocate_struct_function): Do not initialize stack_alignment_needed
19582         and preferred_stack_boundary here.
19583         (stack_protect_prologue): Update.
19584         (stack_protect_epilogue): Update.
19585         (expand_function_start): Initialize stack_alignment_needed,
19586         preferred_stack_boundary and max_jumptable_ents.
19587         (expand_function_end): Update.
19588         (free_after_compilation): Do not NULLify epilogue_delay_list.
19589         * function.h (struct rtl_data): Add stack_protect_guard,
19590         stack_alignment_needed,
19591         preferred_stack_boundary, epilogue_delay_list.
19592         (struct function): Remove value_histograms, stack_alignment_needed,
19593         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
19594         last_label_uid,
19595         unexpanded_var_list, stack_protect_guard.
19596         (current_function_epilogue_delay_list): Remove.
19597         * ipa-type-escape.c (analyze_function): Update.
19598         * gimplify.c (pop_gimplify_context): Update comment.
19599         * calls.c (expand_call): Update.
19600         (emit_library_call_value_1): Update.
19601         * except.c (set_nothrow_function_flags): Update.
19602         * cfgexpand.c (get_decl_align_unit): Update.
19603         (create_stack_guard): Update.
19604         (estimated_stack_frame_size): Update.
19605         (expand_used_vars): Update.
19606         (tree_expand_cfg): Free histogram earliers, init expansion variables.
19607         * explow.c (allocate_dynamic_stack_space): Update.
19608         * tree-ssa-live.c (remove_unused_locals): Update.
19609         * varasm.c (mark_constant_pool): Update.
19610         * tree-inline.c (remap_decls): Update.
19611         (initialize_cfun): Update.
19612         (declare_return_variable): Update.
19613         (inline_forbidden_p): Update.
19614         (expand_call_inline): Update.
19615         (declare_inline_vars): Update.
19616         (tree_function_versioning): Update.
19617         * tree-flow.h (value_histograms): New.
19618         (VALUE_HISTOGRAMS): New macro.
19619         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
19620         last_label_uid.
19621         * tree-cfg.c (set_bb_for_stmt): Update.
19622         (replace_by_duplicate_decl): Update.
19623         (move_block_to_fn): Update.
19624         (new_label_mapper): Update.
19625         (dump_function_to_file): Update.
19626         * ipa-struct-reorg.c (build_data_structure): Update.
19627         * cfgrtl.c (print_rtl_with_bb): Update.
19628         * reload1.c (reload): Update.
19629         (reload): Update.
19630         * config/i386/i386.c (setup_incoming_varargs_64,
19631         ix86_compute_frame_layout): Update.
19632         * config/arc/arc.c (arc_output_function_epilogue): Update.
19633
19634 2008-04-18  Marius Strobl <marius@FreeBSD.org>
19635
19636         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
19637         for FreeBSD as well.
19638         * gthr-posix95.h: Likewise.
19639
19640 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
19641
19642         PR rtl-optimization/35838
19643         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
19644         out the byte offset of the first subreg.
19645
19646 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
19647
19648         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
19649         to split_ti instead of three separate calls with single member arrays.
19650         (subti3 splitter): Ditto.
19651         (adddi3 splitter): Ditto with split_di.
19652         (subdi3 splitter): Ditto.
19653         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
19654         two separate calls with single member arrays.  Swap match_dup
19655         operands 1 and 2 to better fit into the array.
19656         (negdi2 splitter): Ditto with split_di.
19657         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
19658         two separate calls with single member arrays.  Swap match_dup operands
19659         6 and 7 to better fit into the array.
19660
19661 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
19662
19663         * config/i386/i386.c (sse_builtin_type): New.
19664         (bdesc_sse_args): Likewise.
19665         (bdesc_sse_3arg): Removed.
19666         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
19667         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
19668         IX86_BUILTIN_ROUNDPS.
19669         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
19670         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
19671         IX86_BUILTIN_ROUNDPS.
19672         (ix86_expand_sse_4_operands_builtin): Removed.
19673         (ix86_expand_sse_operands_builtin): New.
19674         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
19675         and CODE_FOR_sse4_1_roundps.
19676         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
19677         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
19678
19679 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
19680
19681         PR target/35907
19682         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
19683         regs before frame pop when needed.  If use_backchain_to_restore_sp
19684         then load backchain into a temp reg to restore vr and vrsave.  Add
19685         code to restore vr after frame pop if possible.
19686
19687 2008-04-17  Richard Guenther  <rguenther@suse.de>
19688
19689         * tree-vn.c (expressions_equal_p): Do not check type
19690         equality or compatibility before calling operand_equal_p.
19691         * fold-const.c (operand_equal_p): Check equivalence of
19692         integer constants before bailing out due to signedness or
19693         precision differences.
19694         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
19695         spurious differences in type qualification.  Ignore types
19696         for COMPONENT_REFs at all.
19697
19698 2008-04-17  Christian Bruel  <christian.bruel@st.com>
19699
19700         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
19701         msw_skip comparison.
19702
19703 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
19704
19705         PR c/35739
19706         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
19707         reg type.
19708
19709         PR tree-optimization/35899
19710         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
19711         rather than TREE_OPERAND.
19712
19713 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
19714
19715         PR target/35944
19716         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
19717         temporary registers.  Change operand predicate to general_operand.
19718         (remainderxf3): Ditto.
19719
19720 2008-04-16  Richard Guenther  <rguenther@suse.de>
19721
19722         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
19723         * tree-affine.c (aff_combination_expand): Look through some
19724         conversions.
19725
19726 2008-04-15  Doug Kwan  <dougkwan@google.com>
19727
19728         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
19729         for hex printing.
19730         * tree-pretty-print.c (dump_generic_node): Ditto.
19731         * final.c (output_addr_const): Ditto.
19732         * dwarf2out.c (output_cfi): Ditto.
19733         * c-pretty-print.c (pp_c_integer_constant): Ditto.
19734         * print-rtl.c (print_rtx): Ditto.
19735         * print-tree.c (print_node_brief, print_node): Ditto.
19736         * c-common.c (match_case_to_enum_1): Ditto.
19737         * sched-vis.c (print_value): Ditto.
19738         * config/i386/i386.c (print_operand): Cast to long unsigned int
19739         for hex printing.
19740
19741 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
19742         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
19743         MS Windows VirtualProtect function.
19744
19745 2008-04-15  Jan Hubicka  <jh@suse.cz>
19746
19747         * gengtype.c (write_root): Param_is argument is OK.
19748         * expr.c (expand_expr_real_1): Update call of get_exception_*.
19749         * function.h: Include varray.h
19750         (rtl_eh): New stucture based on except.c one.
19751         (call_site_record): New forward declaration and vector type.
19752         * calls.c (emit_call_1): Do not call
19753         note_current_region_may_contain_throw.
19754         * except.c (eh_status): Remove cur_region, try_region since they are
19755         unused.
19756         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
19757         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
19758         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
19759         Remove call_site_data_used, call_site_data_size.
19760         Turn call_site_record into vector in function.h.
19761         (note_current_region_may_contain_throw): Remove.
19762         (get_exception_pointer, get_exception_filter): Do not take struct
19763         function argument; update.
19764         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
19765         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
19766         build_post_landing_pads, dw2_build_landing_pads,
19767         sjlj_assign_call_site_values, sjlj_mark_call_sites,
19768         sjlj_emit_function_enter, sjlj_emit_function_enter,
19769         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
19770         sjlj_build_landing_pads, finish_eh_generation,
19771         remove_exception_handler_label, remove_eh_handler,
19772         maybe_remove_eh_handler, add_reachable_handler,
19773         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
19774         add_action_record, collect_one_action_chain, add_call_site,
19775         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
19776         sjlj_output_call_site_table, output_function_exception_table,
19777         * except.h (note_current_region_may_contain_throw): Remove
19778         (get_exception_pointer, get_exception_filter): Do not take struct
19779         function argument.
19780         * Makefile.in (GTFILES): Put varargs before struct function.
19781
19782 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
19783
19784         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
19785         punt for STRING_CST.
19786         (get_constraint_for): Deal with STRING_CST here instead.
19787
19788 2008-04-15  Richard Guenther  <rguenther@suse.de>
19789
19790         * tree-ssa-propagate.c (substitute_and_fold): Substitute
19791         statements in a basic-block with a backward walk.  Do not
19792         substitute into dead statements but instead remove those.
19793
19794 2008-04-15  Richard Guenther  <rguenther@suse.de>
19795
19796         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
19797         to zero, thus disable creation of SFTs.
19798
19799 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
19800
19801         * tree-predcom.c (suitable_reference_p): Return false if the
19802         reference can throw.
19803
19804 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
19805
19806         PR c/35751
19807         * c-decl.c (finish_decl): If extern or static var has variable
19808         size, set TREE_TYPE (decl) to error_mark_node.
19809
19810 2008-04-15  Rafael Espíndola  <espindola@google.com>
19811
19812         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
19813         variable arg1.
19814
19815 2008-04-15  Richard Guenther  <rguenther@suse.de>
19816
19817         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
19818         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
19819         (visit_reference_op_load): Do walk vuse-vdef chains on
19820         vn_reference_lookup.
19821         (visit_reference_op_store): But do not here.
19822         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
19823         vn_reference_lookup.
19824         (vn_lookup_with_vuses): But do so here.
19825
19826 2008-04-14  Ian Lance Taylor  <iant@google.com>
19827
19828         * fold-const.c (fold_overflow_warning): Remove assertion.
19829
19830 2008-04-15  Ben Elliston  <bje@au.ibm.com>
19831
19832         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
19833         temp1 local variables.
19834
19835 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
19836
19837         PR target/35661
19838         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
19839         ".text.unlikely" section as executable.
19840
19841 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
19842
19843         * config/ia64/ia64.c (rtx_needs_barrier): Handle
19844         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
19845         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
19846         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
19847         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
19848         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
19849         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
19850
19851 2008-04-14  Ian Lance Taylor  <iant@google.com>
19852
19853         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
19854         * fold-const.c (fold_comparison): If appropriate, test
19855         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
19856         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
19857         reassociating a pointer type.
19858         * doc/invoke.texi (Optimize Options): Document that
19859         -fstrict-overflow applies to pointer wraparound.
19860
19861 2008-04-13  Jan Hubicka  <jh@suse.cz>
19862
19863         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
19864
19865 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
19866
19867         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
19868         we are going to "save the world".
19869
19870 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
19871
19872         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
19873         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
19874         operand 0 constraint, not "=".
19875
19876 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
19877
19878         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
19879
19880 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
19881
19882         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
19883         of size of positions_needed * CHAR_BIT.
19884
19885 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
19886
19887         PR middle-end/35897
19888         * dse.c (store_info): Change positions_needed to unsigned
19889         HOST_WIDE_INT.
19890         (lowpart_bitmask): New.
19891         (record_store): Cast to unsigned HOST_WIDE_INT for
19892         positions_needed.  Assert width <= size of positions_needed *
19893         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
19894         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
19895         lowpart_bitmask to set mask.
19896
19897 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19898
19899         * config/bfin/constraints.md: New file.
19900         * config/bfin/bfin.md: Include it.
19901         (adddi3): Use satisfies_constraint functions instead of the old macros.
19902         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
19903         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
19904         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
19905         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
19906         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
19907         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
19908         EXTRA_CONSTRAINT): Delete.
19909         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
19910         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
19911         of the old macros.
19912         * config/bfin/bfin.c: Include "tm-constrs.h".
19913         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
19914         Use satisfies_constraint functions instead of the old macros.
19915         * doc/md.texi (Blackfin Constraints): Update file name reference.
19916
19917 2008-04-11  Richard Guenther  <rguenther@suse.de>
19918
19919         PR tree-optimization/35869
19920         * tree-vrp.c (execute_vrp): Move switch statement update after
19921         jump threading.  Schedule another cfg cleanup run.
19922
19923 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
19924
19925         PR c/35744
19926         * attribs.c (decl_attributes): Return early on errorneous node.
19927
19928 2008-04-10  Oleg Ryjkov  <olegr@google.com>
19929
19930         * tree.h (struct tree_base): Added a new flag default_def_flag.
19931         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
19932
19933 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
19934
19935         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
19936
19937 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19938
19939         PR target/35768
19940         * pa.md: Define mode iterator P.  Define mode attribute dwc.
19941         (dcacheflush): Update pattern to use iterator P and attribute dwc.
19942         (icacheflush): Likewise.
19943         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
19944         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
19945
19946 2008-04-11  Ben Elliston  <bje@au.ibm.com>
19947
19948         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
19949
19950 2008-04-10  Rafael Espíndola  <espindola@google.com>
19951
19952         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
19953         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
19954         (extract_range_from_expr): The same.
19955
19956 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
19957
19958         * config/mips/mips.md (GPR2): New mode iterator.
19959         (seq): Add comment.
19960         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
19961         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
19962         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
19963         Rewrite these to take two modes, the mode of comparison and the
19964         mode of the destination.
19965         * config/mips/mips.c (mips_expand_scc): Instead of having
19966         paradoxical subreg as destination, expand "narrowing" scc if mode
19967         of comparison is SI and target is requested in DI mode.
19968         (mips_emit_int_order_test): Update comment.  Make mode of
19969         comparison match CMP0 rather than TARGET.  When creating inverse
19970         target use mode of TARGET.
19971
19972 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
19973
19974         * gcov-dump.c (tag_summary): Only print summaries for the first
19975         GCOV_COUNTERS_SUMMABLE counters.
19976
19977 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
19978
19979         * config/i386/i386.md (absneg): New code iterator.
19980         (absnegprefix): New code attribute.
19981         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
19982         patterns using absneg code iterator.
19983         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
19984         using absneg code iterator.
19985         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
19986         *neg<mode>2 patterns using absneg code iterator.
19987         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
19988         *negextendsfdf2 patterns using absneg code iterator.
19989         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
19990         *negextendsfxf2 patterns using absneg code iterator.
19991         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
19992         *negextendsfdf2 patterns using absneg code iterator.
19993         * config/i386/sse.md (<code><mode>2): Macroize expander from
19994         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
19995
19996 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
19997
19998         * config/s390/s390.h: Remove the remains of the recent search
19999         & replace action of current_function_outgoing_args_size.
20000
20001 2008-04-10  Ira Rosen  <irar@il.ibm.com>
20002
20003         PR tree-optimization/35821
20004         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
20005         NEW_STMT_LIST is not NULL.
20006
20007 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
20008
20009         PR libstdc++/35597
20010         * toplev.c (process_options): Remove -ffunction-sections debugging
20011         warning.
20012
20013 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
20014
20015         PR middle-end/PR28690
20016         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
20017         than gen_rtx_fmt_ee to perform more canonicalizations.
20018
20019 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20020
20021         PR driver/35665
20022         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
20023
20024 2008-04-09  Richard Guenther  <rguenther@suse.de>
20025
20026         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
20027         (dump_function_to_file): Dump function arguments with types.
20028
20029 2008-04-08  Richard Guenther  <rguenther@suse.de>
20030
20031         * fold-const.c (fold_widened_comparison): Do not allow
20032         sign-changes that change the result.
20033
20034 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
20035
20036         PR target/35839
20037         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
20038         kinds of indirect references.
20039
20040 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
20041
20042         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
20043         GNU Fortran language string.
20044
20045 2008-04-08  Rafael Espíndola  <espindola@google.com>
20046
20047         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
20048         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
20049         * tree.h (tree_call_nonnegative_warnv_p): New.
20050
20051 2008-04-08  Jan Hubicka  <jh@suse.cz>
20052
20053         * function.c (free_after_compilation): Clear out regno_reg_rtx
20054         pointer.
20055
20056 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
20057
20058         Revert
20059         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20060
20061         PR middle-end/PR28690
20062         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
20063         same precedence as REG_POINTER and MEM_POINTER operands.
20064
20065 2008-04-08  Richard Guenther  <rguenther@suse.de>
20066
20067         PR middle-end/35834
20068         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
20069         for adding index to base.
20070
20071 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
20072
20073         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
20074         (MINGW_ENABLE_EXECUTE_STACK): New.
20075         (IN_LIBGCC2): For libgcc include windows.h file for
20076         function declarations.
20077
20078 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
20079
20080         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
20081         and tem2 if tem1 is not a REG or MULT.
20082
20083 2008-04-08  Jan Hubicka  <jh@suse.cz>
20084
20085         * function.h (incomming_args): Break out of struct function.
20086         (function_subsections): Break out of struct function.
20087         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
20088         return_rtx and hard_reg_initial_vals from struct function.
20089         Kill inl_max_label_num.
20090         (current_function_pops_args, current_function_args_info,
20091         current_function_args_size, current_function_args_size,
20092         current_function_pretend_args_size,
20093         current_function_outgoing_args_size,
20094         current_function_internal_arg_pointer, current_function_return_rtx):
20095         Kill compatibility accestor macros.
20096         * builtins.c (expand_builtin_apply_args_1): Update.
20097         (expand_builtin_next_arg): Update.
20098         * df-scan.c (df_get_call_refs): Update.
20099         * dbxout.c (dbxout_function_end): Update.
20100         * dwarf2out.c (dwarf2out_switch_text_section): Update.
20101         (output_line_info): Update.
20102         (secname_for_decl): Update.
20103         (dwarf2out_var_location): Update.
20104         * function.c (free_after_compilation): Update.
20105         (assign_parm_find_stack_rtl): Update.
20106         (assign_parms): Update.
20107         (expand_dummy_function_end): Update.
20108         (expand_function_end): Update.
20109         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
20110         (expand_call): Update.
20111         (emit_library_call_value_1): Update.
20112         (store_one_arg): Update.
20113         * varasm.c (initialize_cold_section_name): Update.
20114         (unlikely_text_section): Update.
20115         (unlikely_text_section_p): Update.
20116         (assemble_start_function): Update.
20117         (assemble_end_function): Update.
20118         (default_section_type_flags): Update.
20119         (switch_to_section): Update.
20120         * integrate.c (set_decl_abstract_flags): Update.
20121         (get_hard_reg_initial_val): Update.
20122         (has_hard_reg_initial_val): Update.
20123         (allocate_initial_values): Update.
20124         * resource.c (init_resource_info): Update.
20125         * config/alpha/alpha.c (NUM_ARGS): Update.
20126         (direct_return): Update.
20127         (alpha_va_start): Update.
20128         (alpha_sa_size): Update.
20129         (alpha_initial_elimination_offset): Update.
20130         (alpha_expand_prologue): Update.
20131         (alpha_start_function): Update.
20132         (alpha_expand_epilogue): Update.
20133         (unicosmk_initial_elimination_offset):
20134         * config/alpha/alpha.md (call expander): Update.
20135         * config/s390/s390.c (s390_register_info): Update.
20136         (s390_register_info): Update.
20137         (s390_frame_info): Update.
20138         (s390_initial_elimination_offset): Update.
20139         (s390_build_builtin_va_list): Update.
20140         (s390_va_start): Update.
20141         * config/spu/spu.c (direct_return): Update.
20142         (spu_expand_prologue): Update.
20143         (spu_initial_elimination_offset): Update.
20144         (spu_build_builtin_va_list): Update.
20145         (spu_va_start): Update.
20146         * config/sparc/sparc.c (sparc_init_modes): Update.
20147         (sparc_compute_frame_size): Update.
20148         (function_value): Update.
20149         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
20150         * config/i386/i386.md (return expander): Update.
20151         * config/i386/i386.c (ix86_va_start): Update.
20152         (ix86_can_use_return_insn_p): Update.
20153         (ix86_compute_frame_layout): Update.
20154         (ix86_expand_epilogue): Update.
20155         * config/sh/sh.c (output_stack_adjust): Update.
20156         (calc_live_regs): Update.
20157         (sh_expand_prologue): Update.
20158         (sh_builtin_saveregs): Update.
20159         (sh_va_start): Update.
20160         (initial_elimination_offset): Update.
20161         (sh_allocate_initial_value): Update.
20162         (sh_function_ok_for_sibcall): Update.
20163         (sh_get_pr_initial_val): Update.
20164         * config/sh/sh.md (return expander): Update.
20165         * config/avr/avr.c (frame_pointer_required_p): UPdate.
20166         * config/crx/crx.c (crx_compute_frame): UPdate.
20167         (crx_initial_elimination_offset): UPdate.
20168         * config/xtensa/xtensa.c (compute_frame_size): Update
20169         (xtensa_builtin_saveregs): Update.
20170         (xtensa_va_start): Update.
20171         (order_regs_for_local_alloc): Update.
20172         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
20173         (xstormy16_expand_builtin_va_start): Update.
20174         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
20175         * config/m68hc11/m68hc11.md (return expanders): Update.
20176         * config/m68hc11/m68hc11.c (expand_prologue): Update.
20177         (expand_epilogue): Update.
20178         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
20179         (cris_simple_epilogue): Update.
20180         (cris_expand_prologue): Update.
20181         (cris_expand_epilogue): Update.
20182         * config/iq2000/iq2000.c (iq2000_va_start): Update.
20183         (compute_frame_size): Update.
20184         * config/mt/mt.c (mt_compute_frame_size): Update.
20185         * config/mn10300/mn10300.c (expand_prologue): Update.
20186         (expand_epilogue): Update.
20187         (initial_offset): Update.
20188         (mn10300_builtin_saveregs):
20189         * config/mn10300/mn10300.md (return expander): Update.
20190         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20191         (ia64_initial_elimination_offset): Update.
20192         (ia64_initial_elimination_offset): Update.
20193         (ia64_expand_prologue): Update.
20194         * config/m68k/m68k.md (return expander): Update.
20195         * config/rs6000/rs6000.c (rs6000_va_start): Update.
20196         (rs6000_stack_info): Update.
20197         * config/mcore/mcore.c (layout_mcore_frame): Update.
20198         (mcore_expand_prolog): Update.
20199         * config/arc/arc.c (arc_compute_frame_size): Update.
20200         * config/score/score3.c (score3_compute_frame_size): Update.
20201         * config/score/score7.c (score7_compute_frame_size): Update.
20202         * config/arm/arm.c (use_return_insn): Update.
20203         (thumb_find_work_register): Update.
20204         (arm_compute_save_reg_mask): Update.
20205         (arm_output_function_prologue): Update.
20206         (arm_output_epilogue): Update.
20207         (arm_size_return_regs): Update.
20208         (arm_get_frame_offsets): Update.
20209         (arm_expand_prologue): Update.
20210         (thumb_exit): Update.
20211         (thumb_unexpanded_epilogue): Update.
20212         (thumb1_output_function_prologue): Update.
20213         * config/pa/pa.md (return expander): Update.
20214         * config/pa/pa.c (compute_frame_size): Update.
20215         (hppa_builtin_saveregs): Update.
20216         * config/mips/mips.c (mips_va_start): Update.
20217         (mips16_build_function_stub): Update.
20218         (mips_compute_frame_info): Update.
20219         (mips_restore_gp): Update.
20220         (mips_output_function_prologue): Update.
20221         (mips_expand_prologue): Update.
20222         * config/v850/v850.c (compute_frame_size): Update.
20223         (expand_prologue): * config/mmix/mmix.c (along): update.
20224         (mmix_initial_elimination_offset): update.
20225         (mmix_reorg): update.
20226         (mmix_use_simple_return): update.
20227         (mmix_expand_prologue): update.
20228         (mmix_expand_epilogue): Update.
20229         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
20230         (emit_link_insn): Update.
20231
20232 2008-04-08  Anatoly Sokolov <aesok@post.ru>
20233
20234         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
20235         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
20236         instructions.
20237         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
20238         atmega103 device.
20239
20240 2008-04-07  Jan Hubicka  <jh@suse.cz>
20241
20242         * function.h (rtl): Rename to x_rtl.
20243         (crtl): New define.
20244         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
20245         frame_offset, stack_check_probe_note, arg_pointer_save_area,
20246         used_temp_slots avail_temp_slots, temp_slot_level,
20247         nonlocal_goto_handler_labels): Update accesstors.
20248         (rtl): New global variable.
20249         (struct function): Move some fileds to rtl_data.
20250         (get_arg_pointer_save_area): Update prototype.
20251         * builtins.c (expand_builtin_setjmp_receiver): Update call of
20252         get_arg_pointer_save_area.
20253         * expr.c (init_expr): Update
20254         * function.c (get_frame_size): Update
20255         (assign_stack_local): Update
20256         (expand_function_end): Update.
20257         (get_art_pointer_save_area): Update
20258         * function.h
20259         * emit-rtl.c (rtl): Declare.
20260         (regno_reg_rtx): Declare.
20261         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
20262         Update.
20263         (gen_reg_rtx): Update.
20264         * varasm.c (n_deferred_constatns): Update accestor.
20265         (init_varasm_status): Do not allocate varasm_status.
20266         (force_const_mem, get_pool_size, output_constant_pool): Update.
20267         * stmt.c (force_label_rtx): Do not use x_ prefixes.
20268         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
20269         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
20270         * sparc/sparc.h (INIT_EXPANDERS): Update.
20271         * ia64/ia64.h (INIT_EXPANDERS): Update.
20272
20273 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
20274
20275         * reload.c (push_secondary_reload): Add missing break to for loop.
20276
20277 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20278
20279         PR middle-end/PR28690
20280         * rtlanal.c: Update copyright years.
20281         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
20282         as REG_POINTER and MEM_POINTER operands.
20283         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
20284         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
20285         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
20286         * gcse.c: Update copyright years.
20287         (pre_delete): Call gen_reg_rtx_and_attrs.
20288         (hoist_code): Likewise.
20289         (build_store_vectors): Likewise.
20290         (delete_store): Likewise.
20291         * loop-invariant.c (move_invariant_reg): Likewise.
20292         Update copyright years.
20293
20294 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
20295
20296         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
20297         control string instead of quoted.
20298
20299 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
20300
20301         * doc/rtl.texi: Rewrite of subreg section.
20302
20303 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
20304
20305         PR/35842
20306         * config/i386/i386.c (legitimize_pic_address): Add treating
20307         of dllimport SYM_REF's.
20308         (legitimize_dllimport_symbol): Add prototype.
20309
20310 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20311
20312         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
20313         reference in constructor with non self-referential type.
20314
20315 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20316
20317         Removal of Return with Depressed Stack Pointer support
20318         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
20319         (ECF_SP_DEPRESSED): Likewise.
20320         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
20321         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
20322         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20323         (expand_call): Do not test ECF_SP_DEPRESSED.
20324         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20325         * function.c (keep_stack_depressed): Delete.
20326         (handle_epilogue_set): Likewise.
20327         (update_epilogue_consts): Likewise.
20328         (emit_equiv_load): Likewise.
20329         (thread_prologue_and_epilogue_insns): Remove support for Return with
20330         Depressed Stack Pointer.
20331         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20332
20333 2008-04-06  Richard Guenther  <rguenther@suse.de>
20334
20335         PR tree-optimization/35400
20336         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
20337         information from SSA_NAMEs.
20338
20339 2008-04-06  Anatoly Sokolov <aesok@post.ru>
20340
20341         * config/avr/avr.h (avr_mega_p): Remove declaration.
20342         (AVR_MEGA): Remove macro.
20343         * config/avr/avr.c (avr_mega_p): Remove variable.
20344         (avr_override_options): Remove inicializion of avr_mega_p.
20345         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20346         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20347         (avr_jump_mode): (Ditto.).
20348         (avr_output_progmem_section_asm_op): (Ditto.).
20349         (avr_asm_init_sections): (Ditto.).
20350         (avr_asm_init_sections): (Ditto.).
20351         (avr_rtx_costs): (Ditto.).
20352         * config/avr/avr.md: (Ditto.).
20353         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
20354         '__AVR_MEGA__'.
20355
20356 2008-04-06  Richard Guenther  <rguenther@suse.de>
20357
20358         PR tree-optimization/35842
20359         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
20360         is_gimple_invariant_address.
20361
20362 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
20363
20364         * gcc.c (default_compilers): Sync Fortran extensions list with
20365         that in fortran/lang-specs.h.
20366         * doc/invoke.texi: Likewise.
20367         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
20368         * dwarf2out.c (gen_compile_unit_die): Likewise.
20369
20370 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
20371
20372         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
20373
20374 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
20375
20376         PR target/12329
20377         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
20378         attribute is used for nested functions.
20379
20380 2008-04-05  Jan Hubicka  <jh@suse.cz>
20381
20382         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
20383
20384         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
20385         letter argument.
20386         (dump_files): Update.
20387         (enable_rtl_dump_file): Do not accept letter argument.
20388         * tree-pass.h (dump_file_info): Remove letter argument.
20389         * toplev.c (decode_d_option): Update -da handling.
20390         * toplev.h (enable_rtl_dump_file): Update prototype.
20391         * passes.c (register_one_dump_file): Do not accept IPA argument; work
20392         it out based on pass type.
20393         (register_dump_files_1): Likewise.
20394         (init_optimization_passes): Update register_one_dump_file calls.
20395         (execute_one_pass): Sanity check that IPA passes are called at IPA
20396         level and RTL passes at RTL level.
20397         (execute_pass_list): IPA pass can not be after or subpass of
20398         GIMPLE/RTL pass.
20399         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
20400         disallov RTL subpasses of IPA subpasses.
20401
20402 2008-04-05  Ben Elliston  <bje@au.ibm.com>
20403
20404         * tree-cfg.c (need_fake_edge_p): Return false for calls to
20405         builtins that return exactly once and do not throw. Cache call to
20406         call_expr_flags.
20407
20408 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
20409
20410         PR rtl-optimization/34916
20411         PR middle-end/35519
20412         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
20413         between instruction pairs.
20414
20415 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
20416
20417         * doc/invoke.texi: Document -mbitops for SH.
20418         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
20419         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
20420         * config/sh/sh.c (print_operand): Add %t operand code.
20421         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
20422         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
20423         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
20424         (extendqihi2): Likewise.
20425         (movqi_i): Likewise.
20426         (insv): Use bset, bclr and bst instructions for SH2A if possible.
20427         (extv): Use bld instruction for SH2A if possible.
20428         (extzv): Likewise.
20429         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
20430         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
20431         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
20432         (bset.b, bclr.b): Define peepholes.
20433         * config/sh/sh.opt (mbitops): New option.
20434
20435 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
20436
20437         PR target/35620
20438         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
20439         and view convert expression.
20440
20441 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
20442
20443         PR target/35364
20444         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
20445
20446 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
20447
20448         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
20449
20450         * config/i386/cpuid.h (bit_AES): New.
20451         (bit_PCLMUL): Likewise.
20452
20453         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
20454         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
20455         SSE2 if AES or PCLMUL is enabled.
20456         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
20457         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
20458         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
20459         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
20460         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
20461         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
20462         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
20463         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
20464         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
20465         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
20466         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
20467         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
20468         __builtin_ia32_aeskeygenassist128 and
20469         __builtin_ia32_pclmulqdq128.
20470         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
20471         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
20472         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
20473
20474         * config/i386/i386.h (TARGET_AES): New.
20475         (TARGET_PCLMUL): Likewise.
20476         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
20477
20478         * config/i386/i386.md (UNSPEC_AESENC): New.
20479         (UNSPEC_AESENCLAST): Likewise.
20480         (UNSPEC_AESDEC): Likewise.
20481         (UNSPEC_AESDECLAST): Likewise.
20482         (UNSPEC_AESIMC): Likewise.
20483         (UNSPEC_AESKEYGENASSIST): Likewise.
20484         (UNSPEC_PCLMUL): Likewise.
20485
20486         * config/i386/i386.opt (maes): New.
20487         (mpclmul): Likewise.
20488
20489         * config/i386/sse.md (aesenc): New pattern.
20490         (aesenclast): Likewise.
20491         (aesdec): Likewise.
20492         (aesdeclast): Likewise.
20493         (aesimc): Likewise.
20494         (aeskeygenassist): Likewise.
20495         (pclmulqdq): Likewise.
20496
20497         * config/i386/wmmintrin.h: New.
20498
20499         * doc/extend.texi: Document AES and PCLMUL built-in function.
20500
20501         * doc/invoke.texi: Document -maes and -mpclmul.
20502
20503 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
20504
20505         * function.c (free_after_parsing): Replace with
20506         cxx_push_function_context from C++ front-end.
20507         (allocate_struct_function): Don't call langhook.
20508         * langhooks.h (struct lang_hooks_for_functions): Delete.
20509         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
20510         member "function".
20511         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
20512         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
20513         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
20514         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
20515         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
20516         remove LANG_HOOKS_FUNCTION_INITIALIZER.
20517         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
20518
20519         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
20520         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
20521
20522 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
20523
20524         PR c/35440
20525         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
20526         for all types.
20527
20528 2008-04-04  Richard Guenther  <rguenther@suse.de>
20529
20530         PR middle-end/35823
20531         * fold-const.c (optimize_minmax_comparison): Use the correct
20532         type for the constant in the simplified comparison.
20533
20534 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
20535
20536         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
20537         Pass L2 size as "--param l2-cache-size" to the compiler.
20538         (decode_l2_cache): New function to decode L2 cache parameters using
20539         0x8000006 extended cpuid function.
20540         (detect_caches_amd): Determine parameters of L2 cache using
20541         decode_l2_caches function.
20542         (decode_caches_intel): Decode L2 cache parameters.
20543         (detect_caches_intel): Determine L2 cache parameters using
20544         decode_caches_intel and decode_l2_caches functions.
20545
20546 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
20547
20548         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
20549         secondary input reload for subword loads from the constant pool.
20550
20551 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
20552
20553         PR target/35713
20554         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
20555           constants of the appropriate size for runtime calculations.
20556
20557         PR c/35712
20558         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
20559           decimal-float literal constant zero.
20560
20561 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
20562
20563         PR c/35738
20564         * c-parser.c (c_parser_omp_atomic): Call
20565         default_function_array_conversion on the RHS.
20566
20567         PR middle-end/35818
20568         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
20569         call is_variable_sized if decl has incomplete type.
20570
20571 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
20572
20573         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
20574
20575 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
20576
20577         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
20578         iterators.
20579         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
20580         (sgt<u>): Merge sgt and sgtu into new expander.
20581         (sgt, sgtu): Remove expanders.
20582         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
20583         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
20584         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
20585         *sgtu_<mode>_mips16 into new pattern.
20586         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
20587         (sge<u>): Merge sge and sgeu into new expander.
20588         (sge, sgeu): Remove expanders.
20589         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
20590         new pattern.
20591         (*sge_<mode>, second *sge_<mode>): Remove patterns.
20592         (slt<u>): Merge slt and sltu into new expander.
20593         (slt, sltu): Remove expanders.
20594         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
20595         (*slt_<mode>, *sltu_<mode>): Remove patterns.
20596         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
20597         *sltu_<mode>_mips16 into new pattern.
20598         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
20599         (sle<u>): Merge sle and sleu into new expander.
20600         (sle, sleu): Remove expanders.
20601         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
20602         (*sle_<mode>, *sleu_<mode>): Remove patterns.
20603         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
20604         *sleu_<mode>_mips16 into new pattern.
20605         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
20606
20607 2008-04-03  Jan Hubicka  <jh@suse.cz>
20608
20609         PR tree-optimization/35795
20610         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
20611         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20612         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
20613         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
20614         * score/score3.c (score3_output_mi_thunk): Likewise.
20615         * score/score7.c (score7_output_mi_thunk): Likewise.
20616         * mips/mips.c (mips_output_mi_thunk): Likewise.
20617
20618 2008-04-03  Richard Guenther  <rguenther@suse.de>
20619
20620         * tree-vrp.c (extract_range_from_unary_expr): Handle all
20621         conversions.  Simplify code.
20622
20623 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
20624
20625         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
20626
20627 2008-04-03  Tom Tromey  <tromey@redhat.com>
20628             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20629
20630         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
20631         * config/bfin/t-bfin-linux (generated_files): Add
20632         linux-sysroot-suffix.h.
20633         * doc/install.texi (Prerequisites): Require make 3.80.
20634         * doc/sourcebuild.texi (Front End Directory): Document new
20635         variable.
20636         * Makefile.in (generated_files): New variable.
20637         (ALL_HOST_OBJS): New variable.
20638         ($(ALL_HOST_OBJS)): New target.
20639
20640 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
20641
20642         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
20643         (remap_block): Call id->transform_lang_insert_block instead
20644         of langhook.
20645         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
20646         Set id.transform_lang_insert_block to NULL.
20647         (clone_body): Move to cp/optimize.c
20648         * tree-inline.h (struct copy_body_data): Change
20649         transform_lang_insert_block to function pointer.
20650         (copy_generic_body, copy_decl_no_change): Export.
20651         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
20652         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
20653         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
20654
20655         * c-tree.h (insert_block): Kill.
20656         * c-decl.c (insert_block): Kill.
20657
20658 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
20659
20660         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
20661         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
20662         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
20663         argument.
20664         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
20665         argument, call {push,pop}_function_context from here.
20666         * c-parser.c: Use c_{push,pop}_function_context.
20667
20668         * function.c (push_function_context_to): Move meat ...
20669         (push_function_context): ... here.  Simplify.
20670         * function.c (pop_function_context_from): Move meat ...
20671         (pop_function_context): ... here.  Simplify.
20672         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
20673         leave_nested).
20674         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
20675         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
20676         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
20677         * tree.h (push_function_context_to, pop_function_context_from): Remove.
20678
20679 2008-04-03  Ben Elliston  <bje@au.ibm.com>
20680
20681         * expmed.c (extract_force_align_mem_bit_field): Remove.
20682
20683 2008-04-03  Richard Guenther  <rguenther@suse.de>
20684
20685         PR middle-end/35800
20686         * expr.h (try_casesi): Adjust prototype.
20687         * expr.c (try_casesi): Take fallback label as extra parameter.
20688         Use that for gen_casesi if default_label is NULL.
20689         * stmt.c (expand_case): Pass fallback label to try_casesi,
20690         make sure to fill gaps with a fallback label if default_label
20691         is not present.
20692
20693 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
20694
20695         PR target/35801
20696         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
20697
20698 2008-04-03  Ben Elliston  <bje@au.ibm.com>
20699
20700         * expmed.c (extract_split_bit_field): Remove if (0) code.
20701         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
20702         (do_ds_constraint): Likewise.
20703
20704 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
20705
20706         * doc/cppopts.texi (-dU): Document.
20707         * c-common.h (flag_dump_macros): Update comment.
20708         * c-opts.c (handle_OPT_d): Handle -dU.
20709         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
20710         dump_queued_macros, cb_used_define, cb_used_undef): New.
20711         (init_pp_output): Handle -dU.
20712         (cb_line_change): Call dump_queued_macros.
20713         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
20714
20715 2008-04-02  Anatoly Sokolov <aesok@post.ru>
20716
20717         * config/avr/predicates.md (io_address_operand): New predicate.
20718         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
20719         * config/avr/avr.c (avr_io_address_p): Remove function.
20720         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
20721         'avr_io_address_p' function.
20722         (out_movhi_r_mr): (Ditto.).
20723         (out_movqi_mr_r): (Ditto.).
20724         (out_movhi_mr_r): (Ditto.).
20725         (avr_address_cost): (Ditto.).
20726
20727 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
20728
20729         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
20730         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
20731         in 32bit mode when XMM registers are available to avoid store
20732         forwarding stalls.
20733         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
20734         corresponding post-reload splitters.
20735
20736 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20737
20738         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
20739         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
20740         __builtin_ia32_roundss.
20741         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
20742         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
20743         __builtin_ia32_roundss.
20744         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
20745         IX86_BUILTIN_SHUFPD here.
20746
20747 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20748
20749         * config/i386/i386.md (plogic): New.
20750         (plogicprefix): Likewise.
20751
20752         * config/i386/mmx.md (mmx_<code><mode>3): New.
20753         (mmx_and<mode>3): Removed.
20754         (mmx_ior<mode>3): Likewise.
20755         (mmx_xor<mode>3): Likewise.
20756
20757         * config/i386/sse.md (<code><mode>3): New.
20758         (*<code><mode>3): Likewise.
20759         (*<code><mode>3): Likewise.
20760         (<code><mode>3): Likewise.
20761         (*sse_<code><mode>3): Likewise.
20762         (*sse2_<code><mode>3): Likewise.
20763         (<code>tf3): Likewise.
20764         (*<code>tf3): Likewise.
20765         (and<mode>3): Likewise.
20766         (*and<mode>3): Likewise.
20767         (ior<mode>3): Removed.
20768         (*ior<mode>3): Likewise.
20769         (xor<mode>3): Likewise.
20770         (*xor<mode>3): Likewise.
20771         (*and<mode>3): Likewise.
20772         (*ior<mode>3): Likewise.
20773         (*xor<mode>3): Likewise.
20774         (and<mode>3): Likewise.
20775         (*sse_and<mode>3): Likewise.
20776         (*sse2_and<mode>3): Likewise.
20777         (andtf3): Likewise.
20778         (*andtf3): Likewise.
20779         (ior<mode>3): Likewise.
20780         (*sse_ior<mode>3): Likewise.
20781         (*sse2_ior<mode>3): Likewise.
20782         (iortf3): Likewise.
20783         (*iortf3): Likewise.
20784         (xor<mode>3): Likewise.
20785         (*sse_xor<mode>3): Likewise.
20786         (*sse2_xor<mode>3): Likewise.
20787         (xortf3): Likewise.
20788         (*xortf3): Likewise.
20789
20790 2008-04-02  Richard Guenther  <rguenther@suse.de>
20791
20792         PR tree-optimization/14495
20793         PR tree-optimization/34793
20794         * tree-vrp.c (struct switch_update): New structure.
20795         (to_remove_edges, to_update_switch_stmts): New VECs.
20796         (simplify_switch_using_ranges): New function.  Remove not taken
20797         case labels and edges.
20798         (simplify_stmt_using_ranges): Call it.
20799         (identify_jump_threads): Mark edges we have queued for removal
20800         so we don't thread them.
20801         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
20802         case label vector.
20803         * tree-cfg.c (group_case_labels): Deal with missing default label.
20804         (tree_verify_flow_info): Allow missing default label.
20805         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
20806         (emit_case_nodes): Likewise.
20807         (expand_case): Do not rely on the default label to be present.
20808         * expr.c (try_casesi): Deal with NULL default_label.
20809         (do_tablejump): Likewise.
20810
20811 2008-04-02  Richard Guenther  <rguenther@suse.de>
20812
20813         PR tree-optimization/14495
20814         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
20815         SWITCH_EXPR here ...
20816         (vrp_visit_switch_stmt): ... but here (new function).
20817         (find_case_label_index): New helper function.
20818         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
20819
20820 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20821
20822         * fwprop.c: Fix ISO-C99ism.
20823
20824 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20825
20826         PR bootstrap/35752
20827         * Makefile.in (objdir): Set it here.
20828         * configure.ac: Not here.  Find dynamic linker characteristics.
20829         * exec-tool.in: Use them.
20830         * aclocal.m4: Regenerate.
20831         * configure: Regenerate.
20832
20833 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20834
20835         * expr.c (expand_var): Delete it.
20836         * expr.h (expand_var): Delete prototype.
20837         * function.c (expand_function_start): Use expand_decl instead.
20838         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
20839         langhook.
20840
20841 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
20842
20843         PR rtl-optimization/35542
20844         * fwprop.c (forward_propagate_and_simplify): Replace
20845         loc_reg_mentioned_in_p with reg_mentioned_p.
20846
20847 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20848
20849         PR rtl-optimization/35281
20850         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
20851         (propagate_rtx_1): Handle PR_HANDLE_MEM.
20852         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
20853         (varying_mem_p): Move above propagate_rtx.
20854         (all_uses_available_at): Do not check MEMs.
20855
20856 2008-04-02  Rafael Espíndola  <espindola@google.com>
20857
20858         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
20859         (register_edge_assert_for_2): Split the cond argument.
20860         (register_edge_assert_for_1): Adjust for the change in
20861         register_edge_assert_for_2.
20862         (register_edge_assert_for): Split the cond argument.
20863         (find_switch_asserts): Adjust for the change in
20864         register_edge_assert_for.
20865
20866 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
20867
20868         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
20869         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
20870         offsets for 64-bit mingw.
20871         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
20872         abi for x86_64-pc-mingw.
20873
20874 2008-04-02  Richard Guenther  <rguenther@suse.de>
20875
20876         * tree-vrp.c (extract_range_from_assert): Make sure to not
20877         produce range min/max with TREE_OVERFOW set.
20878         If merging a anti-range and a range keep the anti-range if
20879         the range covers all values of the type.
20880         (register_edge_assert_for_2): Only allow sign-changing
20881         conversions in detecting canonical range checks.  Also
20882         register an assert for the unsigned name if useful.
20883
20884         PR tree-optimization/35787
20885         * tree-vrp.c (vrp_val_max): New function.
20886         (vrp_val_min): Likewise.
20887         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
20888         (vrp_val_is_min): Likewise.
20889         (supports_overflow_infinity): Use vrp_val_{min,max}.
20890         (negative_overflow_infinity): Likewise.
20891         (positive_overflow_infinity): Likewise.
20892         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
20893         (is_positive_overflow_infinity): Likewise.
20894         (is_overflow_infinity): Likewise.
20895         (avoid_overflow_infinity): Use vrp_val_{min,max} and
20896         vrp_val_is_{min,max}.
20897         (set_and_canonicalize_value_range): Canonicalize anti-ranges
20898         to ranges if possible.  Avoid empty ranges.
20899
20900 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20901
20902         PR middle-end/35705
20903         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
20904         the expression is a function address.
20905
20906 2008-04-01  George Helffrich  <george@gcc.gnu.org>
20907
20908         PR fortran/35154, fortran/23057
20909         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
20910         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
20911         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
20912         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
20913         in common.
20914         (dbxout_syms): Check for COMMON-based symbol and wrap in
20915         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
20916         in bracket for efficiency.
20917
20918         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
20919         using DW_TAG_common_block + member offset.
20920         (add_pubname_string): New function.
20921         (dw_expand_expr): New function to find block name and offset for
20922         COMMON var.
20923         (common_check): New function to check whether symbol in Fortran COMMON.
20924         (gen_variable_die): If COMMON, use DW_TAG_common_block.
20925
20926 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
20927
20928         PR c/35436
20929         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
20930
20931 2008-04-02  Ben Elliston  <bje@au.ibm.com>
20932
20933         * config/v850/v850.md (casesi): Remove if (0) code.
20934         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
20935         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
20936
20937 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
20938
20939         * config/i386/i386.md (rex64suffix): New mode attribute.
20940         (floathi<mode>2): Disable expander for SSE math.
20941         (*floathi<mode>2_1): New insn insn_and_split pattern.
20942         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
20943         corresponding post-reload splitters.
20944         (*floathi<mode>2_i387): New macroized insn pattern.
20945         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
20946         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
20947         insn_and_split pattern.
20948         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
20949         New macroized instruction patterns and corresponding post-reload
20950         splitters.
20951         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
20952         and corresponding post-reload splitters.
20953         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
20954         New macroized instruction patterns.
20955         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
20956         macroized instruction patterns and corresponding post-reload splitters.
20957         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
20958         corresponding post-reload splitters.
20959         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
20960         New macroized instruction patterns.
20961         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
20962         corresponding post-reload splitters.
20963         (*floatsi<mode>2_i387): New macroized instruction patterns.
20964
20965 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
20966
20967         * config/i386/i386.md (smaxmin): New.
20968         (umaxmin): Likewise.
20969         (maxminiprefix): Likewise.
20970         (maxminfprefix): Likewise.
20971         (<code><mode>3): Likewise.
20972         (smin<mode>3): Removed.
20973         (smax<mode>3): Likewise.
20974
20975         * config/i386/mmx.md (mmx_<code>v2sf3): New.
20976         (mmx_<code>v4hi3): Likewise.
20977         (mmx_<code>v8qi3): Likewise.
20978         (mmx_smaxv2sf3): Removed.
20979         (mmx_sminv2sf3): Likewise.
20980         (mmx_umaxv8qi3): Likewise.
20981         (mmx_smaxv4hi3): Likewise.
20982         (mmx_uminv8qi3): Likewise.
20983         (mmx_sminv4hi3): Likewise.
20984
20985         * config/i386/sse.md (<addsub><mode>3): New.
20986         (*<addsub><mode>3): Likewise.
20987         (<sse>_vm<addsub><mode>3): Likewise.
20988         (<maxmin><mode>3): Likewise.
20989         (*<maxmin><mode>3_finite): Likewise.
20990         (*<maxmin><mode>3): Likewise.
20991         (<sse>_vm<maxmin><mode>3): Likewise.
20992         (sse3_h<addsub>v4sf3): Likewise.
20993         (sse3_h<addsub>v2df3): Likewise.
20994         (<maxmin>v16qi3): Likewise.
20995         (*<maxmin>v16qi3): Likewise.
20996         (<maxmin>v8hi3): Likewise.
20997         (*<maxmin>v8hi3): Likewise.
20998         (*sse4_1_<maxmin><mode>3): Likewise.
20999         (*sse4_1_<maxmin><mode>3): Likewise.
21000         (add<mode>3): Removed.
21001         (*add<mode>3): Likewise.
21002         (<sse>_vmadd<mode>3): Likewise.
21003         (sub<mode>3): Likewise.
21004         (*sub<mode>3): Likewise.
21005         (<sse>_vmsub<mode>3): Likewise.
21006         (smin<mode>3): Likewise.
21007         (*smin<mode>3_finite): Likewise.
21008         (*smin<mode>3): Likewise.
21009         (<sse>_vmsmin<mode>3): Likewise.
21010         (smax<mode>3): Likewise.
21011         (*smax<mode>3_finite): Likewise.
21012         (*smax<mode>3): Likewise.
21013         (<sse>_vmsmax<mode>3): Likewise.
21014         (sse3_haddv4sf3): Likewise.
21015         (sse3_haddv2df3): Likewise.
21016         (sse3_hsubv4sf3): Likewise.
21017         (sse3_hsubv2df3): Likewise.
21018         (umaxv16qi3): Likewise.
21019         (*umaxv16qi3): Likewise.
21020         (smaxv8hi3): Likewise.
21021         (*smaxv8hi3): Likewise.
21022         (*sse4_1_smax<mode>3): Likewise.
21023         (*sse4_1_umax<mode>3): Likewise.
21024         (uminv16qi3): Likewise.
21025         (*uminv16qi3): Likewise.
21026         (sminv8hi3): Likewise.
21027         (*sminv8hi3): Likewise.
21028         (*sse4_1_smin<mode>3): Likewise.
21029         (*sse4_1_umin<mode>3): Likewise.
21030
21031 2008-04-01  Rafael Espíndola  <espindola@google.com>
21032
21033         * tree-cfg.c (verify_expr): remove in_phi.
21034         (verify_stmt): Don't call walk_tree with verify_expr. Use
21035         is_gimple_min_invariant instead of is_gimple_val.
21036
21037 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
21038
21039         * doc/include/gpl_v3.texi: Update for manpage generation.
21040         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
21041         gpl.texi.
21042         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
21043         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
21044         gpl_v3.texi instead of gpl.texi.
21045         (gpl.pod): New.
21046
21047 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
21048
21049         PR pch/13675
21050         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
21051
21052 2008-04-01  Rafael Espíndola  <espindola@google.com>
21053
21054         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
21055         (extract_code_and_val_from_cond): Use
21056         extract_code_and_val_from_cond_with_ops.
21057
21058 2008-04-01  Jan Hubicka  <jh@suse.cz>
21059
21060         * function.c (free_after_compilation): Free epilogue_delay_list.
21061         (prepare_function_start): Assert that previous compilation was freed.
21062
21063 2008-04-01  Jan Hubicka  <jh@suse.cz>
21064             Jim Wilson  <wilson@tuliptree.org>
21065             Andreas Tobler <andreast@gcc.gnu.org>
21066
21067         PR middle-end/35781
21068         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
21069         rtl.emit instead cfun->emit.
21070         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
21071         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
21072
21073 2008-04-01  Ben Elliston  <bje@au.ibm.com>
21074
21075         * doc/c-tree.texi (Function Basics): Fix grammatical error.
21076
21077 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
21078
21079         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
21080         New options
21081         (fprofile-use): Add var flag_profile_use
21082         * coverage.c (coverage_begin_output): Do not open a gcno file for
21083         output only if -ftest-coverage is set.
21084         Do not add getpwd() to gcda file path.
21085         (build_gcov_info): Check the new flag
21086         flag_profile_datafile_relative_path.
21087         (coverage_init): Use profile_data_prefix.
21088         Read profile counter only if flag_profile_use is set.
21089         * opts.c (common_handle_option): New option fprofile-use=,
21090         fprofile-dir=, fprofile-generate=.
21091         * toplev.c (profile_data_prefix): New variable definition.
21092         * toplev.h (profile_data_prefix): New declaration.
21093         * doc/invoke.tex (Option Summary, Optimization Options):
21094         Add new options.
21095
21096 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
21097
21098         * varasm.c (output_constant_pool_1): In LABEL_REF check,
21099         use tmp consistently.
21100
21101         PR target/35695
21102         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
21103         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21104         UNSPEC_FR_RECIP_APPROX_RES.
21105         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
21106
21107 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
21108
21109         PR c/35750
21110         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
21111
21112 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21113
21114         PR middle-end/30186
21115         * fold-const.c (fold_indirect_ref_1): Support accessing non first
21116         element of the vector via a pointer.
21117
21118 2008-03-31  Ian Lance Taylor  <iant@google.com>
21119
21120         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
21121
21122 2008-03-31  Jan Hubicka  <jh@suse.cz>
21123
21124         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21125         get_arg_pointer_save_area.
21126         * expr.c (init_expr): Just clear out rtl.expr.
21127         * function.c (free_after_compilation): Clear out whole RTL structure.
21128         (get_func_frame_size): Merge into ...
21129         (get_frame_size): ... this one.
21130         (assign_stack_local_1): Merge into ...
21131         (assign_stack_local): ... this one.
21132         (expand_function_end): Update call of get_arg_pointer_save_area.
21133         (get_art_pointer_save_area): Remove cfun argument.
21134         * function.h (emit_status): regno_pointer_align does not need length
21135         attribute. Move x_regno_reg_rtx to ...
21136         (regno_reg_rtx): ... new global array.
21137         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
21138         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
21139         apply_args_value, forced_labels, stack_pointer_delta):
21140         Update accestors.
21141         (struct varasm_status): Move here from varasm.c
21142         (struct rtl_data): New. Move here some fields from struct function.
21143         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21144         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21145         used_temp_slots avail_temp_slots, temp_slot_level,
21146         nonlocal_goto_handler_labels): Update accesstors.
21147         (rtl): New global variable.
21148         (struct function): Move some fileds to rtl_data.
21149         (get_arg_pointer_save_area): Update prototype.
21150         * emit-rtl.c (rtl): Declare.
21151         (regno_reg_rtx): Declare.
21152         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21153         Update.
21154         (gen_reg_rtx): Update.
21155         (init_virtual_regs): Do not tate emit_status argument.
21156         (init_emit): Do not allocate emit.
21157         * varasm.c (varasm_statuc): Move to function.h.
21158         (n_deferred_constatns): Update accestor.
21159         (init_varasm_status): Do not allocate varasm_status.
21160         (force_const_mem, get_pool_size, output_constant_pool): Update.
21161         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21162         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21163
21164 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
21165
21166         PR rtl-optimization/35729
21167         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
21168         references.
21169
21170 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
21171
21172         PR target/32000
21173         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
21174         load/store if memory is unaligned.
21175         (*movti_rex64): Likewise.
21176
21177         * config/i386/predicates.md (misaligned_operand): New.
21178
21179 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
21180
21181         PR tree-opt/35431
21182         * tree-ssa-phiopt.c (conditional_replacement): Return early for
21183         complex types.
21184
21185 2008-03-31  Jan Beulich  <jbeulich@novell.com>
21186
21187         * config/ia64/constraints.md: Add 'j' constraint.
21188         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
21189         (movdi_internal): Likewise.
21190
21191 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
21192
21193         PR c/35748
21194         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
21195
21196 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21197
21198         PR target/35757
21199         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
21200         proper error message for the third argument on blendpd and
21201         blendps.
21202
21203         * config/i386/sse.md (blendbits): New.
21204         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
21205
21206 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
21207
21208         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
21209
21210 2008-03-30  Richard Guenther  <rguenther@suse.de>
21211
21212         PR middle-end/31023
21213         * fold-const.c (fold_sign_changed_comparison): Do leave
21214         conversions to base-types alone.
21215
21216 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21217
21218         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
21219         the link register if one altivec register is be saved.
21220
21221 2008-03-30  Ben Elliston  <bje@au.ibm.com>
21222
21223         * final.c (final_scan_insn): Remove if (0) code.
21224
21225 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
21226
21227         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
21228
21229 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
21230
21231         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
21232         of V4SFmode to ix86_binary_operator_ok.
21233
21234 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
21235
21236         * config/i386/i386.c (override_options): Initialize
21237         ix86_veclib_handler to ix86_veclibabi_svml when
21238         -mveclibabi=svml is used.
21239         (ix86_veclibabi_svml): New function for SVML ABI style
21240         vectorization support.
21241         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
21242
21243 2008-03-28  Rafael Espíndola  <espindola@google.com>
21244
21245         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
21246         (tree_binary_nonnegative_warnv_p): Make it public.
21247         (tree_single_nonnegative_warnv_p): Make it public.
21248         (tree_invalid_nonnegative_warnv_p): Make it public.
21249         (tree_unary_nonzero_warnv_p): Make it public.
21250         (tree_binary_nonzero_warnv_p): Make it public
21251         (tree_single_nonzero_warnv_p): Make it public.
21252         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
21253         (extract_range_from_binary_expr): Split the expr argument.
21254         (extract_range_from_unary_expr): Split the expr argument.
21255         (extract_range_from_comparison): Split the expr argument.
21256         (extract_range_from_expr): Use the new aux functions.
21257         (vrp_evaluate_conditional_warnv): Use
21258         vrp_evaluate_conditional_warnv_with_ops.
21259         * tree.h (tree_unary_nonzero_warnv_p): Declare.
21260         (tree_binary_nonzero_warnv_p): Declare.
21261         (tree_single_nonzero_warnv_p): Declare.
21262         (tree_expr_nonzero_warnv_p): Declare.
21263         (tree_unary_nonnegative_warnv_p): Declare.
21264         (tree_binary_nonnegative_warnv_p): Declare.
21265         (tree_single_nonnegative_warnv_p): Declare.
21266         (tree_invalid_nonnegative_warnv_p): Declare.
21267
21268 2008-03-28  Richard Guenther  <rguenther@suse.de>
21269
21270         PR tree-optimization/30317
21271         PR tree-optimization/30911
21272         PR tree-optimization/34793
21273         * tree-vrp.c (set_and_canonicalize_value_range): New function.
21274         (struct assert_locus_d): New member EXPR.
21275         (register_new_assert_for): Add EXPR parameter to support
21276         ASSERT_EXPR <name, expr OP limit>.
21277         (register_edge_assert_for_1): Adjust callers.
21278         (find_assert_locations): Likewise.
21279         (process_assert_insertions_for): Build condition from expression.
21280         (extract_range_from_assert): Handle ASSERT_EXPRs
21281         of the form ASSERT_EXPR <name, expr OP limit>.
21282         (register_edge_assert_for_2): New helper registering
21283         asserts for comparisons.  Recognize range tests of the form
21284         (unsigned)i - CST1 OP CST2.
21285         (register_edge_assert_for_1): Use it.
21286         (register_edge_assert_for): Likewise.
21287         (needs_overflow_infinity): Integer sub-types
21288         do not need overflow infinities.
21289         (vrp_val_is_max): The extreme values of integer sub-types
21290         are those of the base type.
21291         (vrp_val_is_min): Likewise.
21292         * tree.def (ASSERT_EXPR): Document extra allowed conditional
21293         expressions.
21294
21295 2008-03-28  Nick Clifton  <nickc@redhat.com>
21296
21297         PR target/31110
21298         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
21299         Return GENERAL_REGS for stack adjustment reloads.
21300
21301 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21302
21303         PR target/31334
21304         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
21305         const_vector when all the vectors are constant.
21306
21307 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
21308
21309         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
21310         comparisons.
21311         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
21312         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
21313         (scc_sf): New.
21314         (s<code>_sf): Use new scc_sf attribute for opcode names.
21315
21316 2008-03-27  Tom Tromey  <tromey@redhat.com>
21317
21318         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
21319         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
21320         config/spu/t-spu-elf, config/i386/t-interix,
21321         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
21322         config/i386/x-darwin, config/i386/x-mingw32,
21323         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
21324         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
21325         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
21326         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
21327         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
21328         config/rs6000/x-darwin, config/rs6000/t-rs6000,
21329         config/score/t-score-elf, config/arm/t-strongarm-pe,
21330         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
21331         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
21332         Revert automatic dependency patch.
21333
21334 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
21335
21336         PR target/35657
21337         * config/i386/i386.c (ix86_function_arg_boundary): Align
21338         decimal floating point to its natural boundary.
21339
21340 2008-03-27  Richard Guenther  <rguenther@suse.de>
21341
21342         PR middle-end/35716
21343         * fold-const.c (fold_comparison): Restrict distinct decl
21344         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
21345         solely rely on operand_equal_p.
21346
21347 2008-03-27  Richard Guenther  <rguenther@suse.de>
21348
21349         PR c/32511
21350         * c-common.c (handle_weak_attribute): Reject combination of
21351         weak and inline.
21352
21353 2008-03-27  Richard Guenther  <rguenther@suse.de>
21354
21355         PR tree-optimization/32810
21356         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
21357         conversions from DECL_INITIAL.
21358         (fold_const_aggregate_ref): Likewise from constructor elements.
21359
21360 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
21361
21362         * tree-affine.h (aff_combination_expand): Declare.
21363         (get_inner_reference_aff): Likewise.
21364         * tree-affine.c (aff_combination_expand): Split out from
21365         tree_to_aff_combination_expand.
21366         (get_inner_reference_aff): New function.
21367         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
21368         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
21369         (struct lim_aux_data): sm_done field removed.
21370         (mem_ref_loc_p, mem_ref_locs_p): New types.
21371         (struct mem_ref): Added id, stored, accesses_in_loop,
21372         indep_loop, dep_loop, indep_ref, dep_ref fields.
21373         Removed is_stored, locs and next fields.
21374         (memory_accesses): New variable.
21375         (movement_possibility): Do not allow moving statements
21376         that store to memory.
21377         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
21378         New functions.
21379         (determine_max_movement): For statements with memory references,
21380         find the outermost loop in that the reference is independent.
21381         (move_computations_stmt): Mark the virtual operands for renaming.
21382         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
21383         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
21384         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
21385         add_vop_ref_mapping, create_vop_ref_mapping_loop,
21386         create_vop_ref_mapping, analyze_memory_references,
21387         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
21388         get_all_locs_in_loop, ref_always_accessed_p,
21389         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
21390         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
21391         store_motion_loop, store_motion): New functions.
21392         (struct vop_to_refs_elt): New type.
21393         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
21394         memref_hash, memref_eq, hoist_memory_references): Rewritten.
21395         (schedule_sm): Replaced by...
21396         (execute_sm): ... this.
21397         (determine_lsm_ref, hoist_memory_references,
21398         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
21399         find_more_ref_vops, free_mem_ref, free_mem_refs,
21400         determine_lsm_loop, determine_lsm): Removed.
21401         (tree_ssa_lim_finalize): Free data structures used by store motion.
21402         (tree_ssa_lim): Call analyze_memory_references.  Use
21403         store_motion instead of determine_lsm.
21404
21405 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
21406
21407         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
21408         rename tmake_file to m68hc11/t-m68hc11.
21409         (mcore): Set inhibit_libc to true.
21410         * config.host (alpha*-dec-*vms*): Set extra_programs.
21411         (interix3*): Don't use host_xmake_file.
21412         * configure.ac: Let config.gcc override inhibit_libc.
21413         * configure: Regenerate.
21414
21415         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
21416         * config/t-openbsd-thread: Remove commented out lines.
21417
21418         * config/x-interix: Remove.
21419
21420         * config/m68hc11/t-m68hc11-gas: Rename to...
21421         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
21422
21423         * config/mcore/t-mcore: Remove T_CFLAGS.
21424         * config/mcore/t-mcore-pe: Likewise.
21425
21426 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
21427
21428         * configure.ac: Replace custom __GNU_SOURCE test with
21429         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
21430         * aclocal.m4: Regenerate.
21431         * configure: Regenerate.
21432         * config.in: Regenerate.
21433
21434 2008-03-27  Richard Guenther  <rguenther@suse.de>
21435
21436         * fold-const.c (target.h): Include.
21437         (fold_comparison): Fold comparison of addresses of decls
21438         that bind locally or of constants.  Consolidate address folding code.
21439         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
21440         results from fold_binary_to_constant.
21441         (compare_values_warnv): Likewise.
21442
21443 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
21444
21445         PR middle-end/35429
21446         * fold-const.c (fold_truthop): Check for integeral types when folding
21447         a == 0 && b == 0 and a != 0 || b != 0 .
21448
21449 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
21450
21451         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
21452
21453 2008-03-26  Andreas Schwab  <schwab@suse.de>
21454
21455         * doc/invoke.texi: Fix use of @item vs. @itemx.
21456
21457 2008-03-26  Tom Tromey  <tromey@redhat.com>
21458
21459         * Makefile.in (build/gensupport.o, build/print-rtl.o,
21460         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
21461         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
21462         build/gencodes.o, build/genconditions.o, build/genconfig.o,
21463         build/genconstants.o, build/genemit.o, build/genextract.o,
21464         build/genflags.o, build/genmddeps.o, build/genopinit.o,
21465         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
21466         options.h.
21467
21468 2008-03-26  Richard Guenther  <rguenther@suse.de>
21469
21470         Revert
21471         2008-03-26  Richard Guenther  <rguenther@suse.de>
21472
21473         * fold-const.c (target.h): Include.
21474         (fold_comparison): Fold comparison of addresses of two decls
21475         that bind locally.  Consolidate address folding code.
21476
21477 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21478
21479         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
21480         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
21481         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
21482         dconstsqrt2, dconstthird, dconste and/or dconst10.
21483         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
21484         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
21485         dconstsqrt2, dconste): Delete.
21486         (init_emit_once): Likewise.  Simplify initializing dconstm1.
21487         Constify variable.
21488         * real.c (get_real_const): New.
21489         * real.h (dconst3, dconst10, dconstm2, dconstthird,
21490         dconstsqrt2, dconste): Delete.
21491         (real_value_const, get_real_const): New.
21492
21493 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
21494
21495         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
21496
21497         * config/i386/i386.c (ix86_function_arg_boundary): Check
21498         BIGGEST_ALIGNMENT instead of 128.
21499         (setup_incoming_varargs_64): Likewise.
21500
21501 2008-03-26  Tom Tromey  <tromey@redhat.com>
21502
21503         * Makefile.in (DEPFILES): Add missing '/'.
21504
21505 2008-03-26  Richard Guenther  <rguenther@suse.de>
21506
21507         * fold-const.c (target.h): Include.
21508         (fold_comparison): Fold comparison of addresses of two decls
21509         that bind locally.  Consolidate address folding code.
21510
21511 2008-03-26  Nick Clifton  <nickc@redhat.com>
21512
21513         PR target/31232
21514         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
21515         not allow INT+INT as a legitimate addressing mode.
21516
21517 2008-03-26  Richard Guenther  <rguenther@suse.de>
21518
21519         * tree-flow.h (widen_bitfield): Remove declaration.
21520         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
21521         (widen_bitfield): Remove function.
21522         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
21523         code.
21524
21525 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21526
21527         PR target/31558
21528         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
21529         error_mark_node's.
21530
21531 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
21532
21533         PR rtl-optimization/35232
21534         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
21535         (forget_old_reloads_1, forget_marked_reloads): Don't clear
21536         reg_reloaded_call_part_clobbered here.
21537         (reload_regs_reach_end_p): New function.
21538         (reload_reg_rtx_for_input): New variable.
21539         (reload_reg_rtx_for_output): Likewise.
21540         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
21541         when reassigning a pseudo register.  Load reloadreg from
21542         reload_reg_rtx_for_input, moving the mode and register
21543         calculation to...
21544         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
21545         instead of the original when deciding whether an input reload
21546         would be a no-op or whether an output reload can be deleted.
21547         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
21548         when setting up new_spill_reg_store.  Load it from
21549         reload_reg_rtx_for_output, moving the mode and register
21550         calculation to...
21551         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
21552         instead of the original when deciding whether an output reload
21553         would be a no-op.  Do the same when modifying insn notes.
21554         Use rtx_equal_p instead of == to compare the registers.
21555         (inherit_piecemeal_p): Take a mode and two register numbers
21556         as argument.
21557         (emit_reload_insns): Clear new_spill_reg_store for every hard
21558         register in the reload register.  Remove spill registers
21559         from reg_reloaded_valid before considering whether to record
21560         inheritance information for them.  Use reload_reg_rtx_for_output
21561         instead of reg_rtx when recording output reloads.  Use
21562         reload_reg_rtx_for_input instead of reg_rtx when recording
21563         input reloads.  Set or clear reg_reloaded_call_part_clobbered
21564         at the same time as setting reg_reloaded_valid.
21565         (delete_output_reload): Add a new_reload_reg parameter and use it
21566         instead of rld[j].reg_rtx.
21567         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
21568         calls accordingly.
21569
21570 2008-03-25  Tom Tromey  <tromey@redhat.com>
21571
21572         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
21573         (build/genattr.o): Likewise.
21574         (build/genattrtab.o): Likewise.
21575         (build/gencodes.o): Likewise.
21576         (build/genconfig.o): Likewise.
21577         (build/genconstants.o): Likewise.
21578         (build/genemit.o): Likewise.
21579         (build/genextract.o): Likewise.
21580         (build/genflags.o): Likewise.
21581
21582 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
21583
21584         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
21585         instead of size_int for integer types.
21586         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
21587         to match type of MINUS_EXPR.
21588
21589 2008-03-25  Tom Tromey  <tromey@redhat.com>
21590
21591         * configure: Rebuilt.
21592         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
21593         Makefile.
21594
21595 2008-03-25  Tom Tromey  <tromey@redhat.com>
21596
21597         * config/x-solaris (host-solaris.o): Update.
21598         * config/x-linux (host-linux.o): Update.
21599         * config/x-hpux (host-hpux.o): Update.
21600         * config/x-darwin (host-darwin.o): Update.
21601         * config/v850/t-v850e (v850-c.o): Update.
21602         * config/v850/t-v850 (v850-c.o): Update.
21603         * config/t-vxworks (vxworks.o): Update.
21604         * config/t-sol2 (sol2-c.o, sol2.o): Update.
21605         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
21606         * config/spu/t-spu-elf (spu-c.o): Update.
21607         (spu.o): Remove.
21608         * config/sh/t-symbian (sh-c.o): Update.
21609         (symbian.o): Update.
21610         * config/sh/t-sh (sh-c.o): Update.
21611         * config/score/t-score-elf (score7.o, score3.o): Update.
21612         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
21613         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
21614         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
21615         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
21616         (rs6000.o): Remove.
21617         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
21618         * config/m32c/t-m32c (m32c-pragma.o): Update.
21619         * config/ia64/t-ia64 (ia64-c.o): Update.
21620         * config/i386/x-mingw32 (host-mingw32.o): Update.
21621         * config/i386/x-i386 (driver-i386.o): Update.
21622         * config/i386/x-darwin (host-i386-darwin.o): Update.
21623         * config/i386/x-cygwin (host-cygwin.o): Update.
21624         * config/i386/t-nwld (nwld.o): Update.
21625         * config/i386/t-netware (netware.o): Update.
21626         * config/i386/t-interix (winnt.o): Update.
21627         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
21628         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
21629         msformat-c.o): Update.
21630         * config/bfin/t-bfin-linux (generated_files): Add
21631         linux-sysroot-suffix.h.
21632         * config/arm/t-wince-pe (pe.o): Update.
21633         * config/arm/t-strongarm-pe (pe.o): Update.
21634         * config/arm/t-pe (pe.o): Update.
21635         * config/arm/t-arm (arm-c.o): Update.
21636         * doc/install.texi (Prerequisites): Require make 3.80.
21637         * Makefile.in: Remove .o targets.
21638         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
21639         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
21640         (simple_generated_h, simple_generated_c): Move earlier.
21641         (generated_files): New variable.
21642         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
21643         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
21644         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
21645         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
21646         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
21647         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
21648         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
21649         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
21650         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
21651         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
21652         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
21653         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
21654         (.c.o): Remove.
21655         (COMPILE.base, COMPILE): New variables.
21656         (%.o): New pattern rule.
21657         (ALL_HOST_OBJS): New variable.
21658         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
21659         (dummy-checksum.o, cc1-checksum.o): Remove.
21660         (DRIVER_SHLIB): New variable.
21661         (DRIVER_DEFINES): Use it.
21662         (gencondmd.c): Move out of build/.
21663         (s-conditions): Update.
21664         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
21665         (ALL_BUILD_OBJS): Likewise.
21666         (build/%.o): Use BUILDCOMPILE.
21667         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
21668         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
21669         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
21670         build/gencheck.o, build/gencodes.o, build/genconditions.o,
21671         build/genconfig.o, build/genconstants.o, build/genemit.o,
21672         build/genextract.o, build/genflags.o, build/genmddeps.o,
21673         build/genopinit.o, build/genoutput.o, build/genpeep.o,
21674         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
21675         build/gen-protos.o, build/scan.o, build/fix-header.o,
21676         build/scan-decls.o): Simplify.
21677         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
21678         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
21679         prefix.o, toplev.o): Reduce to variable setting.
21680         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
21681         ($(out_object_file), gcc-options.o): New targets.
21682         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
21683         * configure: Rebuilt.
21684         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
21685         * doc/sourcebuild.texi (Front End Directory): Document new variable.
21686
21687 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
21688
21689         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
21690         complain when we hit an error, return ERROR_MARK_NODE.
21691
21692 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21693
21694         * config/sh/constraints.md (Pso, Psz): New constraints.
21695         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
21696         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
21697
21698 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21699
21700         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
21701         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
21702
21703 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21704
21705         * config/sh/sh.md (prefetch): Add condition for SH2A target.
21706         (prefetch_sh2a): New.
21707
21708 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
21709             Naveen.H.S  <naveen.hs@kpitcummins.com>
21710
21711         * config/sh/constraints.md (I28): New constraint.
21712         * config/sh/sh.c (broken_move): Add support for movi20s.
21713         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
21714
21715 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
21716             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
21717             Naveen.H.S  <naveen.hs@kpitcummins.com>
21718
21719         * config/sh/sh.c (SH_ATTRIBUTES): Define.
21720         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
21721         (print_operand): Handle resbank in %@ operand code.
21722         (sh_encode_section_info): New.
21723         (push_regs): Add conditions for resbank.
21724         (sh_expand_epilogue): Likewise.
21725         (sh_insert_attributes): Likewise.
21726         (sh_attribute_table): Likewise.
21727         (sh_handle_resbank_handler_attribute): New.
21728         (sh2a_handle_function_vector_handler_attribute): New.
21729         (sh2a_is_function_vector_call): New.
21730         (sh2a_get_function_vector_number): New.
21731         (sh2a_function_vector_p): New.
21732         (sh_cfun_resbank_handler_p): New.
21733         * config/sh/sh.md (calli): Emit jsr/n if possible.
21734         (calli_tbr_rel): New.
21735         (calli_pcrel): Emit jsr/n if possible.
21736         (return_i): Emit rts/n if possible.
21737         (call_valuei_tbr_rel): New.
21738         (call_valuei_pcrel): Add condition for SH2A target.
21739         (call_value): Likewise.
21740         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
21741         (sh2a_get_function_vector_number): Likewise.
21742         (sh2a_is_function_vector_call): Likewise.
21743         * doc/extend.texi: Document TBR relative addressing of SH2A.
21744         (resbank): Add description for SH2A.
21745
21746 2008-03-24  Richard Guenther  <rguenther@suse.de>
21747
21748         PR c/22371
21749         * gimplify.c (gimplify_modify_expr): For frontend type-correct
21750         pointer assignments change conversions according to middle-end rules.
21751         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
21752         * configure.ac: Include type checking in yes.
21753         * configure: Regenerate.
21754
21755 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21756
21757         * diagnostic.c (diagnostic_count_diagnostic): Delete.
21758         (diagnostic_report_diagnostic): Update. Handle ICEs here.
21759
21760 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
21761
21762         * gthr-vxworks.h (UNUSED): Define.
21763
21764 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
21765
21766         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
21767
21768 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
21769
21770         * doc/extend.texi (Function Attributes): Add missing comma in the
21771         example of the "alloc_size" attribute.
21772
21773 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
21774
21775         Revert:
21776         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
21777
21778         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
21779         32bit host.
21780
21781         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
21782
21783         PR target/35496
21784         * stor-layout.c (update_alignment_for_field): Set minimum alignment
21785         of the underlying type of a MS bitfield layout to the natural
21786         alignment of the type.
21787
21788         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
21789
21790         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
21791         to their natural alignment to avoid store forwarding stalls.
21792
21793 2008-03-22  Richard Guenther  <rguenther@suse.de>
21794
21795         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
21796         For PHI nodes verify the address is invariant.
21797         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
21798         (get_symbol_constant_value): Use is_gimple_min_invariant.
21799         (maybe_fold_stmt_indirect): Likewise.
21800
21801 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
21802
21803         PR rtl-optimization/33927
21804         * Makefile.in (dse.o): Depend on $(TM_P_H).
21805         * expr.h (extract_low_bits): Declare.
21806         * expmed.c (extract_low_bits): New function.
21807         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
21808         * dse.c: Include tm_p.h.
21809         (find_shift_sequence): Remove the read_reg argument and return the
21810         read value.  Emit the instructions instead of returning them.
21811         Iterate on new_mode rather than calculating it each time.
21812         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
21813         source to NEW_MODE and extract_low_bits to convert the shifted
21814         value to READ_MODE.
21815         (replace_read): Allow the load and store to have different mode
21816         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
21817         or extraction instructions before trying the replacement.  Update
21818         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
21819
21820 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
21821
21822         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
21823         to their natural alignment to avoid store forwarding stalls.
21824
21825 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21826
21827         PR target/27946
21828         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
21829         encouraging but not allowing gprs for input;
21830         change the input constraint to !f#r.
21831         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
21832         gprs for output;
21833         change the output constraint to !f#r.
21834
21835 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
21836
21837         PR target/13958
21838         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
21839         corresponding post-reload splitters.
21840         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
21841         when x87 FP math is selected.
21842         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
21843         New function prototype.
21844         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
21845         unreachable function to ease macroization of insn patterns.
21846
21847 2008-03-21  Martin Jambor  <mjambor@suse.cz>
21848
21849         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
21850         reference dumps if ddr is NULL or dependence is unknown.
21851
21852 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21853
21854         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
21855         unsigned extension into account.
21856         (ATOMIC_COMPARE_AND_SWAP): Likewise.
21857         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
21858         Do computations on a scratch register.
21859
21860 2008-03-21  Richard Guenther  <rguenther@suse.de>
21861
21862         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
21863         Use is_gimple_min_invariant instead of TREE_INVARIANT.
21864         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
21865         * tree-ssa-dom.c (record_equality): Likewise.
21866         * tree-inline.c (copy_body_r): Likewise.
21867         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
21868         TREE_INVARIANT.
21869
21870 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21871
21872         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
21873         as 'delete_unused' argument.
21874
21875 2008-03-20  Richard Guenther  <rguenther@suse.de>
21876
21877         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
21878         special casing of constant qualifiers.
21879         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
21880         care about them in general.
21881         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
21882         regardless of their type.
21883         (fold_stmt_r): Forcefully fold *& if we end up with that.
21884
21885 2008-03-20  Paul Brook  <paul@codesourcery.com>
21886
21887         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
21888         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
21889         linker flags.
21890         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
21891         definition.
21892         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
21893         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
21894
21895 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
21896
21897         * common.opt (Wmudflap): New option.
21898         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
21899         (mx_register_decls): Likewise.
21900         (mudflap_finish_file): Likewise.
21901         * doc/invoke.texi: Document -Wno-mudflap.
21902
21903 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
21904
21905         * c-format.c (replace_format_name_to_system_name): New.
21906         (cmp_attribs): New.
21907         (convert_format_name_to_system_name): New.
21908         (decode_format_attr): Add use of convert_format_name_to_system_name.
21909         (format_types_orig): Add gnu_ prefix to names.
21910         (check_format_info_main): Special treating of \0 escaped names for
21911         supporting multi-character format specifiers as I32, I64.
21912         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
21913         (gnu_target_overrides_format_attributes): New.
21914         * c-format.h: Add structure target_ovr_attr to hold
21915         system specific formatter names.
21916         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
21917         msformat-c.o file to c_target_objs and cxx_target_objs.
21918         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
21919         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
21920         (TARGET_N_FORMAT_TYPES): New.
21921         * config/i386/msformat-c.c: New.
21922         * config/i386/t-cygming: Add build rule for msformat-c.o.
21923         * doc/extend.texi: Add new format names gnu_* and ms_* and
21924         further details.
21925         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
21926
21927 2008-03-20  Ira Rosen  <irar@il.ibm.com>
21928
21929         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
21930         optimizations turned on under -O3.
21931         (ftree-vectorize): Add that the flag is turned on with -O3.
21932
21933 2008-03-20  Ben Elliston  <bje@au.ibm.com>
21934
21935         * regmove.c (try_auto_increment): Fix spelling error in comment.
21936         * final.c (final_scan_insn): Likewise.
21937
21938 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
21939
21940         PR target/14552
21941         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
21942         allocator preferences for "y" and "r" class registers.
21943         ("*mov<mode>_internal"): Ditto.
21944         ("*movv2sf_internal_rex64"): Ditto.
21945         ("*movv2sf_internal"): Ditto.
21946
21947 2008-03-19  Michael Matz  <matz@suse.de>
21948
21949         PR middle-end/35616
21950         * calls.c (expand_call): Check overlap of arguments with call
21951         address for sibcalls.
21952
21953 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
21954
21955         PR target/35496
21956         * stor-layout.c (update_alignment_for_field): Set minimum alignment
21957         of the underlying type of a MS bitfield layout to the natural
21958         alignment of the type.
21959
21960 2008-03-19  Jan Hubicka  <jh@suse.cz>
21961
21962         PR other/35094
21963         * toplev.c (decode_d_option): Handle all CPP flags.
21964         * tree-vrp.c: Update tree_pass descriptors.
21965         * regrename.c: Update tree_pass descriptors.
21966         * fwprop.c: Update tree_pass descriptors.
21967         * doc/invoke.texi: Remove documentation of dropped -d? flags.
21968         * tree-into-ssa.c: Update tree_pass descriptors.
21969         * tree-dump.c: Update tree_pass descriptors.
21970         * tree-complex.c: Update tree_pass descriptors.
21971         * tree-dump.h: Update tree_pass descriptors.
21972         * see.c: Update tree_pass descriptors.
21973         * cgraphbuild.c: Update tree_pass descriptors.
21974         * tracer.c: Update tree_pass descriptors.
21975         * tree-loop-distribution.c: Update tree_pass descriptors.
21976         * cgraph.c: Update tree_pass descriptors.
21977         * postreload-gcse.c: Update tree_pass descriptors.
21978         * postreload.c: Update tree_pass descriptors.
21979         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
21980         * tree-tailcall.c: Update tree_pass descriptors.
21981         * tree-pass.h (tree_opt_pass): Rename to ...
21982         (opt_pass) ... this one; add "type" field and remove letter field.
21983         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
21984         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
21985         all_lowering_passes): Update declaration.
21986         * ipa-cp.c: Update tree_pass descriptors.
21987         * final.c: Update tree_pass descriptors.
21988         * omp-low.c: Update tree_pass descriptors.
21989         * tree-ssa-dse.c: Update tree_pass descriptors.
21990         * ipa-reference.c: Update tree_pass descriptors.
21991         * tree-ssa-uncprop.c: Update tree_pass descriptors.
21992         * auto-inc-dec.c: Update tree_pass descriptors.
21993         * reorg.c: Update tree_pass descriptors.
21994         * cgraphunit.c: Update tree_pass descriptors.
21995         * tree-ssa-copyrename.c: Update tree_pass descriptors.
21996         * tree-ssa-ccp.c: Update tree_pass descriptors.
21997         * df-core.c: Update tree_pass descriptors.
21998         * mode-switching.c: Update tree_pass descriptors.
21999         * tree-nomudflap.c: Update tree_pass descriptors.
22000         * modulo-sched.c: Update tree_pass descriptors.
22001         * ipa-pure-const.c: Update tree_pass descriptors.
22002         * cse.c: Update tree_pass descriptors.
22003         * web.c: Update tree_pass descriptors.
22004         * tree-stdarg.c: Update tree_pass descriptors.
22005         * tree-ssa-math-opts.c: Update tree_pass descriptors.
22006         * tree-ssa-dom.c: Update tree_pass descriptors.
22007         * tree-nrv.c: Update tree_pass descriptors.
22008         * tree-ssa-alias.c: Update tree_pass descriptors.
22009         * loop-init.c: Update tree_pass descriptors.
22010         * gimple-low.c: Update tree_pass descriptors.
22011         * ipa-inline.c: Update tree_pass descriptors.
22012         * tree-ssa-sink.c: Update tree_pass descriptors.
22013         * global.c: Update tree_pass descriptors.
22014         * ifcvt.c: Update tree_pass descriptors.
22015         * jump.c: Update tree_pass descriptors.
22016         * predict.c: Update tree_pass descriptors.
22017         * tree-ssa-loop.c: Update tree_pass descriptors.
22018         * recog.c: Update tree_pass descriptors.
22019         * dse.c: Update tree_pass descriptors.
22020         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
22021         * tree-eh.c: Update tree_pass descriptors.
22022         * regmove.c: Update tree_pass descriptors.
22023         * local-alloc.c
22024         * function.c: Update tree_pass descriptors.
22025         * tree-vectorizer.c: Update tree_pass descriptors.
22026         * gcse.c: Update tree_pass descriptors.
22027         * ipa-type-escape.c: Update tree_pass descriptors.
22028         * tree-if-conv.c: Update tree_pass descriptors.
22029         * init-regs.c: Update tree_pass descriptors.
22030         * ipa.c: Update tree_pass descriptors.
22031         * tree-ssa-phiopt.c: Update tree_pass descriptors.
22032         * rtl-factoring.c: Update tree_pass descriptors.
22033         * lower-subreg.c: Update tree_pass descriptors.
22034         * bt-load.c: Update tree_pass descriptors.
22035         * tree-dfa.c: Update tree_pass descriptors.
22036         * except.c: Update tree_pass descriptors.
22037         * emit-rtl.c: Update tree_pass descriptors.
22038         * cfgexpand.c: Update tree_pass descriptors.
22039         * tree-cfgcleanup.c: Update tree_pass descriptors.
22040         * cfgcleanup.c: Update tree_pass descriptors.
22041         * tree-ssa-pre.c: Update tree_pass descriptors.
22042         * tree-sra.c: Update tree_pass descriptors.
22043         * tree-mudflap.c: Update tree_pass descriptors.
22044         * tree-ssa-copy.c: Update tree_pass descriptors.
22045         * cfglayout.c: Update tree_pass descriptors.
22046         * tree-ssa-forwprop.c: Update tree_pass descriptors.
22047         * tree-ssa-dce.c: Update tree_pass descriptors.
22048         * tree-ssa.c: Update tree_pass descriptors.
22049         * regclass.c: Update tree_pass descriptors.
22050         * integrate.c: Update tree_pass descriptors.
22051         * tree-optimize.c: Update tree_pass descriptors.
22052         * tree-ssa-phiprop.c: Update tree_pass descriptors.
22053         * tree-object-size.c: Update tree_pass descriptors.
22054         * combine.c: Update tree_pass descriptors.
22055         * tree-outof-ssa.c: Update tree_pass descriptors.
22056         * bb-reorder.c: Update tree_pass descriptors.
22057         * stack-ptr-mod.c: Update tree_pass descriptors.
22058         * var-tracking.c: Update tree_pass descriptors.
22059         * tree-profile.c: Update tree_pass descriptors.
22060         * tree-vect-generic.c: Update tree_pass descriptors.
22061         * reg-stack.c: Update tree_pass descriptors.
22062         * sched-rgn.c: Update tree_pass descriptors.
22063         * tree-ssa-structalias.c: Update tree_pass descriptors.
22064         * tree-cfg.c: Update tree_pass descriptors.
22065         * passes.c (current_pass): Update declaration.
22066         (finish_optimization_passes): Update.
22067         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
22068         (register_one_dump_file, register_dump_files_1, next_pass_1):
22069         Update arguments.
22070         (init_optimization_passes): Update handling of new types.
22071         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
22072         * ipa-struct-reorg.c: Update tree_pass descriptors.
22073         * tree-ssa-reassoc.c: Update tree_pass descriptors.
22074         * combine-stack-adj.c: Update tree_pass descriptors.
22075         * cfgrtl.c: Update tree_pass descriptors.
22076         * dce.c: Update tree_pass descriptors.
22077         * tree-ssanames.c: Update tree_pass descriptors.
22078
22079 2008-03-19  Richard Guenther  <rguenther@suse.de>
22080
22081         PR middle-end/35609
22082         * tree-ssa.c (walk_data): New structure.
22083         (warn_uninitialized_var): If not always_executed warn with "maybe"
22084         instead of "is".
22085         (execute_early_warn_uninitialized): Compute post-dominators.
22086         Initialize always_executed before processing each basic block.
22087
22088 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
22089
22090         PR target/35504
22091         * config/i386/i386.c (x86_this_parameter): Calculate correct location
22092         of "this" pointer when "regparm = N" or "fastcall" is in effect.
22093
22094 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22095
22096         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
22097
22098 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
22099
22100         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
22101         is true.
22102         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
22103         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
22104         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
22105         target after ignore has been set, and move there also the commputation
22106         of subtarget and original_target.
22107         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
22108         (LANG_HOOKS_INITIALIZER): Remove it.
22109         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
22110
22111 2008-03-18  Richard Guenther  <rguenther@suse.de>
22112
22113         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
22114         found an expression with constants, note that in the VN for the lhs.
22115         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
22116         fold them to constants if possible.  Run cleanup_cfg if done so.
22117         (execute_pre): Return todo.
22118         (do_pre): Likewise.
22119         (execute_fre): Likewise.
22120         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
22121         of constants.
22122         (get_prop_source_stmt): Look through pointer conversions.
22123
22124 2008-03-18  Jan Hubicka  <jh@suse.cz>
22125
22126         * tree-pretty-print.c: Include predict.h.
22127         (dump_generic_node): Dump predictor.
22128         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
22129         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
22130         * gimple-low.c (lower_stmt): Likewise.
22131         * expr.c (expand_expr_real): Likewise.
22132         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
22133         them.
22134         (build_predict_expr, build_predict_expr): New.
22135         * predict.h (predictor_name, build_predict_expr): Update.
22136         * c-typeck.c (c_finish_bc_stmt): Add prediction.
22137         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
22138         * predict.def (PRED_CONTINUE): Update hitrate.
22139         * tree.def (PREDICT_EXPR): Define.
22140         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
22141         do not handle BIND_EXPR.
22142         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
22143         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
22144         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
22145         operands.
22146
22147 2008-03-18  Michael Matz  <matz@suse.de>
22148
22149         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
22150
22151 2008-03-18  Richard Guenther  <rguenther@suse.de>
22152
22153         * tree-gimple.h (is_gimple_invariant_address): Declare.
22154         (is_gimple_constant): Likewise.
22155         * tree-gimple.c (is_gimple_constant): New function.
22156         (is_gimple_invariant_address): Likewise.
22157         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
22158         and is_gimple_invariant_address.
22159         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
22160         previous change.
22161         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
22162         an addressable base.
22163
22164 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
22165
22166         PR middle-end/35611
22167         * gimplify.c (gimplify_expr): Gimplify second operand of
22168         OMP_ATOMIC_LOAD.
22169
22170 2008-03-17  Richard Guenther  <rguenther@suse.de>
22171
22172         PR tree-optimization/19637
22173         * fold-const.c (fold_unary): Remove restrictions of removing
22174         intermediate pointer-conversions (P2)(P1)P0.
22175         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
22176         conversion to void pointer.
22177         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
22178
22179 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
22180
22181         PR debug/31510
22182         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
22183         emulated thread local variables.
22184
22185 2008-03-16  Richard Guenther  <rguenther@suse.de>
22186
22187         PR middle-end/35607
22188         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
22189         expand TREE_INVARIANT operations that are not gimple invariant.
22190
22191 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
22192
22193         * doc/extend.texi (Alignment): Say that the ABI controls
22194         the __alignof__ for non-strict-alignment targets rather
22195         than being a recommendation.
22196
22197 2008-03-15  Paul Brook  <paul@codesourcery.com>
22198
22199         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
22200         annotations.
22201         (arm_output_fn_unwind): Mark functions that can not be unwound.
22202
22203 2008-03-15  Paul Brook  <paul@codesourcery.com>
22204
22205         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
22206         extension instructions.
22207
22208 2008-03-15  Richard Guenther  <rguenther@suse.de>
22209
22210         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
22211         and fold constant aggregate refs.
22212         (fold_const_aggregate_ref): Handle string constants
22213         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
22214         (evaluate_stmt): Simplify now that ccp_fold folds constant
22215         aggregate refs.
22216
22217 2008-03-15  Paul Brook  <paul@codesourcery.com>
22218
22219         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
22220         (extzv): Use gen_extzv_t2.
22221         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
22222
22223 2008-03-15  Richard Guenther  <rguenther@suse.de>
22224
22225         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
22226         (fold_const_aggregate_ref): Likewise.
22227         (get_value): Return NULL if we don't have any values.
22228         (ccp_finalize): Set const_val to NULL after freeing it.
22229         * tree-flow.h (get_symbol_constant_value): Declare.
22230         (fold_const_aggregate_ref): Likewise.
22231         * tree-ssa-sccvn.c (try_to_simplify): Use them.
22232
22233 2008-03-15  Richard Guenther  <rguenther@suse.de>
22234
22235         PR middle-end/35593
22236         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
22237         to not produce negative array indices if not allowed.  Add
22238         parameter to indicate that.
22239         (maybe_fold_offset_to_component_ref): Allow negative array
22240         indices only for the first member of a structure.
22241         (maybe_fold_offset_to_reference): Allow negative array indices.
22242         (maybe_fold_stmt_addition): Likewise.
22243
22244 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
22245             Anatoly Sokolov <aesok@post.ru>
22246
22247         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
22248         (avr_arch): Add ARCH_AVR6.
22249         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
22250         (initial_elimination_offset): Initialize and use 'avr_pc_size'
22251         instead of fixed value 2.
22252         (print_operand_address): Use gs() asm specifier instead of pm().
22253         (avr_assemble_integer): (Ditto.).
22254         (avr_output_addr_vec_elt): (Ditto.).
22255         (print_operand): Handle "!" code.
22256         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
22257         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
22258         (AVR_HAVE_EIJMP_EICALL): Define.
22259         (AVR_3_BYTE_PC): Redefine.
22260         (AVR_2_BYTE_PC): (Ditto.).
22261         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
22262         (LINK_SPEC): Add atmega2560 and atmega2561.
22263         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
22264         (crtm2561.o).
22265         * config/avr/avr.md (call_insn): Use eicall instead of icall
22266         for 3 byte PC devices.
22267         (call_value_insn): (Ditto.).
22268         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
22269         (indirect_jump): Use only for for 2 byte PC devices.
22270         (*tablejump): (Ditto.).
22271         (*indirect_jump_avr6): Add insn.
22272         (*tablejump_rjmp): Don't use for 3 byte PC devices.
22273         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
22274         instead of ijmp for 3 byte PC devices.
22275         (__tablejump2__): (Ditto.).
22276         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
22277         (MULITLIB_DIRNAMES): (Ditto.).
22278         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
22279
22280 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
22281
22282         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
22283         "sse2_umulsidi3".  Use V1DI mode for operand 0.
22284         ("mmx_psadbw"): Use V1DI mode for operand 0.
22285         * config/i386/i386-modes.def (V1SI): New vector mode.
22286         * config/i386/i386.c (struct builtin_description)
22287         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
22288         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
22289         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
22290         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
22291         v1di_ftype_v8qi_v8qi type.
22292         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
22293
22294         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
22295         __builtin_ia32_pmuludq]: Fix the mode of return value.
22296
22297 2008-03-15  Richard Guenther  <rguenther@suse.de>
22298
22299         PR middle-end/35595
22300         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
22301         being a PHI_NODE.
22302
22303 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
22304
22305         * doc/invoke.texi (Option Summary, Xtensa Options): Document
22306         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
22307         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
22308         unless TARGET_SERIALIZE_VOLATILE is enabled.
22309         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
22310         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
22311         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
22312
22313 2008-03-14  Richard Guenther  <rguenther@suse.de>
22314
22315         PR tree-optimization/34172
22316         * tree-flow.h (refs_may_alias_p): Declare.
22317         (get_single_def_stmt): Likewise.
22318         (get_single_def_stmt_from_phi): Likewise.
22319         (get_single_def_stmt_with_phi): Likewise.
22320         * tree-dfa.c (refs_may_alias_p): New function.
22321         (get_single_def_stmt): Likewise.
22322         (get_single_def_stmt_from_phi): Likewise.
22323         (get_single_def_stmt_with_phi): Likewise.
22324         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
22325         (vn_reference_lookup_1): New helper function.
22326         (vn_reference_lookup): Walk the virtual use-def chain to
22327         continue searching for a match if the def does not alias the
22328         reference we are looking for.
22329
22330 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
22331
22332         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
22333         archive and Perzl.  Update The Written Word listing.
22334
22335 2008-03-14  Richard Guenther  <rguenther@suse.de>
22336
22337         PR tree-optimization/34043
22338         PR tree-optimization/33989
22339         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
22340         when doing FRE.
22341         (bitmap_find_leader): Use extra argument to verify dominance
22342         relationship inside a basic-block.
22343         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
22344         (find_leader_in_sets): Adjust.
22345         (create_component_ref_by_pieces): Take extra argument for
22346         dominance check, handle lookup failures.
22347         (find_or_generate_expression): Likewise.
22348         (create_expression_by_pieces): Likewise.
22349         (insert_into_preds_of_block): Adjust.
22350         (create_value_expr_from): If asked for, verify all operands
22351         are in the blocks AVAIL_OUT set.
22352         (make_values_for_stmt): Check for SSA_NAMEs that are life
22353         over an abnormal edge.
22354         (compute_avail): Remove such check.
22355         (do_SCCVN_insertion): New function.
22356         (eliminate): If we do not find a leader suitable for replacement
22357         insert a replacement expression from SCCVN if available.
22358         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
22359         (struct vn_ssa_aux): Add needs_insertion flag.
22360         * tree-ssa-sccvn.c (may_insert): New global flag.
22361         (copy_reference_ops_from_ref): Value-number union member access
22362         based on its size, not type and member if insertion is allowed.
22363         (visit_reference_op_load): For a weak match from union type
22364         punning lookup a view-converted value and insert a SSA_NAME
22365         for that value if that is not found.
22366         (visit_use): Make dumps shorter.  Do not disallow value numbering
22367         SSA_NAMEs that are life over an abnormal edge to constants.
22368         (free_scc_vn): Release inserted SSA_NAMEs.
22369         (run_scc_vn): New flag to specify whether insertion is allowed.
22370         Process SSA_NAMEs in forward order.
22371         * tree-ssa-loop-im.c (for_each_index): Handle invariant
22372         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
22373         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
22374         pointer type to/from integral types that do not change the
22375         precision to regular conversions.
22376
22377 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
22378
22379         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
22380         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
22381         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
22382         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
22383         input arguments and the mode of return value.  Built-in functions
22384         that operate on whole 64-bit MMX register now use V1DI mode.
22385
22386 2008-03-13  Alon Dayan  <alond@il.ibm.com>
22387             Olga Golovanevsky  <olga@il.ibm.com>
22388
22389         PR tree-optimization/35041
22390         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
22391         to locate the right position in a statement.
22392
22393 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
22394
22395         PR target/34000
22396         PR target/35553
22397         * config/i386/xmmintrin.h:  Change all static inline functions to
22398         extern inline and add __gnu_inline__ attribute.
22399         * config/i386/bmintrin.h: Ditto.
22400         * config/i386/smmintrin.h: Ditto.
22401         * config/i386/tmmintrin.h: Ditto.
22402         * config/i386/mmintrin-common.h: Ditto.
22403         * config/i386/ammintrin.h: Ditto.
22404         * config/i386/emmintrin.h: Ditto.
22405         * config/i386/pmmintrin.h: Ditto.
22406         * config/i386/mmintrin.h: Ditto.
22407         * config/i386/mm3dnow.h: Ditto.
22408
22409 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
22410
22411         PR middle-end/35185
22412         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
22413         (lower_omp_2): New function.
22414         (lower_omp_1, lower_omp): Rewritten.
22415
22416 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
22417
22418         PR 35054
22419         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
22420         with the phrase "Microsoft Windows compilers".
22421         (Push/Pop Macro Pragmas): New subsection. Document
22422         #pragma push_macro and pragma pop_macro.
22423
22424 2008-03-12  Paul Brook  <paul@codesourcery.com>
22425
22426         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
22427
22428 2008-03-12  Paul Brook  <paul@codesourcery.com>
22429
22430         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
22431         (thumb2_alusi3_short): Exclude PLUS and MINUS.
22432         (thumb2_addsi_shortim): Rename ...
22433         (thumb2_addsi_short): ... to this.  Allow register operands.
22434         (thumb2_subsi_short): New pattern.
22435         (thumb2_one_cmplsi2_short,
22436         thumb2_negsi2_short): New patterns and peepholes.
22437
22438 2008-03-12  Paul Brook  <paul@codesourcery.com>
22439
22440         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
22441
22442 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
22443
22444         * config/i386/i386.md (int_cond): New code iterator.
22445         (fp_cond): Ditto.
22446         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
22447         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
22448         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
22449         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
22450         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
22451         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
22452         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
22453         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
22454
22455 2008-03-12  Paul Brook  <paul@codesourcery.com>
22456
22457         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
22458         instead of {arm,thumb}_compute_save_reg_mask.
22459         (output_return_instruction): Ditto.
22460         (thumb_unexpanded_epilogue): Ditto.
22461         (thumb1_expand_prologue): Ditto.
22462         (thumb1_output_function_prologue): Ditto.
22463         (arm_set_return_address): Ditto.
22464         (thumb_set_return_address): Ditto.
22465         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
22466         regs to achieve stack alignment.
22467         (thumb1_compute_save_reg_mask): Fix compiler warning.
22468         (arm_output_epilogue): Use offsets->saved_regs_mask.
22469         Adjust stack pointer by poping call clobered registers.
22470         (arm_expand_prologue): Use offsets->saved_regs_mask.
22471         Adjust stack pointer by pushing extra registers.
22472         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
22473
22474 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
22475
22476         PR tree-opt/35422
22477         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
22478         conversion to the operands of a multiplication.
22479
22480 2008-03-12  Richard Guenther  <rguenther@suse.de>
22481
22482         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
22483         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
22484         * timevar.def (TV_TREE_PHIPROP): Add.
22485         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
22486         pass description.  Use TV_TREE_PHIPROP.
22487         * tree-ssa-forwprop.c: Remove phiprop code.
22488
22489 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
22490
22491         PR middle-end/35549
22492         * omp-low.c (maybe_lookup_decl): Constify first argument.
22493         (use_pointer_for_field): Change last argument from bool to
22494         omp_context *.  Disallow shared copy-in/out in nested
22495         parallel if decl is shared in outer parallel too.
22496         (build_outer_var_ref, scan_sharing_clauses,
22497         lower_rec_input_clauses, lower_copyprivate_clauses,
22498         lower_send_clauses, lower_send_shared_vars): Adjust callers.
22499
22500 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
22501             Ira Rosen  <irar@il.ibm.com>
22502
22503         * tree-vectorizer.c (free_stmt_vec_info): New function.
22504         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
22505         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
22506         * tree-vectorizer.h (free_stmt_vec_info): Declare.
22507         * tree-vect-transform.c (vectorizable_conversion): Free
22508         vec_oprnds0 if it was allocated.
22509         (vect_permute_store_chain): Remove unused VECs.
22510         (vectorizable_store): Free VECs that are allocated in the..
22511         function.
22512         (vect_transform_strided_load, vectorizable_load): Likewise.
22513         (vect_remove_stores): Simplify the code.
22514         (vect_transform_loop): Move code to vect_remove_stores().
22515         Call vect_remove_stores() and free_stmt_vec_info().
22516
22517 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22518
22519         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
22520         TARGET_HPUX.  Revise comment.
22521         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
22522         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
22523         Use sr4 variant of `be' instruction when not generating PIC code.
22524         (attr_length_call): Adjust for above change.
22525
22526 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22527
22528         * ipa-reference.c (static_execute): Remove module_statics_const and
22529         associated setting code.
22530
22531 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
22532
22533         PR target/35540
22534         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
22535         predicate for operand 1.
22536         (paritysi2_cmp): Use register_operand predicate for operand 2.
22537         Use earlyclobber modifier for operand 1.  Remove support for
22538         memory operands.
22539         (paritydi2_cmp): Use register_operand predicate for operand 3.
22540         Use earlyclobber modifier for operand 1.  Remove support for
22541         memory operands.
22542
22543 2008-03-11  Paul Brook  <paul@codesourcery.com>
22544             Vladimir Prus  <vladimir@codesourcery.com>
22545
22546         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
22547         (arm_compute_save_reg0_reg12_mask): Always
22548         check if register 11 must be saved.  Always safe hard frame pointer
22549         when frame_pointer_needeed.
22550         (arm_compute_save_reg_mask): Save IP and PC
22551         only with apcs frames.
22552         (arm_output_epilogue): Adjust Thumb2 codepath to
22553         be also invoked and work for ARM non-apcs frames.
22554         (arm_expand_prologue): Don't bother saving IP
22555         for non-apcs frame, since it's not clobbered by
22556         prologue code.  Implement non-apcs frame
22557         layout.
22558
22559 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22560
22561         PR rtl-optimization/35281
22562         * expr.c (convert_move): Use a new pseudo for the intermediate
22563         from_mode->word_mode result.
22564
22565 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22566
22567         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
22568         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
22569         * toplev.c (compile_file): Don't call it.
22570
22571 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
22572
22573         PR middle-end/35526
22574         * expr.c (store_expr): Call emit_block_move if the mode
22575         of "temp" RTX is BLKmode.
22576
22577 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22578             Richard Guenther  <rguenther@suse.de>
22579
22580         PR tree-optimization/31358
22581         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
22582         the step with a NULL_TREE.
22583         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
22584         to sizetype if type is a pointer type.
22585         (add_candidate_1): Don't convert the base and step to
22586         the generic type if the orginal type is a pointer type.
22587         (add_iv_value_candidates): Use sizetype for the step
22588         if type is a pointer type.
22589         (cand_value_at): Likewise.
22590         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
22591         for pointer types.
22592         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
22593         Don't convert the tem affine to the type.
22594         (add_elt_to_tree): Use sizetype for the step if a pointer.
22595         Use POINTER_PLUS_EXPR for pointers.
22596         (aff_combination_to_tree): Use sizetype for the step if a
22597         pointer.
22598
22599 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
22600
22601         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
22602         Remove commutativity hint.
22603
22604 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
22605
22606         PR c/35438
22607         PR c/35439
22608         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
22609         errorneous type.  Check that v is a VAR_DECL.
22610
22611         PR middle-end/35099
22612         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
22613
22614 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
22615
22616         PR tree-optimization/35494
22617         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
22618         may be overriden at link and run time.
22619
22620 2008-03-10  Richard Guenther  <rguenther@suse.de>
22621
22622         PR tree-optimization/34677
22623         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
22624         (poolify_tree): Likewise.
22625         (modify_expr_template): Likewise.
22626         (poolify_modify_stmt): Likewise.
22627         (insert_fake_stores): Handle all component-ref style stores
22628         in addition to INDIRECT_REF.  Also handle complex types.
22629         Do not poolify the inserted load.
22630         (realify_fake_stores): Do not rebuild the tree but only
22631         make it a SSA_NAME copy.
22632         (init_pre): Remove initialzation of modify_expr_template.
22633         Do not allocate modify_expr_node_pool.
22634         (fini_pre): Do not free modify_expr_node_pool.
22635
22636 2008-03-10  Paul Brook  <paul@codesourcery.com>
22637
22638         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
22639         to avoid conflicts.
22640
22641 2008-03-10  Paul Brook  <paul@codesourcery.com>
22642             Mark Shinwell  <shinwell@codesourcery.com>
22643
22644         * config/arm/cortex-r4.md: New.
22645         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
22646         insn attributes.
22647         * config/arm/arm.md: Include cortex-r4.md.
22648         (insn): Add smmls, sdiv and udiv values.
22649         (generic_sched): Don't use generic scheduling for Cortex-R4.
22650         (arm_issue_rate): New function.
22651         (TARGET_SCHED_ISSUE_RATE): Define.
22652
22653 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
22654
22655         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
22656
22657 2008-03-10  Richard Guenther  <rguenther@suse.de>
22658
22659         * tree-ssa-pre.c (get_sccvn_value): Simplify.
22660         (compute_avail): Do not add stmt uses to AVAIL_OUT.
22661
22662 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
22663
22664         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
22665         Set default to true.
22666
22667 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22668
22669         * c.opt (Wsynth): Deprecate.
22670         * doc/invoke.texi (Option Summary, Warning Options): Document
22671         -Wno-format-contains-nul.
22672
22673 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
22674
22675         PR target/35496
22676         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
22677         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
22678
22679 2008-03-09  Ira Rosen  <irar@il.ibm.com>
22680
22681         * config/rs6000/rs6000.c (builtin_description): Rename vector
22682         left shift operations.
22683         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
22684         (altivec_vsl<VI_char>): Rename to ...
22685         (ashl<mode>3): ... new name.
22686         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
22687         gen_ashlv4si3.
22688         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
22689
22690 2008-03-08  Richard Guenther  <rguenther@suse.de>
22691
22692         * coverage.h (tree_coverage_counter_addr): Declare.
22693         * coverage.c (tree_coverage_counter_addr): New function.
22694         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
22695         before using again.
22696         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
22697         (tree_gen_one_value_profiler): Likewise.
22698         (tree_gen_ic_profiler): Likewise.
22699         (tree_gen_average_profiler): Likewise.
22700         (tree_gen_ior_profiler): Likewise.
22701
22702 2008-03-08  Richard Guenther  <rguenther@suse.de>
22703
22704         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
22705         (vn_binary_op_insert): Likewise.
22706         (vn_unary_op_lookup): Likewise.
22707         (vn_unary_op_insert): Likewise.
22708         (vn_nary_op_lookup): Declare.
22709         (vn_nary_op_insert): Likewise.
22710         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
22711         and binary hashes, use a single obstack for unary_op_pool
22712         and binary_op_pool.
22713         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
22714         a single struct vn_nary_op_s.  Store tree code length and
22715         a variable number of operands.
22716         (struct vn_reference_op_struct): Remove unused op2.
22717         (vn_reference_op_eq): Do not compare op2.
22718         (vn_reference_op_compute_hash): Do not compute hash of op2.
22719         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
22720         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
22721         with vn_nary_op_compute_hash.
22722         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
22723         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
22724         vn_nary_op_lookup.
22725         (vn_unary_op_insert, vn_binary_op_insert): Replace with
22726         vn_nary_op_insert.
22727         (visit_unary_op): Call nary functions.
22728         (visit_binary_op): Likewise.
22729         (process_scc): Adjust for struct vn_tables_s changes.
22730         (allocate_vn_table): Likewise.
22731         (free_vn_table): Likewise.
22732         * tree-vn.c (vn_add): Call nary functions.
22733         (vn_lookup): Likewise.
22734
22735 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
22736
22737         PR target/35498
22738         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
22739         wdst back after sync_compare_and_swapqhi_internal.
22740
22741 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
22742
22743         PR target/22152
22744         * config/i386/i386-modes.def (V1DI): New vector mode.
22745         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
22746         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
22747         (MMXMODE248): Ditto.
22748         (MMXMODE): Add V1DI mode.
22749         (mmxvecsize): Change DI mode to V1DI mode.
22750         ("mov<mode>): Use MMXMODEI8 mode iterator.
22751         ("*mov<mode>_internal_rex64"): Ditto.
22752         ("*mov<mode>_internal"): Ditto.
22753         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
22754         ("mmx_sub<mode>3"): Ditto.
22755         ("mmx_adddi3"): Remove insn pattern.
22756         ("mmx_subdi3"): Ditto.
22757         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
22758         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
22759         ("mmx_ashl<mode>3"): Ditto.
22760         ("mmx_lshrdi3"): Remove insn pattern.
22761         ("mmx_ashldi3"): Ditto.
22762         * config/i386/i386.c (classify_argument): Handle V1DImode.
22763         (function_arg_advance_32): Ditto.
22764         (function_arg_32): Ditto.
22765         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
22766         mmx_addv1di3 insn pattern.
22767         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
22768         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
22769         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
22770         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
22771         Remove definitions of built-in functions.
22772         (V1DI_type_node): New node.
22773         (v1di_ftype_v1di_int): Ditto.
22774         (v1di_ftype_v1di_v1di): Ditto.
22775         (v2si_ftype_v2si_si): Ditto.
22776         (v4hi_ftype_v4hi_di): Remove node.
22777         (v2si_ftype_v2si_di): Ditto.
22778         (ix86_init_mmx_sse_builtins): Handle V1DImode.
22779         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
22780         Redefine builtins using def_builtin_const with *_ftype_*_int node.
22781         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
22782         Add new builtins using def_builtin_const.
22783         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
22784         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
22785         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
22786         * config/i386/mmintrin.h (__v1di): New typedef.
22787         (_mm_add_si64): Cast arguments to __v1di type.
22788         (_mm_sub_si64): Ditto.
22789         (_mm_sll_pi16): Cast __count to __v4hi type.
22790         (_mm_sll_pi32): Cast __count to __v2si type.
22791         (_mm_sll_si64): Cast arguments to __v1di type.
22792         (_mm_srl_pi16): Cast __count to __v4hi type.
22793         (_mm_srl_pi32): Cast __count to __v2si type.
22794         (_mm_srl_si64): Cast arguments to __v1di type.
22795         (_mm_sra_pi16): Cast __count to __v4hi type.
22796         (_mm_sra_pi32): Cast __count to __v2si type.
22797         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
22798         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
22799         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
22800         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
22801         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
22802         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
22803         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
22804         (_mm_srai_pi32): Use __builtin_ia32_psradi.
22805         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
22806         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
22807         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
22808         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
22809
22810 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
22811
22812         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
22813
22814 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
22815
22816         PR target/35373
22817         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
22818         reg+const addressing for Altivec modes.  Don't generate reg+reg
22819         addressing for TFmode or TDmode quantities.
22820
22821 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
22822
22823         * c-common.c (vector_types_convertible_p): Call langhook
22824         instead of comptypes.
22825
22826 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22827
22828         PR tree-opt/35402
22829         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
22830         integral and scalar float variables which have a
22831         NULL DECL_INITIAL.
22832
22833 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
22834
22835         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
22836         dwarf_register_span hook when emitting unwind information for
22837         register-to-memory saves.
22838         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
22839         (rs6000_frame_related): Remove call to spe_synthesize_frame.
22840
22841 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
22842
22843         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
22844         for the same VAR_DECL.
22845
22846 2008-03-06  Tom Tromey  <tromey@redhat.com>
22847
22848         * treelang: Delete.
22849         * doc/standards.texi (Standards): Don't mention treelang.
22850         * doc/invoke.texi (Overall Options): Don't mention treelang.
22851         * doc/install.texi (Prerequisites): Don't mention bison or
22852         treelang.
22853         (Configuration): Don't mention treelang.
22854         (Building): Likewise.
22855         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
22856
22857 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
22858
22859         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
22860         word-extractions out of a multi-word object.
22861
22862 2008-03-06  Richard Guenther  <rguenther@suse.de>
22863
22864         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
22865         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
22866         result type and precision.
22867         * expr.c (get_inner_reference): Set unsignedp based on the result
22868         type of BIT_FIELD_REF.
22869         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
22870         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
22871         (try_instantiate_multiple_fields): Likewise.  Use the correct type
22872         for BIT_FIELD_REF.
22873         (sra_build_assignment): Likewise.
22874         (sra_build_elt_assignment): Likewise.
22875         (sra_explode_bitfield_assignment): Likewise.
22876         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
22877         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
22878         set BIT_FIELD_REF_UNSIGNED.
22879         (vectorizable_load): Likewise.
22880
22881 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
22882
22883         * cse.c (cse_extended_basic_block): Invalidate artificial defs
22884         at bb start.
22885
22886 2008-03-06  Richard Guenther  <rguenther@suse.de>
22887
22888         * alias.c (struct alias_set_entry): Move has_zero_child field
22889         to pack with alias_set.
22890
22891 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
22892
22893         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22894         32bit host.
22895
22896 2008-03-05  Ian Lance Taylor  <iant@google.com>
22897
22898         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
22899
22900 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
22901
22902         * fwprop.c (update_df): Support width and offset parameters of
22903         df_ref_create.
22904         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
22905         global_conflicts): Change DF_REF_EXTRACT to either
22906         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22907         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22908         * df-scan.c (df_ref_record, df_defs_record,
22909         df_ref_create_structure, df_def_record_1, df_uses_record,
22910         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
22911         df_bb_refs_collect, df_entry_block_defs_collect,
22912         df_exit_block_uses_collect): Support new width and offset fields.
22913         (ref_extract_pool): New storage pool.
22914         (df_free_ref): New function.
22915         (df_reg_chain_unlink, df_free_collection_rec,
22916         df_sort_and_compress_refs): Call df_free_ref.
22917         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
22918         of df_ref_extract.
22919         (df_ref_create_structure): Allocate df_ref_extract if offset and
22920         width fields are used.
22921         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
22922         (df_uses_record): Get offset and width from ZERO_EXTRACT
22923         and SIGN_EXTRACT.
22924         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
22925         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22926         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22927         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
22928         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22929         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22930         (df_ref_extract): New structure.
22931         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
22932         (df_ref_create): Add width and offset parameters.
22933
22934 2008-03-05  Richard Guenther  <rguenther@suse.de>
22935
22936         * tree-ssa-structalias.c (get_constraint_for_component_ref):
22937         Use ranges_overlap_p.
22938         (offset_overlaps_with_access): Rename
22939         to ranges_overlap_p and move ...
22940         * tree-flow-inline.h (ranges_overlap_p): ... here.
22941
22942         * tree.h (get_inner_reference, handled_component_p): Update
22943         comments.
22944
22945         * tree.h (record_component_aliases, get_alias_set,
22946         alias_sets_conflict_p, alias_sets_must_conflict_p,
22947         objects_must_conflict_p): Move declarations ...
22948         * alias.h (record_component_aliases, get_alias_set,
22949         alias_sets_conflict_p, alias_sets_must_conflict_p,
22950         objects_must_conflict_p): ... here.
22951         Include coretypes.h.
22952         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
22953
22954 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
22955
22956         * cfg.c: Include tree-flow.h.
22957         (remove_edge_raw): Call redirect_edge_var_map_clear.
22958         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
22959         * tree-flow-inline.h (redirect_edge_var_map_def): New.
22960         (redirect_edge_var_map_result): New.
22961         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
22962         PENDING_STMT use with redirect_edge_var_map_*.
22963         * tree-ssa.c (edge_var_maps): New definition.
22964         (redirect_edge_var_map_add): New.
22965         (redirect_edge_var_map_clear): New.
22966         (redirect_edge_var_map_dup): New.
22967         (redirect_edge_var_map_vector): New.
22968         (redirect_edge_var_map_destroy): New.
22969         (ssa_redirect_edge): Replace PENDING_STMT use with
22970         redirect_edge_var_map_*.
22971         (flush_pending_stmts): Same.
22972         (delete_tree_ssa): Destroy edge var map.
22973         * tree-flow.h (struct _edge_var_map): New.
22974         Define edge_var_map vector type.
22975         Declare redirect_edge_var_map_* prototypes.
22976         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
22977         * tree-cfg.c (reinstall_phi_args): Replace
22978         PENDING_STMT use with redirect_edge_var_map_*.
22979
22980 2008-03-05  Richard Guenther  <rguenther@suse.de>
22981
22982         PR tree-optimization/35472
22983         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
22984         whose single use_stmt has a overlapping set of loaded and
22985         stored symbols as that use_stmt might be a noop assignment then.
22986
22987 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
22988
22989         * gthr-rtems.h: Implement __gthread_mutex_destroy.
22990
22991 2008-03-05  Richard Guenther  <rguenther@suse.de>
22992
22993         PR c++/35336
22994         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
22995         should be constants.
22996         * tree-cfg.c (verify_expr): Verify it.
22997         * fold-const.c (fold_truthop): Remove code generating
22998         BIT_FIELD_REFs of structure bases.
22999         (fold_binary): Likewise.
23000         (fold_ternary): Position and size of BIT_FIELD_REFs are
23001         always host integers.
23002         (make_bit_field_ref): Remove.
23003         (optimize_bit_field_compare): Remove.
23004         (all_ones_mask_p): Remove.
23005
23006 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
23007
23008         PR gcc/33009
23009         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
23010         (split_block_and_df_analyze): New. Split basic block and rebuild
23011         dataflow.
23012         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
23013         SPLIT_BLOCK.
23014         (split_pattern_seq): Likewise.
23015         (erase_matching_seqs): Likewise.
23016         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
23017
23018 2008-03-04  Geoff Keating  <geoffk@apple.com>
23019
23020         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
23021         declaration and code.
23022         (tree_invalid_nonnegative_warnv_p): Likewise.
23023
23024 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
23025
23026         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
23027         examples.  Truncate option-names then causing overfull hbox.
23028
23029 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23030
23031         PR target/35222
23032         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
23033         on hpux10.
23034         * configure: Rebuilt.
23035
23036 2008-03-04  Rafael Espíndola  <espindola@google.com>
23037
23038         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
23039         (tree_unary_nonnegative_warnv_p): New.
23040         (tree_binary_nonnegative_warnv_p): New.
23041         (tree_single_nonnegative_warnv_p): New.
23042         (tree_invalid_nonnegative_warnv_p): New.
23043         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
23044
23045 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23046
23047         PR 28322
23048         * opts.c (handle_option): Postpone 'unknown option' errors only for
23049         warning options.
23050
23051 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
23052
23053         PR target/35453
23054         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
23055         (_SIDD_XXX): This.
23056
23057 2008-03-04  Rafael Espíndola  <espindola@google.com>
23058
23059         * fold-const.c (tree_unary_nonzero_warnv_p): New.
23060         (tree_binary_nonzero_warnv_p): New.
23061         (tree_single_nonzero_warnv_p): New.
23062         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
23063
23064 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
23065
23066         PR middle-end/35456
23067         * fold-const.c (fold_cond_expr_with_comparison): Prevent
23068         transformations for modes that have signed zeros.
23069         * ifcvt.c (noce_try_abs): Ditto.
23070
23071 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
23072
23073         * config/i386/i386.c (override_options): Force
23074         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
23075
23076 2008-03-04  Jan Hubicka  <jh@suse.cz>
23077
23078         PR c++/35262
23079         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
23080         in last commit.
23081
23082 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23083
23084         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
23085         label to probe the stack.
23086
23087 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23088
23089         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
23090         (__gthr_win32_mutex_destroy): Declare.
23091         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
23092         __gthr_win32_mutex_destroy.
23093         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
23094
23095 2008-03-03  Jan Hubicka  <jh@suse.cz>
23096
23097         PR c++/35262
23098         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
23099         aggressive on inlining cold calls.
23100
23101 2008-03-03  Richard Guenther  <rguenther@suse.de>
23102
23103         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
23104         struct copies into the expression table.
23105         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
23106         (try_to_simplify): Likewise.
23107         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
23108         integral and pointer arguments which do not change the
23109         precision to NOP_EXPRs.
23110         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
23111         VIEW_CONVERT_EXPR case.
23112
23113 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23114
23115         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
23116         defined in a loop at depth 0 is invariant.
23117         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
23118         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
23119         be called at loop depth 0.
23120
23121 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
23122
23123         PR driver/35420
23124         * gcc.c (process_command): Update copyright notice dates.
23125         * gcov.c (print_version): Likewise.
23126         * gcov-dump.c (print_version): Likewise.
23127         * mips-tfile.c (main): Likewise.
23128         * mips-tdump.c (main): Likewise.
23129
23130 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23131
23132         PR 24924
23133         * c-common.c (flag_permissive): Delete.
23134         (constant_expression_warnings): Check flags first.
23135         (constant_expression_error): New.
23136         * c-common.h (flag_permissive): Delete.
23137         (constant_expression_error): Declare.
23138         * flags.h (flag_permissive): Declare. Update description.
23139         * diagnostic.c (pedwarn): Update.
23140         (permerror): New.
23141         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
23142         (permissive_error_kind): New.
23143         * toplev.c (flag_permissive): Define. Update description.
23144         * toplev.h (permissive_error_kind): Declare.
23145         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
23146         (pedwarn_c90): Use pedantic_warning_kind.
23147         * c-opts.c (c_common_post_options): flag_permissive does not affect
23148         flag_pedantic_errors.
23149
23150 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
23151
23152         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
23153         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
23154         __absvsi2, __absvDI2): Use unsigned arithmetic.
23155
23156 2008-03-02  Andi Kleen  <ak@suse.de>
23157             Richard Guenther  <rguenther@suse.de>
23158
23159         * struct-equiv.c: Remove file.
23160         * cfg_cleanup.c (condjump_equiv_p): Remove.
23161         * Makefile.in (OBJS-common): Remove struct-equiv.o.
23162         (struct-equiv.o): Remove rule.
23163         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
23164         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
23165         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
23166
23167 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23168
23169         * ifcvt.c (noce_process_if_block): Try to handle only the then
23170         block if the else block exists but isn't suitable.
23171
23172 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23173
23174         PR gcc/35063
23175         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
23176         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
23177         regression from previous patch.
23178
23179 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23180
23181         PR gcc/35063
23182         * gthr.h: Add __gthread_mutex_destroy as a function that must be
23183         implemented.
23184         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
23185         * gthr-single.h (__gthread_mutex_destroy): Likewise.
23186         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
23187         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
23188         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
23189         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
23190         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
23191         (__gthread_mutex_destroy_function): Rename to
23192         __gthread_mutex_destroy.
23193         * gthr-dce.h (__gthread_mutex_destroy): Call
23194         pthread_mutex_destroy.
23195         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
23196         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
23197         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
23198
23199 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23200
23201         * df-scan.c (df_ref_chain_change_bb): Simplify.
23202         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
23203         set_block_for_insn if there's any change.
23204         * df.h ((df_insn_change_bb): Fix prototype.
23205         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
23206         df_insn_change_bb, don't call set_block_for_insn.
23207         * emit-rtl.c (reorder_insns): Likewise.
23208         * haifa-sched.c (move_insn): Likewise.
23209
23210 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23211
23212         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
23213
23214 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23215
23216         * tree-flow-inline.h (next_readonly_imm_use): Return
23217         NULL_USE_OPERAND_P after the end.
23218
23219 2008-03-01  Richard Guenther  <rguenther@suse.de>
23220
23221         PR tree-optimization/35411
23222         * tree-sra.c (sra_build_assignment): Split conversion to
23223         final type to a separate statement if we are not assigning
23224         to a register.
23225
23226 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23227
23228         * fold-const.c (fold_convertible_p): Correct the logic to follow
23229         that in fold_convert().
23230
23231 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
23232
23233         PR c++/35315
23234         * tree-inline.c (build_duplicate_type): When we make a
23235         duplicate type, make it unique in the canonical types system.
23236
23237 2008-02-29  Tom Tromey  <tromey@redhat.com>
23238
23239         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
23240         input_file_stack_history, input_file_stack_restored): Remove.
23241         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23242         * input.h (struct file_stack): Remove.
23243         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23244         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
23245         Likewise.
23246         * diagnostic.h (struct diagnostic_context) <last_module>: Change
23247         type.
23248         (diagnostic_last_module_changed): Add 'map' argument.
23249         (diagnostic_set_last_function): Likewise.
23250         * diagnostic.c (undiagnostic_report_current_module): Iterate using
23251         line map, not input_file_stack.
23252         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
23253
23254 2008-02-29  Paul Brook  <paul@codesourcery.com>
23255
23256         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
23257
23258 2008-02-29  Paul Brook  <paul@codesourcery.com>
23259
23260         * config/arm/ieee754-df.S (muldf3): Use RET macros.
23261
23262 2008-02-29  Richard Guenther  <rguenther@suse.de>
23263
23264         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
23265         vn_lookup_or_add.
23266         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
23267         value for comparing for a store match.
23268         (simplify_unary_expression): Do nothing for SSA_NAMEs.
23269         (try_to_simplify): Do not do a full-blown reference lookup.
23270
23271 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23272
23273         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
23274         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
23275
23276         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
23277
23278 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
23279
23280         * tree-loop-linear.c (try_interchange_loops): Compare memory access
23281         strides against cache sizes.
23282
23283 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23284
23285         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
23286         constant to fpul.
23287
23288 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
23289
23290         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
23291         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
23292         is smaller than the original promoted value.
23293         (simplify_subreg): If OP is a SUBREG, try to preserve its
23294         SUBREG_PROMOTED_VAR_P information.
23295
23296 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
23297
23298         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
23299         (VN_INFO_GET): Allocate new objects on the obstack.
23300         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
23301         for rpo_numbers_temp, for consistency.
23302         (free_scc_vn): Free the obstack.
23303
23304 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
23305
23306         * doc/invoke.texi: Document -ftree-loop-distribution.
23307         * tree-loop-distribution.c: New.
23308         * tree-pass.h (pass_loop_distribution): New.
23309         * graphds.h (struct graph): Add htab_t indices.
23310         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
23311         * tree-vectorizer.c (rename_variables_in_loop): Extern.
23312         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
23313         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
23314         * tree-data-ref.c (debug_data_dependence_relations): New.
23315         (dump_data_dependence_relation): Also print data references.
23316         (free_data_ref): Extern.
23317         (same_access_functions): Moved...
23318         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
23319         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23320         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
23321         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
23322         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
23323         (stmts_from_loop): Skip LABEL_EXPR.
23324         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
23325         New.
23326         (build_rdg): Initialize rdg->indices htab.
23327         (free_rdg, stores_from_loop, ref_base_address,
23328         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
23329         have_similar_memory_accesses_1, ref_base_address_1,
23330         remove_similar_memory_refs): New.
23331         * tree-data-ref.h: Depend on tree-chrec.h.
23332         (debug_data_dependence_relations, free_data_ref): Declared.
23333         (same_access_functions): ... here.
23334         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
23335         New.
23336         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
23337         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
23338         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
23339         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23340         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
23341         rdg_vertex_for_stmt): Declared.
23342         (struct rdg_edge): Add level.
23343         (RDGE_LEVEL): New.
23344         (free_rdg, stores_from_loop, remove_similar_memory_refs,
23345         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
23346         Declared.
23347         (rdg_has_similar_memory_accesses): New.
23348         * tree-vect-analyze.c: Remove unused static decls.
23349         * lambda.h (dependence_level): New.
23350         * common.opt (ftree-loop-distribution): New.
23351         * tree-flow.h (mark_virtual_ops_in_bb,
23352         slpeel_tree_duplicate_loop_to_edge_cfg,
23353         rename_variables_in_loop): Declared.
23354         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
23355         (OBJS-common): Add tree-loop-distribution.o.
23356         (tree-loop-distribution.o): New rule.
23357         * tree-cfg.c (mark_virtual_ops_in_bb): New.
23358         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
23359         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
23360
23361 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
23362
23363         PR target/33963
23364         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
23365         other than structures and unions.
23366
23367 2008-02-28  Richard Guenther  <rguenther@suse.de>
23368
23369         Revert:
23370         2008-02-26  Richard Guenther  <rguenther@suse.de>
23371
23372         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23373         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23374         (lookup_decl_from_uid): Declare.
23375         (remove_decl_from_map): Likewise.
23376         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23377         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23378         (decl_for_uid_map): New global hashtable mapping DECL_UID
23379         to the decl tree.
23380         (init_ttree): Allocate it.
23381         (insert_decl_to_uid_decl_map): New helper function.
23382         (make_node_stat): Insert new decls into the map.
23383         (copy_node_stat): Likewise.
23384         (lookup_decl_from_uid): New function.
23385         (remove_decl_from_map): Likewise.
23386         (print_decl_for_uid_map_statistics): New helper.
23387         (dump_tree_statistics): Call it.
23388
23389         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23390         (referenced_var_iterator): Adjust.
23391         (FOR_EACH_REFERENCED_VAR): Adjust.
23392         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23393         (num_referenced_vars): Adjust.
23394         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23395         (first_referenced_var): Remove.
23396         (end_referenced_vars_p): Likewise.
23397         (next_referenced_var): Likewise.
23398         (referenced_var_iterator_set): New helper function.
23399         * tree-dfa.c (referenced_var_lookup): Adjust.
23400         (referenced_var_check_and_insert): Likewise.
23401         (remove_referenced_var): Likewise.
23402         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23403         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23404         (verify_call_clobbering): Likewise.
23405         (verify_memory_partitions): Likewise.
23406         (init_tree_ssa): Allocate bitmap instead of hashtable for
23407         referenced_vars.
23408         (delete_tree_ssa): Adjust.
23409         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23410         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23411         (compute_tag_properties): Likewise.
23412         (set_initial_properties): Likewise.
23413         (find_partition_for): Likewise.
23414         (update_reference_counts): Likewise.
23415         (dump_may_aliases_for): Likewise.
23416         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23417         (add_call_clobber_ops): Likewise.
23418         (add_call_read_ops): Likewise.
23419         (get_asm_expr_operands): Likewise.
23420         * tree-into-ssa.c (dump_decl_set): Likewise.
23421         (update_ssa): Likewise.
23422         * tree-sra.c (scan_function): Likewise.
23423         (decide_instantiations): Likewise.
23424         (scalarize_parms): Likewise.
23425         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23426         (dsa_named_for): Likewise.
23427         * tree-ssa-structalias.c (update_alias_info): Likewise.
23428         (merge_smts_into): Likewise.
23429
23430 2008-02-27  David Daney  <ddaney@avtrex.com>
23431
23432         PR target/34409
23433         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
23434         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
23435         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
23436         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
23437         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
23438
23439 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
23440
23441         PR target/25477
23442         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
23443         (BUILT_IN_NEXTTOWARD): Remove.
23444         (BUILT_IN_NEXTTOWARDF): Ditto.
23445         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
23446         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
23447
23448 2008-02-27  Tom Tromey  <tromey@redhat.com>
23449
23450         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
23451         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
23452
23453 2008-02-27  Jan Beulich  <jbeulich@novell.com>
23454
23455         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
23456         update the respective field on newdecl.
23457
23458 2008-02-27  Revital Eres  <eres@il.ibm.com>
23459
23460         PR rtl-optimization/34999
23461         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
23462         crossing edges that ends with a call insn.
23463         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
23464         call insn and clear the EDGE_CROSSING flag of the crossing edge
23465         when fixing fallthru edges.
23466
23467 2008-02-27  Richard Guenther  <rguenther@suse.de>
23468
23469         PR middle-end/35390
23470         * fold-const.c (fold_unary): Return the correct argument,
23471         converted to the result type.
23472
23473 2008-02-27  Richard Guenther  <rguenther@suse.de>
23474
23475         PR middle-end/34971
23476         * expr.c (expand_expr_real_1): Assert on rotates that operate
23477         on partial modes.
23478         * fold-const.c (fold_binary): Use the types precision, not the
23479         bitsize of the mode if folding rotate expressions.  Build rotates
23480         only for full modes.
23481
23482 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
23483
23484         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
23485         and CPP_PRAGMA_EOL.
23486         * c-pragma.c (pragma_ns_name): New typedef.
23487         (registered_pp_pragmas): New variable.
23488         (c_pp_lookup_pragma): New function.
23489         (c_register_pragma_1): If flag_preprocess_only, do nothing
23490         for non-expanded pragmas, for expanded ones push pragma's
23491         namespace and name into registered_pp_pragmas vector.
23492         (c_invoke_pragma_handler): Register OpenMP pragmas even when
23493         flag_preprocess_only, don't register GCC pch_preprocess
23494         pragma if flag_preprocess_only.
23495         * c-opts.c (c_common_init): Call init_pragma even if
23496         flag_preprocess_only.
23497         * c-pragma.c (c_pp_lookup_pragma): New prototype.
23498         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
23499         cpp_register_pragma if flag_preprocess_only.
23500
23501 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23502
23503         PR c/28800
23504         * c-parser.c (c_parser_translation_unit): Warn for empty
23505         translation unit, not empty source file.
23506
23507 2008-02-26  Paul Brook  <paul@codesourcery.com>
23508
23509         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
23510         operand for Thumb-2.
23511         * config/arm/arm.h (reg_class): Add CORE_REGS.
23512         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
23513         (BASE_REG_CLASS): Use CORE_REGS.
23514         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
23515         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
23516         (REGNO_OK_FOR_INDEX_P): Exclude SP.
23517         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
23518         ARM_REGNO_OK_FOR_INDEX_P.
23519         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
23520         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
23521         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
23522         (ldm/stm peepholes): Ditto.
23523         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
23524         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
23525         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
23526         * config/arm/constraints.md: Enable "k" constraint on ARM.
23527
23528 2008-02-27  Ben Elliston  <bje@au.ibm.com>
23529
23530         * config/rs6000/rs6000.c: Annotate cache line size field in all
23531         instances of struct processor_costs.
23532
23533 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
23534
23535         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
23536         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
23537         jump_bypass): New counters.
23538         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
23539         * dce.c (gate_ud_dce): Same.
23540         (gate_fast_dce): Same.
23541         * dse.c (gate_dse1): New function.
23542         (gate_dse2): New function.
23543         (gate_dse): Merge results of new gate functions.
23544         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
23545         (gate_handle_jump_bypass): Add dbg_cnt.
23546         (gate_handle_gcse): Add dbg_cnt.
23547         * ifcvt.c (gate_handle_if_conversion): Same.
23548         (gate_handle_if_after_combine): Same.
23549         (gate_handle_if_after_reload): Same.
23550         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
23551
23552 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
23553
23554         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
23555         line sizes.
23556         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
23557
23558 2008-02-26  Jason Merrill  <jason@redhat.com>
23559
23560         PR c++/35315
23561         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
23562         alone if it's the naming decl for the type's main variant.
23563
23564 2008-02-26  Tom Tromey  <tromey@redhat.com>
23565
23566         * system.h (USE_MAPPED_LOCATION): Poison.
23567         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
23568         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
23569         (make_goto_expr_edges): Likewise.
23570         (remove_bb): Likewise.
23571         (execute_warn_function_return): Likewise.
23572         * basic-block.h (struct edge_def) <goto_locus>: Change type to
23573         location_t.
23574         * c-common.c (fname_decl): Remove old location code.
23575         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
23576         location code.
23577         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
23578         variant.
23579         (ASM_INPUT_SOURCE_LOCATION): Likewise.
23580         (gen_rtx_ASM_INPUT): Likewise.
23581         (gen_rtx_ASM_INPUT_loc): Likewise.
23582         (get_rtx_asm_OPERANDS): Remove.
23583         * cfglayout.c (insn_locators_alloc): Remove old location code.
23584         (set_curr_insn_source_location): Likewise.
23585         (curr_insn_locator): Likewise.
23586         * print-tree.c (print_node): Remove old location code.
23587         * tree-mudflap.c (mf_varname_tree): Remove old location code.
23588         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
23589         * cfgexpand.c (expand_gimple_cond_expr): Don't use
23590         location_from_locus.
23591         (construct_exit_block): Remove old location code.
23592         * emit-rtl.c (force_next_line_note): Remove old location code.
23593         * profile.c (branch_prob): Remove old location code.
23594         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
23595         LOC_LINE): Remove old-location variants.
23596         * langhooks.c (lhd_print_error_function): Remove old location
23597         code.
23598         * configure, config.in: Rebuilt.
23599         * configure.ac (--enable-mapped-location): Remove.
23600         * c-decl.c (c_init_decl_processing): Remove old location code.
23601         (finish_function): Likewise.
23602         * recog.c (decode_asm_operands): Remove old location code.
23603         * c-pch.c (c_common_read_pch): Remove old location code.
23604         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
23605         variants.
23606         * gimple-low.c (lower_function_body): Remove old location code.
23607         * toplev.c (unknown_location): Remove.
23608         (push_srcloc): Remove old-location variant.
23609         (process_options): Remove old location code.
23610         (lang_dependent_init): Likewise.
23611         * input.h (UNKNOWN_LOCATION): Move definition.
23612         (location_t): Undeprecate.
23613         (source_locus): Remove.
23614         (location_from_locus): Remove.
23615         (struct location_s): Remove.
23616         Remove all old-location code.
23617         (input_line, input_filename): Remove.
23618         * final.c (final_scan_insn): Remove old location code.
23619         * diagnostic.c (diagnostic_build_prefix): Remove
23620         USE_MAPPED_LOCATION test.
23621         * tree.h (gimple_stmt) <locus>: Now a location_t.
23622         (tree_exp) <locus>: Likewise.
23623         (DECL_IS_BUILTIN): Remove old-location variant.
23624         (annotate_with_file_line, annotate_with_locus): Likewise.
23625         (expr_locus, set_expr_locus): Update.
23626         * tree.c (build1_stat): Remove old location code.
23627         (last_annotated_node): Remove.
23628         (annotate_with_file_line): Remove old-location variant.
23629         (annotate_with_locus): Likewise.
23630         (expr_location): Remove old location code.
23631         (set_expr_location): Likewise.
23632         (expr_has_location): Likewise.
23633         (expr_locus): Likewise.
23634         (set_expr_locus): Likewise.
23635         (expr_filename): Don't use location_from_locus.
23636         (expr_lineno): Likewise.
23637         * rtl-error.c (location_for_asm): Remove old location code.
23638         * c-lex.c (cb_line_change): Remove old location code.
23639         (fe_file_change): Likewise.
23640         (cb_def_pragma): Likewise.
23641         (c_lex_with_flags): Likewise.
23642         * gengtype.c (do_typedef): Don't special-case location types.
23643         (define_location_structures): Remove.
23644         (main): Don't call define_location_structures.
23645         * tree-pretty-print.c (dump_implicit_edges): Remove old location
23646         code.
23647
23648 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23649
23650         PR 26264
23651         * builtins.def (BUILT_IN_STDARG_START): Remove.
23652         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
23653         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
23654         * tree-inline.c (inline_forbidden_p_1): Likewise.
23655
23656 2008-02-26  Richard Guenther  <rguenther@suse.de>
23657
23658         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23659         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23660         (lookup_decl_from_uid): Declare.
23661         (remove_decl_from_map): Likewise.
23662         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23663         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23664         (decl_for_uid_map): New global hashtable mapping DECL_UID
23665         to the decl tree.
23666         (init_ttree): Allocate it.
23667         (insert_decl_to_uid_decl_map): New helper function.
23668         (make_node_stat): Insert new decls into the map.
23669         (copy_node_stat): Likewise.
23670         (lookup_decl_from_uid): New function.
23671         (remove_decl_from_map): Likewise.
23672         (print_decl_for_uid_map_statistics): New helper.
23673         (dump_tree_statistics): Call it.
23674
23675         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23676         (referenced_var_iterator): Adjust.
23677         (FOR_EACH_REFERENCED_VAR): Adjust.
23678         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23679         (num_referenced_vars): Adjust.
23680         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23681         (first_referenced_var): Remove.
23682         (end_referenced_vars_p): Likewise.
23683         (next_referenced_var): Likewise.
23684         (referenced_var_iterator_set): New helper function.
23685         * tree-dfa.c (referenced_var_lookup): Adjust.
23686         (referenced_var_check_and_insert): Likewise.
23687         (remove_referenced_var): Likewise.
23688         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23689         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23690         (verify_call_clobbering): Likewise.
23691         (verify_memory_partitions): Likewise.
23692         (init_tree_ssa): Allocate bitmap instead of hashtable for
23693         referenced_vars.
23694         (delete_tree_ssa): Adjust.
23695         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23696         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23697         (compute_tag_properties): Likewise.
23698         (set_initial_properties): Likewise.
23699         (find_partition_for): Likewise.
23700         (update_reference_counts): Likewise.
23701         (dump_may_aliases_for): Likewise.
23702         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23703         (add_call_clobber_ops): Likewise.
23704         (add_call_read_ops): Likewise.
23705         (get_asm_expr_operands): Likewise.
23706         * tree-into-ssa.c (dump_decl_set): Likewise.
23707         (update_ssa): Likewise.
23708         * tree-sra.c (scan_function): Likewise.
23709         (decide_instantiations): Likewise.
23710         (scalarize_parms): Likewise.
23711         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23712         (dsa_named_for): Likewise.
23713         * tree-ssa-structalias.c (update_alias_info): Likewise.
23714         (merge_smts_into): Likewise.
23715
23716 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23717
23718         PR 34351
23719         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
23720         * c-opts.c (c_common_handle_option): Wall enables
23721         Wvolatile-register-var.
23722         * common.opt: Move Wvolatile-register-var to...
23723         * c.opt: ...here.
23724
23725 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23726
23727         * common.opt (Wlarger-than=): New.
23728         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
23729         -Wlarger-than=.
23730         * opts.c (common_handle_option): Handle -Wlarger-than=.
23731         * optc-gen.awk: Likewise.
23732         * opth-gen.awk: Likewise.
23733         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
23734         * tree-optimize.c (tree_rest_of_compilation): Likewise.
23735
23736 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
23737
23738         * c-common.c (match_case_to_enum_1): Add appropriate
23739         OPT_W* parameter to warning.
23740         (c_do_switch_warnings): Likewise.
23741         * c-typeck.c (warning_init): Add one more parameter following
23742         'warning' function.
23743         (push_init_level): Update call to warning_init.
23744         (pop_init_level): Likewise.
23745         (add_pending_init): Likewise.
23746         (output_init_element: Likewise.
23747
23748 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23749
23750         PR 28322
23751         * toplev.c (toplev_main): If there are warnings or error, print
23752         errors for ignored options.
23753         * opts.c (ignored_options): New static variable.
23754         (postpone_unknown_option_error): New.
23755         (print_ignored_options): New.
23756         (handle_option): Postpone errors for unknown -Wno-* options.
23757         * opts.h (print_ignored_options): Declare.
23758
23759 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23760
23761         * config/mips/mips.md (loadgp_blockage, blockage): Change type
23762         to "ghost".
23763
23764 2008-02-25  Richard Guenther  <rguenther@suse.de>
23765
23766         Revert:
23767         2008-02-25  Richard Guenther  <rguenther@suse.de>
23768
23769         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23770         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23771         (lookup_decl_from_uid): Declare.
23772         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23773         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23774         (decl_for_uid_map): New global hashtable mapping DECL_UID
23775         to the decl tree.
23776         (init_ttree): Allocate it.
23777         (insert_decl_to_uid_decl_map): New helper function.
23778         (make_node_stat): Insert new decls into the map.
23779         (copy_node_stat): Likewise.
23780         (lookup_decl_from_uid): New function.
23781         (print_decl_for_uid_map_statistics): New helper.
23782         (dump_tree_statistics): Call it.
23783
23784         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23785         (referenced_var_iterator): Adjust.
23786         (FOR_EACH_REFERENCED_VAR): Adjust.
23787         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23788         (num_referenced_vars): Adjust.
23789         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23790         (first_referenced_var): Remove.
23791         (end_referenced_vars_p): Likewise.
23792         (next_referenced_var): Likewise.
23793         (referenced_var_iterator_set): New helper function.
23794         * tree-dfa.c (referenced_var_lookup): Adjust.
23795         (referenced_var_check_and_insert): Likewise.
23796         (remove_referenced_var): Likewise.
23797         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23798         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23799         (verify_call_clobbering): Likewise.
23800         (verify_memory_partitions): Likewise.
23801         (init_tree_ssa): Allocate bitmap instead of hashtable for
23802         referenced_vars.
23803         (delete_tree_ssa): Adjust.
23804         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23805         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23806         (compute_tag_properties): Likewise.
23807         (set_initial_properties): Likewise.
23808         (find_partition_for): Likewise.
23809         (update_reference_counts): Likewise.
23810         (dump_may_aliases_for): Likewise.
23811         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23812         (add_call_clobber_ops): Likewise.
23813         (add_call_read_ops): Likewise.
23814         (get_asm_expr_operands): Likewise.
23815         * tree-into-ssa.c (dump_decl_set): Likewise.
23816         (update_ssa): Likewise.
23817         * tree-sra.c (scan_function): Likewise.
23818         (decide_instantiations): Likewise.
23819         (scalarize_parms): Likewise.
23820         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23821         (dsa_named_for): Likewise.
23822         * tree-ssa-structalias.c (update_alias_info): Likewise.
23823         (merge_smts_into): Likewise.
23824
23825 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
23826
23827         PR fortran/29549
23828         * doc/invoke.texi (-fcx-limited-range): Document new option.
23829         * toplev.c (process_options): Handle -fcx-fortran-rules.
23830         * common.opt: Add documentation for -fcx-fortran-rules.
23831
23832 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
23833
23834         PR c/35162
23835         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
23836         actual behaviour and C99.
23837
23838 2008-02-26  Ben Elliston  <bje@au.ibm.com>
23839
23840         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
23841         (ASM_CPU_POWER6_SPEC): Likewise.
23842         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
23843         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
23844         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
23845
23846 2008-02-25  Richard Guenther  <rguenther@suse.de>
23847
23848         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23849         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23850         (lookup_decl_from_uid): Declare.
23851         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23852         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23853         (decl_for_uid_map): New global hashtable mapping DECL_UID
23854         to the decl tree.
23855         (init_ttree): Allocate it.
23856         (insert_decl_to_uid_decl_map): New helper function.
23857         (make_node_stat): Insert new decls into the map.
23858         (copy_node_stat): Likewise.
23859         (lookup_decl_from_uid): New function.
23860         (print_decl_for_uid_map_statistics): New helper.
23861         (dump_tree_statistics): Call it.
23862
23863         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23864         (referenced_var_iterator): Adjust.
23865         (FOR_EACH_REFERENCED_VAR): Adjust.
23866         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23867         (num_referenced_vars): Adjust.
23868         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23869         (first_referenced_var): Remove.
23870         (end_referenced_vars_p): Likewise.
23871         (next_referenced_var): Likewise.
23872         (referenced_var_iterator_set): New helper function.
23873         * tree-dfa.c (referenced_var_lookup): Adjust.
23874         (referenced_var_check_and_insert): Likewise.
23875         (remove_referenced_var): Likewise.
23876         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23877         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23878         (verify_call_clobbering): Likewise.
23879         (verify_memory_partitions): Likewise.
23880         (init_tree_ssa): Allocate bitmap instead of hashtable for
23881         referenced_vars.
23882         (delete_tree_ssa): Adjust.
23883         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23884         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23885         (compute_tag_properties): Likewise.
23886         (set_initial_properties): Likewise.
23887         (find_partition_for): Likewise.
23888         (update_reference_counts): Likewise.
23889         (dump_may_aliases_for): Likewise.
23890         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23891         (add_call_clobber_ops): Likewise.
23892         (add_call_read_ops): Likewise.
23893         (get_asm_expr_operands): Likewise.
23894         * tree-into-ssa.c (dump_decl_set): Likewise.
23895         (update_ssa): Likewise.
23896         * tree-sra.c (scan_function): Likewise.
23897         (decide_instantiations): Likewise.
23898         (scalarize_parms): Likewise.
23899         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23900         (dsa_named_for): Likewise.
23901         * tree-ssa-structalias.c (update_alias_info): Likewise.
23902         (merge_smts_into): Likewise.
23903
23904 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
23905
23906         PR target/35258
23907         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
23908         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
23909         * alias.h (nonoverlapping_memrefs_p): Likewise.
23910
23911 2008-02-25  Jan Beulich  <jbeulich@novell.com>
23912
23913         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
23914         * config/i386/netware-libgcc.exp: Add __bswap?i2,
23915         __emultls_get_address, __emultls_register_common,
23916         __floatundi?f, and _Unwind_GetIPInfo.
23917         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
23918         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
23919         (gen_regparm_prefix): Likewise.
23920         (i386_nlm_encode_section_info): Sync with
23921         config/i386/winnt.c:i386_pe_encode_section_info().
23922         (i386_nlm_maybe_mangle_decl_assembler_name): New.
23923         i386_nlm_mangle_decl_assembler_name): New.
23924         (netware_override_options): New.
23925         * config/i386/netware.h (netware_override_options): Declare.
23926         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
23927         (i386_nlm_mangle_decl_assembler_name): Declare.
23928         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
23929
23930 2008-02-25  Ben Elliston  <bje@au.ibm.com>
23931
23932         PR other/32948
23933         * c-decl.c (grokdeclarator): Remove unused local variables
23934         `typedef_type' and `type_as_written'.
23935         * bb-reorder.c
23936         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
23937         unused local variable `has_hot_blocks'.
23938         (fix_crossing_conditional_branches): Remove unused local variable
23939         `prev_bb'.
23940
23941 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
23942
23943         PR middle-end/19984
23944         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
23945         using DEF_C99_BUILTIN.
23946         (BUILT_IN_NANF): Ditto.
23947         (BUILT_IN_NANL): Ditto.
23948
23949 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
23950             Revital Eres  <eres@il.ibm.com>
23951
23952         * modulo-sched.c (calculate_must_precede_follow): Address TODO
23953         regarding the order of two dependent insns in the same row.
23954
23955 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
23956
23957         * stor-layout.c (layout_decl): Do not bump the alignment of a
23958         bit-field to more than byte alignment if it is packed.
23959
23960 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
23961
23962         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
23963         e300c2 and e300c3.
23964
23965 2008-02-24  Diego Novillo  <dnovillo@google.com>
23966
23967         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
23968
23969         PR 33738
23970         * tree-vrp.c (vrp_evaluate_conditional): With
23971         -Wtype-limits, emit a warning when comparing against a
23972         constant outside the natural range of OP0's type.
23973         * c.opt (Wtype-limits): Move ...
23974         * common.opt (Wtype-limits): ... here.
23975
23976 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
23977
23978         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
23979         * config/rs6000/e300c2c3.md: New file.
23980         * config/rs6000/rs6000.c (processor_costs): Add new costs for
23981         e300c2 and e300c3.
23982         (rs6000_override_options): Add e300c2 and e300c3 cases to
23983         processor_target_table. Do not allow usage of Altivec or Spe
23984         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
23985         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
23986         * config/rs6000/rs6000.h (processor_type): Add
23987         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
23988         (ASM_CPU_SPEC): Add e300c2 and e300c3.
23989         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
23990         and ppce300c3. Include e300c2c3.md.
23991
23992 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
23993
23994         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
23995         instead of TARGET_STRICT_ALIGN.
23996
23997 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
23998
23999         * explow.c (memory_address): Assert that the generated address is
24000         valid.
24001
24002 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24003
24004         PR target/25477
24005         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
24006         * config/darwin-ppc-ldouble-patch.def: New file.
24007         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
24008         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
24009         SUBTARGET_INIT_BUILTINS if defined.
24010         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
24011         New functions.
24012
24013 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24014
24015         PR rtl-opt/33512
24016         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
24017         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
24018
24019 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24020
24021         PR pch/35027
24022         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
24023         file" warning condtional on -Winvalid-PCH.
24024
24025 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
24026
24027         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
24028
24029 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
24030
24031         PR target/22076
24032         PR target/34256
24033         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
24034         prevent reload from using MMX registers.
24035         (*mov<mode>_internal): Ditto.
24036         (*movv2sf_internal_rex64): Ditto.
24037         (*movv2sf_internal): Ditto.
24038
24039 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24040
24041         PR documentation/31569
24042         * doc/install.texi2html: Use makeinfo --no-number-sections.
24043
24044 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24045
24046         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
24047         ensure that we can address an entire entity > 8 bytes.  Don't
24048         generate reg+reg addressing for such data.
24049
24050 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24051
24052         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
24053         strings when optimizing for size, unless the target cares about
24054         alignment.
24055
24056 2008-02-22  Tom Tromey  <tromey@redhat.com>
24057
24058         * regclass.c (current_pass): Remove declaration.
24059
24060 2008-02-22  Anatoly Sokolov <aesok@post.ru>
24061
24062         * config/avr/libgcc.S (__RAMPZ__): Define.
24063         (__do_copy_data): Add for devices with 128KB code memory.
24064
24065 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24066
24067         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
24068         Use spe_abi.
24069         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
24070
24071 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
24072
24073         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
24074         GENNONACR_REGS.
24075
24076 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24077
24078         PR c/19999
24079         * c-typeck.c (build_binary_op): Warn about floating point
24080         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
24081
24082 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
24083
24084         PR target/34526
24085         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
24086         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
24087         add vrsave.
24088         (rs6000_override_options): Set altivec_abi as default, not override,
24089         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
24090         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
24091         is used; use new member spe_abi.
24092         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
24093         spe_abi and altivec_abi.
24094
24095 2008-02-22  Tomas Bily  <tbily@suse.cz>
24096
24097         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
24098
24099 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24100
24101         PR bootstrap/35273
24102         * config.build (build_file_translate): Set to `CMD //c' only if
24103         it works.
24104         * Makefile.in (build_file_translate): Improve comment.
24105
24106 2008-02-21  Jan Hubicka  <jh@suse.cz>
24107
24108         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
24109         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
24110         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
24111
24112 2008-02-21  Michael Matz  <matz@suse.de>
24113
24114         PR target/35264
24115         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
24116
24117 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
24118
24119         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
24120         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
24121         as insn constraint.
24122         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
24123         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
24124         SSE_VEC_FLOAT_MODE_P as insn constraint.
24125         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
24126         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
24127         sse4a_movntdf using MODEF mode iterator.
24128         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
24129         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
24130         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
24131         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
24132         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
24133         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
24134         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
24135
24136 2008-02-21  Richard Guenther  <rguenther@suse.de>
24137
24138         * tree.def (PAREN_EXPR): New tree code.
24139         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
24140         and PAREN_EXPR.
24141         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
24142         * expr.c (expand_expr_real_1): Likewise.
24143         * tree-inline.c (estimate_num_insns_1): Likewise.
24144         * tree-complex.c (expand_complex_move): Likewise.
24145         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
24146         as plain x.
24147
24148 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24149
24150         PR target/35225
24151         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
24152
24153 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24154
24155         PR target/35190
24156         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
24157
24158         * config/sh/sh.c (find_barrier): Don't go past
24159         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
24160
24161 2008-02-20  DJ Delorie  <dj@redhat.com>
24162
24163         * config/h8300/h8300.md (insv): Force source operand to be a register.
24164
24165         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
24166         as a jump, not as a plain insn.
24167
24168 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
24169
24170         * doc/invoke.texi (Warning Options): Add new option
24171         -Wframe-larger-than=.
24172         (-Wframe-larger-than): Document.
24173
24174         * flags.h (warn_frame_larger_than, frame_larger_than_size):
24175         Add declarations for new option variables.
24176
24177         * final.c (final_start_function): Check the frame size
24178         before emission and issue a Wframe-larger-than warning.
24179
24180         * opts.c (warn_frame_larger_than, frame_larger_than_size):
24181         Add definitions for new option variables.
24182         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
24183
24184         * common.opt (Wframe-larger-than=): New option.
24185
24186 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24187
24188         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
24189         (<sse>_div<mode>3): Ditto.
24190         (<sse>_vmdiv<mode>3): Ditto.
24191         (<sse>_vmsqrt<mode>2): Ditto.
24192         (*smax<mode>3): Ditto.
24193         (sse5_frcz<mode>2): Ditto.
24194         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
24195         as insn constraint.
24196
24197 2008-02-20  Richard Guenther  <rguenther@suse.de>
24198
24199         PR middle-end/35265
24200         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
24201         be happy with INTEGRAL_TYPE_P.
24202
24203 2008-02-20  Richard Guenther  <rguenther@suse.de>
24204
24205         * fold-const.c (split_tree): Associate floatig-point expressions
24206         if flag_associative_math is set.
24207
24208 2008-02-20  Richard Guenther  <rguenther@suse.de>
24209
24210         * tree.h (fold_real_zero_addition_p): Declare.
24211         * fold-const.c (fold_real_zero_addition_p): Export.
24212         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
24213         floating-point operations with zero and one.
24214
24215 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
24216
24217         * doc/install.texi: Correct references to CFLAGS, replacing them
24218         with BOOT_CFLAGS.  Document flags used during bootstrap for
24219         target libraries.
24220
24221 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24222
24223         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
24224         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
24225         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
24226         insn constraint.
24227         (smin<mode>3): Ditto from similar patterns.
24228         (smax<mode>3): Ditto.
24229         (*ieee_smin<mode>3): Ditto.
24230         (*ieee_smax<mode>3): Ditto.
24231         * config/i386/sse.md (sse): New mode attribute.
24232         (mov<mode>): Macroize expander from movv4sf and movv2df using
24233         SSEMODEF2P mode iterator.
24234         (<sse>_movnt<mode>): Ditto from similar patterns. Use
24235         SSE_VEC_FLOAT_MODE_P as insn constraint.
24236         (storent<mode>): Ditto.
24237         (storent<mode>): Macroize expander from storentsf and storentdf using
24238         MODEF mode iterator.
24239         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
24240         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
24241         (abs<mode>2): Ditto from similar patterns.
24242         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
24243         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
24244         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
24245         (<sse>_vmsqrt<mode>2): Ditto.
24246         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
24247         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
24248         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
24249         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
24250         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
24251         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
24252         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
24253         insn constraint.
24254         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
24255         iterator and SSE_FLOAT_MODE_P as insn constraint.
24256         (<sse>_ucomi): Ditto from similar patterns.
24257         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
24258         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
24259         SSE_VEC_FLOAT_MODE_P as insn constraint.
24260         (vcond<mode>): Ditto from similar patterns.
24261         (and<mode>3, *and<mode>3): Ditto.
24262         (<sse>_nand<mode>3): Ditto.
24263         (ior<mode>3, *ior<mode>3): Ditto.
24264         (xor<mode>3, *xor<mode>3): Ditto.
24265         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
24266         iterator and SSE_FLOAT_MODE_P as insn constraint.
24267         (*nand<mode>3): Ditto from similar patterns.
24268         (*ior<mode>3): Ditto.
24269         (*xor<mode>3): Ditto.
24270
24271 2008-02-20  Ira Rosen  <irar@il.ibm.com>
24272
24273         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
24274         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
24275         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
24276
24277 2008-02-19  Jan Hubicka  <jh@suse.cz>
24278
24279         * predict.c (tree_bb_level_predictions): Remove variable next
24280         mistakely introduced by previous commit.
24281
24282 2008-02-19  Jan Hubicka  <jh@suse.cz>
24283
24284         * predict.c (predict_paths_leading_to): Rewrite.
24285         (predict_paths_for_bb): New.
24286         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
24287
24288 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24289
24290         PR bootstrap/35218
24291         * Makefile.in (build_file_translate): New.
24292         (gcc-vers.texi): Use it for translating $(abs_srcdir).
24293         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
24294         * configure.ac (build_file_translate): Substitute it.
24295         * configure: Regenerate.
24296
24297 2008-02-19  Jan Hubicka  <jh@suse.cz>
24298
24299         PR rtl-optimization/34408
24300         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
24301         invalid sharing.
24302
24303 2008-02-19  Jan Hubicka  <jh@suse.cz>
24304
24305         PR middle-end/28779
24306         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
24307         call_expr.
24308
24309 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24310
24311         PR Ada/35186
24312         * config/i386/i386-modes.def: Revert the last DI alignment
24313         change until Ada people can look into it.
24314
24315 2008-02-19  Nick Clifton  <nickc@redhat.com>
24316
24317         * opts.c (print_specific_help): Fix typo in --help text.
24318
24319 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
24320
24321         PR target/35239
24322         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
24323         32-bit inline asm without asm alternatives for host GCC < 3.0.
24324
24325 2008-02-19  Richard Guenther  <rguenther@suse.de>
24326
24327         PR tree-optimization/34989
24328         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
24329         Allow propagation to INDIRECT_REF if we can simplify only.
24330
24331 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24332
24333         * c-common.c (warn_for_collisions_1): Use appropriate option when
24334         warning.
24335
24336 2008-02-19  Nick Clifton  <nickc@redhat.com>
24337
24338         PR other/31349
24339         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
24340         (handle_options): Fix indentation.
24341         (print_filtered_help): If no language-specific options were
24342         displayed tell the user how to list all the options supported by
24343         the language's front-end.
24344         (print_specific_help): Fix indentation and remove duplicate line.
24345         (common_handle_option): Handle the -v option.
24346         For --help enable the display of undocumented options if the -v
24347         switch has been included on the command line.
24348         For --help= check for overlaps in the arguments between the option
24349         classes and the language names and issue a warning when they
24350         cannot be disambiguated.
24351         * c.opt (v): Pass on to the common option handler.
24352
24353 2008-02-19  Revital Eres  <eres@il.ibm.com>
24354
24355         * modulo-sched.c (sms_schedule): Change dump message when
24356         create_ddg function fails.
24357         (try_scheduling_node_in_cycle): Rename row to cycle.
24358         (print_partial_schedule): Rename CYCLE to ROW.
24359
24360 2008-02-19  Christian Bruel  <christian.bruel@st.com>
24361             Zdenek Dvorak  <ook@ucw.cz>
24362
24363         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
24364
24365 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
24366
24367         PR target/33555
24368         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
24369         (*x86_movdicc_0_m1_se): Ditto.
24370
24371 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
24372
24373         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
24374         (CMPtype): Define as __gcc_CMPtype.
24375         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
24376         (CMPtype): Define as __gcc_CMPtype.
24377
24378 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
24379
24380         Support valgrind 3.3 for --enable-checking=valgrind.
24381         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
24382         here.
24383         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
24384         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
24385         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
24386         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
24387         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
24388         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
24389         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
24390         respectively.
24391         * ggc-zone.c: Similar.
24392         * ggc-page.c: Similar.
24393
24394 2008-02-19  Paul Brook  <paul@codesourcery.com>
24395
24396         PR target/35071
24397         * config/arm/ieee754-df.S: Fix do_it typo.
24398         * config/arm/ieee754-sf.S: Fix do_it typo.
24399
24400 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24401
24402         PR target/35189
24403         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
24404         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
24405         (OPTION_MASK_ISA_SSE_SET): Likewise.
24406         (OPTION_MASK_ISA_SSE2_SET): Likewise.
24407         (OPTION_MASK_ISA_SSE3_SET): Likewise.
24408         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
24409         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
24410         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
24411         (OPTION_MASK_ISA_SSE4_SET): Likewise.
24412         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
24413         (OPTION_MASK_ISA_SSE5_SET): Likewise.
24414         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
24415         (OPTION_MASK_ISA_MMX_UNSET): Updated.
24416         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
24417         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
24418         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
24419         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
24420         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
24421         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
24422         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
24423         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
24424         (OPTION_MASK_ISA_SSE4): Removed.
24425         (ix86_handle_option): Turn on bits in ix86_isa_flags and
24426         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
24427         (override_options): Don't turn on implied SSE/MMX bits in
24428         ix86_isa_flags.
24429
24430 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24431
24432         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24433         32bit host.
24434
24435 2008-02-18  Joey Ye  <joey.ye@intel.com>
24436
24437         PR middle-end/34921
24438         * tree-nested.c (insert_field_into_struct): Set type alignment
24439         to field alignment if the former is less than the latter.
24440
24441 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
24442
24443         * BASE-VER: Set to 4.4.0.
24444
24445 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
24446
24447         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
24448         * doc/cfg.texi: Likewise.
24449         * doc/extend.texi: Likewise.
24450         * doc/gty.texi: Likewise.
24451         * doc/invoke.texi: Likewise.
24452         * doc/loop.texi: Likewise.
24453         * doc/md.texi: Likewise.
24454         * doc/passes.texi: Likewise.
24455         * doc/rtl.texi: Likewise.
24456         * doc/sourcebuild.texi: Likewise.
24457         * doc/tm.texi: Likewise.
24458         * doc/tree-ssa.texi: Likewise.
24459
24460 2008-02-17  Richard Guenther  <rguenther@suse.de>
24461
24462         PR middle-end/35227
24463         * tree-complex.c (init_parameter_lattice_values): Handle parameters
24464         without default definition.
24465
24466 2008-02-17  Richard Guenther  <rguenther@suse.de>
24467
24468         PR tree-optimization/35231
24469         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
24470         if A | B != 1.
24471
24472 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
24473
24474         Revert:
24475         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24476         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
24477         libgcc_cmp_return mode.
24478
24479 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24480
24481         PR c/28368
24482         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
24483
24484 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
24485
24486         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
24487         multilibs.
24488
24489 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24490
24491         * doc/c-tree.texi: Use `@.' where appropriate.
24492         * doc/extend.texi: Likewise.
24493         * doc/install.texi: Likewise.
24494         * doc/invoke.texi: Likewise.
24495         * doc/loop.texi: Likewise.
24496         * doc/makefile.texi: Likewise.
24497         * doc/md.texi: Likewise.
24498         * doc/passes.texi: Likewise.
24499         * doc/standards.texi: Likewise.
24500         * doc/tm.texi: Likewise.
24501
24502 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
24503
24504         PR middle-end/35196
24505         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
24506         in entry_bb.
24507         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
24508         rather than in entry_bb.
24509
24510 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24511
24512         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
24513         libgcc_cmp_return mode.
24514
24515 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
24516
24517         PR middle-end/35130
24518         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
24519         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
24520
24521 2008-02-15  Richard Guenther  <rguenther@suse.de>
24522             Zdenek Dvorak  <ook@ucw.cz>
24523
24524         PR tree-optimization/35164
24525         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
24526         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
24527         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
24528         Only propagate addresses which do not have abnormal SSA_NAMEs
24529         in their operands.
24530
24531 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
24532
24533         PR target/35088
24534         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
24535
24536 2008-02-15  Jan Hubicka  <jh@suse.cz>
24537
24538         PR middle-end/35149
24539         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
24540
24541 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24542
24543         PR middle-end/34621
24544         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
24545         when calculating alignment_pad.
24546
24547 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24548
24549         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
24550         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
24551         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
24552         and STACK_BOUNDARY define.
24553
24554 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
24555
24556         PR preprocessor/35061
24557         * c-pragma.c (handle_pragma_pop_macro): Check that
24558         pushed_macro_table has been allocated.
24559
24560 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
24561
24562         PR middle-end/35136
24563         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
24564         (force_gimple_operand): Likewise.
24565         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
24566         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
24567         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
24568         (find_interesting_uses_address): Check addressability and alignment
24569         of the base expression only after substituting bases of IVs into it.
24570
24571 2008-02-14  Michael Matz  <matz@suse.de>
24572
24573         PR target/34930
24574         * function.c (instantiate_virtual_regs_in_insn): Reload address
24575         before falling back to reloading the whole operand.
24576
24577 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
24578
24579         * config/s390/s390.c (s390_mainpool_start): Emit the pool
24580         before the first section switch note.
24581
24582 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
24583
24584         * doc/bugreport.texi: Update copyright years.
24585         * doc/c-tree.texi: Likewise.
24586         * doc/cfg.texi: Likewise.
24587         * doc/cpp.texi: Likewise.
24588         * doc/cppinternals.texi: Likewise.
24589         * doc/fragments.texi: Likewise.
24590         * doc/frontends.texi: Likewise.
24591         * doc/gcc.texi: Likewise.
24592         * doc/gty.texi: Likewise.
24593         * doc/hostconfig.texi: Likewise.
24594         * doc/implement-c.texi: Likewise.
24595         * doc/libgcc.texi: Likewise.
24596         * doc/loop.texi: Likewise.
24597         * doc/makefile.texi: Likewise.
24598         * doc/options.texi: Likewise.
24599         * doc/passes.texi: Likewise.
24600         * doc/rtl.texi: Likewise.
24601         * doc/sourcebuild.texi: Likewise.
24602         * doc/standards.texi: Likewise.
24603         * doc/tree-ssa.texi: Likewise.
24604         * doc/trouble.texi: Likewise.
24605
24606         * doc/extend.texi: Use @: or add comma where appropriate.
24607         * doc/invoke.texi: Likewise.
24608         * doc/tm.texi: Likewise.
24609
24610 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
24611
24612         PR target/34393
24613         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
24614         to a reg.
24615
24616 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
24617
24618         * doc/md.texi (clz, ctz): Add reference.
24619         * doc/rtl.texi (clz, ctz): Likewise.
24620
24621 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24622
24623         PR other/35148
24624         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
24625         srcdir.
24626
24627 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
24628
24629         * config/s390/s390.c (struct constant_pool): New field
24630         emit_pool_after added.
24631         (s390_mainpool_start): Set the emit_pool_after flag according
24632         to the section switch notes.
24633         (s390_mainpool_finish): Consider emit_pool_after when emitting
24634         the literal pool at the end of the function.
24635         (s390_chunkify_start): Force literal pool splits at section
24636         switch notes.
24637
24638 2008-02-13  Michael Matz  <matz@suse.de>
24639
24640         PR debug/35065
24641         * var-tracking.c (clobber_variable_part): Correctly traverse the
24642         list.
24643
24644 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24645
24646         PR 29673
24647         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
24648         Add -fdump-ipa-inline.
24649         * tree-dump.c (dump_files): Remove tree-inlined dump.
24650         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
24651
24652 2008-02-12  Richard Guenther  <rguenther@suse.de>
24653
24654         PR tree-optimization/35171
24655         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
24656         default defs.
24657
24658 2008-02-12  Richard Guenther  <rguenther@suse.de>
24659
24660         PR middle-end/35163
24661         * fold-const.c (fold_widened_comparison): Use get_unwidened in
24662         value-preserving mode.  Disallow final truncation.
24663
24664 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
24665
24666         PR middle-end/35136
24667         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
24668         code from here to...
24669         (force_gimple_operand): ...here.
24670
24671 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
24672
24673         PR c++/35144
24674         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
24675         non-compatible pointers.
24676         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
24677         different FIELD_DECLs, try harder by comparing field offsets, sizes
24678         and types.
24679
24680         PR inline-asm/35160
24681         * function.c (match_asm_constraints_1): Don't replace the same input
24682         multiple times.
24683
24684 2008-02-12  Anatoly Sokolov <aesok@post.ru>
24685
24686         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
24687         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
24688         (expand_epilogue): Restore RAMPZ register.
24689         * config/avr/avr.md (RAMPZ_ADDR): New constant.
24690
24691 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
24692
24693         * config/i386/cygwin.asm: (__alloca): Correct calling
24694         convention and alignment.
24695         (__chkstk): Force 8 byte stack alignment.
24696
24697 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
24698             Richard Guenther  <rguenther@suse.de>
24699
24700         PR tree-optimization/33992
24701         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
24702         the zero we compare against.
24703
24704 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
24705
24706         PR libfortran/35063
24707         * gthr-win32.h (__gthread_mutex_destroy_function): New function
24708         to CloseHandle after unlocking to prevent accumulation of handle
24709         count.
24710
24711 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24712
24713         PR middle_end/34150
24714         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
24715         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
24716         and update LABEL_NUSES during and after reload.
24717
24718 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
24719
24720         PR middle-end/34627
24721         * combine.c (simplify_if_then_else): Make sure the comparison is
24722         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
24723
24724 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
24725
24726         PR bootstrap/35051
24727         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
24728         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
24729         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
24730         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
24731         * tree.h (get_type_static_bounds): Likewise.
24732
24733 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24734
24735         * doc/invoke.texi (Option Summary, C++ Dialect Options)
24736         (Objective-C and Objective-C++ Dialect Options, Warning Options):
24737         Make -Wfoo language annotations match what the compiler outputs.
24738
24739 2008-02-08  Sa Liu  <saliu@de.ibm.com>
24740
24741         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
24742         intrinsics spu_convts, spu_convtu, spu_convtf.
24743
24744 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
24745
24746         * doc/extend.texi (Function Attributes) <noinline>: Mention
24747         asm ("") as method to keep calls.
24748
24749 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24750
24751         PR other/32754
24752         * doc/options.texi (Options): Replace references to opts.sh with
24753         optc-gen.awk.
24754         * opts-common.c: Likewise.
24755         * optc-gen.awk: Likewise.
24756
24757 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
24758
24759         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
24760
24761 2008-02-07  Richard Henderson  <rth@redhat.com>
24762
24763         PR rtl-opt/33410
24764         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
24765         EXPR_LIST for the REG_EQUAL instead of a comparison with a
24766         funny mode.
24767
24768 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
24769
24770         PR tree-optimization/35085
24771         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
24772         for operand entry oe2 in addition to operand entry oe3 in order to
24773         expose more opportunities for vectorizer sum reduction.
24774
24775 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24776
24777         PR other/35107
24778         * Makefile.in (LIBS): Remove $(GMPLIBS).
24779         (cc1-dummy, cc1): Add $(GMPLIBS).
24780
24781 2008-02-06  Jan Hubicka  <jh@suse.cz>
24782
24783         PR target/23322
24784         * i386.md (moddf_integer): Do not produce partial memory stalls for
24785         targets where it hurts.
24786
24787 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
24788
24789         PR target/35083
24790         * optabs.c (expand_float): Do not check for decimal modes when
24791         expanding unsigned integer through signed conversion.
24792
24793 2008-02-06  Nick Clifton  <nickc@redhat.com>
24794
24795         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
24796         inside the clobber with a match_operand and duplicated operand
24797         number in the constraint.
24798         (ineqbranchsi): Delete redundant comment.
24799
24800 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
24801
24802         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
24803         builtin_define ("__USE_INIT_FINI__").
24804         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
24805         -msx multilibs.
24806         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
24807
24808 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24809
24810         PR documentation/30330
24811         * doc/invoke.texi (C++ Dialect Options)
24812         (Objective-C and Objective-C++ Dialect Options, Warning Options):
24813         For each warning option -Wfoo that allows -Wno-foo, ensure both
24814         -Wfoo and -Wno-foo are listed in the option index.  Fix index
24815         entry of -Wswitch-default, index -Wnormalized= including the
24816         `=', and -Wlarger-than-@var{len} including @var{len}.
24817
24818 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
24819
24820         * config/i386/i386.md (floatunssisf2): Use
24821         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
24822         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
24823         Macroize expander using MODEF mode iterator.
24824
24825 2008-02-05  Diego Novillo  <dnovillo@google.com>
24826
24827         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
24828
24829         PR 33738
24830         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
24831
24832 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24833
24834         PR other/35070
24835         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
24836
24837 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
24838
24839         PR target/35084
24840         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
24841         to indicate if a message should be generated.
24842         (init_cumulative_args): Updated.
24843         (function_value_32): Likewise.
24844
24845 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
24846
24847         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
24848
24849 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
24850
24851         PR target/35083
24852         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
24853         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
24854
24855 2008-02-04  Diego Novillo  <dnovillo@google.com>
24856
24857         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
24858
24859         PR 33738
24860         * tree-vrp.c (vrp_evaluate_conditional): With
24861         -Wtype-limits, emit a warning when comparing against a
24862         constant outside the natural range of OP0's type.
24863
24864 2008-02-04  Richard Guenther  <rguenther@suse.de>
24865
24866         PR middle-end/33631
24867         * expr.c (count_type_elements): Give for unions instead of
24868         guessing.
24869
24870 2008-02-04  Richard Guenther  <rguenther@suse.de>
24871
24872         PR middle-end/35043
24873         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
24874         to TYPE_DOMAINs base type instead of using bitsizetype here.
24875
24876 2008-02-03  Jason Merrill  <jason@redhat.com>
24877
24878         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
24879
24880 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24881
24882         PR other/29972
24883         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
24884         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
24885         (RS/6000 and PowerPC Options): Fix typos and markup.
24886         * doc/passes.texi (Tree-SSA passes): Likewise.
24887
24888 2008-02-02  Michael Matz  <matz@suse.de>
24889
24890         PR target/35045
24891         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
24892         from record_last_reg_set_info.
24893         (record_last_reg_set_info): Take an RTX argument, iterate over all
24894         constituent hardregs.
24895         (record_last_set_info, record_opr_changes): Change calls to
24896         new signature or to record_last_reg_set_info_regno.
24897
24898 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
24899
24900         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
24901
24902 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
24903
24904         PR rtl-optimization/34773
24905         * reg-notes.def (EQUAL): Mention significance of combination of
24906         REG_EQUAL and REG_RETVAL.
24907         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
24908         insn that has a REG_RETVAL.
24909
24910 2008-02-01  Roger Sayle  <roger@eyesopen.com>
24911
24912         PR bootstrap/33781
24913         * configure.ac (--enable-fixed-point): Disable unless explicitly
24914         requested on IRIX.
24915         * configure: Regenerate.
24916
24917 2008-02-01  Richard Guenther  <rguenther@suse.de>
24918
24919         PR other/35042
24920         * invoke.texi (-finline-limit): Remove no longer true parts
24921         of the documentation.  Note that there is no default value.
24922
24923 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
24924             Mark Mitchell  <mark@codesourcery.com>
24925             Ben Elliston  <bje@au.ibm.com>
24926
24927         PR c/29326
24928         * doc/extend.texi (Other Builtins): Document.
24929
24930 2008-01-31  Tom Browder <tom.browder@gmail.com>
24931
24932         * doc/c-tree.texi (Types): Fix grammar.
24933         (Expression trees): Ditto.
24934         * doc/passes.texi (Tree-SSA passes): Ditto.
24935
24936         * doc/configterms.texi (Configure Terms): Fix typo.
24937         * doc/cpp.texi (Common Predefined Macros): Ditto.
24938         * doc/md.texi (Machine Constraints): Ditto.
24939
24940         * doc/makefile.texi (Makefile): Add comma.
24941
24942 2008-01-31  Tom Browder  <tom.browder@gmail.com>
24943             Gerald Pfeifer  <gerald@pfeifer.com>
24944
24945         * doc/sourcebuild.texi (Front End): Remove references to CVS
24946         and CVSROOT/modules.
24947         (Texinfo Manuals): Replace reference to CVS by one to SVN.
24948         (Back End): Remove reference to CVS.
24949
24950 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
24951
24952         PR target/34900
24953         * config/mips/mips.c (gen_load_const_gp): New function, taking a
24954         comment from...
24955         (mips16_gp_pseudo_reg): ...here.
24956         * config/mips/mips.md (load_const_gp): Replace with...
24957         (load_const_gp_<mode>): ...this :P-based insn.
24958
24959 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24960
24961         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
24962         options. Minor fixes.
24963         (-std): Move reference to standards closer to where language
24964         standards are first mentioned.
24965
24966 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
24967
24968         PR rtl-optimization/34995
24969         * reload.c (alternative_allows_const_pool_ref): Take an rtx
24970         parameter and return a bool.  If the rtx parameter is nonnull,
24971         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
24972         (find_reloads): Update call accordingly.  Pass the new operand
24973         if it needed no address reloads, otherwise pass null.
24974
24975 2008-01-30  Richard Henderson  <rth@redhat.com>
24976
24977         PR c/34993
24978         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
24979         for unbounded arrays.
24980
24981 2008-01-30  Silvius Rus  <rus@google.com>
24982
24983         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
24984
24985 2008-01-30  Jan Hubicka  <jh@suse.cz>
24986
24987         PR target/34982
24988         * i386.c (init_cumulative_args): Use real function declaration when
24989         calling locally.
24990
24991 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
24992
24993         PR rtl-optimization/34998
24994         * global.c (build_insn_chain): Treat non-subreg_lowpart
24995         SUBREGs of pseudos as clobbering all the words covered by the
24996         SUBREG, not just all the bytes.
24997         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
24998         original df_ref rather than an extract parameter.
24999         (global_conflicts): Update call accordingly.
25000
25001 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
25002
25003         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
25004         the overflow check to make it easier to read.
25005         (__fixtfdi): Change the type of the ll member in union
25006         long_double to UDItype_x.
25007
25008 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
25009
25010         PR middle-end/34969
25011         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
25012         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
25013         * tree-inline.c (fold_marked_statements): Call
25014         cgraph_update_edges_for_call_stmt if folding a call statement.
25015         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
25016         debug_generic_stmt calls, reset it back afterwards.
25017
25018         PR c/35017
25019         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
25020         static decls.
25021         * c-typeck.c (build_external_ref): Don't pedwarn about
25022         static vars in current function's scope.
25023
25024 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
25025
25026         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
25027
25028 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
25029
25030         PR c/35002
25031         * ipa-struct-reorg.c: Fix spelling.
25032         * params.def: Ditto.
25033
25034 2008-01-29  Richard Guenther  <rguenther@suse.de>
25035
25036         PR middle-end/35006
25037         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
25038         field.
25039         * tree-inline.c (remap_type): Increment remapping_type_depth
25040         around remapping types.
25041         (copy_body_r): Only add referenced variables if they are referenced
25042         from code, not types.
25043
25044 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
25045
25046         PR c++/34055
25047         PR c++/34103
25048         PR c++/34219
25049         PR c++/34606
25050         PR c++/34753
25051         PR c++/34754
25052         PR c++/34755
25053         PR c++/34919
25054         PR c++/34961
25055         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
25056         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
25057
25058 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
25059
25060         PR target/34412
25061         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
25062         pointer for tiny stack.
25063
25064 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25065
25066         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
25067
25068 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25069
25070         * config/vx-common.h: Fix typo in comment.
25071
25072 2008-01-28  Ian Lance Taylor  <iant@google.com>
25073
25074         PR c++/34862
25075         PR c++/33407
25076         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
25077         coalesce pointers if they have different DECL_NO_TBAA_P values.
25078         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
25079         between variables with different DECL_NO_TBAA_P values.
25080
25081 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
25082
25083         PR 31535
25084         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
25085         are not legitimate small data references on SPE targets.
25086
25087 2008-01-28  David Daney  <ddaney@avtrex.com>
25088
25089         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
25090
25091 2008-01-28  David Daney  <ddaney@avtrex.com>
25092
25093         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
25094
25095 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
25096
25097         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
25098         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
25099         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
25100         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
25101         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
25102         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
25103         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
25104         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
25105
25106 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25107
25108         * basic-block.h (condjump_equiv_p): Fix comment.
25109
25110 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25111
25112         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
25113         print_generic_stmt_indented): Fix comment.
25114
25115 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25116
25117         * configure.ac (__stack_chk_fail): Add detecion for availability
25118         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
25119         * configure: Regenerate.
25120
25121 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
25122
25123         PR middle-end/34688
25124         * final.c (output_addr_const): Handle TRUNCATE.
25125
25126 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
25127
25128         PR target/34711
25129         * tree-ssa-loop-ivopts.c (comp_cost): New type.
25130         (zero_cost, infinite_cost): New constants.
25131         (struct cost_pair): Change type of cost to comp_cost.
25132         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
25133         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
25134         New functions.
25135         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
25136         split_address_cost, ptr_difference_cost, difference_cost,
25137         get_computation_cost_at, get_computation_cost,
25138         determine_use_iv_cost_generic, determine_use_iv_cost_address,
25139         determine_use_iv_cost_condition, determine_use_iv_costs,
25140         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
25141         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
25142         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
25143         Change type of cost to comp_cost.
25144         (determine_iv_cost): Increase cost of non-original ivs, instead
25145         of decreasing the cost of original ones.
25146         (get_address_cost): Indicate the complexity of the addressing mode
25147         in comp_cost.
25148         (try_add_cand_for): Prefer using ivs not specific to some object.
25149         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
25150
25151 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
25152             Janis Johnson  <janis187@us.ibm.com>
25153
25154         PR target/34814
25155         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
25156         (TARGET_INSTANTIATE_DECLS): Likewise.
25157         * target.h (expand_to_rtl_hook): New target hook.
25158         (instantiate_decls): Likewise.
25159         * function.c (instantiate_decl): Make non-static.  Rename to...
25160         (instantiate_decl_rtl): ... this.
25161         (instantiate_expr): Use instantiate_decl_rtl.
25162         (instantiate_decls_1): Likewise.
25163         (instantiate_decls): Likewise.
25164         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
25165         * function.h (instantiate_decl_rtl): Add prototype.
25166         * cfgexpand.c (target.h): New include.
25167         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
25168         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
25169         (TARGET_INSTANTIATE_DECLS): Likewise.
25170         (TARGET_INITIALIZER): New target hooks added.
25171         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
25172         New prototype.
25173         * config/rs6000/rs6000.c (tree-flow.h): New include.
25174         (machine_function): Add sdmode_stack_slot field.
25175         (rs6000_alloc_sdmode_stack_slot): New function.
25176         (rs6000_instantiate_decls): Likewise.
25177         (rs6000_secondary_memory_needed_rtx): Likewise.
25178         (rs6000_check_sdmode): Likewise.
25179         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
25180         (TARGET_INSTANTIATE_DECLS): Likewise.
25181         (rs6000_hard_regno_mode_ok): Allow SDmode.
25182         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
25183         (rs6000_emit_move): Handle SDmode.
25184         (function_arg_advance): Likewise.
25185         (function_arg): Likewise.
25186         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
25187         SDmode var args for 32-bit compiles.
25188         (rs6000_secondary_reload_class): Handle SDmode.
25189         (rs6000_output_function_epilogue): Likewise.
25190         (rs6000_function_value): Simplify if statement.
25191         (rs6000_libcall_value): Likewise.
25192         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
25193         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
25194         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
25195         (movsd_hardfloat): New define_insn.
25196         (movsd_softfloat): Likewise.
25197         (movsd_store): Likewise.
25198         (movsd_load): Likewise.
25199         (extendsddd2): Likewise.
25200         (extendsdtd2): Likewise.
25201         (truncddsd2): Likewise.
25202         (movdd_hardfloat64): Fixup comment.
25203         (UNSPEC_MOVSD_LOAD): New constant.
25204         (UNSPEC_MOVSD_STORE): Likewise.
25205
25206 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
25207
25208         PR c++/34965
25209         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
25210         TRUTH_XOR_EXPR.
25211         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
25212         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
25213         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
25214         and TRUTH_XOR_EXPR.
25215
25216 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
25217
25218         PR target/34794
25219         * config.gcc: Separate AIX 5.3 from AIX 6.1.
25220         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25221         __LONGDOUBLE128 too.
25222         * config/rs6000/aix61.h: New file.
25223
25224 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25225
25226         PR rtl-optimization/34959
25227         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
25228         popcount and parity rtxes the same mode as their operand.
25229         Truncate or extend the result to the return value's mode
25230         if necessary.
25231
25232 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25233
25234         PR target/34981
25235         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
25236         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
25237         to GOT_VERSION_REGNUM.
25238         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
25239         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
25240         * config/mips/mips.c (mips_emit_call_insn): New function.
25241         (mips_call_tls_get_addr): Call mips_expand_call directly.
25242         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
25243         emit_call_insn.
25244         (mips16_build_call_stub): Likewise.  Return the call insn or null.
25245         (mips_expand_call): Update the call to mips16_build_call_stub
25246         accordingly and a remove redundant condition.  Assert that MIPS16
25247         stubs do not use lazy binding.  Use mips_emit_call_insn and return
25248         the call insn.
25249         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
25250         TARGET_USE_GOT.
25251         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
25252         (mips_avoid_hazard): Remove hazard_set handling.
25253         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
25254         (UNSPEC_RESTORE_GP): ...this.
25255         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
25256         (FAKE_CALL_REGNO): Rename to...
25257         (GOT_VERSION_REGNUM): ...this.
25258         (type): Add "ghost" value.  Add an associated insn reservation.
25259         (hazard_set): Remove.
25260         (exception_receiver): Rename to...
25261         (restore_gp): ...this and update the unspec identifier accordingly.
25262         (exception_receiver, nonlocal_got_receiver): New expanders.
25263         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
25264         FAKE_CALL_REGNO.  Remove hazard_set attribute.
25265         (set_got_version, update_got_version): New patterns.
25266
25267 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
25268
25269         PR target/34970
25270         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
25271
25272 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25273
25274         PR other/31955
25275         * doc/install.texi2html: Generate gcc-vers.texi.
25276
25277 2008-01-25  DJ Delorie  <dj@redhat.com>
25278
25279         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
25280
25281 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25282
25283         * config/c4x: Remove directory.
25284         * config.gcc (crx-*, mt-*): Mark obsolete.
25285         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
25286         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
25287         sh-*-rtemscoff*): Remove cases.
25288         * defaults.h (C4X_FLOAT_FORMAT): Remove.
25289         * real.c (encode_c4x_single, decode_c4x_single,
25290         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
25291         c4x_extended_format): Remove.
25292         * real.h (c4x_single_format, c4x_extended_format): Remove.
25293         * doc/extend.texi (interrupt, naked): Remove mention of attributes
25294         on C4x.
25295         (Pragmas): Remove comment about c4x pragmas.
25296         * doc/install.texi (c4x): Remove target-specific instructions.
25297         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
25298         * doc/md.texi (Machine Constraints): Remove C4x documentation.
25299         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
25300         refer to C4x source files as examples.
25301         (C4X_FLOAT_FORMAT): Remove documentation.
25302
25303 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
25304
25305         * config/bfin/bfin.c (override_options): Reorder tests so that
25306         flag_pic gets enabled for -msep-data.
25307
25308 2008-01-25  Richard Guenther  <rguenther@suse.de>
25309
25310         PR middle-end/32244
25311         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
25312         to its bitfield precision if required.
25313
25314 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
25315
25316         PR middle-end/33880
25317         * tree-nested.c (walk_omp_for): New function.
25318         (convert_nonlocal_reference, convert_local_reference): Call
25319         walk_omp_for on OMP_FOR.
25320         (convert_call_expr): Call walk_body on OMP_FOR's
25321         OMP_FOR_PRE_INIT_BODY.
25322
25323 2008-01-25  Richard Guenther  <rguenther@suse.de>
25324
25325         PR tree-optimization/34966
25326         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
25327         default defs and PHI_NODEs we have to insert after the
25328         defining statement.
25329
25330 2008-01-24  Nick Clifton  <nickc@redhat.com>
25331
25332         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
25333         Provide a default definition.
25334         (LIBGCC2_UNITS_PER_WORD): Likewise.
25335
25336         * config/stormy16/stormy16.c: Include df.h for the prototype
25337         for df_regs_ever_live_p.
25338         (xstormy16_expand_builtin_va_start): Convert the stack offset
25339         into a component_ref and then use POINTER_PLUS_EXPR to add it
25340         to the incoming_virtual_args_rtx.
25341         (xstormy16_gimplify_va_arg_expr): Rename to
25342         xstormy16_gimplify_va_arg_expr.
25343         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
25344         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
25345         xstormy16_gimplify_va_arg_expr.
25346         Fix up some formatting issues.
25347
25348         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
25349         Move to predicates.md.
25350         (xs_hi_general_operand): Likewise.
25351         (xs_hi_nonmemory_operand): Likewise.
25352         * config/stormy16/predicates.md:
25353         (xstormy16_carry_plus_operand): New predicate.
25354         (xs_hi_general_operand): New predicate.
25355         (xs_hi_nonmemory_operand): New predicate.
25356         * config/stormy16/stormy16-protos.h:
25357         (xstormy16_carry_plus_operand): Delete prototype.
25358         (xs_hi_general_operand): Likewise.
25359         (xs_hi_nonmemory_operand): Likewise.
25360
25361         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
25362         modifiers as they are no longer needed and they can trigger
25363         reload spill failures.
25364
25365         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
25366         with a match_operand in order to help reload.
25367
25368         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
25369         constraint with 'e' for the 8th alternative as this version of
25370         the mov.w instruction only accepts the lower 8 registers.
25371
25372 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
25373
25374         PR target/34856
25375         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
25376         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
25377         vector elements.
25378
25379 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
25380
25381         PR middle-end/33333
25382         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
25383
25384 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
25385
25386         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
25387         New functions.
25388         (remove_structure): Update allocations list before removing structure.
25389
25390 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
25391
25392         * ipa-struct-reorg.c (is_safe_cond_expr,
25393         create_new_stmts_for_cond_expr): Use integer_zerop function,
25394         that recognize not only zero-pointer, but zero-integer too.
25395
25396 2008-01-25  Ben Elliston  <bje@au.ibm.com>
25397
25398         PR other/22232
25399         * fixproto: Escape "." in sed expression that strips leading "./".
25400
25401 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
25402
25403         PR driver/34904
25404         * gcc.c (SWITCH_OK): Removed.
25405         (SWITCH_LIVE): Changed to bit.
25406         (SWITCH_FALSE): Likewise.
25407         (SWITCH_IGNORE): Likewise.
25408         (switchstr): Change live_cond to unsigned int.
25409         (process_command): Replace SWITCH_OK with 0.
25410         (do_self_spec): Likewise.
25411         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
25412         (give_switch): Likewise.
25413         (used_arg): Likewise.
25414         (do_spec_1): Set the SWITCH_IGNORE bit.
25415         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
25416         bits.  Set the SWITCH_LIVE bit.
25417
25418 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25419
25420         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
25421
25422 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
25423
25424         PR tree-optimization/34472
25425         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
25426         parameter to a "bool *" and set *DATA to false if there is
25427         an unsafe access.  Do not delete the structure here.
25428         (check_cond_exprs): Delete it here instead.
25429         (check_cond_exprs, exclude_cold_structs): Do not increase
25430         I when removing a structure.
25431
25432 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
25433
25434         PR target/34856
25435         * config/i386/i386.c (ix86_expand_vector_init): Consider only
25436         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
25437
25438 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
25439
25440         PR middle-end/34934
25441         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
25442         a fixed vector for stack.
25443
25444 2008-01-24  Ben Elliston  <bje@au.ibm.com>
25445
25446         PR c++/25701
25447         * doc/gcc.texi (Software development): Add a direntry for g++.
25448
25449 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
25450
25451         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
25452         stale and straggling -fforce-addr comments above.
25453
25454         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
25455         define.
25456         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
25457         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
25458
25459 2008-01-23  Michael Matz  <matz@suse.de>
25460
25461         PR debug/34895
25462         * dwarf2out.c (force_type_die): Use modified_type_die instead of
25463         gen_type_die.
25464
25465 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
25466
25467         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
25468         malloc result type.
25469
25470 2008-01-23 Anatoly Sokolov <aesok@post.ru>
25471
25472         * config/avr/avr.c (avr_current_arch): New variable.
25473         (avr_arch_types): Add 'avr31' and 'avr51' entries.
25474         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
25475         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
25476         (avr_override_options): Init 'avr_current_arch'.
25477         (base_arch_s): Move from here...
25478         * config/avr/avr.h (base_arch_s): ... here. Add new members
25479         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
25480         'mega' to 'have_jmp_call'.
25481         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
25482         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
25483         macros.
25484         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
25485         architectures.
25486         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
25487         MULTILIB_MATCHES): Ditto.
25488
25489 2008-01-23  Richard Guenther  <rguenther@suse.de>
25490
25491         PR middle-end/31529
25492         * cgraphunit.c (cgraph_reset_node): Always mark the node
25493         not reachable if it is not queued already.
25494
25495 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
25496
25497         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
25498         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
25499         (cputype_selected): New static variable.
25500         (bfin_handle_option): Set it if -mcpu is used.
25501         (override_option): Select default set of workarounds if no cpu type
25502         selected on the command line.
25503         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
25504
25505         From  Michael Frysinger  <michael.frysinger@analog.com>
25506         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
25507         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
25508
25509         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
25510         for bf547, bf523, bf524, and bf526.
25511         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
25512         bf526.
25513         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
25514         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
25515         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
25516         __ADSPBF547__ and __ADSPBF54x__ for bf547.
25517         * doc/invoke.texi (Blackfin Options): Document that
25518         -mcpu now accept bf547, bf523, bf524, and bf526.
25519
25520 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
25521
25522         PR rtl-optimization/34628
25523         * combine.c (try_combine): Stop and undo after the first combination
25524         if an autoincrement side-effect on the first insn has effectively
25525         been lost.
25526
25527 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
25528
25529         PR target/34529
25530         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
25531         Offset addresses are not valid for Altivec or paired float modes.
25532
25533 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
25534
25535         PR c++/34607
25536         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
25537         if DECL_INITIAL (decl) is error_mark_node.
25538
25539         PR c++/34914
25540         * c-common.c (handle_vector_size_attribute): Only allow
25541         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
25542         the same way as pointer, array etc. types.
25543         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
25544
25545         PR c++/34917
25546         * tree.c (build_type_attribute_qual_variant): Call
25547         build_qualified_type if attributes are equal, but quals are not.
25548
25549 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25550
25551         PR 32102
25552         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
25553         * flags.h (warn_strict_aliasing): Remove.
25554         (warn_strict_overflow): Remove.
25555         * opts.c (warn_strict_aliasing): Remove.
25556         (warn_strict_overflow): Remove.
25557         * c-opts.c (c_common_handle_option): -Wall only sets
25558         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
25559         (c_common_post_options): Give default values to -Wstrict-aliasing
25560         and -Wstrict-overflow if they are uninitialized.
25561         * common.opt (Wstrict-aliasing): Specify Var and Init.
25562         (Wstrict-overflow): Likewise.
25563
25564 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
25565
25566         PR rtl-optimization/26854
25567         PR rtl-optimization/34400
25568         PR rtl-optimization/34884
25569         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
25570         DF_RD->gen.
25571         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
25572         (df_rd_bb_info.expanded_lr_out): Deleted
25573         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
25574         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
25575         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
25576         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
25577         Removed code to allocate, initialize or free expanded_lr_out.
25578         (df_rd_bb_local_compute_process_def): Restructured to make more
25579         understandable.
25580         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
25581         sets if the sets are being trimmed.
25582
25583 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25584
25585         PR bootstrap/32287
25586         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
25587         (as_vers): Likewise.
25588         * configure: Regenerated.
25589
25590 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25591
25592         PR middle-end/33092
25593         * tree-pass.h (pass_build_alias): New pass.
25594         * tree-ssa-alias.c (gate_build_alias): New.
25595         (pass_build_alias): New.
25596         * passes.c (init_optimization_passes): Add pass_build_alias after
25597         pass_create_structure_vars.
25598
25599 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
25600
25601         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
25602         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
25603         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
25604         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
25605         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
25606         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
25607         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
25608         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
25609         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
25610         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
25611         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
25612         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
25613         * config/s390/s390.md (FP_ALL): New mode iterator.
25614         (_d): New mode attribute.
25615         ("*signbit<mode>2>"): Changed mode of first operand.
25616         ("isinf<mode>2"): Changed mode of first operand.
25617         ("*TDC_insn"): Adaptation for DFP modes.
25618
25619 2008-01-22  Ben Elliston  <bje@au.ibm.com>
25620
25621         * tree.c (check_qualified_type): Improve function description.
25622
25623 2008-01-21  Jason Merrill  <jason@redhat.com>
25624
25625         PR c++/34196
25626         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
25627         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
25628         if it is set.
25629
25630 2008-01-21  DJ Delorie  <dj@redhat.com>
25631
25632         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
25633         return zero.
25634
25635 2008-01-21  Richard Guenther  <rguenther@suse.de>
25636
25637         PR middle-end/34856
25638         * tree-cfg.c (verify_expr): Allow all invariant expressions
25639         instead of just constant class ones as reference argument.
25640         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
25641         like any other constant.
25642         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
25643
25644 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
25645
25646         * regmove.c (fixup_match_1): Update call crossed frequencies.
25647
25648 2008-01-21  Richard Guenther  <rguenther@suse.de>
25649
25650         PR c/34885
25651         * tree-inline.c (setup_one_parameter): Deal with mismatched
25652         types using a VIEW_CONVERT_EXPR.
25653
25654 2008-01-21  Alon Dayan  <alond@il.ibm.com>
25655             Olga Golovanevsky  <olga@il.ibm.com>
25656
25657         PR tree-optimization/34701
25658         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
25659         when the structure size is not a power of 2.
25660
25661 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
25662
25663         * doc/install.texi: Add doc for --enable-checking=df.
25664
25665 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25666
25667         PR rtl-optimization/34808
25668         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
25669
25670 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
25671
25672         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
25673         input.
25674
25675 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
25676
25677         PR rtl-optimization/26854
25678         PR rtl-optimization/34400
25679         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
25680         DF_RD->gen.
25681         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
25682         (df_rd_bb_info.expanded_lr_out): New.
25683         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
25684         * loop_iv.c (iv_analysis_loop_init): Ditto.
25685         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
25686         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
25687         Added code to allocate, initialize or free expanded_lr_out.
25688         (df_rd_bb_local_compute_process_def): Restructured to make
25689         more understandable.
25690         (df_rd_confluence_n): Add code to do nothing with fake edges and
25691         code to no apply invalidate_by_call sets if the sets are being trimmed.
25692         (df_lr_local_finalize): Renamed to df_lr_finalize.
25693         (df_live_local_finalize): Renamed to df_live_finalize.
25694
25695 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
25696
25697         PR target/34831
25698         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
25699         deciding whether to use reciprocal instructions.
25700
25701 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
25702
25703         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
25704         dwarf2out_note_section_used if cold_text_section is NULL.
25705
25706 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
25707
25708         PR gcov-profile/34610
25709         * tree-cfg.c (make_edges): Mark both outgoing edges from
25710         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
25711         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
25712         from OMP_FOR and OMP_CONTINUE outgoing edges.
25713
25714         * tree-profile.c (tree_profiling): Return early if
25715         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
25716         at the end.
25717         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
25718         from cfun to child_cfun.
25719         * function.h (struct function): Add after_tree_profile bit.
25720
25721 2008-01-19 Anatoly Sokolov <aesok@post.ru>
25722
25723         * config/avr/avr.S (_exit): Disable interrupt.
25724
25725 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
25726             Steven Bosscher  <stevenb.gcc@gmail.com>
25727
25728         PR rtl-optimization/26854
25729         PR rtl-optimization/34400
25730         * df-problems.c (df_live_scratch): New scratch bitmap.
25731         (df_live_alloc): Allocate df_live_scratch when doing df_live.
25732         (df_live_reset): Clear the proper bitmaps.
25733         (df_live_bb_local_compute): Only process the artificial defs once
25734         since the order is not important.
25735         (df_live_init): Init the df_live sets only with the variables
25736         found live by df_lr.
25737         (df_live_transfer_function): Use the df_lr sets to prune the
25738         df_live sets as they are being computed.
25739         (df_live_free): Free df_live_scratch.
25740
25741 2008-01-18  Ian Lance Taylor  <iant@google.com>
25742
25743         * common.opt: Add fmerge-debug-strings.
25744         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
25745         flag_merge_debug_strings rather than flag_merge_constants.
25746         * doc/invoke.texi (Option Summary): Mention
25747         -fmerge-debug-strings.
25748         (Debugging Options): Document -fmerge-debug-strings.
25749
25750 2008-01-18  Ian Lance Taylor  <iant@google.com>
25751
25752         PR c++/33407
25753         * tree.h (DECL_IS_OPERATOR_NEW): Define.
25754         (struct tree_function_decl): Add new field operator_new_flag.
25755         * tree-inline.c (expand_call_inline): When inlining a call to
25756         operator new, force the return value to go into a variable, and
25757         set DECL_NO_TBAA_P on that variable.
25758         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
25759
25760 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
25761
25762         PR debug/34484
25763         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
25764         DWARF2_DEBUGGING_INFO.
25765         (dwarf2out_note_section_used): Ditto.  Add prototype.
25766         (have_multiple_function_sections, text_section_used,
25767         cold_text_section_used, *cold_text_sections): Move declarations
25768         before their uses.
25769
25770 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
25771
25772         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
25773         field and add signal_ra.
25774         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
25775         assignments to frame state pc.  Move end of stack check after
25776         MD_FALLBACK_FRAME_STATE_FOR.
25777         (uw_update_context_1): Use frame state signal_regs if set, instead
25778         of checking signal_frame flag.
25779         (uw_update_context): Use frame state signal_ra if set.
25780         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
25781         * config/xtensa/linux-unwind.h: New file.
25782
25783 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
25784
25785         * modulo-sched.c (get_sched_window): Fix comment typo.
25786
25787 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
25788
25789         PR tree-optimization/34648
25790         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
25791
25792 2008-01-17  Anatoly Sokolov <aesok@post.ru>
25793
25794         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
25795         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
25796
25797 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
25798
25799         PR rtl-optimization/34400
25800         * df-core.c (df_worklist_dataflow_overeager,
25801         df_worklist_dataflow_doublequeue): New functions.
25802         (df_worklist_dataflow): Two different worklist solvers.
25803         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
25804         New param.
25805
25806 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25807
25808         PR testsuite/34821
25809         * doc/invoke.texi: Document the dependence on pthread for fopenmp
25810         and ftree-parallelize-loops.
25811
25812 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
25813
25814         PR rtl-optimization/34826
25815         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
25816
25817 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25818
25819         * global.c (find_reg): Mark the eh regs as used if necessary.
25820         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
25821         * ra.h (struct allocno): no_eh_reg field added.  Changed
25822         no_stack_reg type to bitfield.
25823
25824 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
25825
25826         * tree.c (substitute_in_expr): Add missing 'break'.
25827
25828 2008-01-17  Richard Guenther  <rguenther@suse.de>
25829
25830         PR tree-optimization/34825
25831         * tree-ssa-math-opts.c (is_division_by): Do not recognize
25832         x / x as division to handle.
25833
25834 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25835
25836         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
25837         "-pthread" is specified.
25838         * pa-hpux11.h (LIB_SPEC): Likewise.
25839
25840 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
25841             Peter Bergner  <bergner@vnet.ibm.com>
25842
25843         PR rtl-optimization/33796
25844         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
25845
25846 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25847
25848         PR libgfortran/34699
25849         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
25850         static links.
25851         * pa-hpux10.h (LINK_SPEC): Likewise.
25852         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
25853
25854 2008-01-16  Richard Guenther  <rguenther@suse.de>
25855
25856         PR middle-end/32628
25857         * fold-const.c (fold_convert_const_int_from_int): Do not
25858         set overflow if that occured only because of a sign extension
25859         change when converting from/to a sizetype with the same
25860         precision and signedness.
25861
25862 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
25863
25864         PR debug/34249
25865         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
25866         location address to the correct place.  Update copyright year.
25867
25868 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25869
25870         * lambda-code.c (lambda_transform_legal_p): Handle the case of
25871         no dependences in the dependence_relations vector.
25872
25873 2008-01-16  Jan Hubicka  <jh@suse.cz>
25874
25875         PR rtl-optimization/31396
25876         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
25877         * cfg.c (dump_reg_info): Print it.
25878         * regs.h (struct reg_info_t): add freq_calls_crossed.
25879         (REG_FREQ_CALLS_CROSSED): New macro.
25880         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
25881         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
25882         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
25883         regmove_optimize): Update call crossed frequencies.
25884         * local-alloc.c (struct qty): Add freq_calls_crossed.
25885         (alloc_qty): Copute freq_calls_crossed.
25886         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
25887         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
25888         * ra.h (struct allocno): Add freq_calls_crossed.
25889
25890 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25891
25892         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
25893         libgomp when compiling with ftree-parallelize-loops.
25894         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
25895
25896 2008-01-16  Richard Guenther  <rguenther@suse.de>
25897
25898         PR tree-optimization/34769
25899         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
25900         * tree.c (int_cst_value): Instead make this function more
25901         permissive in what it accepts as valid input.  Document this
25902         function always sign-extends the value.
25903
25904 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
25905             Richard Guenther  <rguenther@suse.de>
25906
25907         PR c/34668
25908         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
25909         (gimple_fold_indirect_ref_rhs): ... this.
25910         (gimple_fold_indirect_ref): New function with foldings
25911         that preserve lvalueness.
25912         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
25913         * tree-flow.h (gimple_fold_indirect_ref): Declare.
25914         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
25915         to fold an INDIRECT_REF, fall back to the old use of
25916         fold_indirect_ref_1.
25917
25918 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25919
25920         * tree-data-ref.c (subscript_dependence_tester_1): Call
25921         free_conflict_function.
25922         (compute_self_dependence): Same.
25923
25924 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
25925
25926         PR debug/34249
25927         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
25928         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
25929         function global.
25930         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
25931         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
25932         for DWARF2_UNWIND_INFO targets.
25933
25934 2008-01-16  Richard Guenther  <rguenther@suse.de>
25935
25936         PR c/34768
25937         * c-typeck.c (common_pointer_type): Do not merge inconsistent
25938         type qualifiers for function types.
25939
25940 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
25941
25942         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
25943         loop_iterator li from previous commit.
25944
25945 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25946
25947         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
25948
25949 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
25950
25951         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
25952         (parallelize_loops): Don't parallelize irreducible components.
25953
25954 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25955
25956         PR c++/24924
25957         * c-opts (c_common_post_options): Do not enable CPP
25958         flag_pedantic_errors by default.
25959
25960 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
25961
25962         PR rtl-optimization/31944
25963         * cse.c (remove_pseudo_from_table): New function.
25964         (merge_equiv_classes): Use above function to remove pseudo-registers.
25965         (invalidate): Likewise.
25966
25967 2008-01-13  Richard Guenther  <rguenther@suse.de>
25968
25969         PR middle-end/34601
25970         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
25971         instead of TYPE_MODE to deal with calls from expand_one_error_var.
25972
25973 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
25974
25975         * gcse.c (cprop_jump): Call validate_unshare_change instead of
25976         validate_change to unshare the source of the PC set.
25977
25978 2008-01-12  Jan Hubicka  <jh@suse.cz>
25979
25980         PR middle-end/32135
25981         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
25982         references above array bounds.  This might trigger bounds checks for
25983         pointers to arrays.
25984
25985 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
25986
25987         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
25988         new_replaceable_dependencies.
25989
25990 2008-01-12  Doug Kwan  <dougkwan@google.com>
25991
25992         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
25993         instead of OPT_Wreturn_type in warning due to ignored return type
25994         qualifiers.
25995         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
25996         options included in -Wextra.
25997         * c.opt: New option -Wignored_qualifiers.
25998         * doc/invoke.texi (Warning Options, -Wextra): Add new option
25999         -Wignore_qualifiers.
26000         (-Wignored-qualifiers): Document.
26001         (-Wreturn-type): Remove description of functionality now handled
26002         by -Wignored-qualifiers.
26003
26004 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
26005
26006         PR ada/33788
26007         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
26008         NOP_EXPR if it is between integral types with the same precision.
26009
26010 2008-01-12  Jan Hubicka  <jh@suse.cz>
26011
26012         PR other/28023
26013         * invoke.texi (max-inline-recursive-depth): Fix default value.
26014
26015 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
26016
26017         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
26018         correct type.
26019
26020 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
26021
26022         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
26023
26024 2008-01-11  James E. Wilson  <wilson@specifix.com>
26025
26026         PR target/26015
26027         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
26028
26029 2008-01-11  Anatoly Sokolov <aesok@post.ru>
26030
26031         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
26032         save/restore frame pointer register and don't use 'call-prologues'
26033         optimization in function with "OS_task" attribute.
26034
26035 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
26036
26037         PR middle-end/31309
26038         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
26039         when copying to memory.
26040
26041 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
26042
26043         PR rtl-optimization/30905
26044         * cfgcleanup.c: Include dce.h
26045         (crossjumps_occured): New global variable.
26046         (try_crossjump_bb): Exit loop after finding a fallthru edge.
26047         If something changed, set crossjumps_occured to true.
26048         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
26049         Don't add/remove fake edges to exit here...
26050         (cleanup_cfg): ...but do it here, when crossjumping.
26051         Run a fast DCE when successful crossjumps occured in the latest
26052         iteration of try_optimize_cfg.
26053
26054 2008-01-11  Richard Guenther  <rguenther@suse.de>
26055
26056         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
26057         (struct vn_unary_op_s): Likewise.
26058         (vn_reference_insert): Free old reference on hash collision.
26059
26060 2008-01-10  Raksit Ashok  <raksit@google.com>
26061
26062         PR rtl-optimization/27971
26063         * combine.c (find_split_point): Split PLUS expressions which are
26064         inside a MEM rtx, and whose first operand is complex.
26065
26066 2008-01-10  DJ Delorie  <dj@redhat.com>
26067
26068         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
26069         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
26070         (m32c_hard_regno_ok): Call the underlying function.
26071
26072 2008-01-10  Richard Guenther  <rguenther@suse.de>
26073
26074         PR middle-end/34683
26075         * tree-cfg.c (tree_merge_blocks): Do not go through the
26076         full-blown folding and stmt updating path if we just deal
26077         with virtual operands.
26078         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
26079         test for abnormal SSA_NAMEs.
26080
26081 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
26082
26083         PR middle-end/34641
26084         * reload.c (push_reload): Add assertions.  All constants from
26085         reg_equiv_constant should have been used for replacing the respective
26086         pseudo earlier.
26087         (find_reloads_address): Invoke find_reloads_address_part for
26088         constant taken from the reg_equiv_constant array.
26089
26090 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
26091
26092         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
26093         field (valnum) the first in the struct.  Replace bools with
26094         unit bit fields.
26095
26096 2008-01-10  Richard Guenther  <rguenther@suse.de>
26097
26098         PR tree-optimization/34651
26099         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
26100         types and ordering for masking and converting.
26101
26102 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
26103
26104         PR tree-optimization/34017
26105         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
26106         also for PHI_NODE expressions.
26107
26108 2008-01-09  Jan Hubicka  <jh@suse.cz>
26109
26110         PR tree-optimization/34708
26111         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
26112         based on number of case labels.
26113         (init_inline_once): Remove switch_cost.
26114         * tree-inline.h (eni_weights_d): Remove switch_cost.
26115
26116 2008-01-09  Richard Guenther  <rguenther@suse.de>
26117         Andrew Pinski  <andrew_pinski@playstation.sony.com>
26118
26119         PR middle-end/30132
26120         * gimplify.c (gimplify_cond_expr): Do not create an addressable
26121         temporary if an rvalue is ok or an lvalue is not required.
26122
26123 2008-01-09  Richard Guenther  <rguenther@suse.de>
26124
26125         PR middle-end/34458
26126         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
26127         adjust return type.
26128
26129 2008-01-09  Richard Guenther  <rguenther@suse.de>
26130
26131         PR middle-end/34679
26132         * tree.c (host_integerp): Check for sizetype only if the
26133         type is an integer type.
26134
26135 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
26136
26137         PR debug/26364
26138         * opts.c (decode_options): Disable inlining of functions called
26139         once if not in unit-at-a-time mode.
26140
26141 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
26142
26143         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
26144
26145 2008-01-08  Richard Guenther  <rguenther@suse.de>
26146
26147         PR middle-end/31863
26148         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
26149         out early if the result will be unused.
26150
26151 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26152
26153         PR target/34709
26154         Revert:
26155
26156         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26157         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26158         for TARGET_RECIP.
26159
26160 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
26161
26162         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
26163         for vectorization tuned.
26164
26165 2008-01-08  Richard Guenther  <rguenther@suse.de>
26166
26167         PR tree-optimization/34683
26168         * tree-ssa-operands.c (operand_build_cmp): Export.
26169         * tree-ssa-operands.h (operand_build_cmp): Declare.
26170         * tree-vn.c (vuses_compare): Remove.
26171         (sort_vuses): Use operand_build_cmp.
26172         (sort_vuses_heap): Likewise.
26173         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
26174         to re-use old VEC if available.  Do not sort already sorted VUSEs.
26175         (vdefs_to_vec): Do not sort already sorted VDEFs.
26176
26177 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
26178
26179         PR middle-end/34694
26180         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
26181
26182 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26183
26184         PR target/34702
26185         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
26186         limitations of reciprocal sequences on x86 targets.
26187
26188 2008-01-08  Richard Guenther  <rguenther@suse.de>
26189
26190         PR tree-optimization/34683
26191         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
26192
26193 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
26194
26195         PR target/34622
26196         * config/darwin.c (darwin_mergeable_string_section): Don't use
26197         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
26198
26199 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
26200
26201         PR target/34682
26202         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
26203         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
26204         predicates of op0 and op1 to register_operand.
26205         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
26206         expander using X87MODEF mode iterator.  Change predicates of
26207         op0 and op1 to register_operand.
26208         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
26209         corresponding patterns and macroize using MODEF macro.  Change
26210         predicates of op0 and op1 to register_operand and remove
26211         "m" constraint. Disparage "r" alternative with "!".
26212         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
26213         macroize using X87MODEF macro.  Change predicates of op0 and op1
26214         to register_operand and remove "m" constraint.  Disparage "r"
26215         alternative with "!".
26216         (absneg splitter with memory operands): Remove.
26217         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
26218         patterns and macroize using X87MODEF mode iterator.
26219         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
26220         Change predicate of op1 to register_operand.
26221         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
26222         for memory operands.
26223
26224 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26225
26226         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
26227
26228 2008-01-07  Richard Guenther  <rguenther@suse.de>
26229
26230         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
26231         fields.
26232
26233 2008-01-07  Richard Guenther  <rguenther@suse.de>
26234
26235         PR tree-optimization/34683
26236         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
26237         VOPs of the needed size to save memory.  Use VEC_quick_push
26238         to save compile-time.
26239         (vdefs_to_vec): Likewise.
26240
26241 2008-01-07  Sa Liu  <saliu@de.ibm.com>
26242
26243         * config/spu/spu.md (divdf3): Genetate inline code for double
26244         division.  The implementation doesn't handle INF or NAN, therefore it
26245         only applies when -ffinite-math-only is given.
26246
26247 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
26248
26249         PR libstdc++/34680
26250         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
26251         * doc/cpp.texi ([Common Predefined Macros]): Document.
26252
26253 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
26254
26255         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
26256         order to use commutative addition instead of subtraction.
26257
26258 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26259             Mircea Namolaru  <namolaru@il.ibm.com>
26260             Vladimir Yanovsky  <yanov@il.ibm.com>
26261             Revital Eres  <eres@il.ibm.com>
26262
26263         PR tree-optimization/34263
26264         * tree-outof-ssa.c (process_single_block_loop_latch,
26265         contains_tree_r): New functions.
26266         (analyze_edges_for_bb): Call process_single_block_loop_latch
26267         function to empty single-basic-block latch block if possible.
26268
26269 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26270
26271         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26272         for TARGET_RECIP.
26273         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
26274
26275 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26276
26277         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
26278
26279 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26280
26281         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
26282
26283 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
26284
26285         PR tree-optimization/34618
26286         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
26287         flag from T.
26288
26289 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26290
26291         PR target/34673
26292         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
26293         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
26294         Update copyright year.
26295
26296         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
26297         Update copyright year.
26298         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
26299         using NR fixup.
26300
26301 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
26302
26303         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
26304         edge does not point to current bb before changing need_assert.
26305
26306 2008-01-04  Richard Guenther  <rguenther@suse.de>
26307
26308         PR middle-end/34029
26309         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
26310         for verifying purposes if they are is_gimple_min_invariant.
26311
26312 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
26313
26314         PR tree-optimization/34448
26315         PR tree-optimization/34465
26316         * gimplify.c (gimplify_init_constructor): Add new parameter
26317         notify_temp_creation.  Use it.
26318         (gimplify_modify_expr_rhs): Take volatiles into account when
26319         optimizing constructors.
26320         Do not optimize constructors if gimplify_init_constructor will dump to
26321         memory.
26322         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
26323         * gcc.c-torture/compile/pr34448.c: New.
26324
26325 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
26326
26327         PR gcov-profile/34609
26328         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
26329         return_slot if result is TREE_ADDRESSABLE.
26330
26331 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
26332
26333         * config/mips/mips.md (sqrt_condition): Tweak comment.
26334         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
26335
26336 2008-01-03  Tom Tromey  <tromey@redhat.com>
26337
26338         PR c/34457
26339         * c-common.c (c_type_hash): Handle VLAs.
26340
26341 2008-01-03  Jan Hubicka  <jh@suse.cz>
26342
26343         PR tree-optimization/31081
26344         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
26345         0 when inlining and not inlining to first basic block.
26346         (remap_decl): When var is initialized to 0, don't set default_def.
26347         (expand_call_inline): Set entry_bb.
26348         * tree-inline.h (copy_body_data): Add entry_bb.
26349
26350 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
26351
26352         PR c++/34619
26353         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
26354         before returning.
26355
26356         PR tree-optimization/29484
26357         * tree-inline.c (inline_forbidden_p_2): New function.
26358         (inline_forbidden_p): Disallow inlining if some static var
26359         has an address of a local LABEL_DECL in its initializer.
26360         * doc/extend.texi (Labels as Values): Document &&foo behaviour
26361         vs. inlining.
26362
26363 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
26364
26365         PR tree-optimization/34635
26366         * tree-data-ref.c (add_other_self_distances): Make sure that the
26367         evolution step is constant.
26368
26369 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
26370
26371         PR middle-end/34608
26372         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
26373
26374 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
26375
26376         * tree-sra.c (scalarize_init): Insert the generate_element_init
26377         statements after the generate_element_zero statements.
26378
26379 2008-01-02  Richard Guenther  <rguenther@suse.de>
26380
26381         PR middle-end/34093
26382         PR middle-end/31976
26383         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
26384         for very large number of operands instead of ICEing.
26385
26386 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
26387
26388         PR target/34013
26389         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
26390         while stack probing.
26391
26392 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
26393
26394         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
26395         in C++0x mode.
26396
26397 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
26398
26399         PR libmudflap/26442
26400         * tree-mudflap.c (mx_register_decls): Guard warning by
26401         !DECL_ARTIFICIAL check.
26402
26403 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
26404
26405         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
26406         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
26407         sse5_perm<mode>): Fix constraints.